public override void Init() { Content.ContentPath = "Data"; Instance = this; Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree<Entity>(0, 0, 100, 100, 10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); Graphics.Renderer.IRenderer Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings() { FogDistance = 100, WaterLevel = -55 } }; SRC = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer, }; Renderer.Initialize(Scene.View); SRC.Initialize(); Scene.Add(exquemelin = new Entity { MainGraphic = new Graphics.Content.MetaModel { SkinnedMesh = new Graphics.Content.SkinnedMeshFromFile("Models/Units/MainCharacter1.x"), Texture = new Graphics.Content.TextureFromFile("Models/Units/MainCharacter1.png"), World = Matrix.Scaling(0.5f, 0.5f, 0.5f) * Graphics.Content.SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Translation(0, 0, -4f), }, VisibilityLocalBounding = new Common.Bounding.NonfittableBounding(Vector3.Zero, false, true) }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera, }; }
public override void Init() { Content.ContentPath = "Data"; Instance = this; Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(0, 0, 100, 100, 10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); Graphics.Renderer.IRenderer Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings() { FogDistance = 100, WaterLevel = -55 } }; SRC = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer, }; Renderer.Initialize(Scene.View); SRC.Initialize(); Scene.Add(exquemelin = new Entity { MainGraphic = new Graphics.Content.MetaModel { SkinnedMesh = new Graphics.Content.SkinnedMeshFromFile("Models/Units/MainCharacter1.x"), Texture = new Graphics.Content.TextureFromFile("Models/Units/MainCharacter1.png"), World = Matrix.Scaling(0.5f, 0.5f, 0.5f) * Graphics.Content.SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Translation(0, 0, -4f), }, VisibilityLocalBounding = new Common.Bounding.NonfittableBounding(Vector3.Zero, false, true) }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera, }; }
public override void Init() { Content.ContentPath = "Data"; Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings { ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.NoShadows } }; Renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer }; sceneRendererConnector.Initialize(); Scene.Add(exquemelin = new Entity { MainGraphic = new Graphics.Content.MetaModel { SkinnedMesh = new Graphics.Content.SkinnedMeshFromFile("Models/Units/Zombie1.x"), Texture = new Graphics.Content.TextureFromFile("Models/Units/Zombie1.png"), World = Graphics.Content.SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.5f, 0.5f, 0.5f), HasAlpha = false, }, VisibilityLocalBounding = new Common.Bounding.NonfittableBounding(Vector3.Zero, false, true) }); Graphics.Renderer.Renderer.EntityAnimation ea = Scene.View.Content.Peek <Graphics.Renderer.Renderer.EntityAnimation>(exquemelin.MetaEntityAnimation); ea.PlayAnimation(new AnimationPlayParameters("Idle1", true)); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera, }; }
public override void Init() { Content.ContentPath = "Data"; Instance = this; scene = new Scene(); scene.DesignMode = true; scene.View = this; scene.Camera = new LookatCartesianCamera() { ZFar = 100, AspectRatio = AspectRatio }; ((LookatCamera)scene.Camera).Lookat = new Vector3(SceneSize.Width / 2f, SceneSize.Height / 2f, 0); ((LookatCamera)scene.Camera).Position = ((LookatCamera)scene.Camera).Lookat + new Vector3(10, 10, 10); scene.EntityAdded += new Action <Entity>(scene_EntityAdded); scene.EntityRemoved += new Action <Entity>(scene_EntityRemoved); sceneQuadtree = new Common.Quadtree <Entity>(0, 0, SceneSize.Width, SceneSize.Height, 10); sbau = new SceneBVHAutoSyncer(scene, sceneQuadtree); renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Device9StateManager(Device9) }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = scene, Renderer = renderer }; sceneRendererConnector.Initialize(); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new Graphics.InteractiveSceneManager { Scene = scene }, }; timer = new System.Windows.Forms.Timer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = 1; timer.Enabled = true; RedGate.Profiler.UserEvents.ProfilerEvent.SignalEvent("Starting to add initial objects"); for (int i = 0; i < nInitialEntities; i++) { CreateRandomTestEntity(); } RedGate.Profiler.UserEvents.ProfilerEvent.SignalEvent("Starting CRUSHING!"); }
public override void Init() { Content.ContentPath = "Data"; Instance = this; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(0, 0, 100, 100, 10); sbau = new SceneBVHAutoSyncer(scene, sceneQuadtree); //heightmap = TextureUtil.ToHeightmap(Content.Peek<Texture>(new TextureFromFile("testheightmap.png")), 100); heightmap = new Graphics.Software.Texel.R32F[250, 250]; texture = new Graphics.Software.Texture <Graphics.Software.Texel.R32F>(heightmap); renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Device9StateManager(Device9) }; renderer.Settings.ShadowQuality = Settings.ShadowQualities.NoShadows; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); scene.Add(ground = new TestGround { Size = new SizeF(100, 100), Heightmap = heightmap, NPieces = new Size(20, 20), Height = 1 }); ground.ConstructPieces(); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera }; }
public override void PreRender(float dtime) { Graphics.Renderer.Renderer renderer = (Graphics.Renderer.Renderer)Game.Instance.Renderer; renderer.CalcShadowmapCamera(renderer.Settings.LightDirection, 0f); #if BETA_RELEASE ClientProfilers.Culling.Start(); #endif if (Client.Game.Game.Instance.sceneQuadtree != null) { SceneRendererConnector.CullScene(Client.Game.Game.Instance.sceneQuadtree); } #if BETA_RELEASE ClientProfilers.Culling.Stop(); #endif state.PreRender(dtime); }
public override void Update(float dtime) { base.Update(dtime); var o = npc.VisibilityWorldBounding; if (InputHandler is WalkaroundCameraInputHandler && !Paused) { motionSimulation.Step(dtime); if (npc.MotionObject.Position.Z < 0.5f) { Console.Write("asd"); } } if (InputHandler != null) { InputHandler.ProcessMessage(MessageType.Update, new UpdateEventArgs { Dtime = dtime }); } Graphics.Renderer.Renderer renderer = (Graphics.Renderer.Renderer) this.renderer; sceneRendererConnector.CullScene(sceneQuadtree); sceneRendererConnector.UpdateAnimations(dtime); renderer.PreRender(dtime); Device9.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.DarkSlateGray, 1.0f, 0); ///////////////////////////////////////////////////////////////////// Device9.BeginScene(); renderer.Render(dtime); editorRenderer.Render(this); if (activeGrid != null) { DrawGrid(activeGrid); } Device9.EndScene(); ///////////////////////////////////////////////////////////////////// Window.Text = "FPS: " + FPS + ", NPos: " + npc.Translation /*+ ", PPos: " + pursuer.Translation*/; }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Lookat = new Vector3(size.Width / 2f, size.Height / 2f, 0), Position = new Vector3(10, 10, 10), FOV = 0.5f, ZFar = 100, AspectRatio = AspectRatio }; InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9), Settings = new Graphics.Renderer.Settings { WaterEnable = false } }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); motionSimulation = new Common.Motion.Simulation(); scene.EntityAdded += new Action <Entity>(scene_EntityAdded); CreateGround(); scene.EntityAdded -= new Action <Entity>(scene_EntityAdded); }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Lookat = new Vector3(0, 0, 0), Position = new Vector3(0, 0, 10), FOV = 0.5f, ZFar = 100, AspectRatio = AspectRatio }; InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new InteractiveSceneManager { Scene = scene }, }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9) }; renderer.Initialize(this); motionSimulation = new Common.Motion.Simulation(); scene.EntityRemoved += new Action <Entity>(scene_EntityRemoved); scene.EntityAdded += new Action <Entity>(scene_EntityAdded); scene.Add(CreateBlock(-Vector3.UnitZ, new Vector3(size.Width, size.Height, 1), "grass1.png")); InitiateUnits(); }
public override void Update(float dtime) { base.Update(dtime); Graphics.Renderer.Renderer renderer = (Graphics.Renderer.Renderer)Renderer; if (sceneQuadtree != null) { sceneRendererConnector.CullScene(sceneQuadtree); } sceneRendererConnector.UpdateAnimations(dtime); Renderer.PreRender(dtime); Device9.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.FromArgb(1, (int)(0.6 * 255), (int)(0.8 * 255), 255), 1.0f, 0); Device9.BeginScene(); Renderer.Render(dtime); Device9.EndScene(); }
public override void Init() { if (DesignMode) { return; } Content.ContentPath = "Data(.kel)"; Client.Game.Map.GameEntity.ContentPool = Content; Scene.View = this; Scene.Camera = new LookatSphericalCamera() { FOV = 0.5f, ZFar = 50, SphericalCoordinates = Program.ClientDefaultSettings.CameraSphericalCoordinates, AspectRatio = this.AspectRatio }; Controller = new InteractiveSceneManager { Scene = Scene }; StateManager = new DummyDevice9StateManager(Device9); InputHandler = inputHandlersRoot; cameraInputHandler = new CameraInputHandler { Camera = (LookatSphericalCamera)Scene.Camera, View = this, }; Scene.Camera.ZFar = 50; inputHandlersRoot.InputHandlers.Add(cameraInputHandler); cameraInputHandler.InputHandler = Controller; if (Program.Settings.UseDummyRenderer) { throw new NotSupportedException("Dummy renderer is no longer supported."); //Renderer = new Graphics.DummyRenderer.Renderer { Scene = Scene, StateManager = StateManager }; } else { Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings { ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.Medium, LightingQuality = Graphics.Renderer.Settings.LightingQualities.High } }; SceneRendererConnector = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer }; } Renderer.Settings.TerrainQuality = Graphics.Renderer.Settings.TerrainQualities.High; Renderer.Settings.LightingQuality = Graphics.Renderer.Settings.LightingQualities.High; Renderer.Settings.ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.Low; SceneRendererConnector.Initialize(); Renderer.Initialize(Scene.View); if (Program.Settings.DeveloperSettings) { p1 = new System.Windows.Forms.PropertyGrid { SelectedObject = Renderer.Settings, Dock = System.Windows.Forms.DockStyle.Fill }; form1.Controls.Add(p1); form1.Show(); } bvRenderer = new BoundingVolumesRenderer { StateManager = StateManager, View = this }; tooltip = new System.Windows.Forms.ToolTip(); StartDefaultMode(); }
public override void Init() { Content.ContentPath = "Data"; Instance = this; Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 10000, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(0, 0, 100, 100, 10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); int nVertices = 10; int nFaces = nVertices * 2 - 4; int nIndices = nFaces * 3; List <int> indices = new List <int>(); List <Graphics.Software.Vertex.Position3Normal3Texcoord3> vertices = new List <Graphics.Software.Vertex.Position3Normal3Texcoord3>(); for (int i = 0; i < (nVertices / 2) - 1; i++) { indices.Add(i * 2); indices.Add(i * 2 + 2); indices.Add(i * 2 + 1); indices.Add(i * 2 + 1); indices.Add(i * 2 + 2); indices.Add(i * 2 + 3); indices.Add(i * 2 + 0); indices.Add(i * 2 + 1); indices.Add(i * 2 + 3); indices.Add(i * 2 + 0); indices.Add(i * 2 + 3); indices.Add(i * 2 + 2); } for (int i = 0; i < nVertices / 2; i++) { float texturecoord = 1 - ((float)i / (float)nVertices); if (texturecoord > 0.99f) { texturecoord = 0.99f; } vertices.Add(new Graphics.Software.Vertex.Position3Normal3Texcoord3(Vector3.UnitX * i, Vector3.Zero, new Vector3(texturecoord, 1, 0))); vertices.Add(new Graphics.Software.Vertex.Position3Normal3Texcoord3(Vector3.UnitX * i + Vector3.UnitY * 4.0f, Vector3.Zero, new Vector3(texturecoord, 0, 0))); } arrow = new MetaModel { HasAlpha = true, Opacity = 0.4f, XMesh = new MeshConcretize { Mesh = new Graphics.Software.Mesh { IndexBuffer = new Graphics.Software.IndexBuffer(indices.ToArray()), VertexBuffer = new VertexBuffer <Graphics.Software.Vertex.Position3Normal3Texcoord3>(vertices.ToArray()), NVertices = nVertices, NFaces = nFaces, VertexStreamLayout = global::Graphics.Software.Vertex.Position3Normal3Texcoord3.Instance, }, Layout = global::Graphics.Software.Vertex.PositionNormalTexcoord.Instance }, Texture = new TextureFromFile("green.png"), }; InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera }; Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings { FogDistance = 50000, WaterLevel = 0 } }; Renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = Renderer, Scene = Scene }; sceneRendererConnector.Initialize(); Scene.Add(new Entity { MainGraphic = arrow, VisibilityLocalBounding = Vector3.Zero, }); }
public override void Init() { if (DesignMode) { return; } Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Lookat = Vector3.Zero, Position = new Vector3(-15, 15, 15), FOV = 0.5f, ZFar = 400, AspectRatio = AspectRatio }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, Settings = new Graphics.Renderer.Settings(), StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9) }; renderer.Initialize(this); sceneQuadtree = new Common.Quadtree <Entity>(10); sbau = new SceneBVHAutoSyncer(scene, sceneQuadtree); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); navMesh = new Common.Pathing.NavMesh(); worldViewProbe = new Graphics.WorldViewProbe(this, scene.Camera); editor = new Graphics.Editors.BoundingRegionEditor(this, worldViewProbe); editor.Region = navMesh.BoundingRegion; editorRenderer = new Graphics.Editors.BoundingRegionEditor.Renderer9(editor) { StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9), Camera = scene.Camera }; InputHandler = editor; inputHandlers.Add(editor); inputHandlers.Add(new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new InteractiveSceneManager { Scene = scene }, //FilteredMessages = new MessageType[] { } }); var sim = new Common.Motion.Simulation(navMesh); ((Common.Motion.Simulation)sim).SetHeightMap(new float[][] { new float[] { 0.5f } }, new Vector2(400, 400), new Vector2(-200, -200)); motionSimulation = sim; //motionSimulation = new Common.Motion.ThreadSimulationProxy(sim); var ground = CreateBlock(new Vector3(-200, -200, -0.5f), new Vector3(400, 400, 1), "Models/GroundTextures/Grass1.png"); scene.Add(ground); motionSimulation.Insert(ground.MotionObject); npc = CreateNPC(new Vector2(-2, -2)); scene.Add(npc); motionSimulation.Insert(npc.MotionObject); ((Common.IMotion.IUnit)npc.MotionObject).VelocityImpulse(new Vector3(0, 0, 0.1f)); ((Common.IMotion.INPC)npc.MotionObject).Weight = 10000000f; AddCreatedGridEvent(npc); //((Common.Motion.NPC)npc.MotionObject).DebugSolidAsARock = true; int amount = 25; Vector2 offset = new Vector2(-4, -4); for (int i = 0; i < amount; i++) { int x = i / (int)System.Math.Sqrt(amount); int y = i % (int)System.Math.Sqrt(amount); var n = CreateNPC(new Vector2(x, y)); pursuers.Add(n); scene.Add(n); motionSimulation.Insert(n.MotionObject); ((Common.IMotion.IUnit)n.MotionObject).VelocityImpulse(new Vector3(0, 0, 0.1f)); AddCreatedGridEvent(n); } }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Position = new Vector3(-5, 5, 5), AspectRatio = AspectRatio }; foreach (var v in scene.AllEntities) { v.VisibilityLocalBounding = Vector3.Zero; } Device9StateManager sm = new Device9StateManager(Device9); renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = sm }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = scene, Renderer = renderer }; sceneRendererConnector.Initialize(); bvr = new BoundingVolumesRenderer { View = this, StateManager = sm }; BVEntity t; scene.Add(t = new BVEntity { MainGraphic = new MetaModel { XMesh = new MeshFromFile("Models/Props/Barrel1.x"), Texture = new TextureFromFile("Models/Props/Barrel1.png"), World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya, }, WorldMatrix = Matrix.Translation(1, 0, 0) }); t.BoundingVolume = Graphics.Boundings.Transform(new Graphics.MetaBoundingBox { Mesh = ((MetaModel)t.MainGraphic).XMesh }, ((MetaModel)t.MainGraphic).World); scene.Add(t = new BVEntity { MainGraphic = new MetaModel { SkinnedMesh = new SkinnedMeshFromFile("Models/Props/Bridge1.x"), Texture = new TextureFromFile("Models/Props/Bridge1.png"), World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya }, WorldMatrix = Matrix.Translation(3, 0, 0) }); scene.Add(t = new BVEntity { MainGraphic = new MetaModel { SkinnedMesh = new SkinnedMeshFromFile("Models/Props/Bridge1.x"), Texture = new TextureFromFile("Models/Props/Bridge1.png"), World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya }, WorldMatrix = Matrix.Translation(-3, -3, 0) }); t.BoundingVolume = Vector3.Zero; }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera { Position = new Vector3(-5, 5, 5), }; foreach (var v in scene.AllEntities) { v.VisibilityLocalBounding = Content.Acquire <Graphics.Content.StructBoxer <BoundingBox> >(v.MainGraphic).Value; } var stateManager = new Device9StateManager(Device9); renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = stateManager }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = scene, Renderer = renderer }; sceneRendererConnector.Initialize(); editor = new Graphics.Editors.SceneEditor { Scene = scene }; editorRenderer = new Graphics.Editors.SceneEditor.Renderer9(editor) { BoundingVolumesRenderer = new BoundingVolumesRenderer { StateManager = stateManager, View = this } }; InputHandler = editor; Entity e; scene.Add(e = new Entity { MainGraphic = new MetaModel { XMesh = new MeshFromFile("Models/Props/Barrel1.x"), Texture = new TextureFromFile("Models/Props/Barrel1.png"), World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Translation(1, 0, 0) }, }); e.VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)e.MainGraphic); e.PickingLocalBounding = CreateBoundingMeshFromModel(e, (MetaModel)e.MainGraphic); scene.Add(e = new Entity { MainGraphic = new MetaModel { SkinnedMesh = new SkinnedMeshFromFile("Models/Props/Bridge1.x"), Texture = new TextureFromFile("Models/Props/Bridge1.png"), World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Translation(3, 0, 0) }, }); e.VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)e.MainGraphic); e.PickingLocalBounding = CreateBoundingMeshFromModel(e, (MetaModel)e.MainGraphic); }
public override void Init() { Content.ContentPath = "Data"; Instance = this; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; //heightmap = TextureUtil.ToHeightmap(Content.Peek<Texture>(new TextureFromFile("testheightmap.png")), 100); texture = new Graphics.Software.Texture <Graphics.Software.Texel.A8R8G8B8>(new Graphics.Software.Texel.A8R8G8B8[250, 250]); scene.Add(ground = new TestGround { Size = new SizeF(100, 100), //Texture = new SingleColorTexture(Color.Orange), NPieces = new Size(20, 20), }); ground.ConstructPieces(); dxTexture = texture.ToTexture9(Device9); ground.Texture = new UnmanagedResource <SlimDX.Direct3D9.Texture, SlimDX.Direct3D10.Texture2D> { Resource9 = dxTexture }; groundTextureEditor = new Graphics.Editors.GroundTextureEditor { Camera = scene.Camera, Viewport = Viewport, SoftwareTexture = new[] { texture }, Texture9 = new[] { dxTexture }, Position = ground.Translation, Size = ground.Size, GroundIntersect = new WorldViewProbe(this, scene.Camera) { WorldProbe = new GroundProbe() }, Pencil = new Graphics.Editors.GroundTexturePencil { Color = new Vector4(0, 0, 1, 0), Radius = 5, Type = Graphics.Editors.GroundTexturePencilType.AddSaturate } }; groundTextureEditor.TextureValuesChanged += new Graphics.Editors.TextureValuesChangedEventHandler((o, e) => { }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = groundTextureEditor, }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Device9StateManager(Device9) }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; //heightmap = TextureUtil.ToHeightmap(Content.Peek<Texture>(new TextureFromFile("testheightmap.png")), 100); texture = new Graphics.Software.Texture <Graphics.Software.Texel.A8R8G8B8>( new Graphics.Software.Texel.A8R8G8B8[250, 250]); var r = new Random(); for (int y = 0; y < texture.Size.Height; y++) { for (int x = 0; x < texture.Size.Width; x++) { texture[y, x] = new Graphics.Software.Texel.A8R8G8B8 { //R = 1f,//(float)r.NextDouble(), //G = (float)r.NextDouble(), //B = (float)r.NextDouble(), A = 1f, } } } ; scene.Add(ground = new TestGround { Size = new SizeF(100, 100), //Texture = new SingleColorTexture(Color.Orange), NPieces = new Size(20, 20), }); ground.ConstructPieces(); dxTexture = texture.ToTexture9(Device9); UpdateTexture(); groundTextureEditor = new Graphics.Editors.GroundTextureEditor { Camera = scene.Camera, Viewport = Viewport, SoftwareTexture = new ITexture[] { texture }, Texture9 = new[] { dxTexture }, Position = ground.Translation, Size = ground.Size, GroundIntersect = new WorldViewProbe(this, scene.Camera) { WorldProbe = new GroundProbe() }, Pencil = new Graphics.Editors.GroundTexturePencil { Color = new Vector4(1, 0, 0, 0), Radius = 30, Type = Graphics.Editors.GroundTexturePencilType.Add } }; groundTextureEditor.TextureValuesChanged += new Graphics.Editors.TextureValuesChangedEventHandler((o, e) => { UpdateTexture(); foreach (var v in ground.Children) { v.Invalidate(); } }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = groundTextureEditor }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Device9StateManager(Device9) }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = scene, Renderer = renderer }; sceneRendererConnector.Initialize(); }
public override void Init() { Content.ContentPath = "Data"; Instance = this; Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 10000, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(-1, -1, 100, 100, 10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); arrow = new MetaModel { HasAlpha = true, IsAxialBillboard = true, AxialDirection = new Vector3(0.5f, 0.5f, 0), XMesh = new Graphics.Content.MeshFromFile("Arrow.x"), Texture = new TextureFromFile("green.png"), Visible = Priority.High, World = Matrix.Identity, }; direction = new Vector3(1, 0, 0); axialBillboard = new MetaModel { HasAlpha = true, IsAxialBillboard = true, AxialDirection = direction, XMesh = new MeshConcretize { MeshDescription = new Graphics.Software.Meshes.IndexedPlane { Facings = Facings.Frontside | Facings.Backside, Position = new Vector3(-0.5f, -0.5f, 0), Size = new Vector2(1, 1), UVMin = Vector2.Zero, UVMax = new Vector2(1, 1) }, Layout = global::Graphics.Software.Vertex.PositionNormalTexcoord.Instance }, Texture = new TextureFromFile("Models/Effects/MuzzleFlash1.png"), World = Matrix.RotationX((float)Math.PI / 2.0f) * Matrix.RotationY((float)Math.PI / 2.0f) * Matrix.Translation(direction * 0.5f) }; rand = new Random(); //axialBillboard.World.Invert(); nBillboards = 1; billboards = new Entity[nBillboards]; directions = new Vector3[nBillboards]; for (int i = 0; i < nBillboards; i++) { directions[i] = new Vector3((float)rand.NextDouble() * 2 - 1, (float)rand.NextDouble() * 2 - 1, (float)rand.NextDouble() * 2 - 1); } InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera }; Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings { FogDistance = 50000, WaterLevel = 0 } }; Renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = Renderer, Scene = Scene }; sceneRendererConnector.Initialize(); for (int i = 0; i < nBillboards; i++) { Scene.Add(billboards[i] = new Entity { MainGraphic = axialBillboard, VisibilityLocalBounding = Vector3.Zero, WorldMatrix = Matrix.Identity }); } }
public override void Init() { Content.ContentPath = "Data"; StateManager = new Device9StateManager(Device9); Scene.View = this; Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager }; Renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = Renderer, Scene = Scene }; sceneRendererConnector.Initialize(); Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, AspectRatio = AspectRatio }; Scene.Add(donutEntity = new Entity { MainGraphic = new Graphics.Content.MetaModel { SkinnedMesh = new SkinnedMeshFromFile("Models/Props/Palmtree1.x"), Texture = new TextureFromFile("Models/Props/Palmtree1.png"), World = Graphics.Content.SkinnedMesh.InitSkinnedMeshFromMaya } }); Scene.Add(goblinEntity = new Entity { MainGraphic = new Graphics.Content.MetaModel { SkinnedMesh = new Graphics.Content.SkinnedMeshFromFile("Models/Units/Brute1.x"), Texture = new Graphics.Content.TextureFromFile("Models/Units/Brute1.png"), World = Graphics.Content.SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Translation(4, 4, 0), } }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera, }; //donutEntity.PlayAnimation("idle1", 1, true, 0); Renderer.Initialize(this); System.Windows.Forms.PropertyGrid p1; System.Windows.Forms.PropertyGrid p2; System.Windows.Forms.Form form1 = new System.Windows.Forms.Form(); System.Windows.Forms.Form form2 = new System.Windows.Forms.Form(); form1.Controls.Add(p1 = new System.Windows.Forms.PropertyGrid { SelectedObject = Renderer.Settings, Dock = System.Windows.Forms.DockStyle.Fill }); form2.Controls.Add(p2 = new System.Windows.Forms.PropertyGrid { SelectedObject = GraphicsDevice.Settings, Dock = System.Windows.Forms.DockStyle.Fill }); form1.Show(); form2.Show(); }
public override void Init() { Content.ContentPath = "Data"; Instance = this; nParticles = 0; scene = new Scene { View = this, Camera = new LookatCartesianCamera { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 600, AspectRatio = AspectRatio } }; sceneQuadtree = new Common.Quadtree <Entity>(10); new SceneBVHAutoSyncer(scene, sceneQuadtree); stateManager = new DummyDevice9StateManager(Device9); renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = stateManager, Settings = new Graphics.Renderer.Settings { CullMode = Cull.Counterclockwise, FogDistance = 1500, } }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new InteractiveSceneManager { Scene = scene }, }; ground = new MetaModel { AlphaRef = 0, HasAlpha = false, Texture = new TextureFromFile("Models/GroundTextures/Grass1.png"), XMesh = new MeshConcretize { MeshDescription = new Graphics.Software.Meshes.IndexedPlane { Position = new Vector3(-5f, -5f, -1), Size = new Vector2(10, 10), UVMin = Vector2.Zero, UVMax = new Vector2(1, 1), Facings = Facings.Frontside }, Layout = Graphics.Software.Vertex.PositionNormalTexcoord.Instance }, }; scene.Add(new Entity { MainGraphic = ground, VisibilityLocalBounding = new Common.Bounding.NonfittableBounding(Vector3.Zero, false, true), Translation = Vector3.UnitZ }); }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Lookat = new Vector3(size.Width / 2f, size.Height / 2f, 0), Position = new Vector3(10, 10, 10), FOV = 0.5f, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree<Entity>(10); sbau = new SceneBVHAutoSyncer(scene, sceneQuadtree); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new InteractiveSceneManager { Scene = scene }, }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9), Settings = new Graphics.Renderer.Settings { WaterEnable = false, FogDistance = float.MaxValue, ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.Lowest } }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); motionSimulation = new Common.Motion.Simulation(); //motionSimulation = new Common.Motion.ThreadSimulationProxy(new Common.Motion.Simulation()); //System.Windows.Forms.Application.ApplicationExit += ((sender, o) => { ((Common.Motion.ThreadSimulationProxy)motionSimulation).Shutdown(); }); scene.EntityAdded += new Action<Entity>(scene_EntityAdded); scene.EntityRemoved += new Action<Entity>(scene_EntityRemoved); heightMap = CreateGround(); //((Common.Motion.Simulation)((Common.Motion.ThreadSimulationProxy)motionSimulation).InnerSimulation).SetHeightMap(heightMap, new Vector2(size.Width, size.Height), Vector2.Zero); //scene.Add(CreateBlock(-Vector3.UnitZ, new Vector3(size.Width, size.Height, 1), "grass1.png")); Random r = new Random(); for (int i = 0; i < 0; i++) InsertUnit(r); //var unit = CreateUnit(new Vector3(size.Width/2f, size.Height/2f, -5f)); //scene.Add(unit); //units.Add(unit); foreach (var u in units) ((Common.IMotion.IUnit)u.MotionObject).VelocityImpulse(new Vector3(0, 0, 0.00001f)); }
void Setup() { Scene = new Scene(); GameState = GameState.Playing; InterfaceIngameScene = new Scene(); Scene.View = InterfaceIngameScene.View = Program.Instance; Scene.Camera = InterfaceIngameScene.Camera = new LookatSphericalCamera() { Lookat = new Vector3(0, 0, 0), Position = new Vector3(10, 10, 10), FOV = Program.Settings.CameraFOV, ZFar = 20, ZNear = Program.Settings.CameraZNear, AspectRatio = Program.Instance.AspectRatio }; CameraController = new CameraController { Camera = (LookatSphericalCamera)Scene.Camera }; Scene.EntityAdded += scene_EntityAdded; Program.Instance.Interface.Layer1.AddChild( SceneControl = new GameSceneControl { InnerScene = Scene, Size = Program.Instance.Interface.Size }); InterfaceIngameRenderer = new Graphics.Interface.InterfaceRenderer9(Program.Instance.Device9) { Scene = InterfaceIngameScene, StateManager = Program.Instance.StateManager, }; InterfaceIngameRenderer.Initialize(Scene.View); if (Program.Settings.OutputPNGSequence) Directory.CreateDirectory(OutputPNGSequencePath); if (Program.Settings.UseDummyRenderer) { throw new NotSupportedException("Dummy renderer is no longer supported."); } else { Renderer = new Graphics.Renderer.Renderer(Program.Instance.Device9) { Scene = Scene, StateManager = Program.Instance.StateManager, Settings = Program.Settings.RendererSettings, }; SceneRendererConnector = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer }; } Graphics.Renderer.Results result = Renderer.Initialize(Scene.View); SceneRendererConnector.Initialize(); if (result == Graphics.Renderer.Results.OutOfVideoMemory) { System.Windows.Forms.MessageBox.Show(Locale.Resource.ErrorOutOfVideoMemory); Application.Log("User ran out of video memory according to renderer. This is probably due to having too high shadow quality."); System.Windows.Forms.Application.Exit(); } RendererSettingsController = new RendererSettingsController(); var s = Program.Settings.GraphicsDeviceSettings.Resolution; Program.Instance.Interface.Layer1.AddChild(Interface = new Interface.Interface { Size = new Vector2(s.Width, s.Height), Visible = false }); }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Lookat = new Vector3(size.Width / 2f, size.Height / 2f, 0), Position = new Vector3(10, 10, 10), FOV = 0.5f, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(10); sbau = new SceneBVHAutoSyncer(scene, sceneQuadtree); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new InteractiveSceneManager { Scene = scene }, }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9), Settings = new Graphics.Renderer.Settings { WaterEnable = false, FogDistance = float.MaxValue, ShadowQuality = Graphics.Renderer.Settings.ShadowQualities.Lowest } }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); motionSimulation = new Common.Motion.Simulation(); //motionSimulation = new Common.Motion.ThreadSimulationProxy(new Common.Motion.Simulation()); //System.Windows.Forms.Application.ApplicationExit += ((sender, o) => { ((Common.Motion.ThreadSimulationProxy)motionSimulation).Shutdown(); }); scene.EntityAdded += new Action <Entity>(scene_EntityAdded); scene.EntityRemoved += new Action <Entity>(scene_EntityRemoved); heightMap = CreateGround(); //((Common.Motion.Simulation)((Common.Motion.ThreadSimulationProxy)motionSimulation).InnerSimulation).SetHeightMap(heightMap, new Vector2(size.Width, size.Height), Vector2.Zero); //scene.Add(CreateBlock(-Vector3.UnitZ, new Vector3(size.Width, size.Height, 1), "grass1.png")); Random r = new Random(); for (int i = 0; i < 0; i++) { InsertUnit(r); } //var unit = CreateUnit(new Vector3(size.Width/2f, size.Height/2f, -5f)); //scene.Add(unit); //units.Add(unit); foreach (var u in units) { ((Common.IMotion.IUnit)u.MotionObject).VelocityImpulse(new Vector3(0, 0, 0.00001f)); } }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera }; //heightmap = TextureUtil.ToHeightmap(Content.Peek<Texture>(new TextureFromFile("testheightmap.png")), 100); Random r = new Random(); heightmap = new Graphics.Software.Texel.R32F[64, 64]; for (int y = 0; y < 64; y++) { for (int x = 0; x < 64; x++) { heightmap[y, x] = new Graphics.Software.Texel.R32F((float)r.NextDouble()); } } renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Device9StateManager(Device9) }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = scene, Renderer = renderer }; sceneRendererConnector.Initialize(); SizeF patches = new SizeF(20, 20); SizeF patchSize = new SizeF(1f / 20f, 1f / 20f); SizeF groundSize = new SizeF(100, 100); for (int y = 0; y < patches.Height; y++) { for (int x = 0; x < patches.Width; x++) { scene.Add(e = new Entity { MainGraphic = new MetaModel { XMesh = new MeshConcretize { MeshDescription = new Graphics.Software.Meshes.MeshFromHeightmap { Grid = new Graphics.Software.Meshes.Grid { Position = Vector3.Zero, MeshType = MeshType.Indexed, Size = new Vector2(patchSize.Width * groundSize.Width, patchSize.Height * groundSize.Height), NWidth = (int)((heightmap.GetLength(1) - 1) * patchSize.Width), NHeight = (int)((heightmap.GetLength(0) - 1) * patchSize.Height), UVMin = new Vector2(0, 0), UVMax = new Vector2(1, 1) }, Height = 5, Heightmap = heightmap, Rectangle = new RectangleF(x * patchSize.Width, y * patchSize.Height, patchSize.Width, patchSize.Height), PointSample = true }, Layout = global::Graphics.Software.Vertex.PositionNormalTexcoord.Instance }, Texture = new TextureFromFile("Models/GroundTextures/Grass1.png") }, Translation = new Vector3(x * groundSize.Width / patches.Width, y * groundSize.Height / patches.Height, 0), VisibilityLocalBounding = Vector3.Zero }); } } }
//private float timestep = 0.1f; public override void Update(float dtime) { //dtime = timestep; base.Update(dtime); Random r = new Random(); if (InputHandler != null) { InputHandler.ProcessMessage(MessageType.Update, new UpdateEventArgs { Dtime = dtime }); } if (droppingUnits) { if (DateTime.Now.Subtract(lastDrop).TotalMilliseconds >= 6000) { int nUnits = units.Count; foreach (var u in units) { u.Remove(); } units.Clear(); for (int i = 0; i < nUnits; i++) { InsertUnit(r); } lastDrop = DateTime.Now; } } else { if (DateTime.Now.Subtract(lastJump).TotalMilliseconds >= 3000) { foreach (var u in units) { var umo = (Common.IMotion.IUnit)u.MotionObject; if (r.NextDouble() > 0 && umo.IsOnGround) { umo.VelocityImpulse(new Vector3(8f * (float)r.NextDouble() - 4f, 8f * (float)r.NextDouble() - 4f, 3f * (float)r.NextDouble() + 2f)); } //umo.VelocityImpulse(new Vector3(0, 0, 3f * (float)r.NextDouble() + 2f)); } lastJump = DateTime.Now; } if (DateTime.Now.Subtract(lastDirectionChange).TotalMilliseconds >= 3000) { foreach (var u in units) { var umo = (Common.IMotion.IUnit)u.MotionObject; umo.RunVelocity = new Vector2(8f * (float)r.NextDouble() - 4f, 8f * (float)r.NextDouble() - 4f); } lastDirectionChange = DateTime.Now; if (lastJump == DateTime.MinValue) { lastJump = DateTime.Now.AddMilliseconds(750); } } } if (motionSimulation.Running) { motionSimulation.Step(dtime); } if (recordingHeight) { float height = ((Common.Motion.Simulation)motionSimulation).DebugReturnQuadtree.DebugCheckGroundHeight(controlledUnit.MotionObject.Position); recordedHeight.Add(new Vector3(controlledUnit.MotionObject.Position.X, controlledUnit.MotionObject.Position.Y, height)); } if (renderingScene) { Graphics.Renderer.Renderer renderer = (Graphics.Renderer.Renderer) this.renderer; if (sceneQuadtree != null) { sceneRendererConnector.CullScene(sceneQuadtree); } sceneRendererConnector.UpdateAnimations(dtime); renderer.PreRender(dtime); Device9.Clear(SlimDX.Direct3D9.ClearFlags.Target | SlimDX.Direct3D9.ClearFlags.ZBuffer, Color.DarkSlateGray, 1.0f, 0); Device9.BeginScene(); renderer.Render(dtime); if (drawingUnitBBs) { foreach (var u in units) { Vector3 min, max; UnitBoxCoords(u.MotionObject.Position, out min, out max); Draw3DAABB(scene.Camera, Matrix.Identity, min, max, Color.Red); UnitBoxCoords(u.MotionObject.InterpolatedPosition, out min, out max); Draw3DAABB(scene.Camera, Matrix.Identity, min, max, Color.Blue); } } if (controlledUnit != null) { Vector3 min, max; UnitBoxCoords(controlledUnit.MotionObject.Position, out min, out max); Draw3DAABB(scene.Camera, Matrix.Identity, min, max, Color.Red); UnitBoxCoords(controlledUnit.MotionObject.InterpolatedPosition, out min, out max); Draw3DAABB(scene.Camera, Matrix.Identity, min, max, Color.Blue); } if (drawingGroundLines) { int xPieces = xSize; int yPieces = xSize; float stepx = size.Width / (float)(heightMap[0].Length - 1); float stepy = size.Height / (float)(heightMap.Length - 1); int nxPieces = heightMap[0].Length / xPieces; int nyPieces = heightMap.Length / yPieces; for (int yp = 0; yp < yPieces; yp++) { for (int xp = 0; xp < xPieces; xp++) { for (int y = 0; y < nyPieces; y++) { for (int x = 0; x < nxPieces; x++) { //Vector3 pos0 = new Vector3((xp * nxPieces + x) * stepx, (yp * nyPieces + y) * stepy, heightMap[yp * (nyPieces - 1) + y][xp * (nxPieces - 1) + x]); Vector3 pos0 = GetPosOrSmth(x, xp, nxPieces, stepx, y, yp, nyPieces, stepy); Vector3 pos1 = GetPosOrSmth(x + 1, xp, nxPieces, stepx, y, yp, nyPieces, stepy); Vector3 pos2 = GetPosOrSmth(x, xp, nxPieces, stepx, y + 1, yp, nyPieces, stepy); Draw3DLines(scene.Camera, Matrix.Identity, new Vector3[] { pos0, pos1 }, (xp == xPieces - 1 ? Color.Red : Color.Green)); Draw3DLines(scene.Camera, Matrix.Identity, new Vector3[] { pos0, pos2 }, Color.Green); } } } } } Device9.EndScene(); } //var unit = ValidateUnitPositions(); MotionEntity unit = null; if (motionSimulation.Running && unit != null) { motionSimulation.Running = false; ((MetaModel)unit.MainGraphic).Texture = new TextureConcretizer { Texture = global::Graphics.Software.ITexture.SingleColorTexture(Color.Red) }; var umo = ((Common.IMotion.IUnit)unit.MotionObject); tag = "Position: " + unit.MotionObject.Position + ". RunVelocity: " + umo.RunVelocity + ". OnGround: " + umo.IsOnGround; FocusCamera(umo.Position); } var forRemoval = new List <MotionEntity>(); foreach (var u in units) { if (u.MotionObject.Position.Z < -18 + heightOffset) { forRemoval.Add(u); } } foreach (var u in forRemoval) { units.Remove(u); u.Remove(); InsertUnit(r); // Keep balance } if (motionSimulation.Running) { Application.MainWindow.Text = "FPS: " + FPS + ". #Static: " + ". #ListUnits: " + units.Count + (controlledUnit != null ? ". UnitPos: " + Common.Math.ToVector2(controlledUnit.Translation).ToString() : "") + ". CamPos: " + scene.Camera.Position; } else { Application.MainWindow.Text = tag + ". CamPos: " + scene.Camera.Position; } }
public override void Render(float dtime) { Graphics.Renderer.Renderer renderer = (Graphics.Renderer.Renderer)Game.Instance.Renderer; Game.Instance.Renderer.Settings.WaterLevel = Game.Instance.Map.Settings.WaterHeight; Game.Instance.Renderer.Settings.AmbientColor = Game.Instance.Map.Settings.AmbientColor; Game.Instance.Renderer.Settings.DiffuseColor = Game.Instance.Map.Settings.DiffuseColor; Game.Instance.Renderer.Settings.FogColor = Game.Instance.Map.Settings.FogColor; Game.Instance.Renderer.Settings.SpecularColor = Game.Instance.Map.Settings.SpecularColor; Game.Instance.Renderer.Settings.LightDirection = Game.Instance.Map.Settings.LightDirection; Game.Instance.Renderer.Settings.FogExponent = Game.Instance.Map.Settings.FogExponent; Game.Instance.Renderer.Settings.FogDistance = Game.Instance.Map.Settings.FogDistance; #if BETA_RELEASE ClientProfilers.Renderer.Start(); #endif if (Program.Settings.RenderWorld) { Game.Instance.Renderer.Render(dtime); } #if BETA_RELEASE ClientProfilers.Renderer.Stop(); #endif Program.Instance.BoundingVolumesRenderer.Begin(Game.Instance.Scene.Camera); Game.Instance.HelperVisualizations.Render(Program.Instance.BoundingVolumesRenderer, Program.Instance, Game.Instance.Scene, Game.Instance.Map.NavMesh, Game.Instance.Renderer.Frame); if (Program.Settings.MotionSettings.VisualizeMotionBoundings) { foreach (var v in Game.Instance.Mechanics.MotionSimulation.All) { if (v.LocalBounding != null && (!Program.Settings.HideGroundMotionBoundings || !(v.Tag is Map.GroundPiece))) { Program.Instance.BoundingVolumesRenderer.Draw(Matrix.Identity, v.WorldBounding, Color.Blue); } } } if (Program.Settings.VisualizeRendererQuadtree) { Common.Quadtree <Entity> qt = Game.Instance.sceneQuadtree as Common.Quadtree <Entity>; var root = qt.DebugReturnRoot; if (qt != null && root != null) { DrawQuadtreeNode(root); } } Program.Instance.BoundingVolumesRenderer.End(); if (Program.Settings.DisplayInCombatUnits) { foreach (var v in Game.Instance.Scene.AllEntities) { if (v is Map.Unit && ((Map.Unit)v).InCombat) { Program.Instance.DrawCircle(Game.Instance.Scene.Camera, Matrix.Identity, ((Map.Unit)v).Position, 1, 12, Color.Red); } } } if (Program.Settings.DisplayAttackRangeCircles) { foreach (var v in Game.Instance.Scene.AllEntities) { if (v is Map.NPC && ((Map.NPC)v).MotionObject != null) { int i = 1; foreach (var a in ((Map.NPC)v).Abilities) { a.Mediator = (Map.NPC)v; a.DrawEffectiveAttackRangeCircle(Game.Instance.Scene.Camera, ((Map.NPC)v).LookatDir, Common.Int2Color.Conv(i++)); } } } var m = Game.Instance.Map.MainCharacter; if (m.MotionObject != null) { m.PrimaryAbility.Mediator = m; m.SecondaryAbility.Mediator = m; m.PrimaryAbility.DrawEffectiveAttackRangeCircle(Game.Instance.Scene.Camera, m.LookatDir, Color.DarkOrange); m.SecondaryAbility.DrawEffectiveAttackRangeCircle(Game.Instance.Scene.Camera, m.LookatDir, Color.DarkOrange); //Program.Instance.DrawArc(Game.Instance.Scene.Camera, Matrix.Identity, // m.PrimaryAbility.MediatorOffsetedPosition, // m.PrimaryAbility.PerformableRange, 12, Game.Instance.Map.MainCharacter.LookatDir, // m.PrimaryAbility.EffectiveAngle, Color.DarkOrange); //Program.Instance.DrawArc(Game.Instance.Scene.Camera, Matrix.Identity, // m.PrimaryAbility.MediatorOffsetedPosition, // m.PrimaryAbility.EffectiveRange, 12, Game.Instance.Map.MainCharacter.LookatDir, // m.PrimaryAbility.EffectiveAngle, Color.Orange); //Program.Instance.DrawArc(Game.Instance.Scene.Camera, Matrix.Identity, // m.SecondaryAbility.MediatorOffsetedPosition, // m.SecondaryAbility.PerformableRange, 12, Game.Instance.Map.MainCharacter.LookatDir, // m.SecondaryAbility.EffectiveAngle, Color.Gold); //Program.Instance.DrawArc(Game.Instance.Scene.Camera, Matrix.Identity, // m.SecondaryAbility.MediatorOffsetedPosition, // m.SecondaryAbility.EffectiveRange, 12, Game.Instance.Map.MainCharacter.LookatDir, // m.SecondaryAbility.EffectiveAngle, Color.Yellow); } } if (Program.Settings.DisplayHitRangeCircles) { foreach (var v in Game.Instance.Scene.AllEntities) { var d = v as Map.Destructible; if (d != null && d.IsDestructible) { Program.Instance.DrawCircle(Game.Instance.Scene.Camera, Matrix.Identity, d.Translation, d.HitRadius, 12, Color.Yellow); } } } if (Program.Settings.DisplayWorldDebugCursor) { Program.Instance.Draw3DLines(Game.Instance.Scene.Camera, Matrix.Identity, new Vector3[] { Game.Instance.Input.State.MouseGroundPosition + Vector3.UnitX, Game.Instance.Input.State.MouseGroundPosition - Vector3.UnitX, }, Color.White); Program.Instance.Draw3DLines(Game.Instance.Scene.Camera, Matrix.Identity, new Vector3[] { Game.Instance.Input.State.MouseGroundPosition + Vector3.UnitY, Game.Instance.Input.State.MouseGroundPosition - Vector3.UnitY, }, Color.White); var v = Game.Instance.Input.State.MouseGroundPosition; v.Z -= Game.Instance.Map.MainCharacter.MainAttackToHeight; var v2 = Game.Instance.Map.MainCharacter.Translation; v2.Z += Game.Instance.Map.MainCharacter.MainAttackFromHeight; Program.Instance.Draw3DLines(Game.Instance.Scene.Camera, Matrix.Identity, new Vector3[] { Game.Instance.Map.MainCharacter.Translation, v, Game.Instance.Input.State.MouseGroundPosition, Game.Instance.Map.MainCharacter.Translation, v2, Game.Instance.Input.State.MouseGroundPosition, }, Color.Orange); } }
public override void Init() { Content.ContentPath = "Data"; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera() { Lookat = new Vector3(size.Width / 2f, size.Height / 2f, 0), Position = new Vector3(10, 10, 10), FOV = 0.5f, ZFar = 100, AspectRatio = AspectRatio }; viewport = new Graphics.GraphicsDevice.Viewport(Device9.Viewport); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = new InteractiveSceneManager { Scene = scene }, }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9), Settings = new Graphics.Renderer.Settings { WaterEnable = false } }; //renderer = new Graphics.DummyRenderer.Renderer { Scene = scene, StateManager = new Graphics.GraphicsDevice.Device9StateManager(Device9), Settings = new Graphics.Renderer.Settings { WaterEnable = false } }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = renderer, Scene = scene }; sceneRendererConnector.Initialize(); motionSimulation = new Common.Motion.Simulation(); scene.EntityAdded += new Action <Entity>(scene_EntityAdded); scene.EntityRemoved += new Action <Entity>(scene_EntityRemoved); var sim = (Common.Motion.Simulation)motionSimulation; npcs = new List <Common.IMotion.INPC>(); Vector2 startingPosition = new Vector2(size.Width / 2f, size.Height / 2f); CreateGround(true); scene.Add(controlledUnit = CreateUnit(startingPosition)); scene.Add(CreateBlock(Common.Math.ToVector3(startingPosition + new Vector2(2, -2)), new Vector3(1, 1, 1.5f))); scene.Add(CreateBlock(Common.Math.ToVector3(startingPosition + new Vector2(-4, 2)), new Vector3(1, 1, 1.5f))); scene.Add(CreateBlock(Common.Math.ToVector3(startingPosition + new Vector2(4, -2)), new Vector3(1, 1, 1.5f))); scene.Add(CreateBlock(Common.Math.ToVector3(startingPosition + new Vector2(7, -1)), new Vector3(1, 1, 1.5f))); //scene.Add(CreateNPC(startingPosition + new Vector2(3, 3))); scene.Add(CreateNPC(startingPosition + new Vector2(3, -1))); scene.Add(CreateNPC(startingPosition + new Vector2(-5, 3))); scene.Add(CreateNPC(startingPosition + new Vector2(-2, 1))); Vector2 unitGroupStartingPosition = startingPosition + new Vector2(3, 3); for (int y = 0; y < 5; y++) { for (int x = 0; x < 5; x++) { scene.Add(CreateNPC(unitGroupStartingPosition + new Vector2(x, y))); } } BulletCreation = (() => { scene.Add(CreateBullet(controlledUnit.Translation + Vector3.UnitZ, bulletSpeed, controlledUnit.MotionObject.Rotation.Angle, bulletAcceleration)); }); foreach (var npc in npcs) { npc.Pursue(controlledUnit.MotionObject, 1f); } }
public override void Init() { Content.ContentPath = "Data"; Instance = this; scene = new Scene(); scene.View = this; scene.Camera = new LookatCartesianCamera { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100 }; //heightmap = TextureUtil.ToHeightmap(Content.Peek<Texture>(new TextureFromFile("testheightmap.png")), 100); heightmap = new Graphics.Software.Texel.R32F[250, 250]; texture = new Graphics.Software.Texture <Graphics.Software.Texel.R32F>(heightmap); scene.Add(ground = new TestGround { Size = new SizeF(100, 100), Heightmap = heightmap, NPieces = new Size(20, 20), Height = 1 }); ground.ConstructPieces(); heightmapEditor = new Graphics.Editors.GroundTextureEditor { Camera = scene.Camera, Viewport = Viewport, SoftwareTexture = new[] { texture }, Position = ground.Translation, Size = ground.Size, GroundIntersect = new WorldViewProbe(this, scene.Camera) { WorldProbe = new GroundProbe() } }; heightmapEditor.TextureValuesChanged += new Graphics.Editors.TextureValuesChangedEventHandler((o, e) => { ground.UpdatePatches(e.ChangedRegion); }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)scene.Camera, InputHandler = heightmapEditor }; renderer = new Graphics.Renderer.Renderer(Device9) { Scene = scene, StateManager = new Device9StateManager(Device9) }; renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Scene = scene, Renderer = renderer }; sceneRendererConnector.Initialize(); }
public override void Init() { Content.ContentPath = "Data"; Instance = this; Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(-1, -1, 100, 100, 10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); rand = new Random(); nBillboards = 2000; billboards = new Entity[nBillboards]; directions = new Vector3[nBillboards]; for (int i = 0; i < nBillboards; i++) { directions[i] = new Vector3((float)rand.NextDouble() * 2 - 1, (float)rand.NextDouble() * 2 - 1, (float)rand.NextDouble() * 2 - 1); } InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera }; Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager, Settings = new Graphics.Renderer.Settings { FogDistance = 500 } }; Renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = Renderer, Scene = Scene }; sceneRendererConnector.Initialize(); for (int i = 0; i < nBillboards; i++) { Scene.Add(billboards[i] = new Entity { MainGraphic = new MetaModel { AlphaRef = 0, BaseTexture = null, CastShadows = Priority.Never, HasAlpha = true, IsBillboard = true, IsWater = false, MaterialTexture = null, Mesh = null, ReceivesAmbientLight = Priority.Never, ReceivesDiffuseLight = Priority.Never, ReceivesShadows = Priority.Never, SkinnedMesh = null, SplatMapped = false, SplatTexutre = null, Texture = new TextureFromFile("checker.png"), Visible = Priority.High, World = Matrix.Identity, XMesh = new MeshConcretize { MeshDescription = new Meshes.IndexedPlane { Facings = Facings.Backside | Facings.Frontside, Position = Vector3.Zero, Size = new Vector2(5, 5), UVMin = Vector2.Zero, UVMax = new Vector2(1, 1) }, Layout = global::Graphics.Software.Vertex.PositionNormalTexcoord.Instance } }, VisibilityLocalBounding = Vector3.Zero, WorldMatrix = Matrix.Identity }); } }
public override void Init() { Content.ContentPath = "Data"; Instance = this; //splatTexture = Content.Peek<Texture>(new TextureFromFile("splatting.png")); //grassTexture = Content.Peek<Texture>(new TextureFromFile("")); //soilTexture = Content.Peek<Texture>(new TextureFromFile("")); //grass2Texture = Content.Peek<Texture>(new TextureFromFile("")); //stoneTexture = Content.Peek<Texture>(new TextureFromFile("")); Scene = new Scene(); Scene.View = this; Scene.Camera = new LookatCartesianCamera() { Position = new Vector3(10, 10, 10), Lookat = Vector3.Zero, ZFar = 100, ZNear = 0.1f, AspectRatio = AspectRatio }; sceneQuadtree = new Common.Quadtree <Entity>(0, 0, 100, 100, 10); sbau = new SceneBVHAutoSyncer(Scene, sceneQuadtree); StateManager = new Device9StateManager(Device9); Renderer = new Graphics.Renderer.Renderer(Device9) { Scene = Scene, StateManager = StateManager }; Renderer.Initialize(this); sceneRendererConnector = new SortedTestSceneRendererConnector { Renderer = Renderer, Scene = Scene }; sceneRendererConnector.Initialize(); heightmap = TextureUtil.ToHeightmap(Content.Peek <Texture>(new TextureFromFile("heightmap.png")), 100); Scene.Add(ground = new Entity { MainGraphic = new MetaModel { XMesh = new MeshConcretize { MeshDescription = new Graphics.Software.Meshes.MeshFromHeightmap { Grid = new Graphics.Software.Meshes.Grid { Position = Vector3.Zero, MeshType = MeshType.Indexed, Size = new Vector2(100, 100), NWidth = heightmap.GetLength(1) - 1, NHeight = heightmap.GetLength(0) - 1, UVMax = new Vector2(1, 1), UVMin = new Vector2(0, 0) }, Height = 20, Heightmap = heightmap, Rectangle = new RectangleF(0, 0, 1, 1), PointSample = true }, Layout = Graphics.Software.Vertex.PositionNormalTexcoord.Instance }, SplatMapped = true, Texture = new TextureFromFile("splatting.png"), SplatTexutre = new MetaResource <Texture, SlimDX.Direct3D10.Texture2D>[1] { new TextureFromFile("splattingtest.png") }, MaterialTexture = new MetaResource <Texture, SlimDX.Direct3D10.Texture2D>[4] { new TextureFromFile("grass.png") , new TextureFromFile("pebbles.png"), new TextureFromFile("vines.png"), new TextureFromFile("rock.png") }, }, VisibilityLocalBounding = Vector3.Zero }); InputHandler = new WalkaroundCameraInputHandler { Camera = (LookatCartesianCamera)Scene.Camera, //InputHandler = groundTextureEditor, //FilteredMessages = new MessageType[] { } }; }
void Setup() { Scene = new Scene(); GameState = GameState.Playing; InterfaceIngameScene = new Scene(); Scene.View = InterfaceIngameScene.View = Program.Instance; Scene.Camera = InterfaceIngameScene.Camera = new LookatSphericalCamera() { Lookat = new Vector3(0, 0, 0), Position = new Vector3(10, 10, 10), FOV = Program.Settings.CameraFOV, ZFar = 20, ZNear = Program.Settings.CameraZNear, AspectRatio = Program.Instance.AspectRatio }; CameraController = new CameraController { Camera = (LookatSphericalCamera)Scene.Camera }; Scene.EntityAdded += scene_EntityAdded; Program.Instance.Interface.Layer1.AddChild( SceneControl = new GameSceneControl { InnerScene = Scene, Size = Program.Instance.Interface.Size }); InterfaceIngameRenderer = new Graphics.Interface.InterfaceRenderer9(Program.Instance.Device9) { Scene = InterfaceIngameScene, StateManager = Program.Instance.StateManager, }; InterfaceIngameRenderer.Initialize(Scene.View); if (Program.Settings.OutputPNGSequence) { Directory.CreateDirectory(OutputPNGSequencePath); } if (Program.Settings.UseDummyRenderer) { throw new NotSupportedException("Dummy renderer is no longer supported."); } else { Renderer = new Graphics.Renderer.Renderer(Program.Instance.Device9) { Scene = Scene, StateManager = Program.Instance.StateManager, Settings = Program.Settings.RendererSettings, }; SceneRendererConnector = new SortedTestSceneRendererConnector { Scene = Scene, Renderer = Renderer }; } Graphics.Renderer.Results result = Renderer.Initialize(Scene.View); SceneRendererConnector.Initialize(); if (result == Graphics.Renderer.Results.OutOfVideoMemory) { System.Windows.Forms.MessageBox.Show(Locale.Resource.ErrorOutOfVideoMemory); Application.Log("User ran out of video memory according to renderer. This is probably due to having too high shadow quality."); System.Windows.Forms.Application.Exit(); } RendererSettingsController = new RendererSettingsController(); var s = Program.Settings.GraphicsDeviceSettings.Resolution; Program.Instance.Interface.Layer1.AddChild(Interface = new Interface.Interface { Size = new Vector2(s.Width, s.Height), Visible = false }); }