public override void Initialize() { base.Initialize(); GUI.Skin = DemoGame.CreateSkin(Application.Content, false); // Add a camera with a FPS controller var camera = GameObjectFactory.CreateCamera(new Vector3(0, 2, -10), new Vector3(0, 0, 0), Vector3.Up); m_Camera = camera.GetComponent <Camera>(); m_Camera.AddComponent <DemoBehaviour>(); m_ControllerSwitcher = m_Camera.AddComponent <ControllerSwitcher>(); m_DemoSceneMenu = m_Camera.AddComponent <DemoSceneMenu>(); // And a light var lightGo = GameObjectFactory.CreateLight(LightType.Directional, Color.White, 1f); lightGo.Transform.LocalPosition = new Vector3(500, 500, 0); lightGo.Transform.LocalRotation = new Vector3(MathHelper.PiOver2, -MathHelper.PiOver4, 0); m_DirectionalLight = lightGo.GetComponent <Light>(); // Sun Flares var content = Application.Content; var glowTexture = content.Load <Texture2D>("Textures/Flares/SunGlow"); var flareTextures = new Texture2D[] { content.Load <Texture2D>("Textures/Flares/circle"), content.Load <Texture2D>("Textures/Flares/circle_sharp_1"), content.Load <Texture2D>("Textures/Flares/circle_soft_1") }; var sunflares = m_DirectionalLight.AddComponent <LensFlare>(); sunflares.Setup(glowTexture, flareTextures); // Skybox RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.BlueSkybox); // Fog: Setup fog mode with some value. It's still disabled, but those values are used by the post processing fog effect. RenderSettings.FogDensity = 0.0085f; RenderSettings.FogMode = FogMode.None; RenderSettings.FogColor = Color.FloralWhite; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); basicFont = Content.Load <SpriteFont>("FontDesc"); // GUI sampler = graphics.GraphicsDevice.SamplerStates[0].CopySampler(); sampler.Name = "custom sampler"; GuiMenu menu = new GuiMenu(spriteBatch, basicFont, this); menu.MultiSamplingChange.Checked = graphics.PreferMultiSampling; menu.MultiSampleAntiAliasingChange += (s, e) => { graphics.PreferMultiSampling = e; graphics.ApplyChanges(); }; menu.Select.OnSelectionChanged += (s, e) => { graphics.PreferredBackBufferHeight = e.Height; graphics.PreferredBackBufferWidth = e.Width; graphics.IsFullScreen = e.IsFullScreen; graphics.ApplyChanges(); }; Func <TextureFilter> getFilter = () => { if (menu.LinearMipFilterCheckBox.Checked) { if (menu.LinearMagFilterCheckBox.Checked) { return(TextureFilter.Linear); } return(TextureFilter.PointMipLinear); } else { if (menu.LinearMagFilterCheckBox.Checked) { return(TextureFilter.LinearMipPoint); } return(TextureFilter.Point); } }; sampler.Filter = getFilter(); menu.LinearMipFilterCheckBox.OnCheckChanged += (s, e) => { sampler.Dispose(); sampler = sampler.CopySampler(); sampler.Filter = getFilter(); }; menu.LinearMagFilterCheckBox.OnCheckChanged += (s, e) => { sampler.Dispose(); sampler = sampler.CopySampler(); sampler.Filter = getFilter(); }; menu.MinMapLevelOfDetailsBiasPicker.OnValueChange += (s, e) => { if (e >= 16) { return; } sampler.Dispose(); sampler = sampler.CopySampler(); sampler.MipMapLevelOfDetailBias = e; }; menu.DrawOrder = 100; Components.Add(menu); // effect = new SimpleEffect(graphics, Content.Load <Effect>("Shaders/Simple")); var light = new Light { Color = new Color(255, 255, 255, 255), Type = GK3D.Components.SceneObjects.LightType.Directional, Direction = new Vector3(-1, -1, 0), KDiffuse = 0.8f, Power = 1f, KSpecular = 0.5f }; effect.AddLight(light); var shipTexture = Content.Load <Texture2D>("Rocket_Ship_v1_L3.123c485c9e1d-6d02-47cf-b751-9606e55c8fa1/10475_Rocket_Ship_v1_Diffuse"); var spaceship1 = Content.LoadXnaModel("Rocket_Ship_v1_L3.123c485c9e1d-6d02-47cf-b751-9606e55c8fa1/10475_Rocket_Ship_v1_L3", effect); var spaceship2 = Content.LoadXnaModel("Rocket_Ship_v1_L3.123c485c9e1d-6d02-47cf-b751-9606e55c8fa1/10475_Rocket_Ship_v1_L3", effect); var satelite2 = Content.LoadXnaModel("Satellite", effect); var satelite3 = Content.LoadXnaModel("Satellite", effect); var mars = Content.LoadXnaModel("mars/Mars 2K", effect); mars.Texture = Content.Load <Texture2D>("mars/Textures/Diffuse_2K"); mars.Scale = new Vector3(5.55f); spaceship1.Texture = shipTexture; spaceship2.Texture = shipTexture; var sph1 = Content.LoadXnaModel("mars/Mars 2K", effect); sph1.Textures.Add(Content.Load <Texture2D>("inne/BaseTexture")); sph1.Textures.Add(Content.Load <Texture2D>("inne/mesh")); sph1.Textures.Add(Content.Load <Texture2D>("inne/Alfa-Romeo-logo-1982-1920x1080")); sph1.AddComponent(new SwapBaseTextureComponent(sph1, Content.Load <Texture2D>("inne/BaseTexture2"), Content.Load <Texture2D>("inne/BaseTexture3"), Content.Load <Texture2D>("inne/BaseTexture"))); var sph2 = Content.LoadXnaModel("mars/Mars 2K", effect); sph2.Texture = Content.Load <Texture2D>("inne/BaseTexture"); sph2.Textures.Add(Content.Load <Texture2D>("inne/mesh")); sph1.Position = new Vector3(5, 19, 0); sph2.Position = new Vector3(-5, 19, 0); var planet = new Sphere(graphics, effect, new Color(26, 86, 216, 255), 20, 40, 40); Cube cube1 = new Cube(graphics, effect, 3, Color.DeepPink); cube1.Position = new Vector3(0, 0, planet.Radius); cube1.Scale = new Vector3(0.5f); cube1.Rotation = new Vector3(30f); Cylinder cylinder1 = new Cylinder(graphics, effect, new Color(75, 198, 13, 255), 1.5f, 4, 6); cylinder1.Rotation = new Vector3(90, 0, 30); var pos = new Vector3(60, 15, -15); pos.Normalize(); pos *= planet.Radius; cylinder1.Position = pos; spaceship1.Effect = effect; spaceship1.Scale = new Vector3(0.02f); spaceship1.Position = new Vector3(6, -(planet.Radius + 10), -8); spaceship2.Effect = effect; spaceship2.Scale = new Vector3(0.02f); spaceship2.Position = new Vector3(-(planet.Radius + 6), planet.Radius, 10); satelite2.Effect = effect; satelite2.Scale = new Vector3(5, 5, 5); satelite2.Position = new Vector3(planet.Radius + 6, planet.Radius, 0); satelite3.Effect = effect; satelite3.Scale = new Vector3(5, 5, 5); satelite3.Position = new Vector3(10, -6, planet.Radius + 10); var connector = new Cylinder(graphics, effect, Color.Red, 1, 6, 14) { Position = new Vector3(0, 20, 0), Rotation = new Vector3(0, 0, 1.6f) }; var dir = (connector.Position - satelite2.Position); dir.Normalize(); Light lightSat2 = new Light() { Color = new Color(0, 100, 190, 255), Type = GK3D.Components.SceneObjects.LightType.Spot, Position = satelite2.Position, Direction = dir, KDiffuse = 0.8f, Power = 1f, KSpecular = 0.5f }; var dir2 = (cube1.Position - satelite3.Position); dir2.Normalize(); Light lightSat3 = new Light() { Color = new Color(175, 216, 26, 255), Type = GK3D.Components.SceneObjects.LightType.Spot, Position = satelite3.Position, Direction = dir2, KDiffuse = 0.8f, Power = 1f, KSpecular = 0.5f }; effect.AddLight(lightSat2); effect.AddLight(lightSat3); Camera camera = new Camera() { Position = new Vector3(0, 0, 60), }; monitorCamera = new Camera() { Position = new Vector3(6, 20, 16) }; //skybox var cube = Content.Load <TextureCube>("SunInSpace/skybox"); Model cubemodel = Content.Load <Model>("SunInSpace/cube2"); SkyBox skybox = new SkyBox(cubemodel, cube, effect) { Camera = camera }; lightSat2.AddComponent(new LightAnimatorCommponent(lightSat2, effect)); EkranModel tb = new EkranModel(effect); tb.Position = cube1.Position + new Vector3(0, 0, cube1.a); tb.Scale = new Vector3(3); tb.AddComponent(new TelebimTextureControllerComponent(tb)); EnvMappingModel envmodel = Content.LoadEnvMappingModel("Rocket_Ship_v1_L3.123c485c9e1d-6d02-47cf-b751-9606e55c8fa1/10475_Rocket_Ship_v1_L3", effect); envmodel.Texture = cube; envmodel.Scale = new Vector3(0.02f); envmodel.Position = new Vector3(30, 30, -10); SteamParticlesSystem ps = new SteamParticlesSystem(50, effect, Content.Load <Texture2D>("inne/para2"), camera); ps.Position = connector.Position; var mainState = new ProjectSceneState { Effect = effect, Camera = camera, Components = new System.Collections.Generic.List <IComponet> { light, skybox, envmodel, cube1, mars, cylinder1, lightSat2, //planet, //planet sph1, connector, satelite3, satelite2, sph2, spaceship1, spaceship2, tb, ps, }, Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, graphics.GraphicsDevice.Viewport.AspectRatio, 1, 500) }; //AddPlanetoids(mainState.Components, effect); manager.StateManager.SetState(States.Main, mainState); renderTarget = new RenderTarget2D( GraphicsDevice, GraphicsDevice.PresentationParameters.BackBufferWidth, GraphicsDevice.PresentationParameters.BackBufferHeight, true, GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24Stencil8); tb.Texture = renderTarget; graphics.DeviceReset += (s, e) => { mainState.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, graphics.GraphicsDevice.Viewport.AspectRatio, 1, 500); }; manager.StateManager.SetCurrentState(States.Main); Components.Add(manager); }