TriggerNode.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. class TriggerNode::MoveFeedbackComponent : public SceneComponent
  14. {
  15. ANKI_SCENE_COMPONENT(TriggerNode::MoveFeedbackComponent)
  16. public:
  17. MoveFeedbackComponent(SceneNode* node)
  18. : SceneComponent(node, getStaticClassId(), true)
  19. {
  20. }
  21. ANKI_USE_RESULT Error update(SceneNode& node, Second prevTime, Second crntTime, Bool& updated) final
  22. {
  23. updated = false;
  24. const MoveComponent& move = node.getFirstComponentOfType<MoveComponent>();
  25. if(move.getTimestamp() == node.getGlobalTimestamp())
  26. {
  27. node.getFirstComponentOfType<TriggerComponent>().setWorldTransform(move.getWorldTransform());
  28. }
  29. return Error::NONE;
  30. }
  31. };
  32. ANKI_SCENE_COMPONENT_STATICS(TriggerNode::MoveFeedbackComponent)
  33. TriggerNode::TriggerNode(SceneGraph* scene, CString name)
  34. : SceneNode(scene, name)
  35. {
  36. newComponent<MoveComponent>();
  37. newComponent<MoveFeedbackComponent>();
  38. newComponent<TriggerComponent>();
  39. }
  40. TriggerNode::~TriggerNode()
  41. {
  42. }
  43. } // end namespace anki