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; } }