Exemplo n.º 1
0
        public TileMap(Level level, int minX, int minY, int minZ, int maxX, int maxY, int maxZ)
        {
            m_level   = level;
            m_xOrigin = minX;
            m_yOrigin = minY;
            m_zOrigin = minZ;
            m_tiles   = new Tile[maxX - minX, maxY - minY, maxZ - minZ];
            m_state   = new TileState[maxX - minX, maxY - minY, maxZ - minZ];
            for (int x = 0; x < Width; ++x)
            {
                for (int y = 0; y < Height; ++y)
                {
                    for (int z = 0; z < Depth; ++z)
                    {
                        m_tiles[x, y, z] = Tiles.Air;
                        m_state[x, y, z] = new TileState();
                    }
                }
            }

            m_history         = new Stack <TileChange>();
            m_latestTimeStamp = 0.0f;

            m_atlas    = TextureAtlas.Get("models/tiles");
            m_geometry = new Geometry[Enum.GetValues(typeof(RenderPass)).Length];
            for (int i = 0; i < m_geometry.Length; ++i)
            {
                m_geometry[i] = new Geometry(Primitive.Triangles);
            }
            m_shadowGeometry       = new Geometry(Primitive.Triangles);
            m_liquidGeometry       = new Dictionary <LiquidTileBehaviour, Geometry>();
            m_geometryNeedsRebuild = true;
        }