예제 #1
0
        public void Build(bool isMainThread = false)
        {
            Atlas.Register(tex);

            foreach (var tile in tiles3D.Values)
            {
                tile.InitData(sizeZ);
            }

            if (sizeZ > 0)
            {
                switch (geo)
                {
                case Geo3DType.CUBE: BuildCubeModel(); break;

                case Geo3DType.VCYLINDER: BuildVCylinderModel(); break;

                case Geo3DType.HCYLINDER: BuildHCylinderModel(); break;

                case Geo3DType.Default: BuildDefaultModel(); break;

                case Geo3DType.HALFVCYLINDER: BuildHalfVCylinderModel(); break;

                case Geo3DType.HALFHCYLINDER: BuildHalfHCylinderModel(); break;

                default: break;
                }
            }
            state = State.GeoCreated;

            foreach (var tile in tiles3D.Values)
            {
                tile.GenerateMesh();
            }
            foreach (var tile in tiles3D.Values)
            {
                tile.ReleasePixelData();
            }
            state = State.DataCreated;

            if (isMainThread)
            {
                SetMesh();
            }
            else
            {
                Misc.RunInMainThread(() => SetMesh());
            }
        }