states
parent
b13b114d94
commit
8b7dd47b53
|
@ -32,6 +32,8 @@ namespace blt::gfx
|
|||
double deltaX = 0, deltaY = 0;
|
||||
double scroll = 0;
|
||||
bool mouse_moved = false;
|
||||
bool key_pressed = false;
|
||||
bool mouse_pressed = false;
|
||||
private:
|
||||
KEY_STATE* key_state;
|
||||
MOUSE_STATE* mouse_state;
|
||||
|
@ -76,6 +78,13 @@ namespace blt::gfx
|
|||
return key_state[key];
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
key_pressed = false;
|
||||
mouse_moved = false;
|
||||
mouse_pressed = false;
|
||||
}
|
||||
|
||||
bool isKeyPressed(std::size_t key)
|
||||
{
|
||||
if (key >= key_size)
|
||||
|
|
|
@ -84,8 +84,12 @@ namespace blt::gfx
|
|||
|
||||
bool isMousePressed(int button);
|
||||
|
||||
bool mousePressedLastFrame();
|
||||
|
||||
bool isKeyPressed(int key);
|
||||
|
||||
bool keyPressedLastFrame();
|
||||
|
||||
double getFrameDeltaSeconds();
|
||||
|
||||
double getFrameDeltaMilliseconds();
|
||||
|
|
|
@ -25,6 +25,8 @@ void blt::gfx::first_person_camera::update()
|
|||
|
||||
float speed_multi = 1;
|
||||
|
||||
if (isKeyPressed(GLFW_KEY_ESCAPE) && )
|
||||
|
||||
if (isKeyPressed(GLFW_KEY_LEFT_CONTROL))
|
||||
speed_multi = 10;
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ namespace blt::gfx
|
|||
state = KEY_STATE::RELEASE;
|
||||
}
|
||||
window_state.inputManager.key(key) = state;
|
||||
window_state.inputManager.key_pressed = true;
|
||||
});
|
||||
|
||||
/* Setup mouse button callback */
|
||||
|
@ -76,6 +77,7 @@ namespace blt::gfx
|
|||
break;
|
||||
}
|
||||
window_state.inputManager.mouse(button) = state;
|
||||
window_state.inputManager.mouse_pressed = true;
|
||||
});
|
||||
|
||||
/* Setup mouse cursor callback */
|
||||
|
@ -160,7 +162,7 @@ namespace blt::gfx
|
|||
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
|
||||
|
||||
/* -- Update GLFW state -- */
|
||||
window_state.inputManager.mouse_moved = false;
|
||||
window_state.inputManager.clear();
|
||||
glfwSwapBuffers(window_state.window);
|
||||
glfwPollEvents();
|
||||
|
||||
|
@ -332,4 +334,14 @@ namespace blt::gfx
|
|||
{
|
||||
return window_state.inputManager.mouse_moved;
|
||||
}
|
||||
|
||||
bool mousePressedLastFrame()
|
||||
{
|
||||
return window_state.inputManager.mouse_pressed;
|
||||
}
|
||||
|
||||
bool keyPressedLastFrame()
|
||||
{
|
||||
return window_state.inputManager.key_pressed;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,34 @@ float x = 0, y = 0, z = 0;
|
|||
float bx = 500, by = 500;
|
||||
float mx = 0, my = -9.8;
|
||||
|
||||
void local_render(int width, int height)
|
||||
{
|
||||
const float w = 120, h = 120, cf = 30, rf = 15, crf = 10;
|
||||
|
||||
renderer_2d.drawRectangle("ibuythat", (float) width / 2.0f, (float) height / 2.0f, (float) width, (float) height, 90.0f);
|
||||
renderer_2d.drawRectangle("niko", bx, by, w, h);
|
||||
|
||||
bx += mx * blt::gfx::getFrameDeltaSeconds() * cf;
|
||||
by += my * blt::gfx::getFrameDeltaSeconds() * cf;
|
||||
|
||||
if (bx < w / 2.0 || bx > width - w / 2.0)
|
||||
{
|
||||
mx = -mx;
|
||||
my += (static_cast<float>(rand()) / static_cast<float>(RAND_MAX) * rf + crf) - (rf + crf) / 2.0f;
|
||||
}
|
||||
if (by < h / 2.0 || by > height - h / 2.0)
|
||||
{
|
||||
my = -my;
|
||||
mx += (static_cast<float>(rand()) / static_cast<float>(RAND_MAX) * rf + crf) - (rf + crf) / 2.0f;
|
||||
}
|
||||
if (mx > 100 || mx < -100)
|
||||
{
|
||||
mx = mx * 0.2;
|
||||
}
|
||||
if (my > 100 || my < -100)
|
||||
my = my * 0.2;
|
||||
}
|
||||
|
||||
void init()
|
||||
{
|
||||
using namespace blt::gfx;
|
||||
|
@ -43,33 +71,9 @@ void update(std::int32_t width, std::int32_t height)
|
|||
|
||||
camera.update();
|
||||
camera.update_view(global_matrices);
|
||||
|
||||
global_matrices.update();
|
||||
|
||||
const float w = 120, h = 120, cf = 30, rf = 15, crf = 10;
|
||||
|
||||
renderer_2d.drawRectangle("ibuythat", (float)width/2.0f, (float)height/2.0f, (float)width, (float)height, 90.0f);
|
||||
renderer_2d.drawRectangle("niko", bx, by, w, h);
|
||||
|
||||
bx += mx * blt::gfx::getFrameDeltaSeconds() * cf;
|
||||
by += my * blt::gfx::getFrameDeltaSeconds() * cf;
|
||||
|
||||
if (bx < w / 2.0 || bx > width - w / 2.0)
|
||||
{
|
||||
mx = -mx;
|
||||
my += (static_cast<float>(rand()) / static_cast<float>(RAND_MAX) * rf + crf) - (rf + crf) / 2.0f;
|
||||
}
|
||||
if (by < h / 2.0 || by > height - h / 2.0)
|
||||
{
|
||||
my = -my;
|
||||
mx += (static_cast<float>(rand()) / static_cast<float>(RAND_MAX) * rf + crf) - (rf + crf) / 2.0f;
|
||||
}
|
||||
if (mx > 100 || mx < -100)
|
||||
{
|
||||
mx = mx * 0.2;
|
||||
}
|
||||
if (my > 100 || my < -100)
|
||||
my = my * 0.2;
|
||||
local_render(width, height);
|
||||
|
||||
renderer_2d.render();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue