Added comments + includes are now always in the header file (dunno if good but looks good so yeah)
This commit is contained in:
parent
a9d658502a
commit
cd3fb4409b
|
@ -1,5 +1,8 @@
|
||||||
#include "inputHandler.h"
|
#include "inputHandler.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves the camera in a somewhat smooth motion.
|
||||||
|
*/
|
||||||
void handleCameraTravel()
|
void handleCameraTravel()
|
||||||
{
|
{
|
||||||
if (cameraTraveling)
|
if (cameraTraveling)
|
||||||
|
@ -16,6 +19,9 @@ void handleCameraTravel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the position of the camera while moving.
|
||||||
|
*/
|
||||||
void travelCamera(vec3 newPosition)
|
void travelCamera(vec3 newPosition)
|
||||||
{
|
{
|
||||||
cameraTravelPosition = newPosition;
|
cameraTravelPosition = newPosition;
|
||||||
|
@ -54,10 +60,6 @@ void handleInputs(double deltaTime)
|
||||||
{
|
{
|
||||||
travelCamera((vec3){3.574698f, 0.966039f, 3.852249f});
|
travelCamera((vec3){3.574698f, 0.966039f, 3.852249f});
|
||||||
}
|
}
|
||||||
if (glfwGetKey(window, GLFW_KEY_7) == GLFW_PRESS)
|
|
||||||
{
|
|
||||||
travelCamera((vec3){0.324839f, 1.325346f, 3.798471f});
|
|
||||||
}
|
|
||||||
if (!cameraTraveling)
|
if (!cameraTraveling)
|
||||||
{
|
{
|
||||||
if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)
|
if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)
|
||||||
|
@ -178,7 +180,9 @@ void handleInputs(double deltaTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// input handler to quit with ESC
|
/**
|
||||||
|
* Function for if you wanna escape the program.
|
||||||
|
*/
|
||||||
void keyboardHandler(GLFWwindow *window, int key, int scancode, int action, int mods)
|
void keyboardHandler(GLFWwindow *window, int key, int scancode, int action, int mods)
|
||||||
{
|
{
|
||||||
assert(window != NULL);
|
assert(window != NULL);
|
||||||
|
|
|
@ -1,10 +1,4 @@
|
||||||
#include <math.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <GL/glew.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include "matrixMath.h"
|
#include "matrixMath.h"
|
||||||
|
|
||||||
// MATRICES IN COLUMN MAJOR
|
// MATRICES IN COLUMN MAJOR
|
||||||
|
@ -90,10 +84,9 @@ void vec3Normalise(vec3* out, vec3* a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
mat4 functions
|
mat4 functions (tested)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//tested
|
|
||||||
// CREATE 4x4 IDENTITY MATRIX
|
// CREATE 4x4 IDENTITY MATRIX
|
||||||
void identity(mat4* out) {
|
void identity(mat4* out) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -103,7 +96,6 @@ void identity(mat4* out) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// CREATE 4x4 TRANSLATION MATRIX
|
// CREATE 4x4 TRANSLATION MATRIX
|
||||||
void translation(mat4* out, vec3* v) {
|
void translation(mat4* out, vec3* v) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -114,7 +106,6 @@ void translation(mat4* out, vec3* v) {
|
||||||
out->m23 = v->z;
|
out->m23 = v->z;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// CREATE 4x4 SCALING MATRIX
|
// CREATE 4x4 SCALING MATRIX
|
||||||
void scaling(mat4* out, vec3* v) {
|
void scaling(mat4* out, vec3* v) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -186,7 +177,6 @@ void multiplyAny(GLfloat* out, GLfloat* A, GLfloat* B, int wA, int hA, int wB) {
|
||||||
result = NULL;
|
result = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// MULTIPLY TWO 4x4 MATRICES
|
// MULTIPLY TWO 4x4 MATRICES
|
||||||
void multiply(mat4* out, mat4* A, mat4* B) {
|
void multiply(mat4* out, mat4* A, mat4* B) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -196,7 +186,6 @@ void multiply(mat4* out, mat4* A, mat4* B) {
|
||||||
multiplyAny((GLfloat*)out, (GLfloat*)A, (GLfloat*)B, 4, 4, 4);
|
multiplyAny((GLfloat*)out, (GLfloat*)A, (GLfloat*)B, 4, 4, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
|
||||||
// MULTIPLY in WITH TRANSLATION MATRIX OF v
|
// MULTIPLY in WITH TRANSLATION MATRIX OF v
|
||||||
void translate(mat4* out, mat4* in, vec3* v) {
|
void translate(mat4* out, mat4* in, vec3* v) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -208,7 +197,6 @@ void translate(mat4* out, mat4* in, vec3* v) {
|
||||||
multiply(out, &translationMatrix, in);
|
multiply(out, &translationMatrix, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
|
||||||
// MULTIPLY in WITH SCALING MATRIX OF v
|
// MULTIPLY in WITH SCALING MATRIX OF v
|
||||||
void scale(mat4* out, mat4* in, vec3* v) {
|
void scale(mat4* out, mat4* in, vec3* v) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -220,7 +208,6 @@ void scale(mat4* out, mat4* in, vec3* v) {
|
||||||
multiply(out, &scalingMatrix, in);
|
multiply(out, &scalingMatrix, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
|
||||||
// MULTIPLY in WITH ROTATION MATRIX OF angle AROUND Z AXIS
|
// MULTIPLY in WITH ROTATION MATRIX OF angle AROUND Z AXIS
|
||||||
void rotateZ(mat4* out, mat4* in, GLfloat angle) {
|
void rotateZ(mat4* out, mat4* in, GLfloat angle) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -231,7 +218,6 @@ void rotateZ(mat4* out, mat4* in, GLfloat angle) {
|
||||||
multiply(out, &rotationMatrix, in);
|
multiply(out, &rotationMatrix, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
|
||||||
// MULTIPLY in WITH ROTATION MATRIX OF angle AROUND Y AXIS
|
// MULTIPLY in WITH ROTATION MATRIX OF angle AROUND Y AXIS
|
||||||
void rotateY(mat4* out, mat4* in, GLfloat angle) {
|
void rotateY(mat4* out, mat4* in, GLfloat angle) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -242,7 +228,6 @@ void rotateY(mat4* out, mat4* in, GLfloat angle) {
|
||||||
multiply(out, &rotationMatrix, in);
|
multiply(out, &rotationMatrix, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
|
||||||
// MULTIPLY in WITH ROTATION MATRIX OF angle AROUND X AXIS
|
// MULTIPLY in WITH ROTATION MATRIX OF angle AROUND X AXIS
|
||||||
void rotateX(mat4* out, mat4* in, GLfloat angle) {
|
void rotateX(mat4* out, mat4* in, GLfloat angle) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -253,7 +238,6 @@ void rotateX(mat4* out, mat4* in, GLfloat angle) {
|
||||||
multiply(out, &rotationMatrix, in);
|
multiply(out, &rotationMatrix, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// TRANSPOSE MATRIX OF ANY SIZE
|
// TRANSPOSE MATRIX OF ANY SIZE
|
||||||
void transposeAny(GLfloat* out, GLfloat* in, int w, int h) {
|
void transposeAny(GLfloat* out, GLfloat* in, int w, int h) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -271,7 +255,6 @@ void transposeAny(GLfloat* out, GLfloat* in, int w, int h) {
|
||||||
result = NULL;
|
result = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested, da transpose any schon getestet ist
|
|
||||||
// TRANSPOSE 4x4 MATRIX
|
// TRANSPOSE 4x4 MATRIX
|
||||||
void transpose(mat4* out, mat4* in) {
|
void transpose(mat4* out, mat4* in) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -315,7 +298,7 @@ void mat3Print(mat3* m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
mat3 functions
|
mat3 functions (tested)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TURN mat4 INTO mat3 BY CUTTING LAST COLUMN AND ROW
|
// TURN mat4 INTO mat3 BY CUTTING LAST COLUMN AND ROW
|
||||||
|
@ -328,7 +311,6 @@ void mat3From4(mat3* out, mat4* in) {
|
||||||
memcpy(&out->m02, &in->m02, sizeof(vec3));
|
memcpy(&out->m02, &in->m02, sizeof(vec3));
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// TRANSPOSE 3x3 MATRIX
|
// TRANSPOSE 3x3 MATRIX
|
||||||
void mat3Transpose(mat3* out, mat3* in) {
|
void mat3Transpose(mat3* out, mat3* in) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -337,7 +319,6 @@ void mat3Transpose(mat3* out, mat3* in) {
|
||||||
transposeAny((GLfloat*)out, (GLfloat*)in, 3, 3);
|
transposeAny((GLfloat*)out, (GLfloat*)in, 3, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
/**
|
/**
|
||||||
* a - m00 b - m01 c - m02
|
* a - m00 b - m01 c - m02
|
||||||
* d - m10 e - m11 f - m12
|
* d - m10 e - m11 f - m12
|
||||||
|
@ -365,7 +346,6 @@ void mat3Minor(mat3* out, mat3* in) {
|
||||||
memcpy(out, &result, sizeof(mat3));
|
memcpy(out, &result, sizeof(mat3));
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// GET THE COFACTOR MATRIX OF A 3x3 MATRIX
|
// GET THE COFACTOR MATRIX OF A 3x3 MATRIX
|
||||||
void mat3Cofactor(mat3* out, mat3* in) {
|
void mat3Cofactor(mat3* out, mat3* in) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -380,7 +360,6 @@ void mat3Cofactor(mat3* out, mat3* in) {
|
||||||
out->m12 *= -1;
|
out->m12 *= -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// GET ADJOING MATRRIX OF 3x3 MATRIX
|
// GET ADJOING MATRRIX OF 3x3 MATRIX
|
||||||
void mat3Adjoint(mat3* out, mat3* in) {
|
void mat3Adjoint(mat3* out, mat3* in) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -400,7 +379,6 @@ void mat3MultiplyScalar(mat3* out, mat3* in, GLfloat x) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// CALCULATE DETERMINANT OF 3x3 MATRIX
|
// CALCULATE DETERMINANT OF 3x3 MATRIX
|
||||||
GLfloat mat3Determinant(mat3* M) {
|
GLfloat mat3Determinant(mat3* M) {
|
||||||
assert(M != NULL);
|
assert(M != NULL);
|
||||||
|
@ -416,7 +394,6 @@ GLfloat mat3Determinant(mat3* M) {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// GET INVERSE OF 3x3 MATRIX
|
// GET INVERSE OF 3x3 MATRIX
|
||||||
void mat3Inverse(mat3* out, mat3* in) {
|
void mat3Inverse(mat3* out, mat3* in) {
|
||||||
assert(out != NULL);
|
assert(out != NULL);
|
||||||
|
@ -429,7 +406,6 @@ void mat3Inverse(mat3* out, mat3* in) {
|
||||||
memcpy(out, &result, sizeof(mat3));
|
memcpy(out, &result, sizeof(mat3));
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// GET THE SUM OF DIFFERENCES BETWEEN TWO MATRICES
|
// GET THE SUM OF DIFFERENCES BETWEEN TWO MATRICES
|
||||||
GLfloat sumDiffAny(GLfloat* A, GLfloat* B, int w, int h) {
|
GLfloat sumDiffAny(GLfloat* A, GLfloat* B, int w, int h) {
|
||||||
assert(A != NULL);
|
assert(A != NULL);
|
||||||
|
@ -442,7 +418,6 @@ GLfloat sumDiffAny(GLfloat* A, GLfloat* B, int w, int h) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tested
|
|
||||||
// GET THE SUM OF DIFFERENCES BETWEEN TWO 3x3 MATRICES
|
// GET THE SUM OF DIFFERENCES BETWEEN TWO 3x3 MATRICES
|
||||||
GLfloat mat3SumDiff(mat3* A, mat3* B) {
|
GLfloat mat3SumDiff(mat3* A, mat3* B) {
|
||||||
assert(A != NULL);
|
assert(A != NULL);
|
||||||
|
|
|
@ -2,6 +2,12 @@
|
||||||
#define MATRIX_MATH
|
#define MATRIX_MATH
|
||||||
|
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GLfloat x;
|
GLfloat x;
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
#include "objectHandler.h"
|
#include "objectHandler.h"
|
||||||
#include "wavefrontobj.h"
|
|
||||||
#include <GL/glew.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads an object.
|
* Loads an object.
|
||||||
|
@ -75,6 +70,7 @@ void load_object(ObjectData* objectData) {
|
||||||
/**
|
/**
|
||||||
* Takes a string-pointer, a number of files to read and a number to store the added objects to
|
* Takes a string-pointer, a number of files to read and a number to store the added objects to
|
||||||
* Returns an array of objects.
|
* Returns an array of objects.
|
||||||
|
* The increasing count would be used in the main.c.
|
||||||
*/
|
*/
|
||||||
ObjectData* readObjFiles(char** path, int numModels, int* count) {
|
ObjectData* readObjFiles(char** path, int numModels, int* count) {
|
||||||
assert(path != NULL);
|
assert(path != NULL);
|
||||||
|
|
|
@ -2,6 +2,11 @@
|
||||||
#define OBJECTHANDLER_H
|
#define OBJECTHANDLER_H
|
||||||
|
|
||||||
#include "wavefrontobj.h"
|
#include "wavefrontobj.h"
|
||||||
|
#include "wavefrontobj.h"
|
||||||
|
#include <GL/glew.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GLuint vao;
|
GLuint vao;
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
// sceneGraph.c
|
// sceneGraph.c
|
||||||
|
|
||||||
#include "sceneGraph.h"
|
#include "sceneGraph.h"
|
||||||
#include "objectHandler.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <GL/glew.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#define STB_IMAGE_IMPLEMENTATION
|
#define STB_IMAGE_IMPLEMENTATION
|
||||||
#include "../lib/stb_image.h"
|
#include "../lib/stb_image.h"
|
||||||
|
|
|
@ -7,7 +7,11 @@
|
||||||
#include "matrixMath.h"
|
#include "matrixMath.h"
|
||||||
#include "wavefrontobj.h"
|
#include "wavefrontobj.h"
|
||||||
#include "objectHandler.h"
|
#include "objectHandler.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <GL/glew.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
typedef struct SceneNode SceneNode;
|
typedef struct SceneNode SceneNode;
|
||||||
|
|
||||||
|
|
14
src/shader.c
14
src/shader.c
|
@ -1,9 +1,9 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <GL/glew.h>
|
|
||||||
#include "shader.h"
|
#include "shader.h"
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compiles shader from shaderSource.
|
||||||
|
* The shader given just needs a shader type to be set beforehand, the rest gets set here.
|
||||||
|
*/
|
||||||
void compileShader(const GLchar *shaderSource, Shader *shader) {
|
void compileShader(const GLchar *shaderSource, Shader *shader) {
|
||||||
assert(shaderSource != NULL);
|
assert(shaderSource != NULL);
|
||||||
assert(shader != NULL);
|
assert(shader != NULL);
|
||||||
|
@ -26,6 +26,9 @@ void compileShader(const GLchar *shaderSource, Shader *shader) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compiles multiple shaders. Basically compileShader() for multiple shaders in one go.
|
||||||
|
*/
|
||||||
void compileShaders(Shader* shaders, const GLchar** glslSources, int numShaders) {
|
void compileShaders(Shader* shaders, const GLchar** glslSources, int numShaders) {
|
||||||
assert(glslSources != NULL);
|
assert(glslSources != NULL);
|
||||||
assert(shaders != NULL);
|
assert(shaders != NULL);
|
||||||
|
@ -34,6 +37,9 @@ void compileShaders(Shader* shaders, const GLchar** glslSources, int numShaders)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a shaderProgram object.
|
||||||
|
*/
|
||||||
ShaderProgram createShaderProgram(const GLchar* vertexSource, const GLchar* fragmentSource) {
|
ShaderProgram createShaderProgram(const GLchar* vertexSource, const GLchar* fragmentSource) {
|
||||||
assert(vertexSource != NULL);
|
assert(vertexSource != NULL);
|
||||||
assert(fragmentSource != NULL);
|
assert(fragmentSource != NULL);
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
#define SHADER_UTIL_H
|
#define SHADER_UTIL_H
|
||||||
|
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GLenum type;
|
GLenum type;
|
||||||
|
|
|
@ -1,10 +1,3 @@
|
||||||
#include <math.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <GL/glew.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "matrixMath.h"
|
|
||||||
#include "transformation.h"
|
#include "transformation.h"
|
||||||
|
|
||||||
void lookAt(mat4* out, vec3* eye, vec3* look, vec3* up) {
|
void lookAt(mat4* out, vec3* eye, vec3* look, vec3* up) {
|
||||||
|
|
|
@ -2,6 +2,12 @@
|
||||||
#define TRANSFORMATION_H
|
#define TRANSFORMATION_H
|
||||||
|
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "matrixMath.h"
|
||||||
|
|
||||||
extern void lookAt(mat4* out, vec3* eye, vec3* look, vec3* up);
|
extern void lookAt(mat4* out, vec3* eye, vec3* look, vec3* up);
|
||||||
extern void perspectiveProjection(mat4* out, GLfloat near, GLfloat far);
|
extern void perspectiveProjection(mat4* out, GLfloat near, GLfloat far);
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
#include <GL/glew.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#include "wavefrontobj.h"
|
#include "wavefrontobj.h"
|
||||||
|
|
||||||
#define OBJ_LINE_BUFFER_SIZE 256
|
#define OBJ_LINE_BUFFER_SIZE 256
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
#define WAVEFRONTOBJ_H
|
#define WAVEFRONTOBJ_H
|
||||||
|
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include "matrixMath.h"
|
#include "matrixMath.h"
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
vec3 position;
|
vec3 position;
|
||||||
|
|
Loading…
Reference in New Issue