Can move around scene again .. working on Rendering engine still
This commit is contained in:
		@ -18,6 +18,7 @@ void Viewport::Draw() {
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    cam.Update();
 | 
			
		||||
    renderer.SetMainCamera(cam);
 | 
			
		||||
    renderer.Render(scene);
 | 
			
		||||
 | 
			
		||||
    ImVec2 WinPos = ImGui::GetWindowPos();
 | 
			
		||||
@ -37,6 +38,7 @@ void Viewport::Draw() {
 | 
			
		||||
    ImGuizmo::SetRect(ScreenSpaceMin.x, ScreenSpaceMin.y, ContentRegionMax.x, ContentRegionMax.y);
 | 
			
		||||
 | 
			
		||||
    glm::mat4 transposed_view = glm::transpose(cam.ViewMatrix);
 | 
			
		||||
    isFocused = ImGui::IsWindowFocused();
 | 
			
		||||
 | 
			
		||||
    //ImGuizmo::DrawGrid(glm::value_ptr(cam.ViewMatrix), glm::value_ptr(cam.ProjectionMatrix), glm::value_ptr(worldOrigin), 100.0f);
 | 
			
		||||
    //ImGuizmo::ViewManipulate(glm::value_ptr(cam.ViewMatrix), 1, { ScreenSpaceMin.x,ScreenSpaceMin.y }, { 90,90 }, 0x22CCCCCC);
 | 
			
		||||
@ -44,12 +46,4 @@ void Viewport::Draw() {
 | 
			
		||||
    // 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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -38,7 +38,7 @@ public:
 | 
			
		||||
        SceneExplorer explorer(Selected, scene);
 | 
			
		||||
        Inspector inspector = Inspector(Selected);
 | 
			
		||||
        Settings settings = Settings();
 | 
			
		||||
        // AssetFinder assetsView = AssetFinder();
 | 
			
		||||
       // AssetFinder assetsView = AssetFinder();
 | 
			
		||||
        Console console = Console();
 | 
			
		||||
 | 
			
		||||
        Selected = YoggieEngine::Entity((entt::entity) -1, &scene);
 | 
			
		||||
@ -54,68 +54,16 @@ public:
 | 
			
		||||
            lag += elapsed;
 | 
			
		||||
 | 
			
		||||
            scene.Update();
 | 
			
		||||
        
 | 
			
		||||
            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_RIGHT)) {
 | 
			
		||||
 | 
			
		||||
                    glfwSetInputMode((GLFWwindow*)appWindow->GetHandle(), GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
 | 
			
		||||
                    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;
 | 
			
		||||
 | 
			
		||||
                    sceneview.cam.yaw += xoffset;
 | 
			
		||||
                    sceneview.cam.pitch += yoffset;
 | 
			
		||||
 | 
			
		||||
                    if (sceneview.cam.pitch > 89.0f)
 | 
			
		||||
                        sceneview.cam.pitch = 89.0f;
 | 
			
		||||
                    if (sceneview.cam.pitch < -89.0f)
 | 
			
		||||
                        sceneview.cam.pitch = -89.0f;
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                else if (firstMouse == false)
 | 
			
		||||
                {
 | 
			
		||||
                    glfwSetInputMode((GLFWwindow*)appWindow->GetHandle(), GLFW_CURSOR, GLFW_CURSOR_NORMAL);
 | 
			
		||||
                    firstMouse = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Check for Camara movement input here!
 | 
			
		||||
                if (keyIsPressed(YOGGIE_KEY_W))
 | 
			
		||||
                    sceneview.cam.Position += sceneview.cam.Front * movement_speed;
 | 
			
		||||
 | 
			
		||||
                if (keyIsPressed(YOGGIE_KEY_A))
 | 
			
		||||
                    sceneview.cam.Position -= sceneview.cam.Right * movement_speed;
 | 
			
		||||
 | 
			
		||||
                if (keyIsPressed(YOGGIE_KEY_S))
 | 
			
		||||
                    sceneview.cam.Position -= sceneview.cam.Front * movement_speed;
 | 
			
		||||
 | 
			
		||||
                if (keyIsPressed(YOGGIE_KEY_D))
 | 
			
		||||
                    sceneview.cam.Position += sceneview.cam.Right * movement_speed;
 | 
			
		||||
            if (sceneview.isFocused) {
 | 
			
		||||
                UpdateSceneCamera(sceneview);
 | 
			
		||||
 | 
			
		||||
                std::cout << "Scene view in Focus!\r" ;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            GuiBegin();
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
            {
 | 
			
		||||
                MainMenuBar menuBar = MainMenuBar();
 | 
			
		||||
 | 
			
		||||
@ -181,10 +129,70 @@ public:
 | 
			
		||||
private:
 | 
			
		||||
    bool SimulatePhysics = true;
 | 
			
		||||
    YoggieEngine::Entity  Selected;
 | 
			
		||||
 | 
			
		||||
    Project project;
 | 
			
		||||
    Scene scene;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void UpdateSceneCamera(Viewport& sceneview) {
 | 
			
		||||
        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_RIGHT)) {
 | 
			
		||||
 | 
			
		||||
            glfwSetInputMode((GLFWwindow*)appWindow->GetHandle(), GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
 | 
			
		||||
            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;
 | 
			
		||||
 | 
			
		||||
            sceneview.cam.yaw += xoffset;
 | 
			
		||||
            sceneview.cam.pitch += yoffset;
 | 
			
		||||
 | 
			
		||||
            if (sceneview.cam.pitch > 89.0f)
 | 
			
		||||
                sceneview.cam.pitch = 89.0f;
 | 
			
		||||
            if (sceneview.cam.pitch < -89.0f)
 | 
			
		||||
                sceneview.cam.pitch = -89.0f;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        else if (firstMouse == false)
 | 
			
		||||
        {
 | 
			
		||||
            glfwSetInputMode((GLFWwindow*)appWindow->GetHandle(), GLFW_CURSOR, GLFW_CURSOR_NORMAL);
 | 
			
		||||
            firstMouse = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Check for Camara movement input here!
 | 
			
		||||
        if (keyIsPressed(YOGGIE_KEY_W)) {
 | 
			
		||||
            sceneview.cam.Position += sceneview.cam.Front * movement_speed;
 | 
			
		||||
            std::cout << "Pressed W !" << std::endl;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (keyIsPressed(YOGGIE_KEY_A))
 | 
			
		||||
            sceneview.cam.Position -= sceneview.cam.Right * movement_speed;
 | 
			
		||||
 | 
			
		||||
        if (keyIsPressed(YOGGIE_KEY_S))
 | 
			
		||||
            sceneview.cam.Position -= sceneview.cam.Front * movement_speed;
 | 
			
		||||
 | 
			
		||||
        if (keyIsPressed(YOGGIE_KEY_D))
 | 
			
		||||
            sceneview.cam.Position += sceneview.cam.Right * movement_speed;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
YoggieEngine::Application* CreateApplication() {
 | 
			
		||||
@ -192,3 +200,5 @@ YoggieEngine::Application* CreateApplication() {
 | 
			
		||||
    return new Editor();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user