public static class Utils
Class full of utilites that are widely used throughout the game
Nested types
Fields
public const float UnitsToMeters
Multiply this by an amount of units to get back the amount meters it represents
Constant value: Global.MetricMultiplier
public const float MetersToUnits
Multiply this by an amount of meters to get back the amount units it represents
Constant value: 1f / Global.MetricMultiplier
public const float E
Euler's number
Constant value: 2.718281828459045f
Methods
public static bool HasLayer(this LayerMask mask, int layer)
Does the current LayerMask have the given layer enabled? This is an extension method.
public static void Fill(this T[] array, T val)
No description provided
public static Vector2 ClosestPointFix(this Rigidbody2D rb, Vector2 point)
I absolutely fucking hate Unity
public static float SmoothApproach(float pastPosition, float targetPosition, float speed, float deltaTime)
Do magic maths to make a value approach another smoothly over time
public static Vector2 SmoothApproach(Vector2 pastPosition, Vector2 targetPosition, float speed, float deltaTime)
Do magic maths to make a value approach another smoothly over time
public static bool UniverseMatches(this ActionRepresentation.ActionUniverse uni, ActionRepresentation.ActionUniverse other)
Does the current ActionRepresentation.ActionUniverse
match the given universe? This is an extension method.
public static void AddRange(this HashSet<T> hashset, IEnumerable<T> range)
Adds a collection to the HashSet. This is an extension method.
public static float DistanceFromPointToLineSegment(Vector2 point, Vector2 lineEnd1, Vector2 lineEnd2)
Calculates the smallest distance from a point to the given line segment
public static float SqrdDistanceFromPointToLineSegment(Vector2 point, Vector2 lineEnd1, Vector2 lineEnd2)
Calculates the smallest distance from a point to the given line segment
public static T PickRandom(this IList<T> collection)
Pick a random entry from a collection. This is an extension method.
public static T PickRandom(this IList<T> collection, int count)
Pick a random entry from a collection. This is an extension method.
public static float Cosh(float x)
oh my cosh
public static void LiquidMixProcess( BloodContainer container, Liquid a, Liquid b, Liquid result, float delta = 0.05f)
Mix two liquids inside a container. This calls all the proper functions and should always be used if you are mixing liquids inside a container.
public static void LiquidMixProcess( BloodContainer container, Liquid a, Liquid b, Liquid c, Liquid result, float delta = 0.05f)
Mix three liquids inside a container. This calls all the proper functions and should always be used if you are mixing liquids inside a container.
public static void LiquidMixProcess( BloodContainer container, Liquid a, Liquid b, Liquid c, Liquid d, Liquid result, float delta = 0.05f)
Mix four liquids inside a container. This calls all the proper functions and should always be used if you are mixing liquids inside a container.
public static void LiquidMixProcess(BloodContainer container, Liquid[] a, Liquid result, float delta = 0.05f)
Mix n liquids inside a container. This calls all the proper functions and should always be used if you are mixing liquids inside a container.
public static void UpdateOutlineMaterial(ref MaterialPropertyBlock propertyBlock, SpriteRenderer outlineSpriteRenderer, Sprite targetSprite)
Update the outline material property block based on the given renderer and sprite
public static float NaNFallback(this float f, float fallback = 0)
Returns the fallback if the given float is NaN. This is an extension method.
public static Vector2 NaNFallback(this Vector2 f, float fallback = 0)
Returns the fallback if the given float is NaN. This is an extension method.
public static float RandomBetween(Vector2 range)
Returns a random value between the given vector's components
public static Color ChangeRedToOrange(in Color color, float fuzzinessDegrees = 0.03f)
Just in case the colour is red (blood), it will be changed to orange
public static void SetPointVelocity(this Rigidbody2D body, Vector2 vel, Vector2 position)
Set the velocity at the given point in world space. This is an extension method.
public static Bounds GetWorldSpaceBounds(this RectTransform rect)
Calculates the world space bounds of the given RectTransform. This is an extension method.
public static string EscapeRichText(string v)
Escape all rich text from the given string
public static void TransferEnergyFixedRate(PhysicalBehaviour a, PhysicalBehaviour b, float rate = 0.89f)
Transfer electricity between two physical objects based on a constant rate. This has to be called in a fixed update step.
public static void TransferEnergyDeltaTime(PhysicalBehaviour a, PhysicalBehaviour b, float rate, float dt)
Transfer electricity between two physical objects based on a constant rate and a given timestep. This has to be called in an update step.
public static void AverageTemperature(PhysicalBehaviour a, PhysicalBehaviour b, float transferFactor = 0.01f)
Average the temperature between two physical objects based on a constant rate.
public static float GetMinHeatTransferSpeed(PhysicalBehaviour a, PhysicalBehaviour b)
Get the minumum of both object's heat transfer speed
public static string GetHierachyPath(Transform transform)
Get the unique hierarchy path for the transform
public static IEnumerator DelayCoroutine(float delayInSeconds, Action action)
Routine that waits the given amount of seconds and then calls the given function
public static IEnumerator NextFrameCoroutine(Action action)
Routine that waits a frame and then calls the given function
public static float Triangle(float x)
Triangle wave with the same frequency as a sine wave
public static async Task<T> HttpGet(string uri)
Generic HTTP GET function
public static async Task<HttpResponseMessage> HttpPost(string uri, string body)
HTTP POST function
public static async Task<byte[]> HttpDownload(string uri)
Downloads the data at the given endpoint
public static float PreferenceToCelsius(float i)
Converts the given amount to Celsius assuming it's given in whatever the current user preference is set to
public static float CelsiusToPreference(float i)
Converts the given amount to whatever the current user preference is set to assuming it's given in Celsius
public static float CelsiusToFahrenheit(float i)
Degrees Celsius to degrees Fahrenheit
public static float CelsiusToKelvin(float i)
Degrees Celsius to Kelvin
public static float FahrenheitToCelsius(float i)
Degrees Fahrenheit to degrees Celsius
public static float KelvinToCelsius(float i)
Kelvin to degrees Celsius
public static string GetTemperatureUnitSuffix(TemperatureUnit unit)
Returns the unit suffix for the given TemperatureUnit
.
public static void DrawCross(Vector3 center, float size, Color color, float duration)
Debug draw a cross
public static byte[] GetMD5(byte[] bytes)
Get the MD5 hash for the given data
public static byte[] GetMD5(string input)
Get the MD5 hash for the given data
public static string GetMD5AsString(string input)
Get the MD5 hash as a string for the given data
public static byte[] GetMD5ForFile(string filePath)
Get the MD5 hash as for the given file
public static Vector3 GetPerlin2Mapped(float x, float y)
Get 2 axes of perlin noise at the given 2D coordinate, returning value ranging from -1, 1
public static float MapRange(float lower1, float upper1, float lower2, float upper2, float value)
Map a value from one range to another
public static T GetMin(ICollection<T> collection, Func<T, float> singleFunc)
Return the smallest value in the collection based on the given function's result
public static SpriteRenderer GetOutlineSprite(Transform transform)
[System.Obsolete]
Returns the outline sprite on the given transform. Null if it has none. This method is cringe. Do not use.
public static bool IsSerialisableType(Type type)
Is the given type serialisable by the contraption serialisation system?
public static string GetFormattedByteString(ulong b)
Turns a countable amount into a formatted string with a proper suffix.Example: GetFormattedByteString(1000) outputs "1 kB"
public static LaserHit MaterialAwareRaycast(Vector2 origin, Vector2 dir, float maxDistance, LayerMask layers, int maxSteps = 8, int depth = 0, float currentDistance = 0)
Raycasts through the world considering physical properties. It will go through glass but won't reflect off of mirrors.
public static float Snap(float v, float snap)
Snap a value to a grid of the given resolution
public static Vector3 Snap(Vector3 v, float snap)
Snap a value to a grid of the given resolution
public static Vector3 Rotate(Vector2 point, float degrees, Vector2 pivot = default)
Rotate a point around another point
public static float NormaliseAngle(float degrees)
Puts the given degrees in a range from 0 to 360.
public static float Mod(float a, float b)
Modulo
public static void GetLaserEndPoint(Vector2 origin, Vector2 dir, ref List<LaserHit> list, LayerMask layers, float maximumDistance, uint maxIterations = 64)
Does a whole laser raycast considering mirrors and glass. It puts all hit points inside the given list.
public static bool IsFamilyShared()
Returns true if the game is not actually owened by the current account or if either account is invalid.If Steam is not available, this function will return false;
public static void OpenURL(string url)
Opens the given URL in the browser or Steam Overlay if applicable
public static Sprite LoadSprite(string fullPath, FilterMode mode = FilterMode.Bilinear, float pixelsPerUnit = 35f, bool markNonReadable = true)
Loads the sprite at the given file path
public static Texture2D LoadTexture(string fullPath, FilterMode mode = FilterMode.Bilinear, bool markNonReadable = true)
Loads the texture at the given file path
public static AudioClip FileToAudioClip(string path)
Loads the sound at the given path
public static void GetTopMostLayer(SpriteRenderer a, SpriteRenderer b, out int layerId, out int sortingOrder)
Get the topmost layer out of the two given renderers
public static byte br(this Color color)
Returns the red component of the given colour as a byte
public static byte bg(this Color color)
Returns the green component of the given colour as a byte
public static byte bb(this Color color)
Returns the blue component of the given colour as a byte
public static void FixColliders(this GameObject instance)
Removes all colliders from the object and adds a PolygonCollider2D
public static T GetOrAddComponent(this GameObject instance)
Gets or adds a component of the given type on the given GameObject
public static bool HasComponent(this GameObject instance)
Returns true of a component of type exists on the game object
public static void SendAllChannelIsolatedActivation(MonoBehaviour other)
Sends an isolated activation signal on all channels to the given MonoBehaviour
public static void SendAllChannelContinuousIsolatedActivation(MonoBehaviour other)
Sends a continuous isolated activation signal on all channels to the given MonoBehaviour
public static T LoadAddressableSync(string key)
[System.Obsolete]
No description provided
public static void AssertValidThumbnail(string path)
Throws an exception if the thumbnail file at the given location is invalid
public static float GetLerpFactorDeltaTime(float lerpFactor, float deltaTime)
Calculates the lerp factor for the given timestep
public static float CalculateBreakForceForCable(AnchoredJoint2D joint, float baseStrength, float referenceMass = 5, float massInfluence = 1)
Calculates the break force threshold for the given joint, based on the given parameters
public static void SetLayer(this GameObject gm, int layer, bool includeChildren = true)
Sets the layer of the given GameObject. This is an extension method.
public static float GetMaxImpulse(ContactPoint2D[] buffer, int count)
Gets the greatest impulse from the given array
public static float GetAverageImpulse(ContactPoint2D[] buffer, int count)
Gets the average impulse from the given array
public static float GetAverageImpulseRemoveOutliers(ContactPoint2D[] buffer, int count, float outlierThreshold = 1)
Gets the average impulse from the given array, removing all outliers outside a range
public static float GetMinImpulse(ContactPoint2D[] buffer, int count)
Gets the smallest impulse from the given array
public static ContactPoint2D GetFirstValidContact(ContactPoint2D[] buffer, int count)
Get the first valid contact point. Returns the default contact point if no valid one is found.
public static bool IsPointInsideBounds(this Bounds bounds, Vector2 point)
Returns true if the given point is inside the bounds. This is an extension method.
public static bool ContainsExpanded(this Bounds bounds, Vector2 point, float expansion = 0)
Returns true if the given point is inside the bounds considering the given bounds expansion. This is an extension method.
public static bool AreHdrRenderTexturesSupported()
Returns true if HDR RenderTextures are supported.
public static void OpenFloatInputDialog(float defaultValue, T callingBehaviour, Action<T, float> setValueFunction, string text, string placeholder)
Open an input dialog box that accepts numbers
public static void OpenTextInputDialog(string defaultValue, T callingBehaviour, Action<T, string> setValueFunction, string message, string placeholder)
Open an input dialog box that accepts text
public static void OpenColourInputDialog(Color initialValue, string title, string description, Action<T, Color> setValueFunction)
Open an input dialog box that accepts colour
public static Vector2 CastRayUntilOutside(GameObject targetBody, Vector2 minPoint, Vector2 direction, float distance, Collider2D[] buffer = null)
Cast a ray from a point (inside or outside a body) until it comes out the other end of the body, then return that position. You can provide a Collider2D
buffer, but it uses an internal one if left to null.
public static async Task<T> TaskTimeout(Task<T> task, TimeSpan timeout)
No description provided
public static int ComputeConvexHull(Vector2[] points, List<Vector2> hull)
No description provided