Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/MegaSpherify.cs
2026-02-21 16:45:37 +08:00

89 lines
1.9 KiB
C#

using UnityEngine;
[AddComponentMenu("Modifiers/Spherify")]
public class MegaSpherify : MegaModifier
{
public float percent;
public float FallOff;
private float per;
private float xsize;
private float ysize;
private float zsize;
private float size;
private float cx;
private float cy;
private float cz;
public override string ModName()
{
return "Spherify";
}
public override string GetHelpURL()
{
return "?page_id=322";
}
public override Vector3 Map(int i, Vector3 p)
{
p = tm.MultiplyPoint3x4(p);
float num = p.x - cx;
float num2 = p.y - cy;
float num3 = p.z - cz;
if (num == 0f && num2 == 0f && num3 == 0f)
{
num = (num2 = (num3 = 1f));
}
float num4 = Mathf.Sqrt(num * num + num2 * num2 + num3 * num3);
float num5 = size / num4;
float num6 = Mathf.Exp((0f - FallOff) * Mathf.Abs(num4));
p.x = cx + num + Mathf.Sign(num) * ((Mathf.Abs(num * num5) - Mathf.Abs(num)) * per) * num6;
p.y = cy + num2 + Mathf.Sign(num2) * ((Mathf.Abs(num2 * num5) - Mathf.Abs(num2)) * per) * num6;
p.z = cz + num3 + Mathf.Sign(num3) * ((Mathf.Abs(num3 * num5) - Mathf.Abs(num3)) * per) * num6;
return invtm.MultiplyPoint3x4(p);
}
public override void ModStart(MegaModifiers mc)
{
xsize = bbox.max.x - bbox.min.x;
ysize = bbox.max.y - bbox.min.y;
zsize = bbox.max.z - bbox.min.z;
size = ((!(xsize > ysize)) ? ysize : xsize);
size = ((!(zsize > size)) ? size : zsize);
size /= 2f;
cx = bbox.center.x;
cy = bbox.center.y;
cz = bbox.center.z;
per = percent / 100f;
}
public override bool ModLateUpdate(MegaModContext mc)
{
return Prepare(mc);
}
public override bool Prepare(MegaModContext mc)
{
xsize = bbox.max.x - bbox.min.x;
ysize = bbox.max.y - bbox.min.y;
zsize = bbox.max.z - bbox.min.z;
size = ((!(xsize > ysize)) ? ysize : xsize);
size = ((!(zsize > size)) ? size : zsize);
size /= 2f;
cx = bbox.center.x;
cy = bbox.center.y;
cz = bbox.center.z;
per = percent / 100f;
return true;
}
}