private void InternalAddSceneObject(string type) { GameObject sceneObject = null; switch (type) { case "Cube": sceneObject = new MeshPrefab(type, new CubeGeometry()); break; case "Cylinder": sceneObject = new MeshPrefab(type, new CylinderGeometry()); break; case "Quad": sceneObject = new MeshPrefab(type, new QuadGeometry()); break; case "Plane": sceneObject = new MeshPrefab(type, new PlaneGeometry()); break; case "Pyramid": sceneObject = new MeshPrefab(type, new PyramidGeometry()); break; case "Sphere": sceneObject = new MeshPrefab(type, new SphereGeometry()); break; case "Torus": sceneObject = new MeshPrefab(type, new TorusGeometry()); break; case "Terrain": var terrain = new TerrainPrefab(type); terrain.Flatten(); terrain.Renderer.Material = DefaultMaterial; sceneObject = terrain; break; case "Water": var water = new WaterPrefab(type); Add(water); water.Generate(string.Empty, string.Empty, new Vector3(10)); water.Renderer.Material = GetMaterialByName("WaterMaterial"); sceneObject = water; break; case "Directional": sceneObject = CreateLightNode(type, LightType.Directional); break; case "Point": sceneObject = CreateLightNode(type, LightType.Point); break; case "Spot": sceneObject = CreateLightNode(type, LightType.Spot); break; case "Camera": sceneObject = new CameraPrefab(type); sceneObject.AddComponent <EDBoxCollider>(); var camRenderer = sceneObject.AddComponent <EDMeshRenderer>(); camRenderer.CastShadow = false; camRenderer.ReceiveShadow = false; camRenderer.Geometry = new QuadGeometry(); camRenderer.Geometry.Build(); camRenderer.Material = GetMaterialByName("Camera"); break; default: break; } InternalAddSceneObject(sceneObject); }
public override void Initialize() { base.Initialize(); // Skybox RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.BlueSkybox); // Camera var camera = new CameraPrefab("camera"); camera.AddComponent <ControllerSwitcher>(); camera.AddComponent <DemoBehaviour>(); Add(camera); // Light var lightPrefab = new LightPrefab("light", LightType.Directional); lightPrefab.Transform.Translate(0, 10, 0); lightPrefab.Light.Range = 25; lightPrefab.Light.Intensity = 1.0f; lightPrefab.Light.FallOf = 5f; lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0); lightPrefab.Light.Angle = MathHelper.PiOver4; lightPrefab.Light.ShadowGenerator.ShadowStrength = 0.6f; lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024); lightPrefab.EnableShadows = true; Add(lightPrefab); // Finally a terrain var terrainMat = new TerrainMaterial(scene); var terrain = new TerrainPrefab("terrain"); terrain.Randomize(4, 12); terrain.Renderer.Material = terrainMat; terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2); Add(terrain); terrain.SetWeightData(0.5f, 4, 15, 30); terrainMat.Texture = Application.Content.Load <Texture2D>("Textures/Terrain/Grass"); terrainMat.SandTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Sand"); terrainMat.SnowTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Snow"); terrainMat.RockTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Rock"); terrainMat.WeightTexture = terrain.GenerateWeightMap(); terrainMat.Tiling = new Vector2(4); // Water ! var water = new WaterPrefab("water"); Add(water); water.Generate("Textures/water", "Textures/wavesbump", new Vector3(terrain.Width * 0.5f)); var waterMat = water.Renderer.Material as WaterMaterial; waterMat.ReflectiveMap = scene.RenderSettings.Skybox.Texture; waterMat.WaterTransparency = 0.6f; }
public override void Initialize() { base.Initialize(); // Add a camera with a FPS controller var camera = new CameraPrefab("camera"); camera.Setup(new Vector3(0, 2, -10), new Vector3(0, 0, 0), Vector3.Up); camera.AddComponent <ControllerSwitcher>(); Add(camera); // And a light var lightPrefab = new LightPrefab("light", LightType.Directional); Add(lightPrefab); lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0); lightPrefab.Light.Color = Color.LightSkyBlue; lightPrefab.Light.Intensity = 1.0f; lightPrefab.AddComponent <DemoBehaviour>(); lightPrefab.EnableShadows = true; // Finally a terrain var terrainMat = new TerrainMaterial(scene); var terrain = new TerrainPrefab("terrain"); scene.Add(terrain); terrain.LoadHeightmap("Textures/heightmap"); terrain.Renderer.Material = terrainMat; terrain.Transform.Translate(-terrain.Width >> 1, -10, -terrain.Depth >> 1); terrain.AddComponent <WeightMapViewer>(); var map = terrain.GenerateWeightMap(); terrainMat.Texture = Application.Content.Load <Texture2D>("Textures/Terrain/Grass"); terrainMat.SandTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Sand"); terrainMat.SnowTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Snow"); terrainMat.RockTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Rock"); terrainMat.WeightTexture = map; terrainMat.Tiling = new Vector2(4); // With water ! var water = new WaterPrefab("water"); scene.Add(water); water.Generate("Textures/water", "Textures/wavesbump", new Vector3(terrain.Width * 0.5f)); Screen.ShowCursor = true; // Don't miss the Skybox ;) RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.BlueSkybox); // And fog RenderSettings.FogDensity = 0.0085f; RenderSettings.FogMode = FogMode.Exp2; }
public override void Initialize() { base.Initialize(); // First we add a Skybox RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox); // And a camera with some components var camera = new CameraPrefab("camera"); camera.AddComponent <ControllerSwitcher>(); camera.AddComponent <DemoBehaviour>(); Add(camera); // A light is required to illuminate objects. var lightPrefab = new LightPrefab("light", LightType.Directional); lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0); lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024); lightPrefab.EnableShadows = true; Add(lightPrefab); // A terrain with its material. var terrainMaterial = new StandardMaterial(scene); terrainMaterial.Texture = Application.Content.Load <Texture2D>("Textures/Terrain/Rock"); terrainMaterial.Shininess = 150; terrainMaterial.Tiling = new Vector2(8); var terrain = new TerrainPrefab("terrain"); terrain.Renderer.Geometry.Size = new Vector3(2); terrain.Renderer.ReceiveShadow = true; terrain.Randomize(4, 12); terrain.Renderer.Material = terrainMaterial; terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2); Add(terrain); // Lava ! var lavaMaterial = new LavaMaterial(this); lavaMaterial.Texture = Application.Content.Load <Texture2D>("Textures/lava_texture"); lavaMaterial.NormalMap = Application.Content.Load <Texture2D>("Textures/lava_bump"); var lava = new WaterPrefab("water"); lava.Renderer.Material = lavaMaterial; lava.Renderer.ReceiveShadow = true; lava.Renderer.Geometry.Size = new Vector3(terrain.Width * 0.5f); lava.Renderer.Geometry.Build(); Add(lava); }
public override void Initialize() { base.Initialize(); DefaultMaterial.Texture = GraphicsHelper.CreateBorderTexture(Color.DimGray, Color.LightGray, 128, 128, 2); camera = CreateAddSceneObject <Camera>("EditorCamera.Main"); camera.Setup(new Vector3(0.0f, 10.0f, 30.0f), Vector3.Zero, Vector3.Up); camera.Transform.Rotation = new Vector3(-MathHelper.Pi / 6, 0.0f, 0.0f); camera.AddComponent <EDFirstPersonCamera>(); light = CreateAddSceneObject <Light>("Directional Light", false); light.Transform.Position = new Vector3(250, 500, 500); light.Transform.Rotation = new Vector3(-0.6f, 1, 0.6f); light.TypeLight = LightType.Directional; light.Backing = LightRenderMode.RealTime; light.Color = Color.White; light.EnableShadow = true; light.Intensity = 1.0f; light.ShadowGenerator.ShadowMapSize = 1024; light.ShadowGenerator.ShadowStrength = 0.4f; // Grid var gridMaterial = new StandardMaterial(this, "GridMaterial"); gridMaterial.Texture = GraphicsHelper.CreateCheckboardTexture(new Color(0.6f, 0.6f, 0.6f), new Color(0.95f, 0.95f, 0.95f), 256, 256);; gridMaterial.Tiling = new Vector2(24); grid = new TerrainPrefab("Editor_Grid"); grid.Tag = EditorTag; grid.Renderer.Material = gridMaterial; grid.Renderer.ReceiveShadow = true; grid.Renderer.CastShadow = false; grid.Flatten(); grid.Transform.SetPosition(-grid.Width / 2, -1, -grid.Depth / 2); Add(grid); CreateMaterialCollection(); EDRegistry.Camera = camera; Messenger.Register(EditorEvent.CreateSceneObject, CreateNewObject); Messenger.Register(EditorEvent.CommandDelete, RemoveSceneObject); Messenger.Register(EditorEvent.CommandEscape, UnselectObject); Messenger.Register(EditorEvent.CommandCopy, CopySelection); Messenger.Register(EditorEvent.CommandPast, PastSelection); Messenger.Register(EditorEvent.CommandDuplicate, DuplicateSelection); }
public override void Initialize() { base.Initialize(); // Camera var camera = new CameraPrefab("camera"); camera.AddComponent <OrbitController>(); camera.AddComponent <RayPickingTester>(); Add(camera); // Light var lightPrefab = new LightPrefab("lightPrefab", LightType.Point); Add(lightPrefab); lightPrefab.Transform.Position = new Vector3(0, 15, 15); lightPrefab.Light.Range = 105; lightPrefab.Light.Intensity = 2.0f; lightPrefab.Light.FallOf = 5f; lightPrefab.Light.Color = Color.Violet; lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0); lightPrefab.Light.Angle = 0.1f; lightPrefab.Light.ShadowGenerator.ShadowStrength = 0.6f; // FIXME need to be inverted lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024); lightPrefab.EnableShadows = true; lightPrefab.AddComponent <LightSwitcher>(); lightPrefab.AddComponent <LightMover>(); lightPrefab.AddComponent <DemoBehaviour>(); var lightPrefabSphere = lightPrefab.AddComponent <MeshRenderer>(); lightPrefabSphere.Geometry = new SphereGeometry(2f, 4); lightPrefabSphere.Geometry.Build(); lightPrefabSphere.CastShadow = false; lightPrefabSphere.ReceiveShadow = false; lightPrefabSphere.Material = new SimpleMaterial(scene); lightPrefabSphere.Material.Texture = GraphicsHelper.CreateTexture(Color.Yellow, 1, 1); // Terrain var terrainMaterial = new StandardMaterial(scene); terrainMaterial.Texture = GraphicsHelper.CreateBorderTexture(Color.LightGreen, Color.LightSeaGreen, 128, 128, 4); terrainMaterial.Shininess = 10; terrainMaterial.Tiling = new Vector2(16); var terrain = new TerrainPrefab("terrain"); terrain.Renderer.Geometry.Size = new Vector3(4); terrain.Renderer.Geometry.Build(); terrain.Flatten(); terrain.Renderer.Material = terrainMaterial; terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2); Add(terrain); // Cube var cubeSuperMaterial = new StandardMaterial(scene); cubeSuperMaterial.Texture = GraphicsHelper.CreateCheckboardTexture(Color.FloralWhite, Color.DodgerBlue); cubeSuperMaterial.DiffuseColor = Color.WhiteSmoke; cubeSuperMaterial.SpecularColor = new Color(0.8f, 0.8f, 0.8f, 1.0f); cubeSuperMaterial.Shininess = 10; cubeSuperMaterial.EmissiveColor = new Color(0f, 0.0f, 0.2f, 1.0f); var cubeScene = new SceneObject(); cubeScene.Transform.Translate(0, 6f, 0); cubeScene.Transform.LocalScale = new Vector3(4.0f); cubeScene.Transform.Rotate((float)Math.PI / 4, 0, (float)Math.PI / 4); var autoRot = cubeScene.AddComponent <AutoRotation>(); autoRot.Rotation = new Vector3(0, 0.01f, 0); Add(cubeScene); var cube = cubeScene.AddComponent <MeshRenderer>(); cube.ReceiveShadow = false; cube.Geometry = new CubeGeometry(); cube.Geometry.Build(); cube.Material = cubeSuperMaterial; cubeScene.AddComponent <BoxCollider>(); // Skybox RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox, 500); Screen.ShowCursor = true; }
public override void Initialize() { base.Initialize(); Application.Engine.Renderer = new PreLightRenderer(); // Camera var camPrefab = new CameraPrefab("camera"); camPrefab.AddComponent <DemoBehaviour>(); var camera = camPrefab.GetComponent <Camera>(); camera.Far = 50000; var orbit = camPrefab.AddComponent <OrbitController>(); orbit.MaxDistance = 250; Add(camPrefab); // Terrain var groundMaterial = new PreLightMaterial(scene); groundMaterial.Texture = GraphicsHelper.CreateCheckboardTexture(Color.LightGreen, Color.LightSeaGreen, 128, 128); groundMaterial.Tiling = new Vector2(16); var ground = new TerrainPrefab("terrain"); ground.Renderer.Geometry.Size = new Vector3(4, 1, 4); ground.Flatten(); ground.Renderer.Material = groundMaterial; ground.Transform.Translate(-ground.Width >> 1, 0, -ground.Depth / 2); Add(ground); MeshRenderer cube = null; var maxCubes = 24; var limits = 250; for (int i = 0; i < maxCubes; i++) { var size = RandomHelper.GetVector3(0.5f, 0.5f, 0.5f, 16, 16, 16); cube = CreateCube(size, RandomHelper.GetVector3(-limits, size.Y, -limits, limits, size.Y, limits)); cube.Material = new PreLightMaterial(this); cube.Material.Texture = GraphicsHelper.CreateCheckboardTexture(RandomHelper.GetColor(), RandomHelper.GetColor()); Add(cube.SceneObject); } for (int i = 0; i < 4; i++) { AddObject(); } // Skybox RenderSettings.AmbientColor = new Color(0.15f, 0.15f, 0.15f, 1.0f); RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox, 1500.0f); Screen.ShowCursor = true; var margin = 80; AddBackedLight(new Vector3(0, 15, 0), Color.DarkCyan, 35); AddBackedLight(new Vector3(margin, 15, margin), Color.Red); AddBackedLight(new Vector3(-margin, 15, margin), Color.Blue); AddBackedLight(new Vector3(margin, 15, -margin), Color.Green); AddBackedLight(new Vector3(-margin, 15, -margin), Color.Yellow); }
public override void Initialize() { base.Initialize(); // Skybox RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox); // Camera var camera = new CameraPrefab("camera"); camera.Transform.Translate(0, 25, 0); camera.AddComponent <DemoBehaviour>(); camera.AddComponent <PostProcessSwitcher>(); Add(camera); var orbitController = camera.AddComponent <OrbitController>(); // Light var lightPrefab = new LightPrefab("light", LightType.Directional); lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0); lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024); lightPrefab.EnableShadows = true; lightPrefab.Light.Intensity = 0.5f; lightPrefab.Light.FallOf = 5.0f; Add(lightPrefab); // Terrain var terrainMaterial = new StandardMaterial(scene); terrainMaterial.Texture = Application.Content.Load <Texture2D>("Textures/Terrain/Rock"); terrainMaterial.Shininess = 50; terrainMaterial.Tiling = new Vector2(8); var terrain = new TerrainPrefab("terrain"); terrain.Renderer.Geometry.Size = new Vector3(2); terrain.Renderer.ReceiveShadow = true; terrain.Randomize(4, 15, 0.086, 0.25, true); terrain.Renderer.Material = terrainMaterial; terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2); Add(terrain); // Lava var lava = new LavaPrefab("water"); Add(lava); lava.Generate("Textures/lava_texture", "Textures/lava_bump", new Vector3(terrain.Width * 0.5f)); var jack = new ModelPrefab("Jack"); jack.Transform.Rotate(-MathHelper.PiOver2, MathHelper.Pi, 0); jack.Transform.Translate(0, 35, 0); jack.Transform.LocalScale = new Vector3(4); jack.LoadModel("Models/Jack/JackOLantern"); var jackMaterial = new StandardMaterial(this); jackMaterial.EmissiveColor = new Color(0.2f, 0.005f, 0); jackMaterial.Texture = Application.Content.Load <Texture2D>("Models/Jack/PumpkinColor"); jack.Renderer.Material = jackMaterial; Add(jack); orbitController.LookAt(jack.Transform); orbitController.Distance = 150.0f; }