public static bool ApplyTerrainFilters( this Transform transform, TerrainFilter[] filters, Vector3 pos, Quaternion rot, Vector3 scale, SpawnFilter globalFilter = null) { if (filters.Length == 0) { return(true); } for (int index = 0; index < filters.Length; ++index) { TerrainFilter filter = filters[index]; Vector3 vector3_1 = Vector3.Scale(filter.worldPosition, scale); Vector3 vector3_2 = Quaternion.op_Multiply(rot, vector3_1); Vector3 vector3_3 = Vector3.op_Addition(pos, vector3_2); if (TerrainMeta.OutOfBounds(vector3_3) || globalFilter != null && (double)globalFilter.GetFactor(vector3_3) == 0.0 || !filter.Check(vector3_3)) { return(false); } } return(true); }
public static bool ApplyTerrainChecks(this Transform transform, TerrainCheck[] anchors, Vector3 pos, Quaternion rot, Vector3 scale, SpawnFilter filter = null) { if (anchors.Length == 0) { return(true); } for (int i = 0; i < (int)anchors.Length; i++) { TerrainCheck terrainCheck = anchors[i]; Vector3 vector3 = Vector3.Scale(terrainCheck.worldPosition, scale); if (terrainCheck.Rotate) { vector3 = rot * vector3; } Vector3 vector31 = pos + vector3; if (TerrainMeta.OutOfBounds(vector31)) { return(false); } if (filter != null && filter.GetFactor(vector31) == 0f) { return(false); } if (!terrainCheck.Check(vector31)) { return(false); } } return(true); }
public static bool ApplyTerrainChecks( this Transform transform, TerrainCheck[] anchors, Vector3 pos, Quaternion rot, Vector3 scale, SpawnFilter filter = null) { if (anchors.Length == 0) { return(true); } for (int index = 0; index < anchors.Length; ++index) { TerrainCheck anchor = anchors[index]; Vector3 vector3_1 = Vector3.Scale(anchor.worldPosition, scale); if (anchor.Rotate) { vector3_1 = Quaternion.op_Multiply(rot, vector3_1); } Vector3 vector3_2 = Vector3.op_Addition(pos, vector3_1); if (TerrainMeta.OutOfBounds(vector3_2) || filter != null && (double)filter.GetFactor(vector3_2) == 0.0 || !anchor.Check(vector3_2)) { return(false); } } return(true); }
public static bool ApplyTerrainFilters(this Transform transform, TerrainFilter[] filters, Vector3 pos, Quaternion rot, Vector3 scale, SpawnFilter globalFilter = null) { if (filters.Length == 0) { return(true); } for (int i = 0; i < (int)filters.Length; i++) { TerrainFilter terrainFilter = filters[i]; Vector3 vector3 = Vector3.Scale(terrainFilter.worldPosition, scale); vector3 = rot * vector3; Vector3 vector31 = pos + vector3; if (TerrainMeta.OutOfBounds(vector31)) { return(false); } if (globalFilter != null && globalFilter.GetFactor(vector31) == 0f) { return(false); } if (!terrainFilter.Check(vector31)) { return(false); } } return(true); }
public static bool ApplyTerrainAnchors(this Transform transform, TerrainAnchor[] anchors, ref Vector3 pos, Quaternion rot, Vector3 scale, TerrainAnchorMode mode, SpawnFilter filter = null) { float single; float single1; float single2; if (anchors.Length == 0) { return(true); } float single3 = 0f; float single4 = Single.MinValue; float single5 = Single.MaxValue; for (int i = 0; i < (int)anchors.Length; i++) { TerrainAnchor terrainAnchor = anchors[i]; Vector3 vector3 = Vector3.Scale(terrainAnchor.worldPosition, scale); vector3 = rot * vector3; Vector3 vector31 = pos + vector3; if (TerrainMeta.OutOfBounds(vector31)) { return(false); } if (filter != null && filter.GetFactor(vector31) == 0f) { return(false); } terrainAnchor.Apply(out single, out single1, out single2, vector31); single3 = single3 + (single - vector3.y); single4 = Mathf.Max(single4, single1 - vector3.y); single5 = Mathf.Min(single5, single2 - vector3.y); if (single5 < single4) { return(false); } } if (mode != TerrainAnchorMode.MinimizeError) { pos.y = Mathf.Clamp(pos.y, single4, single5); } else { pos.y = Mathf.Clamp(single3 / (float)((int)anchors.Length), single4, single5); } return(true); }
public static bool IsInTerrain(Vector3 vPoint) { if (TerrainMeta.OutOfBounds(vPoint)) { return(false); } if (!Object.op_Implicit((Object)TerrainMeta.Collision) || !TerrainMeta.Collision.GetIgnore(vPoint, 0.01f)) { foreach (Terrain activeTerrain in Terrain.get_activeTerrains()) { if ((double)activeTerrain.SampleHeight(vPoint) + ((Component)activeTerrain).get_transform().get_position().y > vPoint.y) { return(true); } } } return(Physics.Raycast(new Ray(Vector3.op_Addition(vPoint, Vector3.op_Multiply(Vector3.get_up(), 3f)), Vector3.get_down()), 3f, 65536)); }
public static bool ApplyTerrainAnchors( this Transform transform, TerrainAnchor[] anchors, ref Vector3 pos, Quaternion rot, Vector3 scale, TerrainAnchorMode mode, SpawnFilter filter = null) { if (anchors.Length == 0) { return(true); } float num1 = 0.0f; float num2 = float.MinValue; float num3 = float.MaxValue; for (int index = 0; index < anchors.Length; ++index) { TerrainAnchor anchor = anchors[index]; Vector3 vector3_1 = Vector3.Scale(anchor.worldPosition, scale); Vector3 vector3_2 = Quaternion.op_Multiply(rot, vector3_1); Vector3 vector3_3 = Vector3.op_Addition(pos, vector3_2); if (TerrainMeta.OutOfBounds(vector3_3) || filter != null && (double)filter.GetFactor(vector3_3) == 0.0) { return(false); } float height; float min; float max; anchor.Apply(out height, out min, out max, vector3_3); num1 += height - (float)vector3_2.y; num2 = Mathf.Max(num2, min - (float)vector3_2.y); num3 = Mathf.Min(num3, max - (float)vector3_2.y); if ((double)num3 < (double)num2) { return(false); } } pos.y = mode != TerrainAnchorMode.MinimizeError ? (__Null)(double)Mathf.Clamp((float)pos.y, num2, num3) : (__Null)(double)Mathf.Clamp(num1 / (float)anchors.Length, num2, num3); return(true); }
public static bool IsInTerrain(Vector3 vPoint) { if (TerrainMeta.OutOfBounds(vPoint)) { return(false); } if (!TerrainMeta.Collision || !TerrainMeta.Collision.GetIgnore(vPoint, 0.01f)) { Terrain[] terrainArray = Terrain.activeTerrains; for (int i = 0; i < (int)terrainArray.Length; i++) { Terrain terrain = terrainArray[i]; if (terrain.SampleHeight(vPoint) + terrain.transform.position.y > vPoint.y) { return(true); } } } if (Physics.Raycast(new Ray(vPoint + (Vector3.up * 3f), Vector3.down), 3f, 65536)) { return(true); } return(false); }