Пример #1
0
            public static TerrainAlphaMap Read(StreamReader data, StreamWriter outputData, bool write = true)
            {
                TerrainAlphaMap obj = new TerrainAlphaMap();

                obj.TCode  = Utils.readAndWriteUInt32(data, outputData, write);
                obj.TexGID = Utils.readAndWriteUInt32(data, outputData, write);
                return(obj);
            }
    public void RefreshTerrainData()
    {
        TerrainData      terrainDatum = Terrain.activeTerrain.terrainData;
        TerrainHeightMap component    = Terrain.activeTerrain.GetComponent <TerrainHeightMap>();

        if (component)
        {
            this.heightmap = component.HeightTexture;
        }
        TerrainSplatMap terrainSplatMap = Terrain.activeTerrain.GetComponent <TerrainSplatMap>();

        if (terrainSplatMap)
        {
            this.splatmap0 = terrainSplatMap.SplatTexture0;
            this.splatmap1 = terrainSplatMap.SplatTexture1;
        }
        TerrainAlphaMap terrainAlphaMap = Terrain.activeTerrain.GetComponent <TerrainAlphaMap>();

        if (terrainAlphaMap)
        {
            this.alphamap = terrainAlphaMap.AlphaTexture;
        }
        TerrainBiomeMap terrainBiomeMap = Terrain.activeTerrain.GetComponent <TerrainBiomeMap>();

        if (terrainBiomeMap)
        {
            this.biomemap = terrainBiomeMap.BiomeTexture;
        }
        TerrainTopologyMap terrainTopologyMap = Terrain.activeTerrain.GetComponent <TerrainTopologyMap>();

        if (terrainTopologyMap)
        {
            this.topologymap = terrainTopologyMap.TopologyTexture;
        }
        TerrainWaterMap terrainWaterMap = Terrain.activeTerrain.GetComponent <TerrainWaterMap>();

        if (terrainWaterMap)
        {
            this.watermap = terrainWaterMap.WaterTexture;
        }
        TerrainBlendMap terrainBlendMap = Terrain.activeTerrain.GetComponent <TerrainBlendMap>();

        if (terrainBlendMap)
        {
            this.blendmap = terrainBlendMap.BlendTexture;
        }
        this.size    = terrainDatum.size;
        this.extents = terrainDatum.size * 0.5f;
        this.offset  = (Terrain.activeTerrain.GetPosition() + (terrainDatum.size.XZ3D() * 0.5f)) - base.transform.position;
    }
    public void RefreshTerrainData()
    {
        TerrainData      terrainData = Terrain.get_activeTerrain().get_terrainData();
        TerrainHeightMap component1  = (TerrainHeightMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainHeightMap>();

        if (Object.op_Implicit((Object)component1))
        {
            this.heightmap = component1.HeightTexture;
        }
        TerrainSplatMap component2 = (TerrainSplatMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainSplatMap>();

        if (Object.op_Implicit((Object)component2))
        {
            this.splatmap0 = component2.SplatTexture0;
            this.splatmap1 = component2.SplatTexture1;
        }
        TerrainAlphaMap component3 = (TerrainAlphaMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainAlphaMap>();

        if (Object.op_Implicit((Object)component3))
        {
            this.alphamap = component3.AlphaTexture;
        }
        TerrainBiomeMap component4 = (TerrainBiomeMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainBiomeMap>();

        if (Object.op_Implicit((Object)component4))
        {
            this.biomemap = component4.BiomeTexture;
        }
        TerrainTopologyMap component5 = (TerrainTopologyMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainTopologyMap>();

        if (Object.op_Implicit((Object)component5))
        {
            this.topologymap = component5.TopologyTexture;
        }
        TerrainWaterMap component6 = (TerrainWaterMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainWaterMap>();

        if (Object.op_Implicit((Object)component6))
        {
            this.watermap = component6.WaterTexture;
        }
        TerrainBlendMap component7 = (TerrainBlendMap)((Component)Terrain.get_activeTerrain()).GetComponent <TerrainBlendMap>();

        if (Object.op_Implicit((Object)component7))
        {
            this.blendmap = component7.BlendTexture;
        }
        this.size    = terrainData.get_size();
        this.extents = Vector3.op_Multiply(terrainData.get_size(), 0.5f);
        this.offset  = Vector3.op_Subtraction(Vector3.op_Addition(Terrain.get_activeTerrain().GetPosition(), Vector3.op_Multiply(Vector3Ex.XZ3D(terrainData.get_size()), 0.5f)), ((Component)this).get_transform().get_position());
    }
Пример #4
0
    private void DoWork()
    {
        Vector3          vector3   = new Vector3((float)(this.width / 2), 0f, (float)(this.height / 2));
        Vector3          vector31  = new Vector3(this.pivot.x - vector3.x, 0f, this.pivot.z - vector3.z);
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;
        TerrainAlphaMap  alphaMap  = TerrainMeta.AlphaMap;
        int num = 0;

        for (int i = 0; i <= this.height; i++)
        {
            int num1 = 0;
            while (num1 <= this.width)
            {
                Vector3 vector32 = new Vector3((float)num1, 0f, (float)i) + vector31;
                Vector3 vector33 = new Vector3((float)num1, 0f, (float)i) - vector3;
                float   height   = heightMap.GetHeight(vector32);
                if (height < -1f)
                {
                    this.indices.Add(-1);
                }
                else if (!this.alpha || alphaMap.GetAlpha(vector32) >= 0.1f)
                {
                    if (this.normal)
                    {
                        Vector3 normal = heightMap.GetNormal(vector32);
                        this.normals.Add(normal);
                    }
                    float single  = height - this.pivot.y;
                    float single1 = single;
                    vector33.y = single;
                    vector32.y = single1;
                    this.indices.Add(this.vertices.Count);
                    this.vertices.Add(vector33);
                }
                else
                {
                    this.indices.Add(-1);
                }
                num1++;
                num++;
            }
        }
        int num2 = 0;
        int num3 = 0;

        while (num3 < this.height)
        {
            int num4 = 0;
            while (num4 < this.width)
            {
                int item  = this.indices[num2];
                int item1 = this.indices[num2 + this.width + 1];
                int item2 = this.indices[num2 + 1];
                int item3 = this.indices[num2 + 1];
                int item4 = this.indices[num2 + this.width + 1];
                int item5 = this.indices[num2 + this.width + 2];
                if (item != -1 && item1 != -1 && item2 != -1)
                {
                    this.triangles.Add(item);
                    this.triangles.Add(item1);
                    this.triangles.Add(item2);
                }
                if (item3 != -1 && item4 != -1 && item5 != -1)
                {
                    this.triangles.Add(item3);
                    this.triangles.Add(item4);
                    this.triangles.Add(item5);
                }
                num4++;
                num2++;
            }
            num3++;
            num2++;
        }
    }
Пример #5
0
            public static TexMerge Read(StreamReader data, StreamWriter outputData, bool write = true)
            {
                TexMerge obj = new TexMerge();

                obj.CornerTerrainMaps  = new List <TerrainAlphaMap>();
                obj.SideTerrainMaps    = new List <TerrainAlphaMap>();
                obj.RoadMaps           = new List <RoadAlphaMap>();
                obj.TerrainDescription = new List <TMTerrainDesc>();

                //obj.BaseTexSize = Utils.readAndWriteUInt32(data, outputData, write);
                obj.BaseTexSize = Utils.readAndWriteUInt32(data, outputData, false);
                outputData.BaseStream.Write(BitConverter.GetBytes((uint)256), 0, 4);

                uint num_corner_terrain_maps = Utils.readAndWriteUInt32(data, outputData, write);

                for (uint i = 0; i < num_corner_terrain_maps; i++)
                {
                    obj.CornerTerrainMaps.Add(TerrainAlphaMap.Read(data, outputData, write));
                }

                uint num_side_terrain_maps = Utils.readAndWriteUInt32(data, outputData, write);

                for (uint i = 0; i < num_side_terrain_maps; i++)
                {
                    obj.SideTerrainMaps.Add(TerrainAlphaMap.Read(data, outputData, write));
                }

                uint num_road_maps = Utils.readAndWriteUInt32(data, outputData, write);

                for (uint i = 0; i < num_road_maps; i++)
                {
                    obj.RoadMaps.Add(RoadAlphaMap.Read(data, outputData, write));
                }

                uint num_terrain_desc = Utils.readAndWriteUInt32(data, outputData, write);

                for (uint i = 0; i < num_terrain_desc; i++)
                {
                    obj.TerrainDescription.Add(TMTerrainDesc.Read(data, outputData, write));
                }

                //TMTerrainDesc BarrenRock = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Grassland = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Ice = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc LushGrass = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc MarshSparseSwamp = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc MudRichDirt = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc ObsidianPlain = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc PackedDirt = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc PatchyDirt = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc PatchyGrassland = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc SandYellow = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc SandGrey = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc SandRockStrewn = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc SedimentaryRock = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc SemiBarrenRock = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Snow = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc WaterRunning = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc WaterStandingFresh = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc WaterShallowSea = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc WaterShallowStillSea = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc WaterDeepSea = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Forestfloor = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc FauxWaterRunning = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc SeaSlime = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc Argila = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Volcano1 = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Volcano2 = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc BlueIce = TMTerrainDesc.Read(data, outputData, false);

                //TMTerrainDesc Moss = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc DarkMoss = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc olthoi = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc DesolateLands = TMTerrainDesc.Read(data, outputData, false);
                //TMTerrainDesc Road = TMTerrainDesc.Read(data, outputData, false);

                //BarrenRock.terrainTex = Snow.terrainTex;
                //Grassland.terrainTex.TexGID = 0x0500146B;
                ////LushGrass.terrainTex = Snow.terrainTex;
                ////PatchyDirt.terrainTex = Snow.terrainTex;
                //PatchyGrassland.terrainTex = Snow.terrainTex;
                ////Forestfloor.terrainTex = Ice.terrainTex;
                //WaterRunning.terrainTex = BlueIce.terrainTex;
                //WaterStandingFresh.terrainTex = BlueIce.terrainTex;

                //BarrenRock.Write(outputData);
                //Grassland.Write(outputData);
                //Ice.Write(outputData);
                //LushGrass.Write(outputData);

                //MarshSparseSwamp.Write(outputData);
                //MudRichDirt.Write(outputData);
                //ObsidianPlain.Write(outputData);
                //PackedDirt.Write(outputData);

                //PatchyDirt.Write(outputData);
                //PatchyGrassland.Write(outputData);
                //SandYellow.Write(outputData);
                //SandGrey.Write(outputData);

                //SandRockStrewn.Write(outputData);
                //SedimentaryRock.Write(outputData);
                //SemiBarrenRock.Write(outputData);
                //Snow.Write(outputData);

                //WaterRunning.Write(outputData);
                //WaterStandingFresh.Write(outputData);
                //WaterShallowSea.Write(outputData);
                //WaterShallowStillSea.Write(outputData);

                //WaterDeepSea.Write(outputData);
                //Forestfloor.Write(outputData);
                //FauxWaterRunning.Write(outputData);
                //SeaSlime.Write(outputData);

                //Argila.Write(outputData);
                //Volcano1.Write(outputData);
                //Volcano2.Write(outputData);
                //BlueIce.Write(outputData);

                //Moss.Write(outputData);
                //DarkMoss.Write(outputData);
                //olthoi.Write(outputData);
                //DesolateLands.Write(outputData);
                //Road.Write(outputData);

                return(obj);
            }
    private void DoWork()
    {
        Vector3 vector3_1;

        ((Vector3) ref vector3_1).\u002Ector((float)(this.width / 2), 0.0f, (float)(this.height / 2));
        Vector3 vector3_2;

        ((Vector3) ref vector3_2).\u002Ector((float)(this.pivot.x - vector3_1.x), 0.0f, (float)(this.pivot.z - vector3_1.z));
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;
        TerrainAlphaMap  alphaMap  = TerrainMeta.AlphaMap;
        int num1 = 0;

        for (int index = 0; index <= this.height; ++index)
        {
            int num2 = 0;
            while (num2 <= this.width)
            {
                Vector3 worldPos  = Vector3.op_Addition(new Vector3((float)num2, 0.0f, (float)index), vector3_2);
                Vector3 vector3_3 = Vector3.op_Subtraction(new Vector3((float)num2, 0.0f, (float)index), vector3_1);
                float   height    = heightMap.GetHeight(worldPos);
                if ((double)height < -1.0)
                {
                    this.indices.Add(-1);
                }
                else if (this.alpha && (double)alphaMap.GetAlpha(worldPos) < 0.100000001490116)
                {
                    this.indices.Add(-1);
                }
                else
                {
                    if (this.normal)
                    {
                        this.normals.Add(heightMap.GetNormal(worldPos));
                    }
                    worldPos.y = (__Null)(double)(vector3_3.y = (__Null)(height - (float)this.pivot.y));
                    this.indices.Add(this.vertices.Count);
                    this.vertices.Add(vector3_3);
                }
                ++num2;
                ++num1;
            }
        }
        int index1 = 0;
        int num3   = 0;

        while (num3 < this.height)
        {
            int num2 = 0;
            while (num2 < this.width)
            {
                int index2 = this.indices[index1];
                int index3 = this.indices[index1 + this.width + 1];
                int index4 = this.indices[index1 + 1];
                int index5 = this.indices[index1 + 1];
                int index6 = this.indices[index1 + this.width + 1];
                int index7 = this.indices[index1 + this.width + 2];
                if (index2 != -1 && index3 != -1 && index4 != -1)
                {
                    this.triangles.Add(index2);
                    this.triangles.Add(index3);
                    this.triangles.Add(index4);
                }
                if (index5 != -1 && index6 != -1 && index7 != -1)
                {
                    this.triangles.Add(index5);
                    this.triangles.Add(index6);
                    this.triangles.Add(index7);
                }
                ++num2;
                ++index1;
            }
            ++num3;
            ++index1;
        }
    }
    private void DoWork()
    {
        Vector3          vector    = new Vector3(width / 2, 0f, height / 2);
        Vector3          vector2   = new Vector3(pivot.x - vector.x, 0f, pivot.z - vector.z);
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;
        TerrainAlphaMap  alphaMap  = TerrainMeta.AlphaMap;
        int num = 0;

        for (int i = 0; i <= height; i++)
        {
            int num2 = 0;
            while (num2 <= width)
            {
                Vector3 worldPos = new Vector3(num2, 0f, i) + vector2;
                Vector3 item     = new Vector3(num2, 0f, i) - vector;
                float   num3     = heightMap.GetHeight(worldPos);
                if (num3 < -1f)
                {
                    indices.Add(-1);
                }
                else if (alpha && alphaMap.GetAlpha(worldPos) < 0.1f)
                {
                    indices.Add(-1);
                }
                else
                {
                    if (normal)
                    {
                        Vector3 item2 = heightMap.GetNormal(worldPos);
                        normals.Add(item2);
                    }
                    worldPos.y = (item.y = num3 - pivot.y);
                    indices.Add(vertices.Count);
                    vertices.Add(item);
                }
                num2++;
                num++;
            }
        }
        int num4 = 0;
        int num5 = 0;

        while (num5 < height)
        {
            int num6 = 0;
            while (num6 < width)
            {
                int num7  = indices[num4];
                int num8  = indices[num4 + width + 1];
                int num9  = indices[num4 + 1];
                int num10 = indices[num4 + 1];
                int num11 = indices[num4 + width + 1];
                int num12 = indices[num4 + width + 2];
                if (num7 != -1 && num8 != -1 && num9 != -1)
                {
                    triangles.Add(num7);
                    triangles.Add(num8);
                    triangles.Add(num9);
                }
                if (num10 != -1 && num11 != -1 && num12 != -1)
                {
                    triangles.Add(num10);
                    triangles.Add(num11);
                    triangles.Add(num12);
                }
                num6++;
                num4++;
            }
            num5++;
            num4++;
        }
    }