29 m_unk0x00[0] = p_point1;
30 m_unk0x00[1] = p_point2;
32 for (
LegoS32 i = 0; i < 3; i++) {
33 m_unk0x00[2][i] = (p_point3[i] - p_point1[i]) * 3.0f - p_point2[i] * 2.0f - p_point4[i];
34 m_unk0x00[3][i] = (p_point1[i] - p_point3[i]) * 2.0f + p_point4[i] + p_point2[i];
51 else if (p_f1 >= 0.999) {
57 for (
LegoS32 i = 0; i < 3; i++) {
58 v4[i] = m_unk0x00[1][i] + m_unk0x00[2][i] * 2.0f + m_unk0x00[3][i] * 3.0f;
62 float local30 = p_f1 * p_f1;
63 float local34 = local30 * p_f1;
65 for (
LegoS32 i = 0; i < 3; i++) {
66 v1[i] = m_unk0x00[0][i] + m_unk0x00[1][i] * p_f1 + m_unk0x00[2][i] * local30 + m_unk0x00[3][i] * local34;
67 v4[i] = m_unk0x00[1][i] + m_unk0x00[2][i] * p_f1 * 2.0f + m_unk0x00[3][i] * local30 * 3.0f;
Opaque Bezier curve utility used for actor or path position interpolation.
LegoResult FUN_1009a1e0(float p_f1, Matrix4 &p_mat, Vector3 &p_v, LegoU32 p_und)
[AI] Evaluates the curve and its tangent at p_f1 and computes the local orthonormal frame.
void FUN_1009a140(const Vector3 &p_point1, const Vector3 &p_point2, const Vector3 &p_point3, const Vector3 &p_point4)
[AI] Configure internal curve control points.
~LegoUnknown()
[AI] Destructor (no-op).
4x4 Matrix class with virtual interface for manipulation and transformation.
virtual int Unitize()
[AI] Scales the vector so its norm is 1 (unit vector).
[AI] 3D vector class, providing vector and cross-product operations in 3D space.
virtual void EqualsCross(const Vector3 &p_a, const Vector3 &p_b)
[AI] Sets this vector to be the cross product of p_a and p_b.
#define DECOMP_SIZE_ASSERT(T, S)
unsigned long LegoU32
[AI] Unsigned 32-bit integer type for cross-platform compatibility.
#define FAILURE
[AI] Used to indicate a failed operation in result codes.
LegoS32 LegoResult
[AI] Function result type (return code): typically SUCCESS (0) or FAILURE (-1).
long LegoS32
[AI] Signed 32-bit integer type for cross-platform compatibility.
#define SUCCESS
[AI] Used to indicate a successful operation in result codes.