Exemple #1
0
 public static int[] GetTriangleOffsets(TerrainMeshProvider provider, bool foldLeftRight)
 {
     return(provider.GetIndices(foldLeftRight));
 }
Exemple #2
0
        public void EnsureMesh(IHue hue, TerrainMeshProvider meshProvider)
        {
            if (this._mesh != null && this._lastMeshHue == hue && this._lastMeshProvider == meshProvider)
            {
                return;
            }
            this._lastMeshHue      = hue;
            this._lastMeshProvider = (IMeshProvider)meshProvider;
            int     landId    = this.graphicId;
            int     textureId = (int)Map.GetTexture(landId);
            Texture tex;

            if (textureId > 0 && textureId < 16384)
            {
                tex = hue.GetTerrainTexture(textureId);
                if (tex == null || tex.IsEmpty())
                {
                    tex = hue.GetTerrainIsometric(landId);
                    if (tex == null || tex.IsEmpty())
                    {
                        tex = hue.GetTerrainTexture(1);
                        if (tex == null || tex.IsEmpty())
                        {
                            return;
                        }
                    }
                }
            }
            else
            {
                tex = hue.GetTerrainIsometric(landId);
                if (tex == null || tex.IsEmpty())
                {
                    if (textureId > 0 && textureId < 16384)
                    {
                        tex = hue.GetTerrainTexture(textureId);
                    }
                    if (tex == null || tex.IsEmpty())
                    {
                        tex = hue.GetTerrainTexture(1);
                        if (tex == null || tex.IsEmpty())
                        {
                            this._mesh = (TerrainMesh)null;
                            return;
                        }
                    }
                }
            }
            this.m_sDraw = tex;
            if (tex.Width == 44 && !(this._mesh is TerrainMesh2D))
            {
                this._mesh = (TerrainMesh) new TerrainMesh2D();
                this._mesh.Load(this, tex);
            }
            else
            {
                if (tex.Width == 44 || this._mesh is TerrainMesh3D && ((TerrainMesh3D)this._mesh).Provider == meshProvider)
                {
                    return;
                }
                this._mesh = (TerrainMesh) new TerrainMesh3D(meshProvider);
                this._mesh.Load(this, tex);
            }
        }
Exemple #3
0
 public static void Reset()
 {
     TerrainMeshProviders._current = (TerrainMeshProvider)null;
 }