From 049fb28ffceaa11a203df8506f01b9682bbfca55 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 11 May 2016 12:37:18 +0200 Subject: [PATCH] Added more structure, added abstraction to existing parts --- Controller.h | 2 + CrystalPoint.vcxproj | 8 + CrystalPoint.vcxproj.filters | 27 ++++ Enemy.cpp | 12 ++ Enemy.h | 10 ++ Header.h | 5 +- Keyboard.h | 2 + LoadingState.h | 2 + Main.cpp | 5 +- MenuState.h | 2 + Model.cpp | 230 +++++++++++++++++++++++++- Model.h | 60 ++++++- ModelLoader.cpp | 305 +---------------------------------- ModelLoader.h | 107 +----------- Mouse.h | 2 + Player.cpp | 12 ++ Player.h | 17 ++ State.h | 2 + StateHandler.h | 2 + Vector.cpp | 48 ++++++ Vector.h | 37 +++++ Weapon.cpp | 10 ++ Weapon.h | 10 ++ WorldModel.h | 2 + WorldState.h | 2 + 25 files changed, 508 insertions(+), 413 deletions(-) create mode 100644 Enemy.cpp create mode 100644 Enemy.h create mode 100644 Player.cpp create mode 100644 Player.h create mode 100644 Vector.cpp create mode 100644 Vector.h create mode 100644 Weapon.cpp create mode 100644 Weapon.h 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: