54 lines
1.0 KiB
C#
54 lines
1.0 KiB
C#
using UnityEngine;
|
|
|
|
[AddComponentMenu("Modifiers/FFD/FFD 2x2x2")]
|
|
public class MegaFFD2x2x2 : MegaFFD
|
|
{
|
|
public override string ModName()
|
|
{
|
|
return "FFD2x2x2";
|
|
}
|
|
|
|
public override int GridSize()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public override Vector3 Map(int ii, Vector3 p)
|
|
{
|
|
Vector3 zero = Vector3.zero;
|
|
Vector3 vector = tm.MultiplyPoint3x4(p);
|
|
if (inVol)
|
|
{
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
if (vector[i] < 0f - EPSILON || vector[i] > 1f + EPSILON)
|
|
{
|
|
return p;
|
|
}
|
|
}
|
|
}
|
|
for (int j = 0; j < 2; j++)
|
|
{
|
|
float num = ((j != 0) ? vector.x : (1f - vector.x));
|
|
for (int k = 0; k < 2; k++)
|
|
{
|
|
float num2 = num * ((k != 0) ? vector.y : (1f - vector.y));
|
|
for (int l = 0; l < 2; l++)
|
|
{
|
|
float num3 = num2 * ((l != 0) ? vector.z : (1f - vector.z));
|
|
int num4 = j * 4 + k * 2 + l;
|
|
zero.x += pt[num4].x * num3;
|
|
zero.y += pt[num4].y * num3;
|
|
zero.z += pt[num4].z * num3;
|
|
}
|
|
}
|
|
}
|
|
return invtm.MultiplyPoint3x4(zero);
|
|
}
|
|
|
|
public override int GridIndex(int i, int j, int k)
|
|
{
|
|
return i * 4 + j * 2 + k;
|
|
}
|
|
}
|