コード例 #1
0
    public override void Process(uint seed)
    {
        TerrainSplatMap splatMap = TerrainMeta.SplatMap;
        int             splatres = splatMap.res;

        Parallel.For(0, splatres, delegate(int z)
        {
            for (int i = 0; i < splatres; i++)
            {
                Process(i, z);
            }
        });
    }
コード例 #2
0
    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;
    }
コード例 #3
0
    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
    public static void Process(int x, int z)
    {
        TerrainSplatMap splatMap = TerrainMeta.SplatMap;
        float           normZ    = splatMap.Coordinate(z);
        float           normX    = splatMap.Coordinate(x);

        if ((TerrainMeta.TopologyMap.GetTopology(normX, normZ) & 0x800400) == 0)
        {
            float slope = TerrainMeta.HeightMap.GetSlope(normX, normZ);
            if (slope > 30f)
            {
                splatMap.SetSplat(x, z, 8, Mathf.InverseLerp(30f, 50f, slope));
            }
        }
    }
コード例 #5
0
    public static void Process(int x, int z)
    {
        TerrainSplatMap splatMap = TerrainMeta.SplatMap;
        float           single   = splatMap.Coordinate(z);
        float           single1  = splatMap.Coordinate(x);

        if ((TerrainMeta.TopologyMap.GetTopology(single1, single) & 8389632) == 0)
        {
            float slope = TerrainMeta.HeightMap.GetSlope(single1, single);
            if (slope > 30f)
            {
                splatMap.SetSplat(x, z, 8, Mathf.InverseLerp(30f, 50f, slope));
            }
        }
    }
コード例 #6
0
    public void AdjustTerrainTexture()
    {
        if (this.Splat == 0)
        {
            return;
        }
        TerrainSplatMap splatMap     = TerrainMeta.SplatMap;
        float           single4      = 1f;
        float           randomScale  = this.RandomScale;
        float           outerPadding = this.OuterPadding;
        float           innerPadding = this.InnerPadding;
        float           width        = this.Width * 0.5f;
        Vector3         startPoint   = this.Path.GetStartPoint();
        Vector3         endPoint     = this.Path.GetEndPoint();
        Vector3         startTangent = this.Path.GetStartTangent();
        Vector3         vector31     = PathList.rot90 * startTangent;
        Vector3         vector32     = startPoint - (vector31 * (width + outerPadding));
        Vector3         vector33     = startPoint + (vector31 * (width + outerPadding));
        float           length       = this.Path.Length + single4;

        for (float i = 0f; i < length; i += single4)
        {
            Vector3 vector34 = (this.Spline ? this.Path.GetPointCubicHermite(i) : this.Path.GetPoint(i));
            float   single5  = (startPoint - vector34).Magnitude2D();
            float   single6  = (endPoint - vector34).Magnitude2D();
            float   single7  = Mathf.InverseLerp(0f, width, Mathf.Min(single5, single6));
            float   single8  = Mathf.Lerp(width, width * randomScale, Noise.Billow(vector34.x, vector34.z, 2, 0.005f, 1f, 2f, 0.5f));
            Vector3 vector35 = this.Path.GetTangent(i).XZ3D();
            startTangent = vector35.normalized;
            vector31     = PathList.rot90 * startTangent;
            Ray     ray      = new Ray(vector34, startTangent);
            Vector3 vector36 = vector34 - (vector31 * (single8 + outerPadding));
            Vector3 vector37 = vector34 + (vector31 * (single8 + outerPadding));
            float   single9  = TerrainMeta.NormalizeY(vector34.y);
            splatMap.ForEach(vector32, vector33, vector36, vector37, (int x, int z) => {
                float single    = splatMap.Coordinate(x);
                float single1   = splatMap.Coordinate(z);
                Vector3 vector3 = TerrainMeta.Denormalize(new Vector3(single, single9, single1));
                float single2   = (vector3 - ray.ClosestPoint(vector3)).Magnitude2D();
                float single3   = Mathf.InverseLerp(single8 + outerPadding, single8 - innerPadding, single2);
                splatMap.SetSplat(x, z, this.Splat, single3 * single7);
            });
            vector32 = vector36;
            vector33 = vector37;
        }
    }
コード例 #7
0
    public static void Process(int x, int z)
    {
        TerrainSplatMap splatMap = TerrainMeta.SplatMap;
        float           normZ    = splatMap.Coordinate(z);
        float           normX    = splatMap.Coordinate(x);

        if ((TerrainMeta.TopologyMap.GetTopology(normX, normZ) & 8389632) != 0)
        {
            return;
        }
        float slope = TerrainMeta.HeightMap.GetSlope(normX, normZ);

        if ((double)slope <= 30.0)
        {
            return;
        }
        splatMap.SetSplat(x, z, 8, Mathf.InverseLerp(30f, 50f, slope));
    }
コード例 #8
0
 public override void Setup()
 {
     this.splat     = (TerrainSplatMap)((Component)this.terrain).GetComponent <TerrainSplatMap>();
     this.materials = this.config.GetPhysicMaterials();
 }
コード例 #9
0
 public override void Setup()
 {
     this.splatMap = (TerrainSplatMap)((Component)this.terrain).GetComponent <TerrainSplatMap>();
     this.biomeMap = (TerrainBiomeMap)((Component)this.terrain).GetComponent <TerrainBiomeMap>();
 }