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

◆ Transform() [8/8]

static void Microsoft.Xna.Framework.Vector3.Transform ( Vector3[] sourceArray,
ref Quaternion rotation,
Vector3[] destinationArray )
inlinestatic

Definition at line 613 of file Vector3.cs.

614 {
615 if (sourceArray == null)
616 {
617 throw new ArgumentNullException("sourceArray");
618 }
619 if (destinationArray == null)
620 {
621 throw new ArgumentNullException("destinationArray");
622 }
623 if (destinationArray.Length < sourceArray.Length)
624 {
625 throw new ArgumentException(FrameworkResources.NotEnoughTargetSize);
626 }
627 float num = rotation.X + rotation.X;
628 float num2 = rotation.Y + rotation.Y;
629 float num3 = rotation.Z + rotation.Z;
630 float num4 = rotation.W * num;
631 float num5 = rotation.W * num2;
632 float num6 = rotation.W * num3;
633 float num7 = rotation.X * num;
634 float num8 = rotation.X * num2;
635 float num9 = rotation.X * num3;
636 float num10 = rotation.Y * num2;
637 float num11 = rotation.Y * num3;
638 float num12 = rotation.Z * num3;
639 float num13 = 1f - num10 - num12;
640 float num14 = num8 - num6;
641 float num15 = num9 + num5;
642 float num16 = num8 + num6;
643 float num17 = 1f - num7 - num12;
644 float num18 = num11 - num4;
645 float num19 = num9 - num5;
646 float num20 = num11 + num4;
647 float num21 = 1f - num7 - num10;
648 for (int i = 0; i < sourceArray.Length; i++)
649 {
650 float x = sourceArray[i].X;
651 float y = sourceArray[i].Y;
652 float z = sourceArray[i].Z;
653 destinationArray[i].X = x * num13 + y * num14 + z * num15;
654 destinationArray[i].Y = x * num16 + y * num17 + z * num18;
655 destinationArray[i].Z = x * num19 + y * num20 + z * num21;
656 }
657 }

References System.destinationArray, Microsoft.Xna.Framework.FrameworkResources.NotEnoughTargetSize, and System.sourceArray.