public void EditorThread_CreateScene(IRenderSurface renderSurface, EInputClass cameraInputClass) { IsCreated = true; OnEngineThread(() => { Input.RegisterListener(EngineThread_OnInputEvent, cameraInputClass); // Create a new renderer scene with our viewport 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.Position; viewInfo.CreateBoundingFrustum(); m_renderScene = CRenderer.Instance.CreateRenderScene(renderSurface); if (m_renderScene != null) { m_renderScene.OnDoFrame += EngineThread_Update; m_renderScene.UpdateViewInfo(in viewInfo); m_ambientLight = new CAmbientLight(); m_ambientLight.LightColor = Vector4.One * 0.2f; m_directionalLight = new CDirectionalLight(); m_directionalLight.LightDirection = new Vector3(0.3f, -0.7f, 0.0f); m_directionalLight.LightColor = Vector4.One * 0.8f; m_renderScene.LightManager.AddLight(m_ambientLight); m_renderScene.LightManager.AddLight(m_directionalLight); } }); }
protected override void UpdateRenderData(float deltaTime) { CDirectionalLight dirLight = (CDirectionalLight)m_renderLight; dirLight.Enabled = Enabled; dirLight.LightColor = LightColor; dirLight.LightDirection = m_transform.Forward; }
protected override void CreateRenderLight() { CDirectionalLight dirLight = new CDirectionalLight(); dirLight.Enabled = Enabled; dirLight.LightColor = LightColor; dirLight.LightDirection = m_transform.Forward; m_renderLight = dirLight; }