protected virtual void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { if (WidgetControl.InnerControl.Viewport == viewport) { var defaultCamera = scene.CameraDefault.Value; if (defaultCamera == null) { defaultCamera = scene.Mode.Value == Component_Scene.ModeEnum._3D ? scene.CameraEditor : scene.CameraEditor2D; } var position = new Vector3(27, 4, -9); var lookTo = new Vector3(25, -0.6, -10); var up = Vector3.ZAxis; //var obj = scene.GetComponent<Component_ObjectInSpace>( "Mesh in Space 68" ); //if( obj != null ) //{ // var tr = obj.TransformV; // position = tr.Position + tr.Rotation * new Vector3( 0.2, 0, 0.1 ); // lookTo = position + tr.Rotation * new Vector3( 1, 0, 0 ); // up = tr.Rotation * new Vector3( 0, 0, 1 ); //} var camera = (Component_Camera)defaultCamera.Clone(); //camera = new Component_Camera(); camera.Transform = new NeoAxis.Transform(position, Quaternion.LookAt((lookTo - position).GetNormalize(), up)); camera.FixedUp = up; viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, camera); processed = true; } }
private void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { Component_Camera camera = scene.CameraDefault; if (camera == null) { camera = scene.Mode.Value == Component_Scene.ModeEnum._3D ? scene.CameraEditor : scene.CameraEditor2D; } // Create new camera: //camera = (Component_Camera)camera.Clone(); ////camera = new Component_Camera(); //camera.Transform = new Transform( cameraPosition, Quaternion.LookAt( ( lookTo - cameraPosition ).GetNormalize(), up ) ); //camera.FixedUp = up; if (camera != null) { viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, camera); processed = true; } else { viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, 1, 90, 0.1, 1000, Vector3.Zero, Vector3.XAxis, Vector3.ZAxis, ProjectionType.Perspective, 1, 1, 1); processed = true; } }
protected override void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { base.Scene_ViewportUpdateGetCameraSettings(scene, viewport, ref processed); //check update preview mesh { var mesh = ProjectSettings.Get.MaterialPreviewMesh.Value; if (previewMeshUsed != mesh) { UpdatePreviewMesh(); needCameraUpdate = true; } } //check update preview environment { var env = ProjectSettings.Get.GetMaterialPreviewEnvironment(); if (!previewEnvironmentUsed.Equals(env)) { UpdatePreviewEnvironment(); } } if (needCameraUpdate && scene.CameraEditor.Value != null) { InitCamera(); viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, scene.CameraEditor); needCameraUpdate = false; } }
public static void UpdateSceneAntialiasingByAppSettings(Component_Scene scene) { var pipeline = scene.RenderingPipeline.Value; if (pipeline != null) { var antialising = pipeline.GetComponent <Component_RenderingEffect_Antialiasing>(true); if (antialising != null) { if (Enum.TryParse <Component_RenderingEffect_Antialiasing.TechniqueEnum>(SimulationApp.Antialiasing, false, out var value)) { // Save original value to AnyData. if (antialising.AnyData == null) { antialising.AnyData = antialising.Technique.Value; } antialising.Technique = value; } else { // Restore original value from AnyData. if (antialising.AnyData != null && antialising.AnyData is Component_RenderingEffect_Antialiasing.TechniqueEnum) { antialising.Technique = (Component_RenderingEffect_Antialiasing.TechniqueEnum)antialising.AnyData; } } } } }
private void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { // Get default camera or the camera from the editor. Component_Camera camera = scene.CameraDefault; if (camera == null) { camera = scene.Mode.Value == Component_Scene.ModeEnum._3D ? scene.CameraEditor : scene.CameraEditor2D; } // Get camera settings by game mode. if (gameMode != null) { var cameraSettings = gameMode.GetCameraSettings(viewport, camera); if (cameraSettings != null) { viewport.CameraSettings = cameraSettings; processed = true; return; } } // Create new camera: //camera = (Component_Camera)camera.Clone(); ////camera = new Component_Camera(); //camera.Transform = new Transform( cameraPosition, Quaternion.LookAt( ( lookTo - cameraPosition ).GetNormalize(), up ) ); //camera.FixedUp = up; if (camera != null) { viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, camera); processed = true; } }
/////////////////////////////////////////// public Component_Terrain_EditingMode(Component_Scene_DocumentWindow documentWindow, ModeEnum mode, object modeExtensionData = null) : base(documentWindow) { this.mode = mode; this.modeExtensionData = modeExtensionData; scene = documentWindow.Scene; }
protected override void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { base.Scene_ViewportUpdateGetCameraSettings(scene, viewport, ref processed); if (firstCameraUpdate && scene.CameraEditor2D.Value != null) { InitCamera(); viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, scene.CameraEditor2D); } firstCameraUpdate = false; }
void SceneRenderEvent(Component_Scene scene, Viewport viewport) { // Find object by the cursor. var obj = GetObjectByCursor(viewport); // Draw selection border. if (obj != null) { viewport.Simple3DRenderer.SetColor(new ColorValue(1, 1, 0)); viewport.Simple3DRenderer.AddBounds(obj.SpaceBounds.CalculatedBoundingBox); } }
protected override void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { base.Scene_ViewportUpdateGetCameraSettings(scene, viewport, ref processed); //check update preview environment { var env = onlyOneMaterial ? ProjectSettings.Get.GetMaterialPreviewEnvironment() : new Reference <Component_Image>(); if (!previewEnvironmentUsed.Equals(env)) { UpdatePreviewEnvironment(); } } }
/// <summary> /// Destroys background scene. /// </summary> public void DestroyScene() { if (sceneViewport != null) { scene.ViewportUpdateGetCameraSettings -= Scene_ViewportUpdateGetCameraSettings; sceneViewport = null; } if (scene != null) { scene.Dispose(); scene = null; } }
//public Vec3 GetSceneCenter() //{ // if( scene != null ) // { // var bounds = scene.CalculateTotalBoundsOfObjectsInSpace(); // return bounds.GetCenter(); // } // return Vec3.Zero; //} protected virtual void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { if (!cameraMode2D) { var cameraPosition = cameraLookTo - cameraDirection.GetVector() * cameraInitialDistance * cameraZoomFactor; var center = cameraLookTo; // GetSceneCenter(); Vector3 from = cameraPosition; //center + cameraDirection.GetVector() * cameraDistance; Vector3 to = center; Degree fov = 65; // 75; //!!!! Component_Camera camera = new Component_Camera(); camera.AspectRatio = (double)viewport.SizeInPixels.X / (double)viewport.SizeInPixels.Y; camera.FieldOfView = fov; camera.NearClipPlane = Math.Max(cameraInitialDistance / 10000, 0.01); //.1; camera.FarClipPlane = Math.Max(1000, cameraInitialDistance * 2); camera.Transform = new Transform(from, Quaternion.LookAt((to - from).GetNormalize(), Vector3.ZAxis)); //camera.Position = from; //camera.Direction = ( to - from ).GetNormalize(); camera.FixedUp = Vector3.ZAxis; viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, camera); ////!!!!в методе больше параметров //double aspect = (double)viewport.SizeInPixels.X / (double)viewport.SizeInPixels.Y; //var settings = new Viewport.CameraSettingsClass( viewport, aspect, fov, .1f, 1000, from, ( to - from ).GetNormalize(), Vec3.ZAxis ); //viewport.CameraSettings = settings; } else { var from = cameraLookTo + new Vector3(0, 0, scene.CameraEditor2DPositionZ); var to = cameraLookTo; Component_Camera camera = new Component_Camera(); camera.AspectRatio = (double)viewport.SizeInPixels.X / (double)viewport.SizeInPixels.Y; camera.NearClipPlane = 0.01; // Math.Max( cameraInitialDistance / 10000, 0.01 );//.1; camera.FarClipPlane = 1000; // Math.Max( 1000, cameraInitialDistance * 2 ); camera.Transform = new Transform(from, Quaternion.LookAt((to - from).GetNormalize(), Vector3.YAxis)); camera.Projection = ProjectionType.Orthographic; camera.FixedUp = Vector3.YAxis; //!!!!need consider size by X camera.Height = cameraInitBounds.GetSize().Y * 1.4; viewport.CameraSettings = new Viewport.CameraSettingsClass(viewport, camera); } processed = true; }
public void DestroyScene() { if (scene != null) { if (ViewportControl != null && ViewportControl.Viewport != null) { ViewportControl.Viewport.AttachedScene = null; } if (sceneNeedDispose) { scene.Dispose(); } scene = null; sceneNeedDispose = false; } }
public void GetWeapon(Component_Scene sc, Component_Character chr, bool hasWeapon) { var wpn = (Component_Weapon)sc?.GetComponentByPath("Weapon"); if (hasWeapon) { chr.ItemTake(wpn); chr.ItemActivate(wpn); } else { if (chr.ItemGetEnabledFirst() != null) { chr.ItemDrop(chr.ItemGetEnabledFirst()); } } }
protected override void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { base.Scene_ViewportUpdateGetCameraSettings(scene, viewport, ref processed); //check update preview { var mesh = ProjectSettings.Get.MaterialPreviewMesh.Value; if (previewMeshUsed != mesh) { UpdatePreviewMesh(); SetCameraByBounds(Scene.CalculateTotalBoundsOfObjectsInSpace()); //needCameraUpdate = true; } } UpdatePreviewEnvironment(); }
private void SceneRenderEvent(Component_Scene scene, Viewport viewport) { // Find object by the cursor. //var obj = GetObjectByCursor(viewport); // Draw selection border. if (last_selected_obj != null) { // viewport.Simple3DRenderer.SetColor(new ColorValue(0.2, 0.1, 1)); // viewport.Simple3DRenderer.AddBounds(last_selected_obj.SpaceBounds.CalculatedBoundingBox, false, 4); UTools.ShowBoxAroundObject(last_selected_obj, viewport); if (pos != null) { UTools.DrawSphere(viewport, (Vector3)pos, 0.01); } } }
bool LoadScene(bool canChangeUIControl) { DestroyScene(); scene = ResourceManager.LoadSeparateInstance <Component_Scene>(PlayFileName, true, null); //, out var error ); if (scene == null) { return(false); } //if( !string.IsNullOrEmpty( error ) ) //{ // Log.Error( error ); // return; //} SetScene(scene, canChangeUIControl); return(true); }
//!!!! //OnGetRenderSceneData private void Scene_RenderEvent( Component_Scene sender, Viewport viewport ) { //!!!!было ////!!!!пока так //TempObstaclesUpdate( false ); var context2 = viewport.RenderingContext.objectInSpaceRenderingContext; bool display = AlwaysDisplayNavMesh || context2.selectedObjects.Contains( this );// || context.canSelectObjects.Contains( this ) ; if( display ) { DebugDrawNavMesh( viewport ); //var renderer = context.viewport.Simple3DRenderer; //renderer.SetColor( new ColorValue( 0, 0, 1 ) ); //Bounds bounds = new Bounds( boundsMin, boundsMax ); //camera.DebugGeometry.AddBounds( bounds ); } }
public void SetScene(Component_Scene scene, bool canChangeUIControl) { this.scene = scene; sceneViewport = ParentContainer.Viewport; scene.ViewportUpdateBegin += Scene_ViewportUpdateBegin; scene.ViewportUpdateGetCameraSettings += Scene_ViewportUpdateGetCameraSettings; scene.RenderEvent += Scene_RenderEvent; sceneViewport.AttachedScene = scene; //init GameMode gameMode = scene.GetComponent <Component_GameMode>(onlyEnabledInHierarchy: true); // Load UI screen of the scene. if (canChangeUIControl) { var uiScreen = scene.UIScreen.Value; if (uiScreen != null) { //if( uiScreen.ParentRoot != scene.ParentRoot ) //{ var fileName = uiScreen.HierarchyController?.CreatedByResource?.Owner.Name; if (!string.IsNullOrEmpty(fileName) && VirtualFile.Exists(fileName)) { uiControl = ResourceManager.LoadSeparateInstance <UIControl>(fileName, false, null); if (uiControl != null) { AddComponent(uiControl); } } //} //else //{ // //!!!!impl? //} } } }
public void LoadScene(string fileName) { DestroyScene(); if (string.IsNullOrEmpty(fileName)) { scene = ComponentUtility.CreateComponent <Component_Scene>(null, true, true); scene.BackgroundColor = new ColorValue(0.4, 0.4, 0.4); } else { scene = ResourceManager.LoadSeparateInstance <Component_Scene>(fileName, true, null); } if (scene == null) { return; } sceneViewport = ParentContainer.Viewport; scene.ViewportUpdateBegin += Scene_ViewportUpdateBegin; scene.ViewportUpdateGetCameraSettings += Scene_ViewportUpdateGetCameraSettings; sceneViewport.AttachedScene = scene; }
//protected override void Viewport_UpdateGetObjectInSceneRenderingContext( Viewport viewport, ref Component_ObjectInSpace.RenderingContext context ) //{ // preview.PerformViewportUpdateGetObjectInSceneRenderingContext( ref context ); //} //public void PerformBaseViewportUpdateGetObjectInSceneRenderingContext( ref Component_ObjectInSpace.RenderingContext context ) //{ // base.Viewport_UpdateGetObjectInSceneRenderingContext( Viewport, ref context ); //} protected override void Scene_ViewportUpdateGetCameraSettings(Component_Scene scene, Viewport viewport, ref bool processed) { preview.PerformSceneViewportUpdateGetCameraSettings(ref processed); }
private void Scene_GetDisplayDevelopmentDataInThisApplicationOverride(Component_Scene sender, ref bool display) { display = RenderToFile.DisplayDevelopmentData; }
void CreateObjects(Component_Scene scene) { Component_SurfaceUtility.CreatePreviewObjects(scene, Surface); lastUpdateTime = Time.Current; }
private void Scene_ViewportUpdateBegin(Component_Scene scene, Viewport viewport, Viewport.CameraSettingsClass overrideCameraSettings) { ProjectUtility.UpdateSceneAntialiasingByAppSettings(scene); }
public Component_Scene CreateScene(bool enable) { DestroyScene(); //!!!!можно было бы где-то хранить файлом. где еще так scene = ComponentUtility.CreateComponent <Component_Scene>(null, true, enable); sceneNeedDispose = true; //!!!!что еще отключать? scene.OctreeEnabled = false; //rendering pipeline { var pipeline = (Component_RenderingPipeline)scene.CreateComponent(RenderingSystem.RenderingPipelineDefault, -1, false); scene.RenderingPipeline = pipeline; //!!!!что еще отключать? pipeline.DeferredShading = AutoTrueFalse.False; pipeline.LODRange = new RangeI(0, 0); double c = 1.3; double c2 = 0.4; if (EditorAPI.DarkTheme) { scene.BackgroundColor = new ColorValue(40.0 / 255 * c, 40.0 / 255 * c, 40.0 / 255 * c); } else { scene.BackgroundColor = new ColorValue(22.0 / 255 * c, 44.0 / 255 * c, 66.0 / 255 * c); } scene.BackgroundColorEnvironmentOverride = new ColorValue(0.8, 0.8, 0.8); var backgroundEffects = pipeline.CreateComponent <Component>(); backgroundEffects.Name = "Background Effects"; var vignetting = backgroundEffects.CreateComponent <Component_RenderingEffect_Vignetting>(); if (EditorAPI.DarkTheme) { vignetting.Color = new ColorValue(45.0 / 255 * c2, 45.0 / 255 * c2, 45.0 / 255 * c2); } else { vignetting.Color = new ColorValue(24.0 / 255 * c2, 48.0 / 255 * c2, 72.0 / 255 * c2); } vignetting.Radius = 2; var noise = backgroundEffects.CreateComponent <Component_RenderingEffect_Noise>(); noise.Multiply = new Range(0.9, 1.1); var sceneEffects = pipeline.CreateComponent <Component>(); sceneEffects.Name = "Scene Effects"; //antialiasing var toLDRType = MetadataManager.GetType("NeoAxis.Component_RenderingEffect_ToLDR"); var antialiasingType = MetadataManager.GetType("NeoAxis.Component_RenderingEffect_Antialiasing"); if (toLDRType != null && antialiasingType != null) { sceneEffects.CreateComponent(toLDRType); sceneEffects.CreateComponent(antialiasingType); } pipeline.Enabled = true; } //ambient light { var light = scene.CreateComponent <Component_Light>(); light.Type = Component_Light.TypeEnum.Ambient; light.Brightness = ReferenceUtility.MakeReference("Base\\ProjectSettings.component|PreviewAmbientLightBrightness"); //light.Brightness = ProjectSettings.Get.PreviewAmbientLightBrightness.Value; } //directional light { var light = scene.CreateComponent <Component_Light>(); light.Type = Component_Light.TypeEnum.Directional; light.Transform = new Transform(new Vector3(0, 0, 0), Quaternion.FromDirectionZAxisUp(new Vector3(0, 0, -1)), Vector3.One); light.Brightness = ReferenceUtility.MakeReference("Base\\ProjectSettings.component|PreviewDirectionalLightBrightness"); //light.Brightness = ProjectSettings.Get.PreviewDirectionalLightBrightness.Value; light.Shadows = false; //light.Type = Component_Light.TypeEnum.Point; //light.Transform = new Transform( new Vec3( 0, 0, 2 ), Quat.Identity, Vec3.One ); } //!!!!как когда внешне сцена цепляется scene.ViewportUpdateGetCameraSettings += Scene_ViewportUpdateGetCameraSettings; //connect scene to viewport if (ViewportControl != null && ViewportControl.Viewport != null) { ViewportControl.Viewport.AttachedScene = scene; } return(scene); }
private void Scene_RenderEvent(Component_Scene sender, Viewport viewport) { // Game mode. gameMode?.PerformRender(this, viewport); }