Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CreateBillboard()

static Matrix4x4 System.Numerics.Matrix4x4.CreateBillboard ( Vector3 objectPosition,
Vector3 cameraPosition,
Vector3 cameraUpVector,
Vector3 cameraForwardVector )
inlinestatic

Definition at line 350 of file Matrix4x4.cs.

351 {
352 Vector3 left = objectPosition - cameraPosition;
353 float num = left.LengthSquared();
354 left = ((!(num < 0.0001f)) ? Vector3.Multiply(left, 1f / MathF.Sqrt(num)) : (-cameraForwardVector));
355 Vector3 vector = Vector3.Normalize(Vector3.Cross(cameraUpVector, left));
356 Vector3 vector2 = Vector3.Cross(left, vector);
357 System.Runtime.CompilerServices.Unsafe.SkipInit(out Matrix4x4 result);
358 result.M11 = vector.X;
359 result.M12 = vector.Y;
360 result.M13 = vector.Z;
361 result.M14 = 0f;
362 result.M21 = vector2.X;
363 result.M22 = vector2.Y;
364 result.M23 = vector2.Z;
365 result.M24 = 0f;
366 result.M31 = left.X;
367 result.M32 = left.Y;
368 result.M33 = left.Z;
369 result.M34 = 0f;
370 result.M41 = objectPosition.X;
371 result.M42 = objectPosition.Y;
372 result.M43 = objectPosition.Z;
373 result.M44 = 1f;
374 return result;
375 }
Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)
Definition Matrix4x4.cs:93

References System.Numerics.Vector3.Cross(), System.Numerics.Vector3.LengthSquared(), System.Numerics.Vector3.Multiply(), System.Numerics.Vector3.Normalize(), System.MathF.Sqrt(), System.Numerics.Vector3.X, System.Numerics.Vector3.Y, and System.Numerics.Vector3.Z.