public override void Start() { if (_borderZone == Rectangle.Empty) { _borderZone = new Rectangle(Screen.VirtualWidthPerTwo, 10, Screen.VirtualWidthPerTwo, Screen.VirtualHeight - Screen.VirtualHeight / 3); } if (_borderTexture == null) { _borderTexture = GraphicsHelper.CreateBorderTexture(new Color(0.3f, 0.3f, 0.3f, 0.6f), Color.Transparent, _borderZone.Width, _borderZone.Height, 2); } }
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); }
public void LoadContent(ContentManager content) { Box = GraphicsHelper.CreateBorderTexture(Color.White, new Color(0.08f, 0.12f, 0.16f, 0.7f), 128, 128, 1); Border = GraphicsHelper.CreateBorderTexture(Color.White, new Color(0.08f, 0.12f, 0.16f, 0.7f), 128, 128, 1); Buttons[0] = GraphicsHelper.CreateBorderTexture(Color.White, new Color(0.08f, 0.12f, 0.16f, 0.7f), 128, 48, 1); Buttons[1] = GraphicsHelper.CreateBorderTexture(Color.WhiteSmoke, new Color(0.16f, 0.19f, 0.23f, 0.7f), 128, 48, 1); Buttons[2] = GraphicsHelper.CreateBorderTexture(Color.LightGray, new Color(0.19f, 0.23f, 0.27f, 0.7f), 128, 48, 1); Checkbox[0] = GraphicsHelper.CreateBorderTexture(Color.White, new Color(0.08f, 0.12f, 0.16f, 0.7f), 48, 48, 2); Checkbox[1] = GraphicsHelper.CreateTexture(Color.DarkGray, 1, 1); Checkbox[2] = GraphicsHelper.CreateTexture(Color.White, 1, 1); Sliders[0] = GraphicsHelper.CreateTexture(new Color(0.08f, 0.12f, 0.16f, 0.7f), 1, 1); Sliders[1] = GraphicsHelper.CreateGradiantTexture(Color.LightBlue, Color.CadetBlue, 16, 16); if (!string.IsNullOrEmpty(_fontName)) { Font = content.Load <SpriteFont>(_fontName); } }
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; }