public override void Process()
    {
        RaycastHit raycastHit;
        Collider   component = base.GetComponent <Collider>();
        Bounds     bound     = component.bounds;
        int        num       = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeX(bound.min.x));
        int        num1      = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeZ(bound.max.x));
        int        num2      = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeX(bound.min.z));
        int        num3      = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeZ(bound.max.z));

        for (int i = num2; i <= num3; i++)
        {
            float single = TerrainMeta.HeightMap.Coordinate(i);
            for (int j = num; j <= num1; j++)
            {
                float   single1 = TerrainMeta.HeightMap.Coordinate(j);
                Vector3 vector3 = new Vector3(TerrainMeta.DenormalizeX(single1), bound.max.y, TerrainMeta.DenormalizeZ(single));
                Ray     ray     = new Ray(vector3, Vector3.down);
                if (component.Raycast(ray, out raycastHit, bound.size.y))
                {
                    float single2 = TerrainMeta.NormalizeY(raycastHit.point.y);
                    if (single2 > TerrainMeta.HeightMap.GetHeight01(j, i))
                    {
                        TerrainMeta.HeightMap.SetHeight(j, i, single2);
                    }
                }
            }
        }
        GameManager.Destroy(this, 0f);
    }
Exemplo n.º 2
0
    protected override void ApplyHeight(Matrix4x4 localToWorld, Matrix4x4 worldToLocal)
    {
        if (Radius == 0f)
        {
            Radius = extents.x;
        }
        bool        useBlendMap = blendmap.isValid;
        Vector3     position    = localToWorld.MultiplyPoint3x4(Vector3.zero);
        TextureData heightdata  = new TextureData(heightmap.Get());
        TextureData blenddata   = new TextureData(useBlendMap ? blendmap.Get() : null);
        float       num         = (useBlendMap ? extents.x : Radius);
        float       num2        = (useBlendMap ? extents.z : Radius);
        Vector3     v           = localToWorld.MultiplyPoint3x4(offset + new Vector3(0f - num, 0f, 0f - num2));
        Vector3     v2          = localToWorld.MultiplyPoint3x4(offset + new Vector3(num, 0f, 0f - num2));
        Vector3     v3          = localToWorld.MultiplyPoint3x4(offset + new Vector3(0f - num, 0f, num2));
        Vector3     v4          = localToWorld.MultiplyPoint3x4(offset + new Vector3(num, 0f, num2));

        TerrainMeta.HeightMap.ForEachParallel(v, v2, v3, v4, delegate(int x, int z)
        {
            float normZ   = TerrainMeta.HeightMap.Coordinate(z);
            float normX   = TerrainMeta.HeightMap.Coordinate(x);
            Vector3 point = new Vector3(TerrainMeta.DenormalizeX(normX), 0f, TerrainMeta.DenormalizeZ(normZ));
            Vector3 v5    = worldToLocal.MultiplyPoint3x4(point) - offset;
            float num3    = 1f;
            num3          = ((!useBlendMap) ? Mathf.InverseLerp(Radius, Radius - Fade, v5.Magnitude2D()) : blenddata.GetInterpolatedVector((v5.x + extents.x) / size.x, (v5.z + extents.z) / size.z).w);
            if (num3 != 0f)
            {
                float to = TerrainMeta.NormalizeY(position.y + offset.y + heightdata.GetInterpolatedHalf((v5.x + extents.x) / size.x, (v5.z + extents.z) / size.z) * size.y);
                to       = Mathf.SmoothStep(TerrainMeta.HeightMap.GetHeight01(x, z), to, num3);
                TerrainMeta.HeightMap.SetHeight(x, z, to);
            }
        });
    }
Exemplo n.º 3
0
    protected override void ApplyHeight(Matrix4x4 localToWorld, Matrix4x4 worldToLocal)
    {
        if ((double)this.Radius == 0.0)
        {
            this.Radius = (float)this.extents.x;
        }
        bool        useBlendMap = Object.op_Inequality((Object)this.blendmap, (Object)null);
        Vector3     position    = ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.get_zero());
        TextureData heightdata  = new TextureData(this.heightmap);
        TextureData blenddata   = useBlendMap ? new TextureData(this.blendmap) : new TextureData();

        TerrainMeta.HeightMap.ForEachParallel(((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3(-this.Radius, 0.0f, -this.Radius))), ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3(this.Radius, 0.0f, -this.Radius))), ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3(-this.Radius, 0.0f, this.Radius))), ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3(this.Radius, 0.0f, this.Radius))), (Action <int, int>)((x, z) =>
        {
            float normZ = TerrainMeta.HeightMap.Coordinate(z);
            float normX = TerrainMeta.HeightMap.Coordinate(x);
            Vector3 vector3_1;
            ((Vector3) ref vector3_1).\u002Ector(TerrainMeta.DenormalizeX(normX), 0.0f, TerrainMeta.DenormalizeZ(normZ));
            Vector3 vector3_2 = Vector3.op_Subtraction(((Matrix4x4) ref worldToLocal).MultiplyPoint3x4(vector3_1), this.offset);
            float num1        = !useBlendMap ? Mathf.InverseLerp(this.Radius, this.Radius - this.Fade + Noise.Billow((float)vector3_1.x, (float)vector3_1.z, 4, 0.005f, 0.25f * this.Fade, 2f, 0.5f), Vector3Ex.Magnitude2D(vector3_2)) : (float)blenddata.GetInterpolatedVector((float)((vector3_2.x + this.extents.x) / this.size.x), (float)((vector3_2.z + this.extents.z) / this.size.z)).w;
            if ((double)num1 == 0.0)
            {
                return;
            }
            float num2   = TerrainMeta.NormalizeY((float)(position.y + this.offset.y + (double)heightdata.GetInterpolatedHalf((float)((vector3_2.x + this.extents.x) / this.size.x), (float)((vector3_2.z + this.extents.z) / this.size.z)) * this.size.y));
            float height = Mathf.SmoothStep(TerrainMeta.HeightMap.GetHeight01(x, z), num2, num1);
            TerrainMeta.HeightMap.SetHeight(x, z, height);
        }));
    }
    public void SetHeight(Vector3 worldPos, float opacity, float radius, float fade = 0f)
    {
        float single  = TerrainMeta.NormalizeX(worldPos.x);
        float single1 = TerrainMeta.NormalizeZ(worldPos.z);
        float single2 = TerrainMeta.NormalizeY(worldPos.y);

        this.SetHeight(single, single1, single2, opacity, radius, fade);
    }
Exemplo n.º 5
0
    public void AdjustTerrainHeight()
    {
        TerrainHeightMap   heightMap   = TerrainMeta.HeightMap;
        TerrainTopologyMap topologyMap = TerrainMeta.TopologyMap;
        float   single6       = 1f;
        float   randomScale   = this.RandomScale;
        float   outerPadding  = this.OuterPadding;
        float   innerPadding  = this.InnerPadding;
        float   outerFade     = this.OuterFade;
        float   innerFade     = this.InnerFade;
        float   terrainOffset = this.TerrainOffset * TerrainMeta.OneOverSize.y;
        float   width         = this.Width * 0.5f;
        Vector3 startPoint    = this.Path.GetStartPoint();
        Vector3 endPoint      = this.Path.GetEndPoint();
        Vector3 startTangent  = this.Path.GetStartTangent();
        Vector3 vector32      = PathList.rot90 * startTangent;
        Vector3 vector33      = startPoint - (vector32 * (width + outerPadding + outerFade));
        Vector3 vector34      = startPoint + (vector32 * (width + outerPadding + outerFade));
        float   length        = this.Path.Length + single6;

        for (float i = 0f; i < length; i += single6)
        {
            Vector3 vector35 = (this.Spline ? this.Path.GetPointCubicHermite(i) : this.Path.GetPoint(i));
            float   single7  = (startPoint - vector35).Magnitude2D();
            float   single8  = (endPoint - vector35).Magnitude2D();
            float   single9  = Mathf.InverseLerp(0f, width, Mathf.Min(single7, single8));
            float   single10 = Mathf.Lerp(width, width * randomScale, Noise.Billow(vector35.x, vector35.z, 2, 0.005f, 1f, 2f, 0.5f));
            Vector3 vector36 = this.Path.GetTangent(i).XZ3D();
            startTangent = vector36.normalized;
            vector32     = PathList.rot90 * startTangent;
            Ray     ray      = new Ray(vector35, startTangent);
            Vector3 vector37 = vector35 - (vector32 * (single10 + outerPadding + outerFade));
            Vector3 vector38 = vector35 + (vector32 * (single10 + outerPadding + outerFade));
            float   single11 = TerrainMeta.NormalizeY(vector35.y);
            heightMap.ForEach(vector33, vector34, vector37, vector38, (int x, int z) => {
                float single  = heightMap.Coordinate(x);
                float single1 = heightMap.Coordinate(z);
                if ((topologyMap.GetTopology(single, single1) & this.Topology) != 0)
                {
                    return;
                }
                Vector3 vector3  = TerrainMeta.Denormalize(new Vector3(single, single11, single1));
                Vector3 vector31 = ray.ClosestPoint(vector3);
                float single2    = (vector3 - vector31).Magnitude2D();
                float single3    = Mathf.InverseLerp(single10 + outerPadding + outerFade, single10 + outerPadding, single2);
                float single4    = Mathf.InverseLerp(single10 - innerPadding, single10 - innerPadding - innerFade, single2);
                float single5    = TerrainMeta.NormalizeY(vector31.y);
                single3          = Mathf.SmoothStep(0f, 1f, single3);
                single4          = Mathf.SmoothStep(0f, 1f, single4);
                heightMap.SetHeight(x, z, single5 + terrainOffset * single4, single9 * single3);
            });
            vector33 = vector37;
            vector34 = vector38;
        }
    }
Exemplo n.º 6
0
    public override void Process()
    {
        Collider component = GetComponent <Collider>();
        Bounds   bounds    = component.bounds;
        int      num       = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeX(bounds.min.x));
        int      num2      = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeZ(bounds.max.x));
        int      num3      = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeX(bounds.min.z));
        int      num4      = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeZ(bounds.max.z));

        if (component is BoxCollider && base.transform.rotation == Quaternion.identity)
        {
            float num5 = TerrainMeta.NormalizeY(bounds.max.y);
            for (int i = num3; i <= num4; i++)
            {
                for (int j = num; j <= num2; j++)
                {
                    float height = TerrainMeta.WaterMap.GetHeight01(j, i);
                    if (num5 > height)
                    {
                        TerrainMeta.WaterMap.SetHeight(j, i, num5);
                    }
                }
            }
        }
        else
        {
            for (int k = num3; k <= num4; k++)
            {
                float normZ = TerrainMeta.WaterMap.Coordinate(k);
                for (int l = num; l <= num2; l++)
                {
                    float      normX  = TerrainMeta.WaterMap.Coordinate(l);
                    Vector3    origin = new Vector3(TerrainMeta.DenormalizeX(normX), bounds.max.y + 1f, TerrainMeta.DenormalizeZ(normZ));
                    Ray        ray    = new Ray(origin, Vector3.down);
                    RaycastHit hitInfo;
                    if (component.Raycast(ray, out hitInfo, bounds.size.y + 1f + 1f))
                    {
                        float num6    = TerrainMeta.NormalizeY(hitInfo.point.y);
                        float height2 = TerrainMeta.WaterMap.GetHeight01(l, k);
                        if (num6 > height2)
                        {
                            TerrainMeta.WaterMap.SetHeight(l, k, num6);
                        }
                    }
                }
            }
        }
        GameManager.Destroy(this);
    }
Exemplo n.º 7
0
    public void AdjustTerrainTopology()
    {
        if (this.Topology == 0)
        {
            return;
        }
        TerrainTopologyMap topologyMap = TerrainMeta.TopologyMap;
        float   single3      = 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 + single3;

        for (float i = 0f; i < length; i += single3)
        {
            Vector3 vector34 = (this.Spline ? this.Path.GetPointCubicHermite(i) : this.Path.GetPoint(i));
            float   single4  = (startPoint - vector34).Magnitude2D();
            float   single5  = (endPoint - vector34).Magnitude2D();
            float   single6  = Mathf.InverseLerp(0f, width, Mathf.Min(single4, single5));
            float   single7  = 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 * (single7 + outerPadding));
            Vector3 vector37 = vector34 + (vector31 * (single7 + outerPadding));
            float   single8  = TerrainMeta.NormalizeY(vector34.y);
            topologyMap.ForEach(vector32, vector33, vector36, vector37, (int x, int z) => {
                float single    = topologyMap.Coordinate(x);
                float single1   = topologyMap.Coordinate(z);
                Vector3 vector3 = TerrainMeta.Denormalize(new Vector3(single, single8, single1));
                float single2   = (vector3 - ray.ClosestPoint(vector3)).Magnitude2D();
                if (Mathf.InverseLerp(single7 + outerPadding, single7 - innerPadding, single2) * single6 > 0.3f)
                {
                    topologyMap.SetTopology(x, z, this.Topology);
                }
            });
            vector32 = vector36;
            vector33 = vector37;
        }
    }
Exemplo n.º 8
0
    public override void Process()
    {
        RaycastHit raycastHit;
        Collider   component = base.GetComponent <Collider>();
        Bounds     bound     = component.bounds;
        int        num       = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeX(bound.min.x));
        int        num1      = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeZ(bound.max.x));
        int        num2      = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeX(bound.min.z));
        int        num3      = TerrainMeta.WaterMap.Index(TerrainMeta.NormalizeZ(bound.max.z));

        if (!(component is BoxCollider) || !(base.transform.rotation == Quaternion.identity))
        {
            for (int i = num2; i <= num3; i++)
            {
                float single = TerrainMeta.WaterMap.Coordinate(i);
                for (int j = num; j <= num1; j++)
                {
                    float   single1 = TerrainMeta.WaterMap.Coordinate(j);
                    Vector3 vector3 = new Vector3(TerrainMeta.DenormalizeX(single1), bound.max.y + 1f, TerrainMeta.DenormalizeZ(single));
                    Ray     ray     = new Ray(vector3, Vector3.down);
                    if (component.Raycast(ray, out raycastHit, bound.size.y + 1f + 1f))
                    {
                        float single2 = TerrainMeta.NormalizeY(raycastHit.point.y);
                        if (single2 > TerrainMeta.WaterMap.GetHeight01(j, i))
                        {
                            TerrainMeta.WaterMap.SetHeight(j, i, single2);
                        }
                    }
                }
            }
        }
        else
        {
            float single3 = TerrainMeta.NormalizeY(bound.max.y);
            for (int k = num2; k <= num3; k++)
            {
                for (int l = num; l <= num1; l++)
                {
                    if (single3 > TerrainMeta.WaterMap.GetHeight01(l, k))
                    {
                        TerrainMeta.WaterMap.SetHeight(l, k, single3);
                    }
                }
            }
        }
        GameManager.Destroy(this, 0f);
    }
Exemplo n.º 9
0
    protected override void ApplyHeight(Matrix4x4 localToWorld, Matrix4x4 worldToLocal)
    {
        if (this.Radius == 0f)
        {
            this.Radius = this.extents.x;
        }
        bool        flag          = this.blendmap != null;
        Vector3     vector32      = localToWorld.MultiplyPoint3x4(Vector3.zero);
        TextureData textureDatum  = new TextureData(this.heightmap);
        TextureData textureDatum1 = (flag ? new TextureData(this.blendmap) : new TextureData());
        Vector3     vector33      = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(-this.Radius, 0f, -this.Radius));
        Vector3     vector34      = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(this.Radius, 0f, -this.Radius));
        Vector3     vector35      = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(-this.Radius, 0f, this.Radius));
        Vector3     vector36      = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(this.Radius, 0f, this.Radius));

        TerrainMeta.HeightMap.ForEachParallel(vector33, vector34, vector35, vector36, (int x, int z) => {
            float single             = TerrainMeta.HeightMap.Coordinate(z);
            Vector3 vector3          = new Vector3(TerrainMeta.DenormalizeX(TerrainMeta.HeightMap.Coordinate(x)), 0f, TerrainMeta.DenormalizeZ(single));
            Vector3 vector31         = worldToLocal.MultiplyPoint3x4(vector3) - this.offset;
            float interpolatedVector = 1f;
            if (!flag)
            {
                float single1      = Noise.Billow(vector3.x, vector3.z, 4, 0.005f, 0.25f * this.Fade, 2f, 0.5f);
                interpolatedVector = Mathf.InverseLerp(this.Radius, this.Radius - this.Fade + single1, vector31.Magnitude2D());
            }
            else
            {
                interpolatedVector = textureDatum1.GetInterpolatedVector((vector31.x + this.extents.x) / this.size.x, (vector31.z + this.extents.z) / this.size.z).w;
            }
            if (interpolatedVector == 0f)
            {
                return;
            }
            float single2 = TerrainMeta.NormalizeY(vector32.y + this.offset.y + textureDatum.GetInterpolatedHalf((vector31.x + this.extents.x) / this.size.x, (vector31.z + this.extents.z) / this.size.z) * this.size.y);
            single2       = Mathf.SmoothStep(TerrainMeta.HeightMap.GetHeight01(x, z), single2, interpolatedVector);
            TerrainMeta.HeightMap.SetHeight(x, z, single2);
        });
    }
Exemplo n.º 10
0
    public override void Process()
    {
        Collider component = GetComponent <Collider>();
        Bounds   bounds    = component.bounds;
        int      num       = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeX(bounds.min.x));
        int      num2      = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeZ(bounds.max.x));
        int      num3      = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeX(bounds.min.z));
        int      num4      = TerrainMeta.HeightMap.Index(TerrainMeta.NormalizeZ(bounds.max.z));

        for (int i = num3; i <= num4; i++)
        {
            float normZ = TerrainMeta.HeightMap.Coordinate(i);
            for (int j = num; j <= num2; j++)
            {
                float      normX  = TerrainMeta.HeightMap.Coordinate(j);
                Vector3    origin = new Vector3(TerrainMeta.DenormalizeX(normX), bounds.max.y, TerrainMeta.DenormalizeZ(normZ));
                Ray        ray    = new Ray(origin, Vector3.down);
                RaycastHit hitInfo;
                if (component.Raycast(ray, out hitInfo, bounds.size.y))
                {
                    float num5   = TerrainMeta.NormalizeY(hitInfo.point.y);
                    float height = TerrainMeta.HeightMap.GetHeight01(j, i);
                    if (num5 > height)
                    {
                        TerrainMeta.HeightMap.SetHeight(j, i, num5);
                    }
                }
            }
        }
        if (DestroyGameObject)
        {
            GameManager.Destroy(base.gameObject);
        }
        else
        {
            GameManager.Destroy(this);
        }
    }
Exemplo n.º 11
0
    protected override void ApplyHeight(Matrix4x4 localToWorld, Matrix4x4 worldToLocal)
    {
        Vector3     position   = ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.get_zero());
        TextureData heightdata = new TextureData(this.heightmap);

        TerrainMeta.HeightMap.ForEachParallel(((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3((float)-this.extents.x, 0.0f, (float)-this.extents.z))), ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3((float)this.extents.x, 0.0f, (float)-this.extents.z))), ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3((float)-this.extents.x, 0.0f, (float)this.extents.z))), ((Matrix4x4) ref localToWorld).MultiplyPoint3x4(Vector3.op_Addition(this.offset, new Vector3((float)this.extents.x, 0.0f, (float)this.extents.z))), (Action <int, int>)((x, z) =>
        {
            float normZ = TerrainMeta.HeightMap.Coordinate(z);
            float normX = TerrainMeta.HeightMap.Coordinate(x);
            Vector3 vector3_1;
            ((Vector3) ref vector3_1).\u002Ector(TerrainMeta.DenormalizeX(normX), 0.0f, TerrainMeta.DenormalizeZ(normZ));
            Vector3 vector3_2 = Vector3.op_Subtraction(((Matrix4x4) ref worldToLocal).MultiplyPoint3x4(vector3_1), this.offset);
            float y           = (float)(position.y + this.offset.y + (double)heightdata.GetInterpolatedHalf((float)((vector3_2.x + this.extents.x) / this.size.x), (float)((vector3_2.z + this.extents.z) / this.size.z)) * this.size.y);
            float opacity     = Mathf.InverseLerp((float)position.y, (float)position.y + this.Fade, y);
            if ((double)opacity == 0.0)
            {
                return;
            }
            float num    = TerrainMeta.NormalizeY(y);
            float height = Mathx.SmoothMax(TerrainMeta.HeightMap.GetHeight01(x, z), num, 0.1f);
            TerrainMeta.HeightMap.SetHeight(x, z, height, opacity);
        }));
    }
Exemplo n.º 12
0
    protected override void ApplyHeight(Matrix4x4 localToWorld, Matrix4x4 worldToLocal)
    {
        Vector3     vector32     = localToWorld.MultiplyPoint3x4(Vector3.zero);
        TextureData textureDatum = new TextureData(this.heightmap);
        Vector3     vector33     = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(-this.extents.x, 0f, -this.extents.z));
        Vector3     vector34     = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(this.extents.x, 0f, -this.extents.z));
        Vector3     vector35     = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(-this.extents.x, 0f, this.extents.z));
        Vector3     vector36     = localToWorld.MultiplyPoint3x4(this.offset + new Vector3(this.extents.x, 0f, this.extents.z));

        TerrainMeta.HeightMap.ForEachParallel(vector33, vector34, vector35, vector36, (int x, int z) => {
            float single           = TerrainMeta.HeightMap.Coordinate(z);
            Vector3 vector3        = new Vector3(TerrainMeta.DenormalizeX(TerrainMeta.HeightMap.Coordinate(x)), 0f, TerrainMeta.DenormalizeZ(single));
            Vector3 vector31       = worldToLocal.MultiplyPoint3x4(vector3) - this.offset;
            float u003cu003e4_this = vector32.y + this.offset.y + textureDatum.GetInterpolatedHalf((vector31.x + this.extents.x) / this.size.x, (vector31.z + this.extents.z) / this.size.z) * this.size.y;
            float single1          = Mathf.InverseLerp(vector32.y, vector32.y + this.Fade, u003cu003e4_this);
            if (single1 == 0f)
            {
                return;
            }
            float single2 = TerrainMeta.NormalizeY(u003cu003e4_this);
            single2       = Mathx.SmoothMax(TerrainMeta.HeightMap.GetHeight01(x, z), single2, 0.1f);
            TerrainMeta.HeightMap.SetHeight(x, z, single2, single1);
        });
    }
Exemplo n.º 13
0
 public void RaiseHeight(Vector3 worldPos, float opacity, float radius, float fade = 0.0f)
 {
     this.RaiseHeight(TerrainMeta.NormalizeX((float)worldPos.x), TerrainMeta.NormalizeZ((float)worldPos.z), TerrainMeta.NormalizeY((float)worldPos.y), opacity, radius, fade);
 }