Ticket #4045: CCmpRangeManager.cpp.patch

File CCmpRangeManager.cpp.patch, 1.5 KB (added by wraitii, 8 years ago)
  • CCmpRangeManager.cpp

     
    170170 */
    171171struct EntityData
    172172{
    173     EntityData() : visibilities(0), size(0), retainInFog(0), owner(-1), inWorld(0), flags(1), scriptedVisibility(0) { }
     173    EntityData() : visibilities(0), size(0), retainInFog(0), owner(-1), inWorld(0), flags(1), scriptedVisibility(0), componentCache(NULL){}
    174174    entity_pos_t x, z;
    175175    entity_pos_t visionRange;
    176176    u32 visibilities; // 2-bit visibility, per player
    177177    u32 size;
     178    SEntityComponentCache* componentCache;
    178179    u8 retainInFog; // boolean
    179180    i8 owner;
    180181    u8 inWorld; // boolean
     
    182183    u8 scriptedVisibility; // boolean, see ComputeLosVisibility
    183184};
    184185
    185 cassert(sizeof(EntityData) == 28);
     186cassert(sizeof(EntityData) == 32);
    186187
    187188/**
    188189 * Serialization helper template for Query
     
    480481            if (cmpObstruction)
    481482                entdata.size = cmpObstruction->GetSize().ToInt_RoundToInfinity();
    482483
     484            // Should never fail
     485            entdata.componentCache = GetSimContext().GetComponentManager().LookupEntityHandle(ent).GetComponentCache();
     486
    483487            // Remember this entity
    484488            m_EntityData.insert(ent, entdata);
    485489            break;
     
    10331037            return false;
    10341038
    10351039        // Ignore if it's missing the required interface
    1036         if (q.interface && !GetSimContext().GetComponentManager().QueryInterface(id, q.interface))
     1040        if (q.interface && entity.componentCache->interfaces[q.interface] == NULL)
    10371041            return false;
    10381042
    10391043        return true;