#pragma once #include "Component.h" #include "Math/Matrix.h" #include "Transform.h" namespace Seele { namespace Component { struct Camera { REQUIRE_COMPONENT(Transform) Camera(); ~Camera(); Matrix4 getViewMatrix() const { assert(!bNeedsViewBuild); return viewMatrix; } Vector getCameraPosition() const { return cameraPos; } Vector getCameraForward() const { return cameraForward; } void mouseMove(float deltaX, float deltaY); void mouseScroll(float x); void moveX(float amount); void moveY(float amount); void buildViewMatrix(); bool mainCamera = false; private: float yaw; float pitch; Matrix4 viewMatrix; Vector cameraPos; Vector cameraForward; bool bNeedsViewBuild; }; } // namespace Component } // namespace Seele