]> git.lizzy.rs Git - shadowclad.git/commitdiff
Separate tranform code into geometry
authoroutfrost <kotlet.bahn@gmail.com>
Tue, 26 May 2020 23:31:50 +0000 (01:31 +0200)
committeroutfrost <kotlet.bahn@gmail.com>
Tue, 26 May 2020 23:31:50 +0000 (01:31 +0200)
Makefile
src/engine/geometry.c [new file with mode: 0644]
src/engine/geometry.h
src/engine/scene.c
src/engine/scene.h
src/game/player.h

index 4184930249cbd9488ca398ddcade09be85fc7d9f..cf092585b16c58291fd53ca35f79356ea8b39209 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,7 @@ LDLIBS ::= -lGL -lGLEW -lglut -lassimp $(LDLIBS)
 
 sources ::= main.c \
             engine/asset.c \
+            engine/geometry.c \
             engine/logger.c \
             engine/performance.c \
             engine/render.c \
diff --git a/src/engine/geometry.c b/src/engine/geometry.c
new file mode 100644 (file)
index 0000000..5e0efab
--- /dev/null
@@ -0,0 +1,36 @@
+#include <stddef.h>
+
+#include "geometry.h"
+
+Transform identity() {
+       return (Transform) { .a1 = 1.0f, .a2 = 0.0f, .a3 = 0.0f, .a4 = 0.0f,
+                            .b1 = 0.0f, .b2 = 1.0f, .b3 = 0.0f, .b4 = 0.0f,
+                            .c1 = 0.0f, .c2 = 0.0f, .c3 = 1.0f, .c4 = 0.0f,
+                            .d1 = 0.0f, .d2 = 0.0f, .d3 = 0.0f, .d4 = 1.0f };
+}
+
+void multiply(Transform* transform, Transform by) {
+       GLfloat* a = (GLfloat*) &by;
+       GLfloat* b = (GLfloat*) transform;
+
+       for (size_t row = 0; row < 4; ++row) {
+               for (size_t col = 0; col < 4; ++col) {
+                       b[(row * 4) + col] =
+                               a[(row * 4) + 0] * b[(0 * 4) + col]
+                               + a[(row * 4) + 1] * b[(1 * 4) + col]
+                               + a[(row * 4) + 2] * b[(2 * 4) + col]
+                               + a[(row * 4) + 3] * b[(3 * 4) + col];
+               }
+       }
+}
+
+void translate(Transform* transform, Vector3D vec) {
+       multiply(transform, (Transform) { .a1 = 1.0f, .a2 = 0.0f, .a3 = 0.0f, .a4 = vec.x,
+                                      .b1 = 0.0f, .b2 = 1.0f, .b3 = 0.0f, .b4 = vec.y,
+                                      .c1 = 0.0f, .c2 = 0.0f, .c3 = 1.0f, .c4 = vec.z,
+                                      .d1 = 0.0f, .d2 = 0.0f, .d3 = 0.0f, .d4 = 1.0f });
+}
+
+Vector3D translationOf(Transform transform) {
+       return (Vector3D) { transform.a4, transform.b4, transform.c4 };
+}
index 9f6dc581a4b881f0163330cb366dc1ffc407cd53..32642a59e3da562ea5403f92f79dcbc64e19d313 100644 (file)
@@ -1,7 +1,10 @@
 #ifndef GEOMETRY_H_
 #define GEOMETRY_H_
 
+#include <GL/gl.h>
+
 typedef struct Vector3D Vector3D;
+typedef struct Transform Transform;
 
 struct Vector3D {
        float x;
@@ -9,4 +12,15 @@ struct Vector3D {
        float z;
 };
 
+struct Transform {
+       GLfloat a1, a2, a3, a4;
+       GLfloat b1, b2, b3, b4;
+       GLfloat c1, c2, c3, c4;
+       GLfloat d1, d2, d3, d4;
+};
+
+Transform identity();
+void translate(Transform* transform, Vector3D vec);
+Vector3D translationOf(Transform transform);
+
 #endif
index 5cbe4052a091948a09479a8f0430010f515d0d4a..0812c79bf95eb51f62cff56e92e64d7a672649eb 100644 (file)
@@ -2,45 +2,13 @@
 
 #include "engine/logger.h"
 
+#include "geometry.h"
 #include "scene.h"
 
 Scene* currentScene = NULL;
 
 
 
-Transform identity() {
-       return (Transform) { .a1 = 1.0f, .a2 = 0.0f, .a3 = 0.0f, .a4 = 0.0f,
-                            .b1 = 0.0f, .b2 = 1.0f, .b3 = 0.0f, .b4 = 0.0f,
-                            .c1 = 0.0f, .c2 = 0.0f, .c3 = 1.0f, .c4 = 0.0f,
-                            .d1 = 0.0f, .d2 = 0.0f, .d3 = 0.0f, .d4 = 1.0f };
-}
-
-void multiply(Transform* transform, Transform by) {
-       GLfloat* a = (GLfloat*) &by;
-       GLfloat* b = (GLfloat*) transform;
-
-       for (size_t row = 0; row < 4; ++row) {
-               for (size_t col = 0; col < 4; ++col) {
-                       b[(row * 4) + col] =
-                               a[(row * 4) + 0] * b[(0 * 4) + col]
-                               + a[(row * 4) + 1] * b[(1 * 4) + col]
-                               + a[(row * 4) + 2] * b[(2 * 4) + col]
-                               + a[(row * 4) + 3] * b[(3 * 4) + col];
-               }
-       }
-}
-
-void translate(Transform* transform, Vector3D vec) {
-       multiply(transform, (Transform) { .a1 = 1.0f, .a2 = 0.0f, .a3 = 0.0f, .a4 = vec.x,
-                                      .b1 = 0.0f, .b2 = 1.0f, .b3 = 0.0f, .b4 = vec.y,
-                                      .c1 = 0.0f, .c2 = 0.0f, .c3 = 1.0f, .c4 = vec.z,
-                                      .d1 = 0.0f, .d2 = 0.0f, .d3 = 0.0f, .d4 = 1.0f });
-}
-
-Vector3D translationOf(Transform transform) {
-       return (Vector3D) { transform.a4, transform.b4, transform.c4 };
-}
-
 Scene* newScene() {
        Scene* scene = malloc(sizeof(Scene));
        *scene = (Scene) { .parent = NULL,
index 24b308a1a90436667b92b4e5030886a7c951cd79..c32694a365b556a85163f356fbf7a8b1aa4527e4 100644 (file)
@@ -4,14 +4,6 @@
 #include "asset.h"
 
 typedef struct Scene Scene;
-typedef struct Transform Transform;
-
-struct Transform {
-       GLfloat a1, a2, a3, a4;
-       GLfloat b1, b2, b3, b4;
-       GLfloat c1, c2, c3, c4;
-       GLfloat d1, d2, d3, d4;
-};
 
 struct Scene {
        Scene* parent;
@@ -23,10 +15,6 @@ struct Scene {
 
 Scene* currentScene;
 
-Transform identity();
-void translate(Transform* transform, Vector3D vec);
-Vector3D translationOf(Transform transform);
-
 Scene* newScene();
 void insertChildScene(Scene* scene, Scene* newChild);
 void reparentScene(Scene* scene, Scene* newParent);
index 9a7c25045f8e95a5d714fa6c1ae1c58b340c3010..373204f3b5ec69f322d39a7c21dd8e60bf1002fa 100644 (file)
@@ -3,7 +3,6 @@
 
 #include <GL/gl.h>
 
-#include "engine/geometry.h"
 #include "engine/scene.h"
 
 Scene* playerCharacter;