Index: source/simulation2/components/CCmpCinemaManager.cpp =================================================================== --- source/simulation2/components/CCmpCinemaManager.cpp +++ source/simulation2/components/CCmpCinemaManager.cpp @@ -34,7 +34,7 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Update); + componentManager.SubscribeToMessageType(CID_CinemaManager, MT_Update); } DEFAULT_COMPONENT_ALLOCATOR(CinemaManager) Index: source/simulation2/components/CCmpMinimap.cpp =================================================================== --- source/simulation2/components/CCmpMinimap.cpp +++ source/simulation2/components/CCmpMinimap.cpp @@ -32,11 +32,11 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Deserialized); - componentManager.SubscribeToMessageType(MT_PositionChanged); - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_PlayerColorChanged); - componentManager.SubscribeToMessageType(MT_MinimapPing); + componentManager.SubscribeToMessageType(CID_Minimap, MT_Deserialized); + componentManager.SubscribeToMessageType(CID_Minimap, MT_PositionChanged); + componentManager.SubscribeToMessageType(CID_Minimap, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_Minimap, MT_PlayerColorChanged); + componentManager.SubscribeToMessageType(CID_Minimap, MT_MinimapPing); } DEFAULT_COMPONENT_ALLOCATOR(Minimap) Index: source/simulation2/components/CCmpMotionBall.cpp =================================================================== --- source/simulation2/components/CCmpMotionBall.cpp +++ source/simulation2/components/CCmpMotionBall.cpp @@ -30,7 +30,7 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Update); + componentManager.SubscribeToMessageType(CID_MotionBall, MT_Update); } DEFAULT_COMPONENT_ALLOCATOR(MotionBall) Index: source/simulation2/components/CCmpObstruction.cpp =================================================================== --- source/simulation2/components/CCmpObstruction.cpp +++ source/simulation2/components/CCmpObstruction.cpp @@ -48,8 +48,8 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_PositionChanged); - componentManager.SubscribeToMessageType(MT_Destroy); + componentManager.SubscribeToMessageType(CID_Obstruction, MT_PositionChanged); + componentManager.SubscribeToMessageType(CID_Obstruction, MT_Destroy); } DEFAULT_COMPONENT_ALLOCATOR(Obstruction) Index: source/simulation2/components/CCmpObstructionManager.cpp =================================================================== --- source/simulation2/components/CCmpObstructionManager.cpp +++ source/simulation2/components/CCmpObstructionManager.cpp @@ -128,7 +128,8 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_RenderSubmit); // for debug overlays + // for debug overlays + componentManager.SubscribeToMessageType(CID_ObstructionManager, MT_RenderSubmit); } DEFAULT_COMPONENT_ALLOCATOR(ObstructionManager) Index: source/simulation2/components/CCmpOwnership.cpp =================================================================== --- source/simulation2/components/CCmpOwnership.cpp +++ source/simulation2/components/CCmpOwnership.cpp @@ -30,7 +30,7 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Destroy); + componentManager.SubscribeToMessageType(CID_Ownership, MT_Destroy); } DEFAULT_COMPONENT_ALLOCATOR(Ownership) Index: source/simulation2/components/CCmpParticleManager.cpp =================================================================== --- source/simulation2/components/CCmpParticleManager.cpp +++ source/simulation2/components/CCmpParticleManager.cpp @@ -30,7 +30,7 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Interpolate); + componentManager.SubscribeToMessageType(CID_ParticleManager, MT_Interpolate); } DEFAULT_COMPONENT_ALLOCATOR(ParticleManager) Index: source/simulation2/components/CCmpPathfinder_Common.h =================================================================== --- source/simulation2/components/CCmpPathfinder_Common.h +++ source/simulation2/components/CCmpPathfinder_Common.h @@ -63,11 +63,11 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Deserialized); - componentManager.SubscribeToMessageType(MT_RenderSubmit); // for debug overlays - componentManager.SubscribeToMessageType(MT_TerrainChanged); - componentManager.SubscribeToMessageType(MT_WaterChanged); - componentManager.SubscribeToMessageType(MT_ObstructionMapShapeChanged); + componentManager.SubscribeToMessageType(CID_Pathfinder, MT_Deserialized); + componentManager.SubscribeToMessageType(CID_Pathfinder, MT_RenderSubmit); // for debug overlays + componentManager.SubscribeToMessageType(CID_Pathfinder, MT_TerrainChanged); + componentManager.SubscribeToMessageType(CID_Pathfinder, MT_WaterChanged); + componentManager.SubscribeToMessageType(CID_Pathfinder, MT_ObstructionMapShapeChanged); } ~CCmpPathfinder(); Index: source/simulation2/components/CCmpPosition.cpp =================================================================== --- source/simulation2/components/CCmpPosition.cpp +++ source/simulation2/components/CCmpPosition.cpp @@ -45,10 +45,10 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_TurnStart); - componentManager.SubscribeToMessageType(MT_TerrainChanged); - componentManager.SubscribeToMessageType(MT_WaterChanged); - componentManager.SubscribeToMessageType(MT_Deserialized); + componentManager.SubscribeToMessageType(CID_Position, MT_TurnStart); + componentManager.SubscribeToMessageType(CID_Position, MT_TerrainChanged); + componentManager.SubscribeToMessageType(CID_Position, MT_WaterChanged); + componentManager.SubscribeToMessageType(CID_Position, MT_Deserialized); // TODO: if this component turns out to be a performance issue, it should // be optimised by creating a new PositionStatic component that doesn't subscribe Index: source/simulation2/components/CCmpProjectileManager.cpp =================================================================== --- source/simulation2/components/CCmpProjectileManager.cpp +++ source/simulation2/components/CCmpProjectileManager.cpp @@ -46,8 +46,8 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Interpolate); - componentManager.SubscribeToMessageType(MT_RenderSubmit); + componentManager.SubscribeToMessageType(CID_ProjectileManager, MT_Interpolate); + componentManager.SubscribeToMessageType(CID_ProjectileManager, MT_RenderSubmit); } DEFAULT_COMPONENT_ALLOCATOR(ProjectileManager) Index: source/simulation2/components/CCmpRallyPointRenderer.cpp =================================================================== --- source/simulation2/components/CCmpRallyPointRenderer.cpp +++ source/simulation2/components/CCmpRallyPointRenderer.cpp @@ -129,11 +129,11 @@ void CCmpRallyPointRenderer::ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeGloballyToMessageType(MT_PlayerColorChanged); - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_TurnStart); - componentManager.SubscribeToMessageType(MT_Destroy); - componentManager.SubscribeToMessageType(MT_PositionChanged); + componentManager.SubscribeGloballyToMessageType(CID_RallyPointRenderer, MT_PlayerColorChanged); + componentManager.SubscribeToMessageType(CID_RallyPointRenderer, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_RallyPointRenderer, MT_TurnStart); + componentManager.SubscribeToMessageType(CID_RallyPointRenderer, MT_Destroy); + componentManager.SubscribeToMessageType(CID_RallyPointRenderer, MT_PositionChanged); } void CCmpRallyPointRenderer::Deinit() Index: source/simulation2/components/CCmpRangeManager.cpp =================================================================== --- source/simulation2/components/CCmpRangeManager.cpp +++ source/simulation2/components/CCmpRangeManager.cpp @@ -354,16 +354,17 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeGloballyToMessageType(MT_Create); - componentManager.SubscribeGloballyToMessageType(MT_PositionChanged); - componentManager.SubscribeGloballyToMessageType(MT_OwnershipChanged); - componentManager.SubscribeGloballyToMessageType(MT_Destroy); - componentManager.SubscribeGloballyToMessageType(MT_VisionRangeChanged); - componentManager.SubscribeGloballyToMessageType(MT_VisionSharingChanged); - - componentManager.SubscribeToMessageType(MT_Deserialized); - componentManager.SubscribeToMessageType(MT_Update); - componentManager.SubscribeToMessageType(MT_RenderSubmit); // for debug overlays + componentManager.SubscribeGloballyToMessageType(CID_RangeManager, MT_Create); + componentManager.SubscribeGloballyToMessageType(CID_RangeManager, MT_PositionChanged); + componentManager.SubscribeGloballyToMessageType(CID_RangeManager, MT_OwnershipChanged); + componentManager.SubscribeGloballyToMessageType(CID_RangeManager, MT_Destroy); + componentManager.SubscribeGloballyToMessageType(CID_RangeManager, MT_VisionRangeChanged); + componentManager.SubscribeGloballyToMessageType(CID_RangeManager, MT_VisionSharingChanged); + + componentManager.SubscribeToMessageType(CID_RangeManager, MT_Deserialized); + componentManager.SubscribeToMessageType(CID_RangeManager, MT_Update); + // for debug overlays + componentManager.SubscribeToMessageType(CID_RangeManager, MT_RenderSubmit); } DEFAULT_COMPONENT_ALLOCATOR(RangeManager) Index: source/simulation2/components/CCmpRangeOverlayRenderer.cpp =================================================================== --- source/simulation2/components/CCmpRangeOverlayRenderer.cpp +++ source/simulation2/components/CCmpRangeOverlayRenderer.cpp @@ -37,9 +37,9 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Deserialized); - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_PlayerColorChanged); + componentManager.SubscribeToMessageType(CID_RangeOverlayRenderer, MT_Deserialized); + componentManager.SubscribeToMessageType(CID_RangeOverlayRenderer, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_RangeOverlayRenderer, MT_PlayerColorChanged); } DEFAULT_COMPONENT_ALLOCATOR(RangeOverlayRenderer) Index: source/simulation2/components/CCmpSelectable.cpp =================================================================== --- source/simulation2/components/CCmpSelectable.cpp +++ source/simulation2/components/CCmpSelectable.cpp @@ -62,11 +62,11 @@ static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_PlayerColorChanged); - componentManager.SubscribeToMessageType(MT_PositionChanged); - componentManager.SubscribeToMessageType(MT_TerrainChanged); - componentManager.SubscribeToMessageType(MT_WaterChanged); + componentManager.SubscribeToMessageType(CID_Selectable, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_Selectable, MT_PlayerColorChanged); + componentManager.SubscribeToMessageType(CID_Selectable, MT_PositionChanged); + componentManager.SubscribeToMessageType(CID_Selectable, MT_TerrainChanged); + componentManager.SubscribeToMessageType(CID_Selectable, MT_WaterChanged); } DEFAULT_COMPONENT_ALLOCATOR(Selectable) Index: source/simulation2/components/CCmpTemplateManager.cpp =================================================================== --- source/simulation2/components/CCmpTemplateManager.cpp +++ source/simulation2/components/CCmpTemplateManager.cpp @@ -33,7 +33,7 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeGloballyToMessageType(MT_Destroy); + componentManager.SubscribeGloballyToMessageType(CID_TemplateManager, MT_Destroy); } DEFAULT_COMPONENT_ALLOCATOR(TemplateManager) Index: source/simulation2/components/CCmpTerritoryManager.cpp =================================================================== --- source/simulation2/components/CCmpTerritoryManager.cpp +++ source/simulation2/components/CCmpTerritoryManager.cpp @@ -60,16 +60,16 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeGloballyToMessageType(MT_OwnershipChanged); - componentManager.SubscribeGloballyToMessageType(MT_PlayerColorChanged); - componentManager.SubscribeGloballyToMessageType(MT_PositionChanged); - componentManager.SubscribeGloballyToMessageType(MT_ValueModification); - componentManager.SubscribeToMessageType(MT_ObstructionMapShapeChanged); - componentManager.SubscribeToMessageType(MT_TerrainChanged); - componentManager.SubscribeToMessageType(MT_WaterChanged); - componentManager.SubscribeToMessageType(MT_Update); - componentManager.SubscribeToMessageType(MT_Interpolate); - componentManager.SubscribeToMessageType(MT_RenderSubmit); + componentManager.SubscribeGloballyToMessageType(CID_TerritoryManager, MT_OwnershipChanged); + componentManager.SubscribeGloballyToMessageType(CID_TerritoryManager, MT_PlayerColorChanged); + componentManager.SubscribeGloballyToMessageType(CID_TerritoryManager, MT_PositionChanged); + componentManager.SubscribeGloballyToMessageType(CID_TerritoryManager, MT_ValueModification); + componentManager.SubscribeToMessageType(CID_TerritoryManager, MT_ObstructionMapShapeChanged); + componentManager.SubscribeToMessageType(CID_TerritoryManager, MT_TerrainChanged); + componentManager.SubscribeToMessageType(CID_TerritoryManager, MT_WaterChanged); + componentManager.SubscribeToMessageType(CID_TerritoryManager, MT_Update); + componentManager.SubscribeToMessageType(CID_TerritoryManager, MT_Interpolate); + componentManager.SubscribeToMessageType(CID_TerritoryManager, MT_RenderSubmit); } DEFAULT_COMPONENT_ALLOCATOR(TerritoryManager) Index: source/simulation2/components/CCmpTest.cpp =================================================================== --- source/simulation2/components/CCmpTest.cpp +++ source/simulation2/components/CCmpTest.cpp @@ -28,9 +28,9 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_TurnStart); - componentManager.SubscribeToMessageType(MT_Interpolate); - componentManager.SubscribeToMessageType(MT_Destroy); + componentManager.SubscribeToMessageType(CID_Test1A, MT_TurnStart); + componentManager.SubscribeToMessageType(CID_Test1A, MT_Interpolate); + componentManager.SubscribeToMessageType(CID_Test1A, MT_Destroy); } DEFAULT_COMPONENT_ALLOCATOR(Test1A) @@ -96,8 +96,8 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Update); - componentManager.SubscribeGloballyToMessageType(MT_Interpolate); + componentManager.SubscribeToMessageType(CID_Test1B, MT_Update); + componentManager.SubscribeGloballyToMessageType(CID_Test1B, MT_Interpolate); } DEFAULT_COMPONENT_ALLOCATOR(Test1B) @@ -157,8 +157,8 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_TurnStart); - componentManager.SubscribeToMessageType(MT_Update); + componentManager.SubscribeToMessageType(CID_Test2A, MT_TurnStart); + componentManager.SubscribeToMessageType(CID_Test2A, MT_Update); } DEFAULT_COMPONENT_ALLOCATOR(Test2A) Index: source/simulation2/components/CCmpUnitMotion.h =================================================================== --- source/simulation2/components/CCmpUnitMotion.h +++ source/simulation2/components/CCmpUnitMotion.h @@ -136,13 +136,13 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Create); - componentManager.SubscribeToMessageType(MT_Destroy); - componentManager.SubscribeToMessageType(MT_PathResult); - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_ValueModification); - componentManager.SubscribeToMessageType(MT_MovementObstructionChanged); - componentManager.SubscribeToMessageType(MT_Deserialized); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_Create); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_Destroy); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_PathResult); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_ValueModification); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_MovementObstructionChanged); + componentManager.SubscribeToMessageType(CID_UnitMotion, MT_Deserialized); } DEFAULT_COMPONENT_ALLOCATOR(UnitMotion) Index: source/simulation2/components/CCmpUnitMotion_System.cpp =================================================================== --- source/simulation2/components/CCmpUnitMotion_System.cpp +++ source/simulation2/components/CCmpUnitMotion_System.cpp @@ -119,14 +119,14 @@ void CCmpUnitMotionManager::ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_Deserialized); - componentManager.SubscribeToMessageType(MT_TerrainChanged); - componentManager.SubscribeToMessageType(MT_TurnStart); - componentManager.SubscribeToMessageType(MT_Update_Final); - componentManager.SubscribeToMessageType(MT_Update_MotionUnit); - componentManager.SubscribeToMessageType(MT_Update_MotionFormation); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_Deserialized); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_TerrainChanged); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_TurnStart); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_Update_Final); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_Update_MotionUnit); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_Update_MotionFormation); #if DEBUG_RENDER - componentManager.SubscribeToMessageType(MT_RenderSubmit); + componentManager.SubscribeToMessageType(CID_UnitMotionManager, MT_RenderSubmit); #endif } Index: source/simulation2/components/CCmpUnitRenderer.cpp =================================================================== --- source/simulation2/components/CCmpUnitRenderer.cpp +++ source/simulation2/components/CCmpUnitRenderer.cpp @@ -126,9 +126,9 @@ static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_TurnStart); - componentManager.SubscribeToMessageType(MT_Interpolate); - componentManager.SubscribeToMessageType(MT_RenderSubmit); + componentManager.SubscribeToMessageType(CID_UnitRenderer, MT_TurnStart); + componentManager.SubscribeToMessageType(CID_UnitRenderer, MT_Interpolate); + componentManager.SubscribeToMessageType(CID_UnitRenderer, MT_RenderSubmit); } DEFAULT_COMPONENT_ALLOCATOR(UnitRenderer) Index: source/simulation2/components/CCmpVision.cpp =================================================================== --- source/simulation2/components/CCmpVision.cpp +++ source/simulation2/components/CCmpVision.cpp @@ -30,9 +30,9 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_ValueModification); - componentManager.SubscribeToMessageType(MT_Deserialized); + componentManager.SubscribeToMessageType(CID_Vision, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_Vision, MT_ValueModification); + componentManager.SubscribeToMessageType(CID_Vision, MT_Deserialized); } DEFAULT_COMPONENT_ALLOCATOR(Vision) Index: source/simulation2/components/CCmpVisualActor.cpp =================================================================== --- source/simulation2/components/CCmpVisualActor.cpp +++ source/simulation2/components/CCmpVisualActor.cpp @@ -56,11 +56,11 @@ public: static void ClassInit(CComponentManager& componentManager) { - componentManager.SubscribeToMessageType(MT_InterpolatedPositionChanged); - componentManager.SubscribeToMessageType(MT_OwnershipChanged); - componentManager.SubscribeToMessageType(MT_ValueModification); - componentManager.SubscribeToMessageType(MT_Create); - componentManager.SubscribeToMessageType(MT_Destroy); + componentManager.SubscribeToMessageType(CID_VisualActor, MT_InterpolatedPositionChanged); + componentManager.SubscribeToMessageType(CID_VisualActor, MT_OwnershipChanged); + componentManager.SubscribeToMessageType(CID_VisualActor, MT_ValueModification); + componentManager.SubscribeToMessageType(CID_VisualActor, MT_Create); + componentManager.SubscribeToMessageType(CID_VisualActor, MT_Destroy); } DEFAULT_COMPONENT_ALLOCATOR(VisualActor) @@ -450,7 +450,7 @@ if (!m_Unit || !m_Unit->GetAnimation() || !m_Unit->GetID()) return; - m_Unit->GetAnimation()->SetAnimationState(m_AnimName, m_AnimOnce, m_AnimSpeed.ToFloat(), m_AnimDesync.ToFloat(), m_SoundGroup.c_str()); + m_Unit->GetAnimation()->SetAnimationState(m_AnimName, m_AnimOnce, m_AnimSpeed.ToFloat(), m_AnimDesync.ToFloat(), m_SoundGroup.c_str()); } void SelectMovementAnimation(const std::string& name, fixed speed) override Index: source/simulation2/components/CCmpWaterManager.cpp =================================================================== --- source/simulation2/components/CCmpWaterManager.cpp +++ source/simulation2/components/CCmpWaterManager.cpp @@ -34,8 +34,8 @@ static void ClassInit(CComponentManager& componentManager) { // No need to subscribe to WaterChanged since we're actually the one sending those. - componentManager.SubscribeToMessageType(MT_Interpolate); - componentManager.SubscribeToMessageType(MT_TerrainChanged); + componentManager.SubscribeToMessageType(CID_WaterManager, MT_Interpolate); + componentManager.SubscribeToMessageType(CID_WaterManager, MT_TerrainChanged); } DEFAULT_COMPONENT_ALLOCATOR(WaterManager) Index: source/simulation2/system/ComponentManager.h =================================================================== --- source/simulation2/system/ComponentManager.h +++ source/simulation2/system/ComponentManager.h @@ -95,20 +95,20 @@ void MarkScriptedComponentForSystemEntity(CComponentManager::ComponentTypeId cid); /** - * Subscribe the current component type to the given message type. + * Subscribe the given component type to the given message type. * Each component's HandleMessage will be called on any BroadcastMessage of this message type, * or on any PostMessage of this type targeted at the component's entity. * Must only be called by a component type's ClassInit. */ - void SubscribeToMessageType(MessageTypeId mtid); + void SubscribeToMessageType(ComponentTypeId componentTypeId, MessageTypeId mtid); /** - * Subscribe the current component type to all messages of the given message type. + * Subscribe the given component type to all messages of the given message type. * Each component's HandleMessage will be called on any BroadcastMessage or PostMessage of this message type, * regardless of the entity. * Must only be called by a component type's ClassInit. */ - void SubscribeGloballyToMessageType(MessageTypeId mtid); + void SubscribeGloballyToMessageType(ComponentTypeId componentTypeId, MessageTypeId mtid); /** * Subscribe the given component instance to all messages of the given message type. @@ -303,7 +303,6 @@ CEntityHandle m_SystemEntity; - ComponentTypeId m_CurrentComponent; // used when loading component types bool m_CurrentlyHotloading; // TODO: some of these should be vectors Index: source/simulation2/system/ComponentManager.cpp =================================================================== --- source/simulation2/system/ComponentManager.cpp +++ source/simulation2/system/ComponentManager.cpp @@ -127,13 +127,10 @@ RegisterComponentInterface_##name(m_ScriptInterface); #define COMPONENT(name) \ extern void RegisterComponentType_##name(CComponentManager&); \ - m_CurrentComponent = CID_##name; \ RegisterComponentType_##name(*this); #include "simulation2/TypeList.h" - m_CurrentComponent = CID__Invalid; - #undef MESSAGE #undef INTERFACE #undef COMPONENT @@ -262,8 +259,6 @@ }; m_ComponentTypesById[cid] = std::move(ct); - m_CurrentComponent = cid; // needed by Subscribe - // Find all the ctor prototype's On* methods, and subscribe to the appropriate messages: std::vector methods; @@ -297,13 +292,11 @@ } if (isGlobal) - SubscribeGloballyToMessageType(mit->second); + SubscribeGloballyToMessageType(cid, mit->second); else - SubscribeToMessageType(mit->second); + SubscribeToMessageType(cid, mit->second); } - m_CurrentComponent = CID__Invalid; - if (mustReloadComponents) { // For every script component with this cid, we need to switch its @@ -543,21 +536,21 @@ m_MessageTypeNamesById[mtid] = name; } -void CComponentManager::SubscribeToMessageType(MessageTypeId mtid) +void CComponentManager::SubscribeToMessageType(ComponentTypeId componentTypeId, MessageTypeId mtid) { // TODO: verify mtid - ENSURE(m_CurrentComponent != CID__Invalid); + ENSURE(componentTypeId != CID__Invalid); std::vector& types = m_LocalMessageSubscriptions[mtid]; - types.push_back(m_CurrentComponent); + types.push_back(componentTypeId); std::sort(types.begin(), types.end()); // TODO: just sort once at the end of LoadComponents } -void CComponentManager::SubscribeGloballyToMessageType(MessageTypeId mtid) +void CComponentManager::SubscribeGloballyToMessageType(ComponentTypeId componentTypeId, MessageTypeId mtid) { // TODO: verify mtid - ENSURE(m_CurrentComponent != CID__Invalid); + ENSURE(componentTypeId != CID__Invalid); std::vector& types = m_GlobalMessageSubscriptions[mtid]; - types.push_back(m_CurrentComponent); + types.push_back(componentTypeId); std::sort(types.begin(), types.end()); // TODO: just sort once at the end of LoadComponents }