summaryrefslogtreecommitdiff
path: root/gfx/gl/bufferedLocation.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/gl/bufferedLocation.h')
-rw-r--r--gfx/gl/bufferedLocation.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/gfx/gl/bufferedLocation.h b/gfx/gl/bufferedLocation.h
new file mode 100644
index 0000000..cf7afed
--- /dev/null
+++ b/gfx/gl/bufferedLocation.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "instanceVertices.h"
+#include "location.hpp"
+#include <glm/mat4x4.hpp>
+#include <glm/vec3.hpp>
+
+class BufferedLocation {
+public:
+ BufferedLocation(InstanceVertices<glm::mat4> &, glm::vec3 = {}, glm::vec3 = {});
+ BufferedLocation(InstanceVertices<glm::mat4> &, const Location &);
+
+ BufferedLocation & operator=(const Location &);
+
+ operator const Location &() const;
+
+ glm::vec3 position() const;
+ glm::vec3 rotation() const;
+ void setPosition(glm::vec3, bool update = true);
+ void setRotation(glm::vec3, bool update = true);
+ void setLocation(glm::vec3, glm::vec3);
+
+ glm::mat4 getTransform() const;
+
+private:
+ void updateBuffer();
+
+ Location loc;
+ InstanceVertices<glm::mat4>::InstanceProxy buffer;
+};