Submission*
RES
-*.[Cc]ache
\ No newline at end of file
+*.[Cc]ache
+
+CGUE*.rar
\ No newline at end of file
#include <GL\glew.h>
#include "Scene\Scene.h"
#include "Scene\SceneObject.h"
+
+#include "Scene\Marvin.h"
+
#include "Graphix\Shader.h"
#include "Graphix\Graphix.h"
#include "Fps.h"
// Hauptfenster
current_world = new Scene(0, 0, Graphix::getWindowWidth(), Graphix::getWindowHeight(), 45, 0.1f, 40, vec3(0.0f, 0.0f, 0.f));
- //SKYBOX! ---------------------------
- shader_skybox = new Shader("skybox_VS.hlsl", "skybox_color_FS.hlsl");
- //texture_skybox = new Texture("skybox_CUBE.jpg");
-
- current_world->addObject(new SceneObject(shader_skybox, scale(3.f * vec3(1.f, .5f, 1.f)), new SkyBox(), ""));
- //SKYBOX! ----------------------------
-
//Allg Shader
Shader* shader1 = new Shader("basicTexture_VS.hlsl", "lightingTexture_FS.hlsl");
// Shader* shaderSky = new Shader("skybox_VS.hlsl", "skybox_FS.hlsl");
current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f,1.f,0.f)), new BBox() , ""));
//Player
- SceneObject* tmp_playerObject = new SceneObject(shader1, translate(vec3(1.f, 3.f, 1.f))*rotate((float)M_PI_4,vec3(0.f,1.f,0.f)), "Player.dae", "model_player_2D.png");
+ SceneObject* tmp_playerObject = new Marvin(shader1, translate(vec3(1.f, 3.f, 1.f))*rotate((float)M_PI_4,vec3(0.f,1.f,0.f)));
tmp_playerObject->yStatic= false;
#include "Graphix.h"
#include "../Message.h"
+#include "Shader.h"
#include <string>
using std::string;
//glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ shader_BBox = new Shader("basic_VS.hlsl", "basic_FS.hlsl");
}
void Graphix::catchMouse()
SDL_Window* Graphix::sdl_window;
-SDL_GLContext Graphix::sdl_glcontext;
\ No newline at end of file
+SDL_GLContext Graphix::sdl_glcontext;
+
+
+Shader* Graphix::shader_BBox;
using std::string;
//using std::unordered_map;
+class Shader;
+
class Graphix
{
public:
static unsigned int getGlError();
+ static Shader* shader_BBox;
+
private:
static unsigned int width;
static unsigned int height;
#include "Model\Model.h"
#include "Model\IMetaMesh.h"
#include "Model\SkyBox.h"
-#include "Model\BBox.h"
\ No newline at end of file
+#include "Model\BBox.h"
+
{
BoundingBox = new BBox();
// BBoxShader = new Shader("basic_FS.hlsl", "basic_VS.hlsl");
-// BoundingBox->bindShader(BBoxShader);
-
+ BoundingBox->bindShader(Graphix::shader_BBox);
+
+ //auto tmp = Graphix::shader_BBox->getUniformLocation("uFragmentColor");
+ //if (tmp >= 0)
+ // glUniform4fv((int)Graphix::shader_BBox, 1, value_ptr(vec4(.3f,.9f,.9f,1.f)));
}
- BoundingBox->bindShader(_shader);
- BoundingBox->drawModel(_shader, (Texture*)nullptr, _modelMat*translate(BBposition)*scale(BBsize));
+// BoundingBox->bindShader(_shader);
+ BoundingBox->drawModel(Graphix::shader_BBox, (Texture*)nullptr, _modelMat*translate(BBposition)*scale(BBsize));
}
void Model::updateBB(const vec3& _min, const vec3& _max)
--- /dev/null
+#include "Marvin.h"
+
+#include "../Graphix/Shader.h"
+
+
+Marvin::Marvin(Shader* _shader, const mat4& _modelMat) : SceneObject(_shader,_modelMat,"Player.dae","model_player_2D.png")
+{
+
+}
+
+
+Marvin::~Marvin()
+{
+}
--- /dev/null
+#pragma once
+#include "SceneObject.h"
+
+#include "../Graphix/GLM.h"
+
+class Shader;
+
+class Marvin :
+ public SceneObject
+{
+public:
+ Marvin(Shader* shader, const mat4& modelMat);
+ ~Marvin();
+};
+
#include "Scene.h"
+#include "SceneObject.h"
+#include "Sky.h"
+#include <GL\glew.h>
#include "../Graphix/GLM.h"
-#include <GL\glew.h>
+#include "../Graphix/Graphix.h"
-#include "../Message.h"
-#include <iostream>
+#include "../Graphix/Shader.h"
+#include "../Graphix/ViewPort.h"
+#include "../Message.h"
#include "../Events.h"
-#include "../Graphix/Shader.h"
+#include <iostream>
+
+using std::list;
+using std::set;
#define TIME_TILL_MAX_MOVE 2
#define TIME_TILL_DIRECTION_ROTATE 1
#define SPEED_MOVE_NORMAL 1.5f
#define MOVE_FASTER 2.f
-/*
-Scene::Scene() :
- SceneObjects(new list<SceneObject*>),
- ShaderSet(new set<Shader*>),
- newObjects(true)
-{
-}*/
Scene::Scene(unsigned int x, unsigned int y, unsigned int width, unsigned int height, float fovy, float zNear, float zFar, vec3 pos, SceneObject* _lookat) :
viewPort(new ViewPort(x, y, width, height, fovy, zNear, zFar)),
- SceneObjects(new list<SceneObject*>),
- ShaderSet(new set<Shader*>),
- newObjects(true),
- lookat(_lookat),
- move_delta(0)
+lookat(_lookat),
+move_delta(0),
+SkyBox(new Sky())
{
}
-Scene::Scene(Scene* _Scene, unsigned int x, unsigned int y, unsigned int width, unsigned int height, float fovy, float zNear, float zFar, vec3 pos, SceneObject* _lookat) :
-viewPort(new ViewPort(x, y, width, height, fovy, zNear, zFar)),
- SceneObjects(_Scene->SceneObjects),
- ShaderSet((_Scene->ShaderSet)),
- newObjects(false),
- lookat(_lookat),
- move_delta(0)
-{
-}
-
-Scene::Scene(Scene* _Scene) :
- SceneObjects(_Scene->SceneObjects),
- ShaderSet((_Scene->ShaderSet)),
- newObjects(false),
- move_delta(0)
-{
-}
-
Scene::~Scene()
{
- if (newObjects){
- for (auto i = SceneObjects->begin(); i != SceneObjects->end(); ++i)
- {
- delete (*i);
- }
- delete SceneObjects;
- delete ShaderSet;
+
+ for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
+ {
+ delete (*i);
}
-
+
+
+
if (viewPort != nullptr)
delete viewPort;
}
//Jump
if (Events::getJump() && lookat->floorBound())
- lookat->ySpeed += 5.5;
+ lookat->ySpeed += 5.5;
//else if (!Events::isKHeld(SDLK_SPACE) && lookat->ySpeed>0)
// lookat->ySpeed = 0;
//Rotate Play in move direction
if (move_x || move_y)
- lookat->turnTo(viewPort->rotateDirection(vec3(0.f, 0.f, -1.f)),3*deltaT/TIME_TILL_DIRECTION_ROTATE);
-
+ lookat->turnTo(viewPort->rotateDirection(vec3(0.f, 0.f, -1.f)), 3 * deltaT / TIME_TILL_DIRECTION_ROTATE);
+
//// Zoom auf Player
//if (Events::getViewZ())
//}
// Alle Objekte der Scene aktualisieren
- if (newObjects)
+ for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
{
- for (auto i = SceneObjects->begin(); i != SceneObjects->end(); ++i)
- {
- (*i)->update(deltaT);
- }
-
+ (*i)->update(deltaT);
+ }
+
- for (auto i = SceneObjects->begin(); i != SceneObjects->end(); ++i)
+ for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
+ {
+ auto j = i;
+ for (j++; j != SceneObjects.end(); ++j)
{
- auto j = i;
- for (j++; j != SceneObjects->end(); ++j)
- {
- (*i)->collisions(*j);
- }
+ (*i)->collisions(*j);
}
-
-
}
+
+
+
}
void Scene::draw() const
{
viewPort->useViewPort();
- for (auto i = ShaderSet->cbegin(); i != ShaderSet->cend(); ++i)
+ //Skybox
+ viewPort->bindView(SkyBox->getShader(), lookat->getPosition() + vec3(0.0f, 1.0f, 0.0f));
+ //BBox
+ viewPort->bindView(Graphix::shader_BBox, lookat->getPosition() + vec3(0.0f, 1.0f, 0.0f));
+
+ for (auto i = ShaderSet.cbegin(); i != ShaderSet.cend(); ++i)
{
- viewPort->bindView(*i,lookat->getPosition()+vec3(0.0f,1.0f,0.0f));
+ viewPort->bindView(*i, lookat->getPosition() + vec3(0.0f, 1.0f, 0.0f));
//don't know if this is really the right place to set the lighting
//add ambient light
//glLightfv(GL_LIGHT0, GL_DIFFUSE, lightcolor0);
//glLightfv(GL_LIGHT0, GL_POSITION, lightposition0);
}
-
-
-
-
-
+ SkyBox->draw();
- for (auto i = SceneObjects->cbegin(); i != SceneObjects->cend(); ++i)
+ for (auto i = SceneObjects.cbegin(); i != SceneObjects.cend(); ++i)
{
(*i)->draw();
}
void Scene::addObject(SceneObject* _add)
{
- SceneObjects->push_back(_add);
- ShaderSet->insert(_add->getShader());
- _add->setMainScene(this);
+ SceneObjects.push_back(_add);
+ ShaderSet.insert(_add->getShader());
+// _add->setMainScene(this);
}
void Scene::deleteObject(SceneObject* _del)
{
- SceneObjects->remove(_del);
+ SceneObjects.remove(_del);
}
list<SceneObject*>* Scene::getSceneObjects()
{
- return SceneObjects;
+ return &SceneObjects;
}
#pragma once
-#include "../Graphix/ViewPort.h"
-#include "SceneObject.h"
#include "../Graphix/GLM.h"
#include <list>
#include <set>
-using std::list;
-using std::set;
-
-typedef list<SceneObject*> SceneList;
+class SceneObject;
+class ViewPort;
+class Shader;
class Scene
{
public:
//Scene();
Scene(unsigned int x, unsigned int y, unsigned int width, unsigned int height, float fovy, float zNear, float zFar, vec3 pos, SceneObject* lookat = NULL);
- __declspec(deprecated)
- Scene(Scene*);
- __declspec(deprecated)
- Scene(Scene* _Scene, unsigned int x, unsigned int y, unsigned int width, unsigned int height, float fovy, float zNear, float zFar, vec3 pos, SceneObject* lookat = NULL);
+
virtual ~Scene();
virtual void update(float);
void addObject(SceneObject*);
void deleteObject(SceneObject*);
- SceneList* getSceneObjects();
+ std::list<SceneObject*>* getSceneObjects();
void setLookAt(SceneObject* _lookat);
protected:
ViewPort* viewPort;
-
SceneObject* lookat;
+ std::list<SceneObject*> SceneObjects;
+ std::set<Shader*> ShaderSet;
- bool newObjects;
- SceneList* SceneObjects;
- set<Shader*>* ShaderSet;
+ SceneObject* SkyBox;
float move_delta;
+
};
#include "SceneObject.h"
+#include "Scene.h"
#include <gl/glew.h>
-#include "../Graphix/GLM.h"
-
-#include "../Message.h"
-#include <string>
-#include <iostream>
+#include "../Graphix/GLM.h"
+#include "../Graphix/Graphix.h"
#include "../Graphix/Shader.h"
-#include "Scene.h"
#include "../Graphix/Texture.h"
-
#include "../Graphix/Model.h"
-#include "../Graphix/Graphix.h"
-
+#include "../Message.h"
#include "../Events.h"
-using std::string;
-
-using std::cout;
-using std::endl;
+#include <string>
+#include <iostream>
+using std::string;
#define YFALL_SPEED 9.8f
-SceneObject::SceneObject(Shader* _shader, mat4& _modelMat, string _modelpath, string texturepath, unsigned int _model_index) :
+SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, string _modelpath, string texturepath, unsigned int _model_index) :
model(new IMetaMesh(_modelpath)),
modelMat(_modelMat),
shader(_shader),
}
-SceneObject::SceneObject(Shader* _shader, mat4& _modelMat, Model* _model, string texturepath) :
+SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, Model* _model, string texturepath) :
model(_model),
modelMat(_modelMat),
shader(_shader),
else
{
modelMat = translate(vec3(0.f, getFloor() - pos.y, 0.f))*modelMat;
- ySpeed = 0;
+ ySpeed = 0; //set to FloorSpeed?
}
ySpeed -= deltaT*YFALL_SPEED;
}
public:
//SceneObject(Shader* _shader, mat4& model);
- SceneObject(Shader* _shader, mat4& model, string modelpath, string texturepath, unsigned int model_index=0);
+ SceneObject(Shader* _shader, const mat4& model, string modelpath, string texturepath, unsigned int model_index=0);
+ SceneObject(Shader* _shader, const mat4& modelMat, Model* model, string texturepath);
- SceneObject(Shader* _shader, mat4& modelMat, Model* model, string texturepath);
-
- //SceneObject(Shader* _shader, mat4& model, IMesh* model_obj, string texturepath);
virtual ~SceneObject();
virtual void update(float);
//virtual bool operator==(SceneObject);
+ __declspec(deprecated)
void setMainScene(Scene *);
void setCollision(bool);
__declspec(deprecated)
bool isEnemy();
-
+ //Floor
bool floorBound() const;
float getFloor() const;
+ //Falling
bool yStatic;
float ySpeed;
protected:
- void setMatter(float);
-
mat4 modelMat;
-
-
- //__declspec(deprecated)
- //unsigned int modelID;
-
Shader* shader;
+ Texture* texture;
+ Model* model;
Scene* mainScene;
bool collision_ignore;
- Texture* texture;
-
- Model* model;
+
+ Shader* shader_BBox;
+
};
--- /dev/null
+#include "Sky.h"
+
+#include "../Graphix/Shader.h"
+#include "../Graphix/Model.h"
+
+
+Sky::Sky() : SceneObject(new Shader("skybox_VS.hlsl","skybox_color_FS.hlsl"), mat4(1.f), new SkyBox(), "")
+{
+
+}
+
+
+Sky::~Sky()
+{
+}
--- /dev/null
+#pragma once
+#include "SceneObject.h"
+
+#include "../Graphix/GLM.h"
+
+class Shader;
+
+class Sky :
+ public SceneObject
+{
+public:
+ Sky();
+ ~Sky();
+};
+
<ClCompile Include="Graphix\GLM.cpp" />
<ClCompile Include="Graphix\Graphix.cpp" />
<ClCompile Include="Graphix\Model\IMesh.cpp" />
+ <ClCompile Include="Scene\Marvin.cpp" />
<ClCompile Include="Scene\Scene.cpp" />
<ClCompile Include="Scene\SceneObject.cpp" />
<ClCompile Include="Graphix\Shader.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="Message.cpp" />
<ClCompile Include="Graphix\Model\IMetaMesh.cpp" />
+ <ClCompile Include="Scene\Sky.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Average.h" />
<ClInclude Include="Graphix\GLM.h" />
<ClInclude Include="Graphix\Graphix.h" />
<ClInclude Include="Graphix\Model\IMesh.h" />
+ <ClInclude Include="Scene\Marvin.h" />
<ClInclude Include="Scene\Scene.h" />
<ClInclude Include="Scene\SceneObject.h" />
<ClInclude Include="Graphix\Shader.h" />
<ClInclude Include="Graphix\ViewPort.h" />
<ClInclude Include="Message.h" />
<ClInclude Include="Graphix\Model\IMetaMesh.h" />
+ <ClInclude Include="Scene\Sky.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<ClCompile Include="Graphix\Model\SkyBox.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="Scene\SceneObject.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="Scene\Scene.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="Scene\SceneObject.cpp">
+ <ClCompile Include="Scene\Marvin.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="Scene\Sky.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ClInclude Include="Scene\Scene.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="Scene\Marvin.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="Scene\Sky.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
//Fragment Shader
#version 330
out vec4 FragmentColor;
+
+uniform vec4 uFragmentColor = vec4(0.6, 0, 0, 0.6);
void main(){
- FragmentColor = vec4(0, 0.3, 0, 0.6);
-}
\ No newline at end of file
+ FragmentColor = uFragmentColor;
+}
void main(){
gl_Position = uProjection * uView * uModel * vec4(aPosition, 1);
-}
\ No newline at end of file
+}