TriggerNode.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <AnKi/Scene/TriggerNode.h>
  6. #include <AnKi/Scene/SceneGraph.h>
  7. #include <AnKi/Scene/Components/MoveComponent.h>
  8. #include <AnKi/Scene/Components/TriggerComponent.h>
  9. #include <AnKi/Physics/PhysicsWorld.h>
  10. #include <AnKi/Physics/PhysicsCollisionShape.h>
  11. #include <AnKi/Physics/PhysicsTrigger.h>
  12. namespace anki
  13. {
  14. class TriggerNode::MoveFeedbackComponent : public SceneComponent
  15. {
  16. ANKI_SCENE_COMPONENT(TriggerNode::MoveFeedbackComponent)
  17. public:
  18. MoveFeedbackComponent(SceneNode* node)
  19. : SceneComponent(node, getStaticClassId(), true)
  20. {
  21. }
  22. ANKI_USE_RESULT Error update(SceneNode& node, Second prevTime, Second crntTime, Bool& updated) final
  23. {
  24. updated = false;
  25. const MoveComponent& move = node.getFirstComponentOfType<MoveComponent>();
  26. if(move.getTimestamp() == node.getGlobalTimestamp())
  27. {
  28. node.getFirstComponentOfType<TriggerComponent>().setWorldTransform(move.getWorldTransform());
  29. }
  30. return Error::NONE;
  31. }
  32. };
  33. ANKI_SCENE_COMPONENT_STATICS(TriggerNode::MoveFeedbackComponent)
  34. TriggerNode::TriggerNode(SceneGraph* scene, CString name)
  35. : SceneNode(scene, name)
  36. {
  37. newComponent<MoveComponent>();
  38. newComponent<MoveFeedbackComponent>();
  39. newComponent<TriggerComponent>();
  40. }
  41. TriggerNode::~TriggerNode()
  42. {
  43. }
  44. } // end namespace anki