Added component added and removed events
This commit is contained in:
parent
9930b002c6
commit
2d07fb0afc
|
@ -0,0 +1,12 @@
|
|||
#pragma once
|
||||
|
||||
#include "ECS_Base/Components/SHComponent.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
struct SHComponentAddedEvent
|
||||
{
|
||||
EntityID eid;
|
||||
ComponentTypeID addedComponentType;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
#pragma once
|
||||
|
||||
#include "ECS_Base/Components/SHComponent.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
struct SHComponentRemovedEvent
|
||||
{
|
||||
EntityID eid;
|
||||
ComponentTypeID removedComponentType;
|
||||
};
|
||||
}
|
|
@ -17,6 +17,8 @@
|
|||
#include "../General/SHSparseSetContainer.h"
|
||||
#include "../Components/SHComponent.h"
|
||||
#include "../Components/SHComponentGroup.h"
|
||||
#include "../Events/SHComponentAddedEvent.h"
|
||||
#include "../Events/SHComponentRemovedEvent.h"
|
||||
//#include "Scene/SHSceneNode.h"
|
||||
#include "SH_API.h"
|
||||
|
||||
|
@ -216,6 +218,11 @@ namespace SHADE
|
|||
comp->OnCreate();
|
||||
}
|
||||
|
||||
SHComponentAddedEvent eventData;
|
||||
eventData.eid = entityID;
|
||||
eventData.addedComponentType = ComponentFamily::GetID<T>();
|
||||
|
||||
SHEventManager::BroadcastEvent<SHComponentAddedEvent>(eventData, SH_COMPONENT_ADDED_EVENT);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -247,6 +254,13 @@ namespace SHADE
|
|||
{
|
||||
comp->OnCreate();
|
||||
}
|
||||
|
||||
SHComponentAddedEvent eventData;
|
||||
eventData.eid = entityID;
|
||||
eventData.addedComponentType = componentTypeID;
|
||||
|
||||
SHEventManager::BroadcastEvent<SHComponentAddedEvent>(eventData, SH_COMPONENT_ADDED_EVENT);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -313,6 +327,12 @@ namespace SHADE
|
|||
|
||||
|
||||
componentSet.GetSparseSet<T>()->Remove(EntityHandleGenerator::GetIndex(entityID));
|
||||
|
||||
SHComponentRemovedEvent eventData;
|
||||
eventData.eid = entityID;
|
||||
eventData.addedComponentType = ComponentFamily::GetID<T>();
|
||||
|
||||
SHEventManager::BroadcastEvent<SHComponentRemovedEvent>(eventData, SH_COMPONENT_REMOVED_EVENT);
|
||||
}
|
||||
|
||||
/*!*************************************************************************
|
||||
|
@ -464,11 +484,6 @@ namespace SHADE
|
|||
return componentGroups[index];
|
||||
}
|
||||
|
||||
static void AddScriptComponent(EntityID eid, std::string const& scriptClassName) noexcept;
|
||||
|
||||
static void RemoveScriptComponent(EntityID eid, std::string const& scriptClassName) noexcept;
|
||||
|
||||
|
||||
};// end SHComponentManager
|
||||
|
||||
|
||||
|
|
|
@ -8,3 +8,5 @@ typedef uint32_t SHEventHandle;
|
|||
constexpr SHEventIdentifier SH_EXAMPLE_EVENT{0};
|
||||
constexpr SHEventIdentifier SH_ENTITY_DESTROYED_EVENT{ 1 };
|
||||
constexpr SHEventIdentifier SH_ENTITY_CREATION_EVENT{ 2 };
|
||||
constexpr SHEventIdentifier SH_COMPONENT_ADDED_EVENT{ 3 };
|
||||
constexpr SHEventIdentifier SH_COMPONENT_REMOVED_EVENT{ 4 };
|
||||
|
|
Loading…
Reference in New Issue