Basic input handling, Editor camera Movement
This commit is contained in:
@ -7,7 +7,6 @@
|
||||
std::vector<Asset> AssetManager::assets;
|
||||
std::filesystem::path AssetManager::currentPath;
|
||||
|
||||
|
||||
void AssetManager::Init()
|
||||
{
|
||||
assets = std::vector<Asset>();
|
||||
@ -38,7 +37,6 @@ void AssetManager::setAssetPath(std::filesystem::path path)
|
||||
currentPath = path;
|
||||
}
|
||||
|
||||
|
||||
YoggieEngine::Mesh* AssetManager::LoadFromAssetFile(const std::filesystem::path assetPath)
|
||||
{
|
||||
YoggieEngine::Mesh* imported = nullptr;
|
||||
@ -147,4 +145,4 @@ YoggieEngine::Renderable* AssetManager::LoadFromSource(const std::filesystem::pa
|
||||
|
||||
return model->renderable;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,6 @@ class EditorWindow {
|
||||
|
||||
public:
|
||||
EditorWindow(const std::string& name, ImGuiWindowFlags_ flags = ImGuiWindowFlags_None ) { ImGui::Begin(name.c_str(), false ,flags); }
|
||||
|
||||
|
||||
|
||||
~EditorWindow() { ImGui::End(); }
|
||||
|
||||
};
|
@ -16,7 +16,6 @@ public:
|
||||
io.ConfigFlags |= ImGuiConfigFlags_::ImGuiConfigFlags_DockingEnable;
|
||||
io.Fonts->AddFontFromFileTTF("build/Debug/Fonts/Roboto-Regular.ttf", 18);
|
||||
|
||||
|
||||
ImGui::StyleColorsDark();
|
||||
|
||||
ImGui_ImplGlfw_InitForOpenGL(window.GetGLFWHandle(), true);
|
||||
|
@ -151,14 +151,25 @@ public:
|
||||
|
||||
glm::mat4 transposed_view = glm::transpose(cam.ViewMatrix);
|
||||
|
||||
ImGuizmo::ViewManipulate(glm::value_ptr(transposed_view), 1, { ScreenSpaceMin.x,ScreenSpaceMin.y }, { 90,90 }, 0x22CCCCCC);
|
||||
ImGuizmo::DrawGrid(glm::value_ptr(cam.ViewMatrix), glm::value_ptr(cam.ProjectionMatrix), glm::value_ptr(worldOrigin), 100.0f);
|
||||
|
||||
ImGuizmo::ViewManipulate(glm::value_ptr(transposed_view), 1, { ScreenSpaceMin.x,ScreenSpaceMin.y }, { 90,90 }, 0x22CCCCCC);
|
||||
|
||||
// Matrix is the model matrix we would want to manipulate
|
||||
//ImGuizmo::Manipulate(glm::value_ptr(cam.ViewMatrix), glm::value_ptr(cam.ProjectionMatrix), ImGuizmo::TRANSLATE, ImGuizmo::WORLD, glm::value_ptr(cam.ViewMatrix));
|
||||
|
||||
if (ImGui::IsWindowFocused() )
|
||||
{
|
||||
isFocused = true;
|
||||
|
||||
}
|
||||
else {
|
||||
isFocused = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool isFocused = false;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -22,9 +22,10 @@ RendererConfig EditorSceneRendererConfig{
|
||||
glm::vec3{0,0,0}, // Clear Color
|
||||
true // Depth testing
|
||||
};
|
||||
|
||||
glm::vec3 temp = glm::vec3(0);
|
||||
Camera cam = Camera(glm::vec3(14.0f, 1.0f, 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90);
|
||||
|
||||
|
||||
class Editor : public Application {
|
||||
public:
|
||||
Editor()
|
||||
@ -35,6 +36,8 @@ public:
|
||||
EditorGUIRenderer(AppWindow),
|
||||
Selected((entt::entity)-1)
|
||||
{
|
||||
|
||||
init_inputSystem(&AppWindow);
|
||||
viewportRenderer.setCurrentFrameBuffer(*framebuffer);
|
||||
}
|
||||
|
||||
@ -71,6 +74,74 @@ public:
|
||||
|
||||
{
|
||||
Viewport sceneview = Viewport(*framebuffer, viewportRenderer.getCamera());
|
||||
if (sceneview.isFocused)
|
||||
{
|
||||
const float movement_speed = 0.1f;
|
||||
static float lastX = 400, lastY = 300;
|
||||
const float sensitivity = 0.1;
|
||||
static bool firstMouse = true;
|
||||
|
||||
|
||||
if (MouseButtonPressed(YOGGIE_MOUSE_BUTTON_MIDDLE) ){
|
||||
|
||||
|
||||
auto newX = getCursorPosX(&AppWindow);
|
||||
auto newY = getCursorPosY(&AppWindow);
|
||||
|
||||
|
||||
if (firstMouse)
|
||||
{
|
||||
lastX = newX;
|
||||
lastY = newY;
|
||||
firstMouse = false;
|
||||
}
|
||||
|
||||
|
||||
float xoffset = newX - lastX;
|
||||
float yoffset = newY - lastY;
|
||||
|
||||
lastX = newX;
|
||||
lastY = newY;
|
||||
|
||||
xoffset *= sensitivity;
|
||||
yoffset *= sensitivity;
|
||||
|
||||
cam.yaw += xoffset;
|
||||
cam.pitch += yoffset;
|
||||
|
||||
if (cam.pitch > 89.0f)
|
||||
cam.pitch = 89.0f;
|
||||
if (cam.pitch < -89.0f)
|
||||
cam.pitch = -89.0f;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Check for Camara movement input here!
|
||||
if (keyIsPressed(YOGGIE_KEY_W)) {
|
||||
cam.Position += cam.Front * movement_speed;
|
||||
}
|
||||
|
||||
if (keyIsPressed(YOGGIE_KEY_A))
|
||||
{
|
||||
cam.Position -= cam.Right * movement_speed;
|
||||
|
||||
}
|
||||
|
||||
if (keyIsPressed(YOGGIE_KEY_S)) {
|
||||
cam.Position -= cam.Front * movement_speed;
|
||||
|
||||
}
|
||||
|
||||
if (keyIsPressed(YOGGIE_KEY_D)) {
|
||||
cam.Position += cam.Right * movement_speed;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
@ -136,7 +207,7 @@ public:
|
||||
lag += elapsed;
|
||||
|
||||
AppWindow.Poll();
|
||||
|
||||
cam.Update();
|
||||
|
||||
Physics.Step(elapsed);
|
||||
ActiveScene.Update();
|
||||
@ -170,6 +241,8 @@ private:
|
||||
bool SimulatePhysics = true;
|
||||
entt::entity Selected;
|
||||
|
||||
|
||||
|
||||
std::unique_ptr<Project> CurrentProject;
|
||||
Scene ActiveScene;
|
||||
|
||||
|
Reference in New Issue
Block a user