feat: add imguizmo + trigger buxfix

This commit is contained in:
2026-10-18 11:45:37 +02:00
parent 70c940c476
commit 4bd99b25d1
37 changed files with 700 additions and 58 deletions
@@ -41,8 +41,8 @@ public:
[[nodiscard]] Interactable* GetFocusedInteractable() const { return m_FocusedInteractable; }
[[nodiscard]] glm::vec3 GetLookDirection() const;
[[nodiscard]] bool IsMouseCaptured() const { return InputManager::GetInstance().IsMouseCaptured(); }
void SetMouseCaptured(bool captured);
[[nodiscard]] bool IsPossessed() const { return m_Possessed; }
void SetPossessed(bool possessed);
private:
[[nodiscard]] bool CheckGrounded() const;
@@ -70,6 +70,7 @@ private:
Interactable* m_FocusedInteractable{nullptr};
bool m_Possessed{false};
bool m_Grounded{false};
bool m_JumpHeld{false};
float m_CoyoteTimer{0.0f};
@@ -4,6 +4,7 @@
#include <components/Door.h>
#include <components/FirstPersonController.h>
#include <components/InteractableButton.h>
#include <components/LightToggle.h>
#include <components/PrintComponent.h>
#include <components/TriggerLoggerComponent.h>
@@ -11,6 +12,7 @@
X(Door) \
X(FirstPersonController) \
X(InteractableButton) \
X(LightToggle) \
X(PrintComponent) \
X(TriggerLoggerComponent)
@@ -24,6 +24,8 @@ public:
[[nodiscard]] std::size_t GetColorIndex() const { return m_ColorIndex; }
[[nodiscard]] int GetPressCount() const { return m_PressCount; }
void SetCycleColors(bool cycleColors) { m_CycleColors = cycleColors; }
// Every Activatable on a target object is activated when the button is pressed
void AddTarget(const GameObject& target);
void RemoveTarget(ObjectId target);
@@ -36,6 +38,7 @@ private:
std::size_t m_ColorIndex{0};
int m_PressCount{0};
bool m_CycleColors{true};
std::vector<ObjectId> m_Targets;
};
@@ -0,0 +1,30 @@
#ifndef LIGHTKEEPER_LIGHTTOGGLE_H
#define LIGHTKEEPER_LIGHTTOGGLE_H
#include <components/Activatable.h>
class LightToggle final : public Activatable {
public:
explicit LightToggle(GameObject& parent);
std::string GetTypeName() const override { return "LightToggle"; }
void Start() override;
nlohmann::json Serialize() const override;
void Deserialize(const nlohmann::json& data) override;
void ImGuiInspector() override;
void SetOn(bool on);
[[nodiscard]] bool IsOn() const { return m_On; }
protected:
void OnActivate(GameObject& instigator) override;
private:
void Apply();
bool m_On{true};
};
#endif // LIGHTKEEPER_LIGHTTOGGLE_H