// Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors. // All rights reserved. // Code licensed under the BSD License. // http://www.anki3d.org/LICENSE #pragma once #include #include namespace anki { enum class TriggerComponentShapeType { kSphere, kBox, kCount }; // Trigger component class TriggerComponent : public SceneComponent { ANKI_SCENE_COMPONENT(TriggerComponent) public: TriggerComponent(SceneNode* node); ~TriggerComponent(); void setType(TriggerComponentShapeType type); WeakArray getSceneNodesEnter() { return WeakArray(m_bodiesEnter); } WeakArray getSceneNodesExit() { return WeakArray(m_bodiesExit); } private: class MyPhysicsTriggerCallbacks; PhysicsCollisionShapePtr m_shape; PhysicsBodyPtr m_trigger; SceneDynamicArray m_bodiesEnter; SceneDynamicArray m_bodiesExit; TriggerComponentShapeType m_type = TriggerComponentShapeType::kCount; Bool m_resetEnter = true; Bool m_resetExit = true; static MyPhysicsTriggerCallbacks m_callbacks; void update(SceneComponentUpdateInfo& info, Bool& updated) override; Error serialize(SceneSerializer& serializer) override; }; } // end namespace anki