Ticket #2627: 2627.2.diff

File 2627.2.diff, 1.3 KB (added by Stan, 9 years ago)

Checks if CmpPosition is null.

  • simulation2/components/CCmpSelectable.cpp

     
    1 /* Copyright (C) 2012 Wildfire Games.
     1/* Copyright (C) 2015 Wildfire Games.
    22 * This file is part of 0 A.D.
    33 *
    44 * 0 A.D. is free software: you can redistribute it and/or modify
     
    111111    virtual void Init(const CParamNode& paramNode)
    112112    {
    113113        m_EditorOnly = paramNode.GetChild("EditorOnly").IsOk();
     114        CmpPtr<ICmpPosition> cmpPosition(GetEntityHandle());
    114115
    115116        // Certain special units always have their selection overlay shown
    116117        m_AlwaysVisible = paramNode.GetChild("Overlay").GetChild("AlwaysVisible").IsOk();
    117         if (m_AlwaysVisible)
     118        if ((!cmpPosition || cmpPosition->IsInWorld()) && m_AlwaysVisible)
    118119        {
    119120            m_AlphaMin = MIN_ALPHA_ALWAYS_VISIBLE;
    120121            m_Color.a = m_AlphaMin;
     
    172173        m_Color.r = color.r;
    173174        m_Color.g = color.g;
    174175        m_Color.b = color.b;
     176        CmpPtr<ICmpPosition> cmpPosition(GetEntityHandle());
    175177
    176178        // Always-visible overlays will be desaturated if their parent unit is deselected.
    177         if (m_AlwaysVisible && !selected)
     179        if ((!cmpPosition || cmpPosition->IsInWorld()) && m_AlwaysVisible && !selected)
    178180        {
    179181            float max;
    180182