summaryrefslogtreecommitdiff
path: root/gfx/gl/bufferedLocation.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-04-27 17:55:30 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2023-04-27 17:55:30 +0100
commit4f34ed9c949785784f0006f971b5fd2bb9508553 (patch)
tree20f6627a2f441212365d05d04160a5a6a97063e7 /gfx/gl/bufferedLocation.h
parentMerge remote-tracking branch 'origin/assimp-normals' (diff)
parentRevert "Export mesh size and primitive type" (diff)
downloadilt-4f34ed9c949785784f0006f971b5fd2bb9508553.tar.bz2
ilt-4f34ed9c949785784f0006f971b5fd2bb9508553.tar.xz
ilt-4f34ed9c949785784f0006f971b5fd2bb9508553.zip
Merge branch 'instancing-pt2'
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;
+};