You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.6 KiB
C#
86 lines
2.6 KiB
C#
2 months ago
|
using System;
|
||
|
using D2D.Utilities;
|
||
|
using UnityEngine;
|
||
|
using static D2D.Utilities.SettingsFacade;
|
||
|
using static D2D.Utilities.CommonLazyFacade;
|
||
|
using static D2D.Utilities.CommonGameplayFacade;
|
||
|
|
||
|
namespace D2D
|
||
|
{
|
||
|
public static class PowerManSugar
|
||
|
{
|
||
|
public static float DistanceTo(this Vector3 from, Vector3 to)
|
||
|
{
|
||
|
return (from - to).magnitude;
|
||
|
}
|
||
|
|
||
|
public static float DistanceTo(this Transform from, Transform to)
|
||
|
{
|
||
|
return (from.position - to.position).magnitude;
|
||
|
}
|
||
|
|
||
|
public static float Abs(this float f)
|
||
|
{
|
||
|
return Mathf.Abs(f);
|
||
|
}
|
||
|
|
||
|
public static int Abs(this int f)
|
||
|
{
|
||
|
return Mathf.Abs(f);
|
||
|
}
|
||
|
|
||
|
|
||
|
public static bool FlipCoin(this int f)
|
||
|
{
|
||
|
return DMath.RandomSign() > 0;
|
||
|
}
|
||
|
|
||
|
public static int RandomSign(this int f)
|
||
|
{
|
||
|
return DMath.RandomSign();
|
||
|
}
|
||
|
|
||
|
public static bool FlipCoin()
|
||
|
{
|
||
|
return DMath.RandomSign() > 0;
|
||
|
}
|
||
|
|
||
|
public static bool Yes(this float chance)
|
||
|
{
|
||
|
return DMath.Random(0f, 1f) <= chance;
|
||
|
}
|
||
|
|
||
|
public static bool No(this float chance)
|
||
|
{
|
||
|
return !chance.Yes();
|
||
|
}
|
||
|
|
||
|
public static Vector3 RandomPointInsideBoxY0(this float a, bool includeNegative = true)
|
||
|
{
|
||
|
return DMath.RandomPointInsideBox(a, 0, a, includeNegative);
|
||
|
}
|
||
|
|
||
|
public static Vector3 RandomPointInsideBox(this Vector3 v, bool includeNegative = true)
|
||
|
{
|
||
|
int k = includeNegative ? 1 : 0;
|
||
|
float randomX = DMath.Random(-v.x * k, v.x);
|
||
|
float randomY = DMath.Random(-v.y * k, v.y);
|
||
|
float randomZ = DMath.Random(-v.z * k, v.z);
|
||
|
return new Vector3(randomX, randomY, randomZ);
|
||
|
}
|
||
|
|
||
|
public static void AddForceAndTorque(this Rigidbody rb, Transform target, Vector2 force, Vector2 torque)
|
||
|
{
|
||
|
var d = target.position - rb.transform.position;
|
||
|
|
||
|
rb.AddForce(d.normalized * force.RandomFloat(), ForceMode.Impulse);
|
||
|
rb.AddTorque(DMath.RandomPointInsideBox(torque.RandomFloat()), ForceMode.Impulse);
|
||
|
}
|
||
|
|
||
|
public static void AddExplosiveForceAndTorque(this Rigidbody rb, Transform target, Vector2 force, Vector2 r, Vector2 u, Vector2 torque)
|
||
|
{
|
||
|
rb.AddExplosionForce(force.RandomFloat(), target.position, r.RandomFloat(), u.RandomFloat());
|
||
|
rb.AddTorque(DMath.RandomPointInsideBox(torque.RandomFloat()), ForceMode.Impulse);
|
||
|
}
|
||
|
}
|
||
|
}
|