]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
y_speed is saved in timestamps
authorLockedLunatic <locked.lunatic@aon.at>
Tue, 2 Jun 2015 03:59:53 +0000 (05:59 +0200)
committerLockedLunatic <locked.lunatic@aon.at>
Tue, 2 Jun 2015 03:59:53 +0000 (05:59 +0200)
Weave/Scene/Scene.cpp
Weave/Scene/Scene.h
Weave/Scene/Timestamp.cpp [new file with mode: 0644]
Weave/Scene/Timestamp.h [new file with mode: 0644]
Weave/Weave.vcxproj
Weave/Weave.vcxproj.filters

index aa7dabb74e6edb07c8a45ee6803be2a0de42c95c..6f0cfd840b450b8fa32abc7af37a66c810977896 100644 (file)
@@ -34,7 +34,9 @@ viewPort(x, y, width, height, fovy, zNear, zFar),
 lookat(_lookat),
 move_delta(0)
 {
-       currenttime = 0;
+       currenttime = 0.0f;
+       if (lookat != nullptr)
+               timestamps.push(Timestamp(0.0f, _lookat->getModelMat(), x, lookat->ySpeed));
 }
 
 
@@ -46,6 +48,7 @@ Scene::~Scene()
                delete (*i);
        }
 
+       timestamps.empty();
 
 
 
@@ -68,19 +71,13 @@ void Scene::update(float deltaT)
        }
 
        // XYAchse um den Player
-       viewPort.rotateView(0.002f*Events::getViewX(), 0.001f*Events::getViewY());
+       float rotatex = 0.002f*Events::getViewX();
+       float rotatey = 0.001f*Events::getViewY();
+       viewPort.rotateView(rotatex, rotatey);
 
 
        if (!Events::getTimeShift())
        {
-               if (ceil((currenttime + deltaT) / timestep) > ceil(currenttime / timestep))
-               {
-                       PlayerModels.push(lookat->getModelMat());
-               }
-               currenttime += deltaT;
-
-
-
                int move_x = Events::getMoveX();
                int move_y = Events::getMoveY();
                //int shoot = Events::getAction1();
@@ -92,6 +89,18 @@ void Scene::update(float deltaT)
                //else if (!Events::isKHeld(SDLK_SPACE) && lookat->ySpeed>0)
                //      lookat->ySpeed  = 0;
 
+
+
+
+               if (ceil((currenttime + deltaT) / timestep) > ceil(currenttime / timestep))
+               {
+                       timestamps.push(Timestamp(currenttime, lookat->getModelMat(), viewPort.getXPos(), lookat->ySpeed));
+               }
+               currenttime += deltaT;
+
+
+
+
                // MOVE Player
                if (move_x)
                        lookat->move(SPEED_MOVE_NORMAL *move_x * deltaT * viewPort.rotateDirection(vec3(-1.f, 0.f, 0.f)));
@@ -148,20 +157,32 @@ void Scene::update(float deltaT)
        }
        else
        {
-               if (ceil(max(0.0f, currenttime - deltaT) / timestep) < ceil(currenttime / timestep) && !PlayerModels.empty())
+               float prev_time = timestamps.top().time;
+               mat4 prev_mat = timestamps.top().Playermodel;
+               unsigned int prev_camera = timestamps.top().CameraX;
+               int prev_ySpeed = timestamps.top().ySpeed;
+               while (max(0.0f, currenttime - deltaT) < prev_time)
                {
-                       mat4& tmp = PlayerModels.top();
-                       PlayerModels.pop();
-                       lookat->setModel(tmp);
+                       timestamps.pop();
+
+                       prev_time = timestamps.top().time;
+                       prev_mat = timestamps.top().Playermodel;
+                       prev_camera = timestamps.top().CameraX;
+                       prev_ySpeed = timestamps.top().ySpeed;
                }
 
-               //for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
-               //{
-               //      (*i)->update(-deltaT);
-               //}
 
                //TODO revert events
                //TODO go from keyframe to current time
+               lookat->setModel(prev_mat);
+               lookat->ySpeed = prev_ySpeed;
+
+
+               for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
+               {
+                       //(*i)->update(-max(0.0f, currenttime - deltaT));
+               }
+
 
                currenttime = max(0.0f, currenttime - deltaT);
        }
index d84571cb10c93ebd043aa90935c1e5f6a19e0fe0..b5a564466551f690c5bae6b72896da985a5fc8a9 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "../Graphix/ViewPort.h"
 #include "Sky.h"
+#include "Timestamp.h"
 
 #include <list>
 #include <set>
@@ -43,6 +44,5 @@ protected:
        float move_delta;
 
        float currenttime;
-       std::stack<mat4> PlayerModels;
-       //std::stack<vec3> PlayerDirections;
+       std::stack<Timestamp> timestamps;
 };
diff --git a/Weave/Scene/Timestamp.cpp b/Weave/Scene/Timestamp.cpp
new file mode 100644 (file)
index 0000000..e6d32e5
--- /dev/null
@@ -0,0 +1,15 @@
+#include "Timestamp.h"
+
+Timestamp::Timestamp(float _time, mat4& _Playermodel, unsigned int x, float _ySpeed) :
+time(_time),
+Playermodel(_Playermodel),
+CameraX(x),
+ySpeed(_ySpeed)
+{
+
+}
+
+Timestamp::~Timestamp()
+{
+
+}
\ No newline at end of file
diff --git a/Weave/Scene/Timestamp.h b/Weave/Scene/Timestamp.h
new file mode 100644 (file)
index 0000000..88350df
--- /dev/null
@@ -0,0 +1,16 @@
+#pragma once
+
+#include "../GLM.h"
+
+class Timestamp
+{
+public:
+       Timestamp(float _time, mat4& _Playermodel, unsigned int _Camera, float ySpeed);
+
+       virtual ~Timestamp();
+
+       float time;
+       mat4 Playermodel;
+       unsigned int CameraX;
+       float ySpeed;
+};
\ No newline at end of file
index 43bd48f3d276fba946bffccf26b437be21c460a4..9539f8d680d9b10df7f49c5a3f1506c46b52784d 100644 (file)
     <ClCompile Include="main.cpp" />
     <ClCompile Include="Message.cpp" />
     <ClCompile Include="Scene\Sky.cpp" />
+    <ClCompile Include="Scene\Timestamp.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Average.h" />
     <ClInclude Include="Graphix\ViewPort.h" />
     <ClInclude Include="Message.h" />
     <ClInclude Include="Scene\Sky.h" />
+    <ClInclude Include="Scene\Timestamp.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
index b03e9301e2adc6fd27cdd5e99b7f5c7733fb0211..bf01bec4ea67d7b66a249ac8816352c7dbc7279d 100644 (file)
@@ -78,6 +78,9 @@
     <ClCompile Include="GLM.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="Scene\Timestamp.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Fps.h">
     <ClInclude Include="GLM.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="Scene\Timestamp.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file