|
@@ -0,0 +1,250 @@
|
|
|
+#include "Client.h"
|
|
|
+#include "../engine/Mouse.h"
|
|
|
+#include "../math/Matrix3D.h"
|
|
|
+#include "../math/Matrix3DStack.h"
|
|
|
+#include "../engine/Key.h"
|
|
|
+
|
|
|
+Mesh Client::mesh;
|
|
|
+TextureMesh Client::tmesh;
|
|
|
+Vector3D Client::position;
|
|
|
+Texture Client::texture;
|
|
|
+Texture Client::texture2;
|
|
|
+float Client::lengthAngle = 0;
|
|
|
+float Client::widthAngle = 0;
|
|
|
+
|
|
|
+Client::Client()
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+void Client::init()
|
|
|
+{
|
|
|
+ if(texture.load("resources/textures.png"))
|
|
|
+ {
|
|
|
+ cout << "texture success" << endl;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cout << "texture fail" << endl;
|
|
|
+ }
|
|
|
+ if(texture2.load("resources/font8x8.png"))
|
|
|
+ {
|
|
|
+ cout << "texture2 success" << endl;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cout << "texture2 fail" << endl;
|
|
|
+ }
|
|
|
+
|
|
|
+ cout << "init" << endl;
|
|
|
+ mesh.init();
|
|
|
+
|
|
|
+
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f);
|
|
|
+
|
|
|
+
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f, 1.0f);
|
|
|
+
|
|
|
+
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f);
|
|
|
+
|
|
|
+
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f);
|
|
|
+
|
|
|
+
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
|
|
+
|
|
|
+
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f);
|
|
|
+ mesh.addPoint(1.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f);
|
|
|
+
|
|
|
+ mesh.build();
|
|
|
+
|
|
|
+ tmesh.init();
|
|
|
+
|
|
|
+
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.125f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f);
|
|
|
+
|
|
|
+
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.3125f, 0.0625f);
|
|
|
+
|
|
|
+
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.1875f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
|
|
|
+
|
|
|
+
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.25f, 0.0625f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f);
|
|
|
+
|
|
|
+
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.1875f, 0.0f);
|
|
|
+
|
|
|
+
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.25f, 0.0625f);
|
|
|
+ tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
|
|
|
+ tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f);
|
|
|
+ tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f);
|
|
|
+
|
|
|
+ tmesh.build();
|
|
|
+
|
|
|
+ position.set(0, 0, -2);
|
|
|
+ GameEngine::getCamera().setPosition(position.getX(), position.getY(), position.getZ());
|
|
|
+ GameEngine::getCamera().storePosition();
|
|
|
+
|
|
|
+ Key::map(KEY_LEFT, GLFW_KEY_A);
|
|
|
+ Key::map(KEY_RIGHT, GLFW_KEY_D);
|
|
|
+ Key::map(KEY_UP, GLFW_KEY_W);
|
|
|
+ Key::map(KEY_DOWN, GLFW_KEY_S);
|
|
|
+ Key::map(KEY_JUMP, GLFW_KEY_SPACE);
|
|
|
+ Key::map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT);
|
|
|
+
|
|
|
+ Key::map(KEY_CAM_LEFT, GLFW_KEY_H);
|
|
|
+ Key::map(KEY_CAM_RIGHT, GLFW_KEY_K);
|
|
|
+ Key::map(KEY_CAM_UP, GLFW_KEY_U);
|
|
|
+ Key::map(KEY_CAM_DOWN, GLFW_KEY_J);
|
|
|
+}
|
|
|
+
|
|
|
+uint64_t oldTime = -1;
|
|
|
+
|
|
|
+uint64_t count = 0;
|
|
|
+uint64_t sum = 0;
|
|
|
+
|
|
|
+void Client::tick()
|
|
|
+{
|
|
|
+ Camera& c = GameEngine::getCamera();
|
|
|
+
|
|
|
+ c.storePosition();
|
|
|
+ c.storeAngles();
|
|
|
+
|
|
|
+ float factor = 0.125f;
|
|
|
+ if(Key::isDown(KEY_LEFT))
|
|
|
+ {
|
|
|
+ position.addMul(c.getLeft(), factor);
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_RIGHT))
|
|
|
+ {
|
|
|
+ position.addMul(c.getRight(), factor);
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_UP))
|
|
|
+ {
|
|
|
+ position.addMul(c.getFront(), factor);
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_DOWN))
|
|
|
+ {
|
|
|
+ position.addMul(c.getBack(), factor);
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_JUMP))
|
|
|
+ {
|
|
|
+ position.addMul(c.getUp(), factor);
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_SNEAK))
|
|
|
+ {
|
|
|
+ position.addMul(c.getDown(), factor);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Key::isDown(KEY_CAM_LEFT))
|
|
|
+ {
|
|
|
+ lengthAngle += 2;
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_CAM_RIGHT))
|
|
|
+ {
|
|
|
+ lengthAngle -= 2;
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_CAM_UP))
|
|
|
+ {
|
|
|
+ widthAngle += 2;
|
|
|
+ }
|
|
|
+ if(Key::isDown(KEY_CAM_DOWN))
|
|
|
+ {
|
|
|
+ widthAngle -= 2;
|
|
|
+ }
|
|
|
+
|
|
|
+ c.setPosition(position.getX(), position.getY(), position.getZ());
|
|
|
+ c.setAngles(lengthAngle, widthAngle);
|
|
|
+
|
|
|
+
|
|
|
+ cout << (1000000000.0 * count ) / sum << endl;
|
|
|
+}
|
|
|
+
|
|
|
+void Client::renderTick(float lag)
|
|
|
+{
|
|
|
+ uint64_t t = glfwGetTimerValue();
|
|
|
+ if(oldTime == -1)
|
|
|
+ {
|
|
|
+ oldTime = t;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sum += t - oldTime;
|
|
|
+ count++;
|
|
|
+ oldTime = t;
|
|
|
+ }
|
|
|
+
|
|
|
+ GameEngine::getCamera().updateView(lag);
|
|
|
+ texture.bind();
|
|
|
+ GameEngine::setTextureEnabled(true);
|
|
|
+
|
|
|
+ GameEngine::getDirectRenderer().prepare();
|
|
|
+ GameEngine::getDirectRenderer().drawRectangle(0, 0, 300, 300, 0, 0, 1, 1, 1, 0, 0, 1);
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void Client::start()
|
|
|
+{
|
|
|
+ GameEngine::start(640, 480, "Test Game", init, tick, renderTick);
|
|
|
+}
|
|
|
+
|