123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- #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();
-
- // bottom
- 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);
-
- // top
- 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);
-
- // right
- 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);
-
- // left
- 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);
-
- // back
- 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);
-
- // front
- 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();
-
- // bottom
- 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);
-
- // top
- 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);
-
- // right
- 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);
-
- // left
- 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);
-
- // back
- 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);
-
- // front
- 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 << "tick" << endl;
-
- 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::setColorEnabled(true);
- GameEngine::getDirectRenderer().prepare();
- GameEngine::getDirectRenderer().drawRectangle(0, 0, 300, 300, 0, 0, 1, 1, 1, 0, 0, 1);
- //tmesh.draw();
- //cout << "renderTick" << endl;
- }
- void Client::start()
- {
- GameEngine::start(640, 480, "Test Game", init, tick, renderTick);
- }
|