MoveComponent.h 978 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Scene/Components/SceneComponent.h>
  7. #include <AnKi/Scene/GpuSceneArray.h>
  8. namespace anki {
  9. /// @addtogroup scene
  10. /// @{
  11. /// A simple implicit component that updates the SceneNode's transform.
  12. class MoveComponent : public SceneComponent
  13. {
  14. ANKI_SCENE_COMPONENT(MoveComponent)
  15. public:
  16. MoveComponent(SceneNode* node)
  17. : SceneComponent(node, kClassType)
  18. {
  19. m_gpuSceneTransforms.allocate();
  20. }
  21. ~MoveComponent()
  22. {
  23. m_gpuSceneTransforms.free();
  24. }
  25. ANKI_INTERNAL U32 getGpuSceneTransformsIndex() const
  26. {
  27. return m_gpuSceneTransforms.getIndex() * 2;
  28. }
  29. private:
  30. GpuSceneArrays::Transform::Allocation m_gpuSceneTransforms;
  31. Bool m_movedLastFrame = true;
  32. void update(SceneComponentUpdateInfo& info, Bool& updated) override;
  33. };
  34. /// @}
  35. } // end namespace anki