1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
5 #include "BaseEnv/BaseEnv_Prerequisites.h"
7 #include "BaseEnv/Components/BaseEnv_EntityTransformComponentBase.h"
8 #include "BaseEnv/Utils/BaseEnv_EntitySignals.h"
9 #include "BaseEnv/Utils/BaseEnv_EntityUpdateFilters.h"
10 #include "BaseEnv/Utils/BaseEnv_SpatialIndex.h"
12 namespace SchematycBaseEnv
14 extern const Schematyc2::SGUID s_detectionVolumeComponentGUID
;
16 class CEntityDetectionVolumeComponent
: public CEntityTransformComponentBase
20 struct SVolumeProperties
24 void Serialize(Serialization::IArchive
& archive
);
26 SpatialVolumeTagNames tags
;
27 SpatialVolumeTagNames monitorTags
;
30 ESpatialVolumeShape shape
;
37 void Serialize(Serialization::IArchive
& archive
);
40 Schematyc2::SEnvFunctionResult
SetTransform(const Schematyc2::SEnvFunctionContext
& context
, const STransform
& _transform
);
44 SVolumeProperties volume
;
56 SpatialVolumeId volumeId
;
57 ESpatialVolumeShape shape
;
60 typedef std::vector
<EntityId
> EntityIds
;
64 CEntityDetectionVolumeComponent();
66 // Schematyc2::IComponent
67 virtual bool Init(const Schematyc2::SComponentParams
& params
) override
;
68 virtual void Run(Schematyc2::ESimulationMode simulationMode
) override
;
69 virtual Schematyc2::IComponentPreviewPropertiesPtr
GetPreviewProperties() const override
;
70 virtual void Preview(const SRendParams
& params
, const SRenderingPassInfo
& passInfo
, const Schematyc2::IComponentPreviewProperties
& previewProperties
) const override
;
71 virtual void Shutdown() override
;
72 virtual Schematyc2::INetworkSpawnParamsPtr
GetNetworkSpawnParams() const override
;
73 // ~Schematyc2::IComponent
75 bool SetEnabled(bool bEnabled
);
77 static void Register();
81 void SetVolumeSize(float sizeX
, float sizeY
, float sizeZ
);
82 void GetVolumeSize(float& sizeX
, float& sizeY
, float& sizeZ
) const;
84 void SetVolumeRadius(float radius
);
85 float GetVolumeRadius() const;
87 const char* GetVolumeName(SpatialVolumeId volumeId
) const;
89 void VolumeEventCallback(const SSpatialIndexEvent
& event
);
90 void OnEvent(const SEntityEvent
& event
);
92 void Update(const Schematyc2::SUpdateContext
& updateContext
);
99 static const Schematyc2::SGUID s_componentGUID
;
100 static const Schematyc2::SGUID s_enterSignalGUID
;
101 static const Schematyc2::SGUID s_leaveSignalGUID
;
105 const SProperties
* m_pProperties
;
107 EntityIds m_entityIds
;
109 EntityNotHiddenUpdateFilter m_updateFilter
;
110 Schematyc2::CUpdateScope m_updateScope
;
111 TemplateUtils::CConnectionScope m_connectionScope
;