public void InsertMesh(int meshID) { switch (meshID) { case 0: DefaultMeshes.Cube(selMesh); break; case 1: DefaultMeshes.Plane(selMesh); break; case 2: DefaultMeshes.Sphere(selMesh); break; case 3: DefaultMeshes.Circle(selMesh); break; default: Debug.LogError($"Mesh ID not valid ({meshID})"); break; } //selMesh.verts.AddRange(newMesh.verts); //selMesh.faces.AddRange(newMesh.faces); selMesh.ReconstructMesh(); //selMesh.selVerts = new HashSet<Vertex>(newMesh.verts); //selMesh.selFaces = new HashSet<Face>(newMesh.faces); transformGizmo.OnSelectionChange(); }
public void TestLoadTexture() { XNAGame game = new XNAGame(); TexturePool pool = new TexturePool(); game.AddXNAObject(pool); game.DrawFps = true; RAMTexture tex = DefaultMeshes.GetTestTexture(); game.DrawEvent += delegate { //We should do this ACTUALLY in real usage situations, but it proves we cache the data. game.SpriteBatch.Begin(); int row = 0; int col = 0; int width = 10; for (int i = 0; i < 100; i++) { row = i / width; col = i % width; game.SpriteBatch.Draw(pool.LoadTexture(tex), new Rectangle(10 + col * 40, 10 + row * 40, 40, 40), Color.White); } game.SpriteBatch.End(); }; game.Run(); }
public void TestSyncOffline() { var serverpm = new SimpleServerPacketManager(); var clientpm = serverpm.CreateClient(); var vertexDeclarationPool = new VertexDeclarationPool(); vertexDeclarationPool.SetVertexElements <TangentVertex>(TangentVertex.VertexElements); var texturePool = new TexturePool(); var meshPartPool = new MeshPartPool(); var renderer = new SimpleMeshRenderer(texturePool, meshPartPool, vertexDeclarationPool); var mesh = DefaultMeshes.CreateGuildHouseMesh( new TheWizards.OBJParser.OBJToRAMMeshConverter(new RAMTextureFactory())); var meshFactory = new SimpleMeshFactory(); meshFactory.AddMesh(mesh); var builder = new SimpleStaticWorldObjectFactory(renderer, meshFactory); var client = new ClientStaticWorldObjectSyncer(clientpm, builder); var server = new ServerStaticWorldObjectSyncer(serverpm); var game = new XNAGame(); game.AddXNAObject(renderer); game.AddXNAObject(vertexDeclarationPool); game.AddXNAObject(texturePool); game.AddXNAObject(meshPartPool); game.InitializeEvent += delegate { }; game.UpdateEvent += delegate { if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.F)) { var o = server.CreateNew(); var obj = o; obj.Mesh = mesh; obj.WorldMatrix = Matrix.CreateTranslation(game.SpectaterCamera.CameraPosition); } server.Update(game.Elapsed); client.Update(game.Elapsed); }; game.Run(); }
public void TestSerializeDeserializeAdvanced() { var converter = new OBJToRAMMeshConverter(new RAMTextureFactory()); var mesh = DefaultMeshes.CreateMerchantsHouseMesh(converter); var data = mesh.GetCoreData(); //serializeCoreData(data); //serializeGeometryData(data); }
public void TestHorizonSSAO() { var c = new OBJToRAMMeshConverter(new RAMTextureFactory()); var mesh = DefaultMeshes.CreateMerchantsHouseMesh(c); var game = new DX11Game(); game.InitDirectX(); var context = game.Device.ImmediateContext; var texturePool = new TexturePool(game); var gBuffer = new GBuffer(game.Device, 800, 600); var renderer = new DeferredMeshesRenderer(game, gBuffer, texturePool); var ssao = new HorizonSSAORenderer(game, 800, 600); var el = renderer.AddMesh(mesh); el.WorldMatrix = SlimDX.Matrix.Translation(MathHelper.Right * 0 * 2 + SlimDX.Vector3.UnitZ * 0 * 2); game.GameLoopEvent += delegate { gBuffer.Clear(); gBuffer.SetTargetsToOutputMerger(); renderer.Draw(); ssao.OnFrameRender(gBuffer.DepthRV, gBuffer.NormalRV); context.ClearState(); game.SetBackbuffer(); if (game.Keyboard.IsKeyDown(Key.I)) { GBufferTest.DrawGBuffer(game, gBuffer); } else { game.TextureRenderer.Draw(ssao.MSsaoBuffer.pSRV, new SlimDX.Vector2(0, 0), new SlimDX.Vector2(800, 600)); } }; game.Run(); }
//------------------------------------------------------------------ //------------------------------------------------------------------ void Start() { //SaveLoad.LoadLastMeshSavePath(); meshFilter = GetComponent <MeshFilter>(); meshCollider = gameObject.GetComponent <MeshCollider>(); selMesh = DefaultMeshes.Cube(selMesh); selMesh.meshCollider = meshCollider; selMesh.selVerts.Clear(); selMesh.selFaces.Clear(); selMesh.ReconstructMesh(); //gameObject.GetComponent<MeshCollider>().sharedMesh = selMesh.meshFilter.sharedMesh; SaveUndoState(); //Debug.Log(Application.persistentDataPath); }
public void TestMeshRendererAdvanced() { var texFactory = new RAMTextureFactory(); var c = new OBJToRAMMeshConverter(texFactory); var game = new XNAGame(); game.IsFixedTimeStep = false; game.DrawFps = true; var importer = new ObjImporter(); importer.AddMaterialFileStream("Crate01.mtl", File.OpenRead(TestFiles.CrateMtl)); importer.ImportObjFile(TestFiles.CrateObj); var mesh = c.CreateMesh(importer); RAMMesh mesh2 = DefaultMeshes.CreateMerchantsHouseMesh(c); RAMMesh mesh3 = DefaultMeshes.CreateGuildHouseMesh(c); SimpleMeshRenderer renderer = InitDefaultMeshRenderer(game); var el = renderer.AddMesh(mesh); el.WorldMatrix = Matrix.CreateTranslation(Vector3.Right * 0 * 2 + Vector3.UnitZ * 0 * 2); el = renderer.AddMesh(mesh2); el.WorldMatrix = Matrix.CreateTranslation(new Vector3(0, 0, 80)); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { el = renderer.AddMesh(mesh3); el.WorldMatrix = Matrix.CreateTranslation(new Vector3(j * 30, 0, 70 + i * 30)); } } game.Run(); }
public void TestMeshRendererSimple() { var mesh = DefaultMeshes.CreateSimpleTestMesh(); var texturePool = new TexturePool(); var meshpartPool = new MeshPartPool(); var vertexDeclarationPool = new VertexDeclarationPool(); var renderer = new SimpleMeshRenderer(texturePool, meshpartPool, vertexDeclarationPool); vertexDeclarationPool.SetVertexElements <TangentVertex>(TangentVertex.VertexElements); SimpleMeshRenderElement middle = null; for (int i = 0; i < 50; i++) { for (int j = 0; j < 50; j++) { var el = renderer.AddMesh(mesh); el.WorldMatrix = Matrix.CreateTranslation(Vector3.Right * i * 2 + Vector3.UnitZ * j * 2); if (i > 20 && i < 30 && j > 20 && j < 30) { el.Delete(); } } } var game = new XNAGame(); game.DrawFps = true; game.AddXNAObject(texturePool); game.AddXNAObject(meshpartPool); game.AddXNAObject(vertexDeclarationPool); game.AddXNAObject(renderer); game.Run(); }
public void TestDeferredRenderer() { var game = new XNAGame(); var renderer = new DeferredRendererOud(DefaultMeshes.CreateMerchantsHouseMeshOLD(), TestFiles.WoodPlanksBareJPG); renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.Diffuse; game.AddXNAObject(renderer); game.UpdateEvent += delegate { if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D1)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.Final; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D2)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.Diffuse; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D3)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.Normal; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D4)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.Depth; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D5)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.LightAccumulation; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D6)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.ShadowMap; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D7)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.AmbientOcclusion; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D8)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.BlurX; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.D9)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.BlurY; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.NumPad1)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.Downsample; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.NumPad2)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.DownsampleBlurX; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.NumPad3)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.DownsampleBlurY; } if (game.Keyboard.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.NumPad4)) { renderer.OutputMode = DeferredRendererOud.DeferredOutputMode.ToneMapped; } }; game.Run(); }
public void TestShowcaseGBuffer() { drawMeshTest(DefaultMeshes.CreateMeshFromObj(new OBJToRAMMeshConverter(new RAMTextureFactory()), ShowcaseOBJ, ShowcaseMTL), Matrix.Scaling(1, 1, 1)); }
public static RAMMesh CreateMeshFromObj(OBJToRAMMeshConverter c, string obj, string mtl) { return(DefaultMeshes.CreateMeshFromObj(c, obj, mtl)); }
public static RAMMesh CreateGuildHouseMesh(OBJToRAMMeshConverter c) { return(DefaultMeshes.CreateGuildHouseMesh(c)); }