Exemple #1
0
        // Start is called before the first frame update
        void Start()
        {
            world = new WorldBuilder(new Vector2(5, 5));

            mapper      = new TextureAtlasMapper();
            currentGame = this;
            setUpDebug();
            setUpCamera();
            world.startPosition = new Vector3(10, 0, 10);
            world.Generate();
            world.startPosition.y         += 20;
            Camera.main.transform.position = world.startPosition;
            Camera.main.gameObject.AddComponent <FirstPersonCamera>();
        }
Exemple #2
0
        public override void CreateQuad(Cubeside side)
        {
            string textureName;

            switch (side)
            {
            case Cubeside.TOP: {
                textureName = textureNames[0];
                break;
            }

            case Cubeside.BOTTOM:
            {
                textureName = textureNames[1];
                break;
            }

            default:
            {
                textureName = textureNames[2];
                break;
            }
            }

            QuadMesh quadMesh = new QuadMesh(side);

            TextureAtlasMapper mapper = Game.currentGame.mapper;

            Vector2[] uvs = mapper.GetMappedUVs(textureName);

            GameObject quad = new GameObject("Quad");

            quad.transform.position = globalPosition;
            quad.transform.parent   = chunk.GameObject.transform;
            MeshFilter meshFilter = (MeshFilter)quad.AddComponent(typeof(MeshFilter));
            Mesh       myMesh     = quadMesh.mesh;

            myMesh.uv = uvs;
            myMesh.RecalculateBounds();
            myMesh.name     = "my mesh";
            meshFilter.mesh = myMesh;

            MeshRenderer renderer = quad.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
        }
Exemple #3
0
        public void Optimize()
        {
            if (!rendered)
            {
                //1. Combine all children meshes
                MeshFilter[]      meshFilters = GameObject.GetComponentsInChildren <MeshFilter>();
                CombineInstance[] combine     = new CombineInstance[meshFilters.Length];
                int i = 0;
                while (i < meshFilters.Length)
                {
                    combine[i].mesh      = meshFilters[i].sharedMesh;
                    combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
                    i++;
                }

                //2. Create a new mesh on the parent object
                MeshFilter mf = (MeshFilter)GameObject.AddComponent(typeof(MeshFilter));
                mf.mesh = new Mesh();

                //3. Add combined meshes on children as the parent's mesh
                mf.mesh.CombineMeshes(combine);
                TextureAtlasMapper mapper = Game.currentGame.mapper;

                //4. Create a renderer for the parent
                MeshRenderer renderer = GameObject.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
                renderer.material             = (Material)Resources.Load("mymaterial", typeof(Material));
                renderer.material.mainTexture = mapper.atlas;


                //5. Delete all uncombined children
                foreach (Transform quad in GameObject.transform)
                {
                    GameObject.Destroy(quad.gameObject);
                }

                // 6. Add collision
                MeshCollider collider = GameObject.AddComponent(typeof(MeshCollider)) as MeshCollider;
                collider.sharedMesh = GameObject.transform.GetComponent <MeshFilter>().mesh;
                rendered            = true;
            }
        }
Exemple #4
0
        public virtual void CreateQuad(Cubeside side)
        {
            string[] textures = new String[6];

            if (textureNames.Length == 1)
            {
                for (int j = 0; j < 6; j++)
                {
                    textures[j] = textureNames[0];
                }
            }
            else
            {
                textures = textureNames;
            }

            for (int i = 0; i < textures.Length; i++)
            {
                QuadMesh quadMesh = new QuadMesh(side);

                TextureAtlasMapper mapper = Game.currentGame.mapper;
                Vector2[]          uvs    = mapper.GetMappedUVs(textures[i]);

                GameObject quad = new GameObject("Quad");

                quad.transform.position = globalPosition;
                quad.transform.parent   = chunk.GameObject.transform;
                MeshFilter meshFilter = (MeshFilter)quad.AddComponent(typeof(MeshFilter));
                Mesh       myMesh     = quadMesh.mesh;
                myMesh.uv = uvs;
                myMesh.RecalculateBounds();
                myMesh.name     = "my mesh";
                meshFilter.mesh = myMesh;


                hasCubeSideMesh[side] = true;
            }
        }