diff --git a/Controller.h b/Controller.h
index 26b20d0..0de45f5 100644
--- a/Controller.h
+++ b/Controller.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class Controller
{
public:
diff --git a/CrystalPoint.vcxproj b/CrystalPoint.vcxproj
index 6422438..87360d9 100644
--- a/CrystalPoint.vcxproj
+++ b/CrystalPoint.vcxproj
@@ -151,6 +151,7 @@
+
@@ -158,13 +159,17 @@
+
+
+
+
@@ -172,8 +177,11 @@
+
+
+
diff --git a/CrystalPoint.vcxproj.filters b/CrystalPoint.vcxproj.filters
index aa3e135..675688c 100644
--- a/CrystalPoint.vcxproj.filters
+++ b/CrystalPoint.vcxproj.filters
@@ -22,6 +22,9 @@
{842778c9-ff0f-4a6d-9c86-0a178ad40fcc}
+
+ {1be14b84-6fa7-4cfb-94b9-666f3ee14198}
+
@@ -60,6 +63,18 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
@@ -98,5 +113,17 @@
Source Files\State
+
+ Source Files\Model\Enemy
+
+
+ Source Files
+
+
+ Source Files\Model
+
+
+ Source Files
+
\ No newline at end of file
diff --git a/Enemy.cpp b/Enemy.cpp
new file mode 100644
index 0000000..59b8bc9
--- /dev/null
+++ b/Enemy.cpp
@@ -0,0 +1,12 @@
+#include "Enemy.h"
+
+
+
+Enemy::Enemy()
+{
+}
+
+
+Enemy::~Enemy()
+{
+}
diff --git a/Enemy.h b/Enemy.h
new file mode 100644
index 0000000..97075b6
--- /dev/null
+++ b/Enemy.h
@@ -0,0 +1,10 @@
+#pragma once
+#include "Header.h"
+
+class Enemy
+{
+public:
+ Enemy();
+ ~Enemy();
+};
+
diff --git a/Header.h b/Header.h
index 30fe1c8..8048421 100644
--- a/Header.h
+++ b/Header.h
@@ -12,10 +12,9 @@
#include
#include
#include
+#include
#include
#include
-//Own files
-#include "Model.h"
-#include "ModelLoader.h"
\ No newline at end of file
+using namespace std;
\ No newline at end of file
diff --git a/Keyboard.h b/Keyboard.h
index f75be2c..fcfdc55 100644
--- a/Keyboard.h
+++ b/Keyboard.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class Keyboard
{
public:
diff --git a/LoadingState.h b/LoadingState.h
index 7de986a..c4ad570 100644
--- a/LoadingState.h
+++ b/LoadingState.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class LoadingState
{
public:
diff --git a/Main.cpp b/Main.cpp
index 1ad112d..cf53916 100644
--- a/Main.cpp
+++ b/Main.cpp
@@ -1,4 +1,5 @@
#include "Header.h"
+#include "Model.h"
//Prototypes
void bindFuncOpenGL(void);
@@ -11,7 +12,7 @@ static int Height;
float lastFrameTime = 0;
bool keys[255];
-vector models;
+vector models;
int currentModel = 0;
struct Camera
@@ -169,5 +170,5 @@ void configureOpenGL()
void loadModels()
{
- models.push_back(new ObjModel("models/ship/shipA_OBJ.obj"));
+ models.push_back(new Model("models/ship/shipA_OBJ.obj"));
}
\ No newline at end of file
diff --git a/MenuState.h b/MenuState.h
index 9ebbf4a..e3a7426 100644
--- a/MenuState.h
+++ b/MenuState.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class MenuState
{
public:
diff --git a/Model.cpp b/Model.cpp
index 10173d5..0adaa02 100644
--- a/Model.cpp
+++ b/Model.cpp
@@ -1,10 +1,236 @@
#include "Model.h"
-Model::Model()
+#define STB_IMAGE_IMPLEMENTATION
+#include "stb_image.h"
+
+Model::Model(string fileName)
+{
+ std::string dirName = fileName;
+ if (dirName.rfind("/") != std::string::npos)
+ dirName = dirName.substr(0, dirName.rfind("/"));
+ if (dirName.rfind("\\") != std::string::npos)
+ dirName = dirName.substr(0, dirName.rfind("\\"));
+ if (fileName == dirName)
+ dirName = "";
+
+
+ std::ifstream pFile(fileName.c_str());
+
+ if (!pFile.is_open())
+ {
+ std::cout << "Could not open file " << fileName << std::endl;
+ return;
+ }
+
+
+ ObjGroup* currentGroup = new ObjGroup();
+ currentGroup->materialIndex = -1;
+
+
+ while (!pFile.eof())
+ {
+ std::string line;
+ std::getline(pFile, line);
+
+ line = replace(line, "\t", " ");
+ while (line.find(" ") != std::string::npos)
+ line = replace(line, " ", " ");
+ if (line == "")
+ continue;
+ if (line[0] == ' ')
+ line = line.substr(1);
+ if (line == "")
+ continue;
+ if (line[line.length() - 1] == ' ')
+ line = line.substr(0, line.length() - 1);
+ if (line == "")
+ continue;
+ if (line[0] == '#')
+ continue;
+
+ std::vector params = split(line, " ");
+ params[0] = toLower(params[0]);
+
+ if (params[0] == "v")
+ vertices.push_back(Vec3f((float)atof(params[1].c_str()), (float)atof(params[2].c_str()), (float)atof(params[3].c_str())));
+ else if (params[0] == "vn")
+ normals.push_back(Vec3f((float)atof(params[1].c_str()), (float)atof(params[2].c_str()), (float)atof(params[3].c_str())));
+ else if (params[0] == "vt")
+ texcoords.push_back(Vec2f((float)atof(params[1].c_str()), (float)atof(params[2].c_str())));
+ else if (params[0] == "f")
+ {
+ for (size_t ii = 4; ii <= params.size(); ii++)
+ {
+ Face face;
+
+ for (size_t i = ii - 3; i < ii; i++) //magische forlus om van quads triangles te maken ;)
+ {
+ Vertex vertex;
+ std::vector indices = split(params[i == (ii - 3) ? 1 : i], "/");
+ if (indices.size() >= 1) //er is een positie
+ vertex.position = atoi(indices[0].c_str()) - 1;
+ if (indices.size() == 2) //alleen texture
+ vertex.texcoord = atoi(indices[1].c_str()) - 1;
+ if (indices.size() == 3) //v/t/n of v//n
+ {
+ if (indices[1] != "")
+ vertex.texcoord = atoi(indices[1].c_str()) - 1;
+ vertex.normal = atoi(indices[2].c_str()) - 1;
+ }
+ face.vertices.push_back(vertex);
+ }
+ currentGroup->faces.push_back(face);
+ }
+ }
+ else if (params[0] == "s")
+ {//smoothing
+ }
+ else if (params[0] == "mtllib")
+ {
+ loadMaterialFile(dirName + "/" + params[1], dirName);
+ }
+ else if (params[0] == "usemtl")
+ {
+ if (currentGroup->faces.size() != 0)
+ groups.push_back(currentGroup);
+ currentGroup = new ObjGroup();
+ currentGroup->materialIndex = -1;
+
+ for (size_t i = 0; i < materials.size(); i++)
+ {
+ MaterialInfo* info = materials[i];
+ if (info->name == params[1])
+ {
+ currentGroup->materialIndex = i;
+ break;
+ }
+ }
+ if (currentGroup->materialIndex == -1)
+ std::cout << "Could not find material name " << params[1] << std::endl;
+ }
+ }
+ groups.push_back(currentGroup);
+}
+
+
+Model::~Model(void)
{
}
-Model::~Model()
+
+
+void Model::draw()
{
+ for (auto &g : groups)
+ {
+ if (materials[g->materialIndex]->hasTexture)
+ {
+ glEnable(GL_TEXTURE_2D);
+ materials[g->materialIndex]->texture->bind();
+ }
+
+ glBegin(GL_TRIANGLES);
+ for (auto &f : g->faces)
+ {
+ for (auto &v : f.vertices)
+ {
+ glNormal3f(normals[v.normal].x, normals[v.normal].y, normals[v.normal].z);
+ glTexCoord2f(texcoords[v.texcoord].x, texcoords[v.texcoord].y);
+ glVertex3f(vertices[v.position].x, vertices[v.position].y, vertices[v.position].z);
+ }
+ }
+ glEnd();
+ }
}
+
+void Model::loadMaterialFile(std::string fileName, std::string dirName)
+{
+ std::ifstream pFile(fileName.c_str());
+ if (!pFile.is_open())
+ {
+ std::cout << "Could not open file " << fileName << std::endl;
+ return;
+ }
+
+ MaterialInfo* currentMaterial = NULL;
+
+ while (!pFile.eof())
+ {
+ std::string line;
+ std::getline(pFile, line);
+
+ line = replace(line, "\t", " ");
+ while (line.find(" ") != std::string::npos)
+ line = replace(line, " ", " ");
+ if (line == "")
+ continue;
+ if (line[0] == ' ')
+ line = line.substr(1);
+ if (line == "")
+ continue;
+ if (line[line.length() - 1] == ' ')
+ line = line.substr(0, line.length() - 1);
+ if (line == "")
+ continue;
+ if (line[0] == '#')
+ continue;
+
+ std::vector params = split(line, " ");
+ params[0] = toLower(params[0]);
+
+ if (params[0] == "newmtl")
+ {
+ if (currentMaterial != NULL)
+ {
+ materials.push_back(currentMaterial);
+ }
+ currentMaterial = new MaterialInfo();
+ currentMaterial->name = params[1];
+ }
+ else if (params[0] == "map_kd")
+ {
+ currentMaterial->hasTexture = true;
+ currentMaterial->texture = new Texture(dirName + "/" + params[1]);
+ }
+ else
+ std::cout << "Didn't parse " << params[0] << " in material file" << std::endl;
+ }
+ if (currentMaterial != NULL)
+ materials.push_back(currentMaterial);
+
+}
+
+Model::MaterialInfo::MaterialInfo()
+{
+ Texture *texture;
+ hasTexture = false;
+}
+
+Model::Texture::Texture(const std::string & fileName)
+{
+ int width, height, bpp;
+ stbi_set_flip_vertically_on_load(true);
+ unsigned char* imgData = stbi_load(fileName.c_str(), &width, &height, &bpp, 4);
+
+ glGenTextures(1, &index);
+ glBindTexture(GL_TEXTURE_2D, index);
+
+ glTexImage2D(GL_TEXTURE_2D,
+ 0, //level
+ GL_RGBA, //internal format
+ width, //width
+ height, //height
+ 0, //border
+ GL_RGBA, //data format
+ GL_UNSIGNED_BYTE, //data type
+ imgData); //data
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ stbi_image_free(imgData);
+}
+
+void Model::Texture::bind()
+{
+ glBindTexture(GL_TEXTURE_2D, index);
+}
\ No newline at end of file
diff --git a/Model.h b/Model.h
index b74c958..703e059 100644
--- a/Model.h
+++ b/Model.h
@@ -1,8 +1,60 @@
#pragma once
+#include "Header.h"
+#include "ModelLoader.h"
+#include "Vector.h"
+
class Model
{
-public:
- Model();
- ~Model();
-};
+private:
+ class Vertex
+ {
+ public:
+ int position;
+ int normal;
+ int texcoord;
+ };
+ class Face
+ {
+ public:
+ list vertices;
+ };
+
+ class Texture
+ {
+ GLuint index;
+ public:
+ Texture(const std::string &fileName);
+ void bind();
+ };
+
+ class MaterialInfo
+ {
+ public:
+ MaterialInfo();
+ std::string name;
+ Texture* texture;
+ bool hasTexture;
+ };
+
+ class ObjGroup
+ {
+ public:
+ std::string name;
+ int materialIndex;
+ list faces;
+ };
+
+ std::vector vertices;
+ std::vector normals;
+ std::vector texcoords;
+ std::vector groups;
+ std::vector materials;
+
+ void loadMaterialFile(std::string fileName, std::string dirName);
+public:
+ Model(std::string filename);
+ ~Model(void);
+
+ void draw();
+};
diff --git a/ModelLoader.cpp b/ModelLoader.cpp
index 99b1452..2afdb71 100644
--- a/ModelLoader.cpp
+++ b/ModelLoader.cpp
@@ -1,19 +1,7 @@
#include "Header.h"
#include "ModelLoader.h"
-#define STB_IMAGE_IMPLEMENTATION
-#include "stb_image.h"
-
-ModelLoader::ModelLoader()
-{
-}
-
-
-ModelLoader::~ModelLoader()
-{
-}
-
-std::string replace(std::string str, std::string toReplace, std::string replacement)
+string replace(string str, string toReplace, string replacement)
{
size_t index = 0;
while (true)
@@ -27,7 +15,7 @@ std::string replace(std::string str, std::string toReplace, std::string replacem
return str;
}
-std::vector split(std::string str, std::string sep)
+vector split(string str, string sep)
{
std::vector ret;
size_t index;
@@ -41,293 +29,4 @@ std::vector split(std::string str, std::string sep)
}
ret.push_back(str);
return ret;
-}
-
-inline std::string toLower(std::string data)
-{
- std::transform(data.begin(), data.end(), data.begin(), ::tolower);
- return data;
-}
-
-
-
-
-ObjModel::ObjModel(std::string fileName)
-{
- std::string dirName = fileName;
- if (dirName.rfind("/") != std::string::npos)
- dirName = dirName.substr(0, dirName.rfind("/"));
- if (dirName.rfind("\\") != std::string::npos)
- dirName = dirName.substr(0, dirName.rfind("\\"));
- if (fileName == dirName)
- dirName = "";
-
-
- std::ifstream pFile(fileName.c_str());
-
- if (!pFile.is_open())
- {
- std::cout << "Could not open file " << fileName << std::endl;
- return;
- }
-
-
- ObjGroup* currentGroup = new ObjGroup();
- currentGroup->materialIndex = -1;
-
-
- while (!pFile.eof())
- {
- std::string line;
- std::getline(pFile, line);
-
- line = replace(line, "\t", " ");
- while (line.find(" ") != std::string::npos)
- line = replace(line, " ", " ");
- if (line == "")
- continue;
- if (line[0] == ' ')
- line = line.substr(1);
- if (line == "")
- continue;
- if (line[line.length() - 1] == ' ')
- line = line.substr(0, line.length() - 1);
- if (line == "")
- continue;
- if (line[0] == '#')
- continue;
-
- std::vector params = split(line, " ");
- params[0] = toLower(params[0]);
-
- if (params[0] == "v")
- vertices.push_back(Vec3f((float)atof(params[1].c_str()), (float)atof(params[2].c_str()), (float)atof(params[3].c_str())));
- else if (params[0] == "vn")
- normals.push_back(Vec3f((float)atof(params[1].c_str()), (float)atof(params[2].c_str()), (float)atof(params[3].c_str())));
- else if (params[0] == "vt")
- texcoords.push_back(Vec2f((float)atof(params[1].c_str()), (float)atof(params[2].c_str())));
- else if (params[0] == "f")
- {
- for (size_t ii = 4; ii <= params.size(); ii++)
- {
- Face face;
-
- for (size_t i = ii - 3; i < ii; i++) //magische forlus om van quads triangles te maken ;)
- {
- Vertex vertex;
- std::vector indices = split(params[i == (ii - 3) ? 1 : i], "/");
- if (indices.size() >= 1) //er is een positie
- vertex.position = atoi(indices[0].c_str()) - 1;
- if (indices.size() == 2) //alleen texture
- vertex.texcoord = atoi(indices[1].c_str()) - 1;
- if (indices.size() == 3) //v/t/n of v//n
- {
- if (indices[1] != "")
- vertex.texcoord = atoi(indices[1].c_str()) - 1;
- vertex.normal = atoi(indices[2].c_str()) - 1;
- }
- face.vertices.push_back(vertex);
- }
- currentGroup->faces.push_back(face);
- }
- }
- else if (params[0] == "s")
- {//smoothing
- }
- else if (params[0] == "mtllib")
- {
- loadMaterialFile(dirName + "/" + params[1], dirName);
- }
- else if (params[0] == "usemtl")
- {
- if (currentGroup->faces.size() != 0)
- groups.push_back(currentGroup);
- currentGroup = new ObjGroup();
- currentGroup->materialIndex = -1;
-
- for (size_t i = 0; i < materials.size(); i++)
- {
- MaterialInfo* info = materials[i];
- if (info->name == params[1])
- {
- currentGroup->materialIndex = i;
- break;
- }
- }
- if (currentGroup->materialIndex == -1)
- std::cout << "Could not find material name " << params[1] << std::endl;
- }
- }
- groups.push_back(currentGroup);
-}
-
-
-ObjModel::~ObjModel(void)
-{
-}
-
-
-
-
-void ObjModel::draw()
-{
- for (auto &g : groups)
- {
- if (materials[g->materialIndex]->hasTexture)
- {
- glEnable(GL_TEXTURE_2D);
- materials[g->materialIndex]->texture->bind();
- }
-
- glBegin(GL_TRIANGLES);
- for (auto &f : g->faces)
- {
- for (auto &v : f.vertices)
- {
- glNormal3f(normals[v.normal].x, normals[v.normal].y, normals[v.normal].z);
- glTexCoord2f(texcoords[v.texcoord].x, texcoords[v.texcoord].y);
- glVertex3f(vertices[v.position].x, vertices[v.position].y, vertices[v.position].z);
- }
- }
- glEnd();
- }
-}
-
-void ObjModel::loadMaterialFile(std::string fileName, std::string dirName)
-{
- std::ifstream pFile(fileName.c_str());
- if (!pFile.is_open())
- {
- std::cout << "Could not open file " << fileName << std::endl;
- return;
- }
-
- MaterialInfo* currentMaterial = NULL;
-
- while (!pFile.eof())
- {
- std::string line;
- std::getline(pFile, line);
-
- line = replace(line, "\t", " ");
- while (line.find(" ") != std::string::npos)
- line = replace(line, " ", " ");
- if (line == "")
- continue;
- if (line[0] == ' ')
- line = line.substr(1);
- if (line == "")
- continue;
- if (line[line.length() - 1] == ' ')
- line = line.substr(0, line.length() - 1);
- if (line == "")
- continue;
- if (line[0] == '#')
- continue;
-
- std::vector params = split(line, " ");
- params[0] = toLower(params[0]);
-
- if (params[0] == "newmtl")
- {
- if (currentMaterial != NULL)
- {
- materials.push_back(currentMaterial);
- }
- currentMaterial = new MaterialInfo();
- currentMaterial->name = params[1];
- }
- else if (params[0] == "map_kd")
- {
- currentMaterial->hasTexture = true;
- currentMaterial->texture = new Texture(dirName + "/" + params[1]);
- }
- else
- std::cout << "Didn't parse " << params[0] << " in material file" << std::endl;
- }
- if (currentMaterial != NULL)
- materials.push_back(currentMaterial);
-
-}
-
-ObjModel::MaterialInfo::MaterialInfo()
-{
- Texture *texture;
- hasTexture = false;
-}
-
-
-Vec3f::Vec3f(float x, float y, float z)
-{
- this->x = x;
- this->y = y;
- this->z = z;
-}
-Vec3f::Vec3f()
-{
- this->x = 0;
- this->y = 0;
- this->z = 0;
-}
-Vec3f::Vec3f(Vec3f &other)
-{
- this->x = other.x;
- this->y = other.y;
- this->z = other.z;
-}
-
-float& Vec3f::operator [](int index)
-{
- return v[index];
-}
-
-
-
-Vec2f::Vec2f(float x, float y)
-{
- this->x = x;
- this->y = y;
-}
-Vec2f::Vec2f()
-{
- this->x = 0;
- this->y = 0;
-}
-Vec2f::Vec2f(Vec2f &other)
-{
- this->x = other.x;
- this->y = other.y;
-}
-
-float& Vec2f::operator [](int index)
-{
- return v[index];
-}
-
-ObjModel::Texture::Texture(const std::string & fileName)
-{
- int width, height, bpp;
- stbi_set_flip_vertically_on_load(true);
- unsigned char* imgData = stbi_load(fileName.c_str(), &width, &height, &bpp, 4);
-
- glGenTextures(1, &index);
- glBindTexture(GL_TEXTURE_2D, index);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, //level
- GL_RGBA, //internal format
- width, //width
- height, //height
- 0, //border
- GL_RGBA, //data format
- GL_UNSIGNED_BYTE, //data type
- imgData); //data
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- stbi_image_free(imgData);
-}
-
-void ObjModel::Texture::bind()
-{
- glBindTexture(GL_TEXTURE_2D, index);
}
\ No newline at end of file
diff --git a/ModelLoader.h b/ModelLoader.h
index 296d5aa..89ebe71 100644
--- a/ModelLoader.h
+++ b/ModelLoader.h
@@ -1,101 +1,10 @@
-#include "Header.h"
-using namespace std;
-
#pragma once
-class ModelLoader
+#include "Header.h"
+
+string replace(string str, string toReplace, string replacement);
+vector split(string str, string sep);
+inline string toLower(string data)
{
-public:
- ModelLoader();
- ~ModelLoader();
-};
-
-class Vec3f
-{
-public:
- union
- {
- struct
- {
- float x, y, z;
- };
- float v[3];
- };
- Vec3f();
- Vec3f(Vec3f &other);
- Vec3f(float x, float y, float z);
- float& operator [](int);
-};
-
-class Vec2f
-{
-public:
- union
- {
- struct
- {
- float x, y;
- };
- float v[2];
- };
- Vec2f();
- Vec2f(float x, float y);
- Vec2f(Vec2f &other);
- float& operator [](int);
-};
-
-
-class ObjModel
-{
-private:
- class Vertex
- {
- public:
- int position;
- int normal;
- int texcoord;
- };
-
- class Face
- {
- public:
- list vertices;
- };
-
- class Texture
- {
- GLuint index;
- public:
- Texture(const std::string &fileName);
- void bind();
- };
-
- class MaterialInfo
- {
- public:
- MaterialInfo();
- std::string name;
- Texture* texture;
- bool hasTexture;
- };
-
- class ObjGroup
- {
- public:
- std::string name;
- int materialIndex;
- list faces;
- };
-
- std::vector vertices;
- std::vector normals;
- std::vector texcoords;
- std::vector groups;
- std::vector materials;
-
- void loadMaterialFile(std::string fileName, std::string dirName);
-public:
- ObjModel(std::string filename);
- ~ObjModel(void);
-
- void draw();
-};
+ std::transform(data.begin(), data.end(), data.begin(), ::tolower);
+ return data;
+}
diff --git a/Mouse.h b/Mouse.h
index b609a08..9504022 100644
--- a/Mouse.h
+++ b/Mouse.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class Mouse
{
public:
diff --git a/Player.cpp b/Player.cpp
new file mode 100644
index 0000000..1484e6f
--- /dev/null
+++ b/Player.cpp
@@ -0,0 +1,12 @@
+#include "Player.h"
+
+
+
+Player::Player()
+{
+}
+
+
+Player::~Player()
+{
+}
diff --git a/Player.h b/Player.h
new file mode 100644
index 0000000..80e1cc2
--- /dev/null
+++ b/Player.h
@@ -0,0 +1,17 @@
+#pragma once
+#include "Header.h"
+#include "Weapon.h"
+
+class Player
+{
+public:
+ Player();
+ ~Player();
+private:
+ int level;
+ int xp;
+ Weapon rigth;
+ Weapon left;
+ vector weapons;
+};
+
diff --git a/State.h b/State.h
index dc1a93a..b6e8c3c 100644
--- a/State.h
+++ b/State.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class State
{
public:
diff --git a/StateHandler.h b/StateHandler.h
index 99c5bbe..24673c9 100644
--- a/StateHandler.h
+++ b/StateHandler.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class StateHandler
{
public:
diff --git a/Vector.cpp b/Vector.cpp
new file mode 100644
index 0000000..1fa5114
--- /dev/null
+++ b/Vector.cpp
@@ -0,0 +1,48 @@
+#include "Vector.h"
+
+Vec3f::Vec3f(float x, float y, float z)
+{
+ this->x = x;
+ this->y = y;
+ this->z = z;
+}
+Vec3f::Vec3f()
+{
+ this->x = 0;
+ this->y = 0;
+ this->z = 0;
+}
+Vec3f::Vec3f(Vec3f &other)
+{
+ this->x = other.x;
+ this->y = other.y;
+ this->z = other.z;
+}
+
+float& Vec3f::operator [](int index)
+{
+ return v[index];
+}
+
+
+
+Vec2f::Vec2f(float x, float y)
+{
+ this->x = x;
+ this->y = y;
+}
+Vec2f::Vec2f()
+{
+ this->x = 0;
+ this->y = 0;
+}
+Vec2f::Vec2f(Vec2f &other)
+{
+ this->x = other.x;
+ this->y = other.y;
+}
+
+float& Vec2f::operator [](int index)
+{
+ return v[index];
+}
diff --git a/Vector.h b/Vector.h
new file mode 100644
index 0000000..c578d84
--- /dev/null
+++ b/Vector.h
@@ -0,0 +1,37 @@
+#pragma once
+#include "Header.h"
+
+class Vec3f
+{
+public:
+ union
+ {
+ struct
+ {
+ float x, y, z;
+ };
+ float v[3];
+ };
+ Vec3f();
+ Vec3f(Vec3f &other);
+ Vec3f(float x, float y, float z);
+ float& operator [](int);
+};
+
+class Vec2f
+{
+public:
+ union
+ {
+ struct
+ {
+ float x, y;
+ };
+ float v[2];
+ };
+ Vec2f();
+ Vec2f(float x, float y);
+ Vec2f(Vec2f &other);
+ float& operator [](int);
+};
+
diff --git a/Weapon.cpp b/Weapon.cpp
new file mode 100644
index 0000000..45f627f
--- /dev/null
+++ b/Weapon.cpp
@@ -0,0 +1,10 @@
+#include "Weapon.h"
+
+Weapon::Weapon()
+{
+}
+
+
+Weapon::~Weapon()
+{
+}
diff --git a/Weapon.h b/Weapon.h
new file mode 100644
index 0000000..74c1daf
--- /dev/null
+++ b/Weapon.h
@@ -0,0 +1,10 @@
+#pragma once
+#include "Header.h"
+
+class Weapon
+{
+public:
+ Weapon();
+ ~Weapon();
+};
+
diff --git a/WorldModel.h b/WorldModel.h
index eefe546..0f7044b 100644
--- a/WorldModel.h
+++ b/WorldModel.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class WorldModel
{
public:
diff --git a/WorldState.h b/WorldState.h
index e4f0eea..d110f22 100644
--- a/WorldState.h
+++ b/WorldState.h
@@ -1,4 +1,6 @@
#pragma once
+#include "Header.h"
+
class WorldState
{
public: