public void TestVolumeStaticMesh() { TestManager.Helpers.OpenSceneFromFile(Path.Combine(TestManager.Helpers.TestDataDir, @"CustomVolumeShapeTests\empty.scene")); CustomVolumeShape volume = new CustomVolumeShape(); Layer layer = EditorManager.Scene.ActiveLayer; EditorManager.Actions.Add(AddShapeAction.CreateAddShapeAction(volume, null, layer, false)); volume.Preview = true; volume.CustomStaticMesh = true; volume.StaticMeshPath = "Meshes\\kugel.vmesh"; volume.Scaling = new Vector3F(20.0f, 20.0f, 20.0f); DynLightShape light = new DynLightShape("test light"); light.LightType = LightSourceType_e.Point; light.Position = EditorManager.Scene.CurrentShapeSpawnPosition; EditorManager.Actions.Add(AddShapeAction.CreateAddShapeAction(light, null, layer, false)); ShapeComponent component = CreateLightClippingComponent(volume); EditorManager.Actions.Add(new AddShapeComponentAction(light, component)); for (int i = 0; i < 60; i++) { EditorManager.ActiveView.UpdateView(true); } bool success = EditorManager.Scene.SaveAs("volume.scene"); Assert.IsTrue(success); EditorManager.Scene.Close(); TestManager.Helpers.OpenSceneFromFile(Path.Combine(TestManager.Helpers.TestDataDir, @"CustomVolumeShapeTests\volume.scene")); for (int i = 0; i < 60; i++) { EditorManager.EngineManager.WriteText2D(10.0f, 10.0f, "This is the saved version", VisionColors.White); EditorManager.ActiveView.UpdateView(true); } EditorManager.Scene.ExportScene(null, null); EditorManager.Scene.Close(); EditorManager.Scene = null; TestManager.Helpers.LoadExportedScene("volume.vscene"); for (int i = 0; i < 60; i++) { EditorManager.EngineManager.WriteText2D(10.0f, 10.0f, "This is the exported version", VisionColors.White); EditorManager.ActiveView.UpdateView(true); } EditorManager.EditorMode = EditorManager.Mode.EM_NONE; TestManager.Helpers.CloseExportedScene(); TestManager.Helpers.CloseActiveProject(); }
private void ApplySettingsOnScene() { // Set Renderer if (radioButton_Forward.Checked) { _scene.V3DLayer.RendererNodeClass = IRendererNodeManager.RENDERERNODECLASS_FORWARD; } else if (radioButton_ForwardMobile.Checked) { _scene.V3DLayer.RendererNodeClass = IRendererNodeManager.RENDERERNODECLASS_MOBILE_FORWARD; } else if (radioButton_Deferred.Checked) { _scene.V3DLayer.RendererNodeClass = IRendererNodeManager.RENDERERNODECLASS_DEFERRED; } else if (radioButton_NoRenderer.Checked) { _scene.V3DLayer.RendererNodeClass = IRendererNodeManager.RENDERERNODECLASS_SIMPLE; return; } // Enable Post Processors ShapeComponentType[] compTypes = EditorManager.RendererNodeManager.ComponentTypes; _scene.V3DLayer.RendererSetup._rendererComponents.Clear(); EditorManager.RendererNodeManager.RemovePostprocessors(); foreach (ShapeComponentType compType in compTypes) { if (compType.Hidden) { continue; } if (!EditorManager.RendererNodeManager.CanAttachPostprocessor(compType.ProbeComponent)) { continue; } bool bEnable = false; if (compType.UniqueName.Equals("VPostProcessSSAO")) { bEnable = checkBox_SSAO.Checked; } else if (compType.UniqueName.Equals("VPostProcessGlow")) { bEnable = checkBox_Glow.Checked; } else if (compType.UniqueName.Equals("VPostProcessDepthOfField")) { bEnable = checkBox_DOF.Checked; } else if (compType.UniqueName.Equals("VPostProcessToneMapping")) { bEnable = checkBox_TM.Checked; } else if (compType.UniqueName.Equals("VPostProcessFXAA")) { bEnable = checkBox_AA.Checked; } else if (compType.UniqueName.Equals("VDeferredShadingLights")) { bEnable = checkBox_Lighting.Checked && radioButton_Deferred.Checked; } else if (compType.UniqueName.Equals("VDeferredShadingRimLight")) { bEnable = checkBox_RimLight.Checked && radioButton_Deferred.Checked; } else if (compType.UniqueName.Equals("VGlobalFogPostprocess")) { bEnable = checkBox_DepthFog.Checked && radioButton_Deferred.Checked; } ShapeComponent comp = (ShapeComponent)compType.CreateInstance(_scene.V3DLayer); comp.Active = bEnable; _scene.V3DLayer.RendererSetup._rendererComponents.Add(comp); } // Update renderer node EditorManager.RendererNodeManager.UpdateRendererNode(_scene.RendererProperties, _scene.Postprocessors); // Setup Lighting if (checkBox_TOD.Checked) { _scene.V3DLayer.EnableTimeOfDay = true; ShapeBase lightShape = null; DynLightShape sunlight = null; DynLightShape backlight = null; #if !HK_ANARCHY SunglareShape sunglare = null; #else Shape3D sunglare = null; #endif if (checkBox_Sunlight.Checked) { sunlight = new DynLightShape("Sun Light"); lightShape = sunlight; sunlight.LightType = LightSourceType_e.Directional; sunlight.Position = EditorManager.Scene.CurrentShapeSpawnPosition; sunlight.ExportAsStatic = false; sunlight.CastModelShadows = checkBox_Shadows.Checked; sunlight.CastWorldShadows = checkBox_Shadows.Checked; sunlight.MakeTimeOfDayLight(1.0f, true, null); } // Shadows if (checkBox_Shadows.Checked && checkBox_Sunlight.Checked) { #if !HK_ANARCHY ShapeComponentType compType = (ShapeComponentType)EditorManager.EngineManager.ComponentClassManager.GetCollectionType("VShadowMapComponentSunlight"); System.Diagnostics.Debug.Assert(compType != null, "Cannot create component of type VShadowMapComponentSunlight"); #else ShapeComponentType compType = (ShapeComponentType)EditorManager.EngineManager.ComponentClassManager.GetCollectionType("VMobileShadowMapComponentSpotDirectional"); System.Diagnostics.Debug.Assert(compType != null, "Cannot create component of type VMobileShadowMapComponentSpotDirectional"); #endif if (compType != null) { ShapeComponent comp = (ShapeComponent)compType.CreateInstance(sunlight); sunlight.AddComponentInternal(comp); } } // Back light if (checkBox_Backlight.Checked && checkBox_Sunlight.Checked) { backlight = new DynLightShape("Back Light"); backlight.LightType = LightSourceType_e.Directional; backlight.Position = EditorManager.Scene.CurrentShapeSpawnPosition; backlight.ExportAsStatic = false; backlight.CastModelShadows = false; backlight.CastWorldShadows = false; backlight.MakeTimeOfDayBackLight(); } #if !HK_ANARCHY // Sun glare if (checkBox_Sunglare.Checked && checkBox_Sunlight.Checked) { sunglare = new SunglareShape("Sun Glare"); sunglare.AttachToTimeOfDay = true; sunglare.Position = EditorManager.Scene.CurrentShapeSpawnPosition; } #endif // Group light shapes if (backlight != null || sunglare != null) { Group3DShape group = new Group3DShape("Sunlight Shapes"); group.Position = EditorManager.Scene.CurrentShapeSpawnPosition; group.AddChild(sunlight); if (backlight != null) { group.AddChild(backlight); } if (sunglare != null) { group.AddChild(sunglare); } lightShape = group; } // Add to scene if (lightShape != null) { _scene.V3DLayer.AddShape(lightShape, null); } } else { _scene.V3DLayer.EnableTimeOfDay = false; } }