]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
moved playerEvents to Marvin
authorPeter Schaefer <schaeferpm@gmail.com>
Tue, 9 Jun 2015 14:09:02 +0000 (16:09 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Tue, 9 Jun 2015 14:09:02 +0000 (16:09 +0200)
Weave/Scene/Marvin.cpp
Weave/Scene/Marvin.h
Weave/Scene/Scene.cpp
Weave/Scene/Scene.h
Weave/Scene/SceneObject.cpp

index a0268e055dece42f1fe833c5beb43692617a190e..1fe40a50c03b037c86dea711c8212abd4f5b1062 100644 (file)
@@ -2,10 +2,19 @@
 
 #include "../Graphix/Shader.h"
 #include "../GLM.h"
+#include "../Events.h"
+#include "../Graphix/ViewPort.h"
+#include "Scene.h"
 
+#define TIME_TILL_MAX_MOVE 2
+#define TIME_TILL_DIRECTION_ROTATE 1
+
+#define SPEED_MOVE_NORMAL 1.5f
+#define MOVE_FASTER 2.5f
 
 Marvin::Marvin(Shader* _shader, const mat4& _modelMat) : 
-SceneObject(_shader, _modelMat, vec4(7.0f, 0.7f, 1.0f, 3.0f), "Player.dae", "model_player_2D.png")
+SceneObject(_shader, _modelMat, vec4(7.0f, 0.7f, 1.0f, 3.0f), "Player.dae", "model_player_2D.png"),
+move_delta(0)
 {
        collide_group = COL_MARVIN;
        collide_with = COL_LEVEL | COL_ENEMY;
@@ -15,3 +24,46 @@ SceneObject(_shader, _modelMat, vec4(7.0f, 0.7f, 1.0f, 3.0f), "Player.dae", "mod
 Marvin::~Marvin()
 {
 }
+
+
+void Marvin::update(float deltaT)
+{
+       ViewPort& viewPort(mainScene->getViewport());
+
+       // XYAchse um den Player
+       float rotatex = 0.002f*Events::getViewX();
+       float rotatey = 0.001f*Events::getViewY();
+       viewPort.rotateView(rotatex, rotatey);
+
+       //Jump
+       if (Events::getJump() && floorBound())
+               ySpeed += 5.5;
+
+       int move_x = Events::getMoveX();
+       int move_y = Events::getMoveY();
+       // MOVE Player
+       if (move_x)
+               move(SPEED_MOVE_NORMAL *move_x * deltaT * viewPort.rotateDirection(vec3(-1.f, 0.f, 0.f)));
+
+       if (move_y){
+               if (move_y > 0){
+                       if (move_delta < TIME_TILL_MAX_MOVE)
+                               move_delta += deltaT;
+                       if (move_delta > TIME_TILL_MAX_MOVE)
+                               move_delta = TIME_TILL_MAX_MOVE;
+                       move(SPEED_MOVE_NORMAL * (MOVE_FASTER * move_delta / TIME_TILL_MAX_MOVE + 1) *move_y * deltaT * viewPort.rotateDirection(vec3(0.f, 0.f, -1.f)));
+               }
+               else
+                       move(SPEED_MOVE_NORMAL *move_y * deltaT * viewPort.rotateDirection(vec3(0.f, 0.f, -1.f)));
+       }
+       else
+       {
+               move_delta = 0;
+       }
+
+       //Rotate Play in move direction
+       if (move_x || move_y)
+               turnTo(viewPort.rotateDirection(vec3(0.f, 0.f, -1.f)), 3 * deltaT / TIME_TILL_DIRECTION_ROTATE);
+
+       SceneObject::update(deltaT);
+}
index 3493a97d1ca0abc027a7ba66db97c2c932f39fb9..5ae41403fb43cf6669a37e06a857ccba4ac642e8 100644 (file)
@@ -11,5 +11,10 @@ class Marvin :
 public:
        Marvin(Shader* shader, const mat4& modelMat);
        ~Marvin();
+
+       virtual void update(float) override;
+protected:
+       float move_delta;
+
 };
 
index 2a6f9702277fa5e65c5c071f912187fc38884dcd..0736c423c704abc47b7db215963531346d6016fd 100644 (file)
@@ -22,12 +22,6 @@ using std::list;
 using std::set;
 using std::stack;
 
-#define TIME_TILL_MAX_MOVE 2
-#define TIME_TILL_DIRECTION_ROTATE 1
-
-#define SPEED_MOVE_NORMAL 1.5f
-#define MOVE_FASTER 2.5f
-
 #define timestep 0.01f
 
 #define SCENE_SIZE 500.0
@@ -37,8 +31,7 @@ using std::stack;
 
 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(x, y, width, height, fovy, zNear, zFar),
-lookat(_lookat),
-move_delta(0)
+lookat(_lookat)
 {
        currenttime = 0.0f;
        if (lookat != nullptr)
@@ -84,29 +77,19 @@ Scene::~Scene()
 
 void Scene::update(float deltaT)
 {
-       vec3 pos;
-       //Focus auf Player
-
-       if (lookat != NULL){
-               pos = lookat->getPosition();
-       }
-
        // XYAchse um den Player
-       float rotatex = 0.002f*Events::getViewX();
-       float rotatey = 0.001f*Events::getViewY();
-       viewPort.rotateView(rotatex, rotatey);
+
 
 
        if (!Events::getTimeShift())
        {
-               int move_x = Events::getMoveX();
-               int move_y = Events::getMoveY();
+
                //int shoot = Events::getAction1();
                //int reset = Events::getAction2();
 
                //Jump
-               if (Events::getJump() && lookat->floorBound())
-                       lookat->ySpeed += 5.5;
+               //if (Events::getJump() && lookat->floorBound())
+               //      lookat->ySpeed += 5.5;
                //else if (!Events::isKHeld(SDLK_SPACE) && lookat->ySpeed>0)
                //      lookat->ySpeed  = 0;
 
@@ -120,34 +103,6 @@ void Scene::update(float deltaT)
                currenttime += deltaT;
 
 
-
-
-               // MOVE Player
-               if (move_x)
-                       lookat->move(SPEED_MOVE_NORMAL *move_x * deltaT * viewPort.rotateDirection(vec3(-1.f, 0.f, 0.f)));
-
-               if (move_y){
-                       if (move_y > 0){
-                               if (move_delta < TIME_TILL_MAX_MOVE)
-                                       move_delta += deltaT;
-                               if (move_delta > TIME_TILL_MAX_MOVE)
-                                       move_delta = TIME_TILL_MAX_MOVE;
-                               lookat->move(SPEED_MOVE_NORMAL * (MOVE_FASTER * move_delta / TIME_TILL_MAX_MOVE + 1) *move_y * deltaT * viewPort.rotateDirection(vec3(0.f, 0.f, -1.f)));
-                       }
-                       else
-                               lookat->move(SPEED_MOVE_NORMAL *move_y * deltaT * viewPort.rotateDirection(vec3(0.f, 0.f, -1.f)));
-               }
-               else
-               {
-                       move_delta = 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);
-
-
                //// Zoom auf Player
                //if (Events::getViewZ())
                //{
@@ -177,23 +132,13 @@ void Scene::update(float deltaT)
                        contactManifold->refreshContactPoints(obA->getWorldTransform(), obB->getWorldTransform());
 
                        if (contactManifold->getNumContacts()>0)
-               {
+                       {
                                ((SceneObject*)obA->getUserPointer())->collides((SceneObject*)obB->getUserPointer(), contactManifold);
                                ((SceneObject*)obB->getUserPointer())->collides((SceneObject*)obA->getUserPointer(), contactManifold);
                        }
 
 
                }
-
-               //for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
-               //{
-               //      auto j = i;
-               //      for (j++; j != SceneObjects.end(); ++j)
-               //      {
-               //              SceneObject::checkCollision(*i, *j);
-               //      }
-               //}
-
        }
        else
        {
@@ -261,7 +206,7 @@ void Scene::addObject(SceneObject* _add)
        //bt_collision_world->addCollisionObject(*_add);
        bt_collision_world->addCollisionObject(*_add,_add->getCollideGroup(),_add->getCollideWith());
 
-//     _add->setMainScene(this);
+       _add->setMainScene(this);
 }
 
 void Scene::deleteObject(SceneObject* _del)
@@ -279,4 +224,9 @@ list<SceneObject*>* Scene::getSceneObjects()
 void Scene::setLookAt(SceneObject* _lookat)
 {
        lookat = _lookat;
+}
+
+ViewPort& Scene::getViewport()
+{
+       return viewPort;
 }
\ No newline at end of file
index c7c7540391571ed0b2d885e350c4ed7acc0d918e..3a5904eaa1b1478c79c8d898e9aa06cc84e6ed62 100644 (file)
@@ -33,6 +33,7 @@ public:
        std::list<SceneObject*>* getSceneObjects();
 
        void setLookAt(SceneObject* _lookat);
+       ViewPort& getViewport();
 
 protected:
        ViewPort viewPort;
@@ -42,8 +43,6 @@ protected:
        std::list<SceneObject*> SceneObjects;
        std::set<Shader*> ShaderSet;
 
-       float move_delta;
-
        float currenttime;
        std::stack<Timestamp> timestamps;
        //std::stack<mat4> PlayerModels;
index 4fe73ed43395bb3ab54852e7dbce11fd0d1dc513..e76ec52978daa236fbc94faabfd8180fab1f0542 100644 (file)
@@ -181,11 +181,10 @@ void SceneObject::collides(SceneObject* _other, btPersistentManifold* _contactMa
                //Get the contact information
                btManifoldPoint& pt = _contactManifold->getContactPoint(j);
                btVector3 ptA = pt.getPositionWorldOnA();
-               btVector3 ptB = pt.getPositionWorldOnB();
                pdist = min((double)pt.getDistance(),pdist);
        }
        
-       if (!ignore && !_other->ignore)
+       if (!ignore && !_other->ignore && pdist <= 0)
                Message::info((std::string)"Kollision! " + std::to_string(pdist) + " (" + (std::string)*model + " with " + (std::string)*_other->getModel() + ")");
 
 }