Exemplo n.º 1
0
        public void SetTexture(float x, float z, ITexture texture, float rotation)
        {
            int tx = (int)(x / Constants.terrainPieceSize);
            int tz = (int)(z / Constants.terrainPieceSize);
            int cx = tx / Constants.terrainHeightsPerChunk;

            if (tx < 0 && tx % Constants.terrainHeightsPerChunk != 0)
            {
                cx--;
            }
            int cz = tz / Constants.terrainHeightsPerChunk;

            if (tz < 0 && tz % Constants.terrainHeightsPerChunk != 0)
            {
                cz--;
            }

            Vector2D      loc = new Vector2D(cx, cz);
            ITerrainChunk tc  = terrainChunks[loc] as ITerrainChunk;

            if (tc == null)
            {
                tc = TerrainChunk.CreateTerrainChunk(cx * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, cz * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, Constants.terrainPieceSize, Constants.terrainHeightsPerChunk);
                terrainChunks.Add(loc, tc);
            }
            tc.DrawTexture(texture, x, z, rotation);
        }
Exemplo n.º 2
0
        public void SetHeight(float x, float z, float altitude)
        {
            int      tx  = (int)(x / Constants.terrainPieceSize);
            int      tz  = (int)(z / Constants.terrainPieceSize);
            Vector2D loc = new Vector2D(tx, tz);

            if (terrainHeights.Contains(loc))
            {
                //Strive.Logging.Log.WarningMessage( "Replacing terrain peice " + tpexists.instance_id + " with " + tp.instance_id );
                terrainHeights.Remove(loc);
            }
            terrainHeights.Add(loc, altitude);

            int cx = tx / Constants.terrainHeightsPerChunk;

            if (tx < 0 && tx % Constants.terrainHeightsPerChunk != 0)
            {
                cx--;
            }
            int cz = tz / Constants.terrainHeightsPerChunk;

            if (tz < 0 && tz % Constants.terrainHeightsPerChunk != 0)
            {
                cz--;
            }

            loc.Set(cx, cz);
            ITerrainChunk tc = terrainChunks[loc] as ITerrainChunk;

            if (tc == null)
            {
                tc = TerrainChunk.CreateTerrainChunk(cx * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, cz * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, Constants.terrainPieceSize, Constants.terrainHeightsPerChunk);
                terrainChunks.Add(loc, tc);
            }
            tc.SetHeight(x, z, altitude);
            if (tx % Constants.terrainHeightsPerChunk == 0)
            {
                loc.Set(cx - 1, cz);
                tc = terrainChunks[loc] as ITerrainChunk;
                if (tc == null)
                {
                    tc = TerrainChunk.CreateTerrainChunk((cx - 1) * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, cz * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, Constants.terrainPieceSize, Constants.terrainHeightsPerChunk);
                    terrainChunks.Add(loc, tc);
                }
                tc.SetHeight(x, z, altitude);
            }
            if (tz % Constants.terrainHeightsPerChunk == 0)
            {
                loc.Set(cx, cz - 1);
                tc = terrainChunks[loc] as ITerrainChunk;
                if (tc == null)
                {
                    tc = TerrainChunk.CreateTerrainChunk(cx * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, (cz - 1) * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, Constants.terrainPieceSize, Constants.terrainHeightsPerChunk);
                    terrainChunks.Add(loc, tc);
                }
                tc.SetHeight(x, z, altitude);
            }
            if (tx % Constants.terrainHeightsPerChunk == 0 && tz % Constants.terrainHeightsPerChunk == 0)
            {
                loc.Set(cx - 1, cz - 1);
                tc = terrainChunks[loc] as ITerrainChunk;
                if (tc == null)
                {
                    tc = TerrainChunk.CreateTerrainChunk((cx - 1) * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, (cz - 1) * Constants.terrainHeightsPerChunk * Constants.terrainPieceSize, Constants.terrainPieceSize, Constants.terrainHeightsPerChunk);
                    terrainChunks.Add(loc, tc);
                }
                tc.SetHeight(x, z, altitude);
            }
        }