private void AddObject() { var sceneObject = new SceneObject(); var cube = sceneObject.AddComponent <MeshRenderer>(); cube.ReceiveShadow = false; cube.Geometry = new CubeGeometry(); cube.Geometry.Build(); cube.Material = new PreLightMaterial(scene); cube.Material.Texture = GraphicsHelper.CreateCheckboardTexture(RandomHelper.GetColor(), RandomHelper.GetColor(), 64, 64); var inc = 75; var path = cube.AddComponent <SimplePath>(); path.Loop = true; cube.Transform.Position = RandomHelper.GetVector3(-inc, 3, -inc, inc, 15, -inc); cube.Transform.LocalScale = new Vector3(4); var autoRotate = cube.AddComponent <AutoRotation>(); autoRotate.Rotation = Vector3.Normalize(RandomHelper.GetVector3(-0.01f, -0.01f, 0, 0.01f, 0.01f, 0)); path.Begin(); for (int i = 0; i < 6; i++) { path.AddPath(RandomHelper.GetVector3(-inc, 0, -inc, inc, 0, inc), cube.Transform); } path.End(); Add(sceneObject); }
private void CreateMaterialCollection() { var i = 0; var colors = new Color[] { Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Purple }; var names = new string[] { "Red", "Green", "Blue", "Yellow", "Purple" }; var size = colors.Length; // Procedurales textures. for (i = 0; i < size; i++) { CreateMaterial(string.Format("Border {0}", names[i]), GraphicsHelper.CreateBorderTexture(colors[i], Color.LightGray, 64, 64, 1)); } for (i = 0; i < size; i++) { CreateMaterial(string.Format("Checkboard {0}", names[i]), GraphicsHelper.CreateCheckboardTexture(colors[i], Color.LightGray, 64, 64)); } // Voxel pack by Kenney Vleugels for Kenney (www.kenney.nl) / License (Creative Commons Zero, CC0) var path = Path.Combine("Content", "Textures", "VoxelPack"); var files = Directory.GetFiles(Path.Combine(path, "Tiles")); var name = string.Empty; for (i = 0; i < files.Length; i++) { name = Path.GetFileNameWithoutExtension(files[i]); CreateMaterial(name, "Textures/VoxelPack/Tiles/" + name); } files = Directory.GetFiles(Path.Combine(path, "Tiles", "Details")); for (i = 0; i < files.Length; i++) { name = Path.GetFileNameWithoutExtension(files[i]); CreateBillboardMaterial(name, "Textures/VoxelPack/Tiles/Details/" + name); } // Terrain textures CreateMaterial("Terrain Grass", "Textures/Terrain/Grass"); CreateMaterial("Terrain Rock", "Textures/Terrain/Rock"); CreateMaterial("Terrain Sand", "Textures/Terrain/Sand"); CreateMaterial("Terrain Snow", "Textures/Terrain/Snow"); // Billboards for the editor CreateBillboardMaterial("ED_Camera", "Icons/Camera_Icon"); CreateBillboardMaterial("ED_Light", "Icons/Light_Icon"); // Water material var waterMaterial = new WaterMaterial(this, "WaterMaterial"); waterMaterial.Texture = Asset.LoadTexture("Textures/water"); waterMaterial.NormalMap = Asset.LoadTexture("Textures/wavesbump"); }
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); }
private void BuildScene() { var lightGo = GameObjectFactory.CreateLight(LightType.Point, Color.LightSteelBlue, 1.5f); lightGo.Transform.LocalPosition = new Vector3(-20, 20, 0); lightGo.Transform.LocalRotation = new Vector3(1, -1, 0); lightGo.AddComponent <DemoBehaviour>(); Add(lightGo); lightGo.GetComponent <Light>().Range = 100; // Terrain var terrainMaterial = new StandardMaterial(m_Scene); terrainMaterial.MainTexture = Application.Content.Load <Texture2D>("Textures/Terrain/Grass"); terrainMaterial.Shininess = 150; terrainMaterial.Tiling = new Vector2(16); var terrainGo = GameObjectFactory.CreateTerrain(); var terrain = terrainGo.GetComponent <Terrain>(); terrain.Renderer.Geometry.Size = new Vector3(2); terrain.Renderer.Geometry.TextureRepeat = new Vector2(4); terrain.Renderer.Geometry.Build(); terrain.Flatten(); terrain.Renderer.CastShadow = true; terrain.Renderer.Material = terrainMaterial; Add(terrainGo); var cubMat = new StandardMaterial(this); cubMat.MainTexture = GraphicsHelper.CreateCheckboardTexture(Color.Red, Color.White); cubMat.Tiling = new Vector2(2, 2); for (var i = 0; i < 10; i++) { var go = new GameObject("Cube " + i); go.Transform.LocalPosition = RandomHelper.GetVector3(-20, 1, -20, 20, 1, 20); Add(go); var renderer = go.AddComponent <MeshRenderer>(); renderer.Geometry = new CubeMesh(); renderer.Geometry.Build(); renderer.Material = cubMat; } // Skybox RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.BlueSkybox); }
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); }