Esempio n. 1
0
    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();
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        public void TestSerializeDeserializeAdvanced()
        {
            var converter = new OBJToRAMMeshConverter(new RAMTextureFactory());

            var mesh = DefaultMeshes.CreateMerchantsHouseMesh(converter);

            var data = mesh.GetCoreData();

            //serializeCoreData(data);
            //serializeGeometryData(data);
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
    //------------------------------------------------------------------
    //------------------------------------------------------------------

    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();
        }
Esempio n. 9
0
        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));
 }