Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
VrMovementComponent.h
Go to the documentation of this file.
1#pragma once
4
5#include <glm/glm.hpp>
6#include <memory>
7
8namespace Engine::Rendering
9{
10 class Headset;
11} // namespace Engine::Rendering
12
13namespace Input
14{
15 class XrInputHandler;
16} // namespace Input
17
18namespace Engine::Components {
19
27 class VrMovement : public Logic {
28 public:
29 static constexpr bool IsUnique = true;
30 static constexpr const char* ComponentName = "VrMovement";
31
40 Entities::Scene * owningScene,
41 std::shared_ptr<Entities::SceneNode> sceneNode,
42 Rendering::Headset * headset,
43 Input::XrInputHandler * inputHandler
44 );
45
46 ~VrMovement() override = default;
47
48 void beginPlay() override;
49 void tick(double deltaTime) override;
50 void endPlay() override;
51
55 void setMoveSpeed(float speed) { moveSpeed_ = speed; }
56 [[nodiscard]] float getMoveSpeed() const { return moveSpeed_; }
57
61 void setVerticalSpeed(float speed) { verticalSpeed_ = speed; }
62 [[nodiscard]] float getVerticalSpeed() const { return verticalSpeed_; }
63
67 void setDeadZone(float deadZone) { deadZone_ = deadZone; }
68 [[nodiscard]] float getDeadZone() const { return deadZone_; }
69
70 private:
71 [[nodiscard]] glm::vec3 getHeadsetForwardXZ() const;
72
73 std::shared_ptr<Entities::SceneNode> sceneNode_;
76
77 float moveSpeed_ = 3.0f;
78 float verticalSpeed_ = 2.0f;
79 float deadZone_ = 0.15f;
80 };
81
82}
Logic(Entities::Scene *owningScene)
void setMoveSpeed(float speed)
Sets the horizontal movement speed in units per second.
void beginPlay() override
Called when the component is added to the scene or the game starts.
void endPlay() override
Called when the component is removed or the game ends.
glm::vec3 getHeadsetForwardXZ() const
~VrMovement() override=default
static constexpr const char * ComponentName
VrMovement(Entities::Scene *owningScene, std::shared_ptr< Entities::SceneNode > sceneNode, Rendering::Headset *headset, Input::XrInputHandler *inputHandler)
Constructs the VR movement component.
void setDeadZone(float deadZone)
Sets the dead zone for thumbstick input (0.0 to 1.0)
Input::XrInputHandler * inputHandler_
void setVerticalSpeed(float speed)
Sets the vertical movement speed in units per second.
std::shared_ptr< Entities::SceneNode > sceneNode_
void tick(double deltaTime) override
Called every frame if ticking is enabled.
A scene is the overarching structure which can spawn, contain and destroy actors or entities.
Definition Scene.h:56
Handles OpenXR input actions and controller state.