Ejemplo n.º 1
0
        public override void Regenerate()
        {
            ClearSubMeshes(MeshParts.All);
            Map         map         = base.Map;
            TerrainGrid terrainGrid = map.terrainGrid;
            CellRect    cellRect    = section.CellRect;
            float       y           = AltitudeLayer.TerrainScatter.AltitudeFor();

            foreach (IntVec3 item in cellRect)
            {
                if (ShouldDrawPropsBelow(item, terrainGrid))
                {
                    IntVec3    c          = item;
                    TerrainDef terrainDef = terrainGrid.TerrainAt(c);
                    c.x++;
                    Material     material = (!c.InBounds(map) || !ShouldDrawPropsBelow(c, terrainGrid)) ? terrainDef.BiomesBridgeRightMat() : terrainDef.BiomesBridgeLoopMat();
                    LayerSubMesh subMesh  = GetSubMesh(material);
                    int          count    = subMesh.verts.Count;
                    subMesh.verts.Add(new Vector3(item.x, y, item.z - 1));
                    subMesh.verts.Add(new Vector3(item.x, y, item.z));
                    subMesh.verts.Add(new Vector3(item.x + 1, y, item.z));
                    subMesh.verts.Add(new Vector3(item.x + 1, y, item.z - 1));
                    subMesh.uvs.Add(new Vector2(0f, 0f));
                    subMesh.uvs.Add(new Vector2(0f, 1f));
                    subMesh.uvs.Add(new Vector2(1f, 1f));
                    subMesh.uvs.Add(new Vector2(1f, 0f));
                    subMesh.tris.Add(count);
                    subMesh.tris.Add(count + 1);
                    subMesh.tris.Add(count + 2);
                    subMesh.tris.Add(count);
                    subMesh.tris.Add(count + 2);
                    subMesh.tris.Add(count + 3);
                }
            }
            FinalizeMesh(MeshParts.All);
        }
Ejemplo n.º 2
0
        public bool ShouldDrawPropsBelow(IntVec3 c, TerrainGrid terrGrid)
        {
            TerrainDef terrainDef = terrGrid.TerrainAt(c);

            if (terrainDef == null || !terrainDef.IsBiomesBridge() || terrainDef.BiomesBridgeLoopMat() == null || terrainDef.BiomesBridgeRightMat() == null)
            {
                return(false);
            }
            IntVec3 c2 = c;

            c2.z--;
            Map map = base.Map;

            if (!c2.InBounds(map))
            {
                return(false);
            }
            TerrainDef terrainDef2 = terrGrid.TerrainAt(c2);

            if (terrainDef2.IsBiomesBridge())
            {
                return(false);
            }
            if (terrainDef2.passability != Traversability.Impassable && !c2.SupportsStructureType(map, terrainDef.terrainAffordanceNeeded))
            {
                return(false);
            }
            return(true);
        }