private bool IsInScreenBounds(Vector2 position) { CWindowRenderer sceneRenderer = m_renderScene.SceneRenderer; int top = sceneRenderer.Top; int left = sceneRenderer.Left; int bottom = sceneRenderer.Top + sceneRenderer.Height; int right = sceneRenderer.Left + sceneRenderer.Width; return(position.X >= left && position.X <= right && position.Y >= top && position.Y <= bottom); }
public void SetActiveWindow(CWindowRenderer window) { ActiveWindow = window; m_uiRenderer.SetContext(window.UIContext); m_uiRenderer.Resize(ActiveWindow.Width, ActiveWindow.Height, ActiveWindow.Left, ActiveWindow.Top); m_uiRenderer.BeginRender(m_currentFrameTime); m_d3dDeviceContext.OutputMerger.SetDepthStencilState(ActiveWindow.DepthStencilState); m_d3dDeviceContext.OutputMerger.SetRenderTargets(ActiveWindow.DepthStencilView, ActiveWindow.RenderTargetView); m_d3dDeviceContext.Rasterizer.State = ActiveWindow.RasterizerState; m_d3dDeviceContext.Rasterizer.SetViewport(ActiveWindow.Viewport); m_d3dDeviceContext.ClearRenderTargetView(ActiveWindow.RenderTargetView, ClearColor); m_d3dDeviceContext.ClearDepthStencilView(ActiveWindow.DepthStencilView, DepthStencilClearFlags.Depth, 1.0f, 0xFF); }
private void EngineThread_Update(float deltaTime) { m_renderScene.DebugRenderer.DrawArrow(Vector3.Zero, Axis.Forward, 1.0f, Color.Blue.ToColor4(), 0.0f); m_renderScene.DebugRenderer.DrawArrow(Vector3.Zero, Axis.Up, 1.0f, Color.Green.ToColor4(), 0.0f); m_renderScene.DebugRenderer.DrawArrow(Vector3.Zero, Axis.Right, 1.0f, Color.Red.ToColor4(), 0.0f); bool bUpdateViewInfo = false; if (m_bIsRightMouseDown) { float forwardDelta = Input.GetNativeAxisValue(EInputAxis.MouseX); Vector3 positionDelta = Axis.Forward * forwardDelta * ZoomSpeed; m_cameraTransform.Position += positionDelta; bUpdateViewInfo = true; } if (m_bIsLeftMouseDown) { float upAxisRotationAngle = Input.GetNativeAxisValue(EInputAxis.MouseX) * OrbitSpeed; float rightAxisRotationAngle = Input.GetNativeAxisValue(EInputAxis.MouseY) * OrbitSpeed; Quaternion xRotation = Quaternion.RotationAxis(KlaxMath.Axis.Up, upAxisRotationAngle); m_orbitTransform.RotateLocal(xRotation); Quaternion yRotation = Quaternion.RotationAxis(m_orbitTransform.Right, rightAxisRotationAngle); m_orbitTransform.RotateLocal(yRotation); bUpdateViewInfo = true; } if (bUpdateViewInfo) { SSceneViewInfo viewInfo = new SSceneViewInfo(); viewInfo.Fov = FieldOfView; viewInfo.ScreenFar = ScreenFar; viewInfo.ScreenNear = ScreenNear; viewInfo.FitProjectionToScene = true; viewInfo.ViewMatrix = Matrix.Invert(m_cameraTransform.WorldMatrix); viewInfo.ViewLocation = m_cameraTransform.WorldPosition; viewInfo.CreateBoundingFrustum(); m_renderScene.UpdateViewInfo(in viewInfo); } if (ShowMeshSelection) { CWindowRenderer window = m_renderScene.SceneRenderer; ImGui.SetNextWindowPos(new System.Numerics.Vector2(0, window.Height - 40)); ImGui.SetNextWindowSize(new System.Numerics.Vector2(window.Width, 40)); ImGui.SetNextWindowBgAlpha(0); ImGui.Begin("MeshSelection", ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoScrollbar); if (ImGui.Button("Cu")) { EngineThread_SetPreviewMesh(EngineBaseContentLoader.DefaultCube, true, false); m_lastSelectedDefaultMesh = EngineBaseContentLoader.DefaultCube; } ImGui.SameLine(); if (ImGui.Button("Sp")) { EngineThread_SetPreviewMesh(EngineBaseContentLoader.DefaultSphere, true, false); m_lastSelectedDefaultMesh = EngineBaseContentLoader.DefaultSphere; } ImGui.SameLine(); if (ImGui.Button("Cy")) { EngineThread_SetPreviewMesh(EngineBaseContentLoader.DefaultCylinder, true, false); m_lastSelectedDefaultMesh = EngineBaseContentLoader.DefaultCylinder; } ImGui.End(); } }