Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 77f07fe

Browse files
committedMar 7, 2025·
Add C# vector swizzling
1 parent 4c311cb commit 77f07fe

File tree

6 files changed

+2596
-0
lines changed

6 files changed

+2596
-0
lines changed
 

‎modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs

+58
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,55 @@ public readonly Vector2 Orthogonal()
759759
/// <value>Equivalent to <c>new Vector2(-1, 0)</c>.</value>
760760
public static Vector2 Left { get { return _left; } }
761761

762+
#pragma warning disable CS1591 // Disable warning: "Missing XML comment for publicly visible type or member"
763+
public readonly Vector2 XX => new(X, X);
764+
public Vector2 XY
765+
{
766+
readonly get => new(X, Y);
767+
set
768+
{
769+
X = value.X;
770+
Y = value.Y;
771+
}
772+
}
773+
public Vector2 YX
774+
{
775+
readonly get => new(Y, X);
776+
set
777+
{
778+
Y = value.X;
779+
X = value.Y;
780+
}
781+
}
782+
public readonly Vector2 YY => new(Y, Y);
783+
784+
public readonly Vector3 XXX => new(X, X, X);
785+
public readonly Vector3 XXY => new(X, X, Y);
786+
public readonly Vector3 XYX => new(X, Y, X);
787+
public readonly Vector3 XYY => new(X, Y, Y);
788+
public readonly Vector3 YXX => new(Y, X, X);
789+
public readonly Vector3 YXY => new(Y, X, Y);
790+
public readonly Vector3 YYX => new(Y, Y, X);
791+
public readonly Vector3 YYY => new(Y, Y, Y);
792+
793+
public readonly Vector4 XXXX => new(X, X, X, X);
794+
public readonly Vector4 XXXY => new(X, X, X, Y);
795+
public readonly Vector4 XXYX => new(X, X, Y, X);
796+
public readonly Vector4 XXYY => new(X, X, Y, Y);
797+
public readonly Vector4 XYXX => new(X, Y, X, X);
798+
public readonly Vector4 XYXY => new(X, Y, X, Y);
799+
public readonly Vector4 XYYX => new(X, Y, Y, X);
800+
public readonly Vector4 XYYY => new(X, Y, Y, Y);
801+
public readonly Vector4 YXXX => new(Y, X, X, X);
802+
public readonly Vector4 YXXY => new(Y, X, X, Y);
803+
public readonly Vector4 YXYX => new(Y, X, Y, X);
804+
public readonly Vector4 YXYY => new(Y, X, Y, Y);
805+
public readonly Vector4 YYXX => new(Y, Y, X, X);
806+
public readonly Vector4 YYXY => new(Y, Y, X, Y);
807+
public readonly Vector4 YYYX => new(Y, Y, Y, X);
808+
public readonly Vector4 YYYY => new(Y, Y, Y, Y);
809+
#pragma warning restore CS1591
810+
762811
/// <summary>
763812
/// Constructs a new <see cref="Vector2"/> with the given components.
764813
/// </summary>
@@ -770,6 +819,15 @@ public Vector2(real_t x, real_t y)
770819
Y = y;
771820
}
772821

822+
/// <summary>
823+
/// Constructs a new <see cref="Vector2"/> with the given components.
824+
/// </summary>
825+
/// <param name="v">The vector's X and Y components.</param>
826+
public Vector2(real_t v)
827+
{
828+
X = Y = v;
829+
}
830+
773831
/// <summary>
774832
/// Creates a unit Vector2 rotated to the given angle. This is equivalent to doing
775833
/// <c>Vector2(Mathf.Cos(angle), Mathf.Sin(angle))</c> or <c>Vector2.Right.Rotated(angle)</c>.

‎modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2I.cs

+58
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,55 @@ public readonly Vector2I Snapped(int step)
372372
/// <value>Equivalent to <c>new Vector2I(-1, 0)</c>.</value>
373373
public static Vector2I Left { get { return _left; } }
374374

375+
#pragma warning disable CS1591 // Disable warning: "Missing XML comment for publicly visible type or member"
376+
public readonly Vector2I XX => new(X, X);
377+
public Vector2I XY
378+
{
379+
readonly get => new(X, Y);
380+
set
381+
{
382+
X = value.X;
383+
Y = value.Y;
384+
}
385+
}
386+
public Vector2I YX
387+
{
388+
readonly get => new(Y, X);
389+
set
390+
{
391+
Y = value.X;
392+
X = value.Y;
393+
}
394+
}
395+
public readonly Vector2I YY => new(Y, Y);
396+
397+
public readonly Vector3I XXX => new(X, X, X);
398+
public readonly Vector3I XXY => new(X, X, Y);
399+
public readonly Vector3I XYX => new(X, Y, X);
400+
public readonly Vector3I XYY => new(X, Y, Y);
401+
public readonly Vector3I YXX => new(Y, X, X);
402+
public readonly Vector3I YXY => new(Y, X, Y);
403+
public readonly Vector3I YYX => new(Y, Y, X);
404+
public readonly Vector3I YYY => new(Y, Y, Y);
405+
406+
public readonly Vector4I XXXX => new(X, X, X, X);
407+
public readonly Vector4I XXXY => new(X, X, X, Y);
408+
public readonly Vector4I XXYX => new(X, X, Y, X);
409+
public readonly Vector4I XXYY => new(X, X, Y, Y);
410+
public readonly Vector4I XYXX => new(X, Y, X, X);
411+
public readonly Vector4I XYXY => new(X, Y, X, Y);
412+
public readonly Vector4I XYYX => new(X, Y, Y, X);
413+
public readonly Vector4I XYYY => new(X, Y, Y, Y);
414+
public readonly Vector4I YXXX => new(Y, X, X, X);
415+
public readonly Vector4I YXXY => new(Y, X, X, Y);
416+
public readonly Vector4I YXYX => new(Y, X, Y, X);
417+
public readonly Vector4I YXYY => new(Y, X, Y, Y);
418+
public readonly Vector4I YYXX => new(Y, Y, X, X);
419+
public readonly Vector4I YYXY => new(Y, Y, X, Y);
420+
public readonly Vector4I YYYX => new(Y, Y, Y, X);
421+
public readonly Vector4I YYYY => new(Y, Y, Y, Y);
422+
#pragma warning restore CS1591
423+
375424
/// <summary>
376425
/// Constructs a new <see cref="Vector2I"/> with the given components.
377426
/// </summary>
@@ -383,6 +432,15 @@ public Vector2I(int x, int y)
383432
Y = y;
384433
}
385434

435+
/// <summary>
436+
/// Constructs a new <see cref="Vector2I"/> with the given components.
437+
/// </summary>
438+
/// <param name="v">The vector's X and Y components.</param>
439+
public Vector2I(int v)
440+
{
441+
X = Y = v;
442+
}
443+
386444
/// <summary>
387445
/// Adds each component of the <see cref="Vector2I"/>
388446
/// with the components of the given <see cref="Vector2I"/>.

‎modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs

+257
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,230 @@ public readonly Vector3 Snapped(real_t step)
846846
/// </summary>
847847
public static Vector3 ModelRear { get { return _modelRear; } }
848848

849+
#pragma warning disable CS1591 // Disable warning: "Missing XML comment for publicly visible type or member"
850+
public readonly Vector2 XX => new(X, X);
851+
public Vector2 XY
852+
{
853+
readonly get => new(X, Y);
854+
set
855+
{
856+
X = value.X;
857+
Y = value.Y;
858+
}
859+
}
860+
public Vector2 XZ
861+
{
862+
readonly get => new(X, Z);
863+
set
864+
{
865+
X = value.X;
866+
Z = value.Y;
867+
}
868+
}
869+
public Vector2 YX
870+
{
871+
readonly get => new(Y, X);
872+
set
873+
{
874+
Y = value.X;
875+
X = value.Y;
876+
}
877+
}
878+
public readonly Vector2 YY => new(Y, Y);
879+
public Vector2 YZ
880+
{
881+
readonly get => new(Y, Z);
882+
set
883+
{
884+
Y = value.X;
885+
Z = value.Y;
886+
}
887+
}
888+
public Vector2 ZX
889+
{
890+
readonly get => new(Z, X);
891+
set
892+
{
893+
Z = value.X;
894+
X = value.Y;
895+
}
896+
}
897+
public Vector2 ZY
898+
{
899+
readonly get => new(Z, Y);
900+
set
901+
{
902+
Z = value.X;
903+
Y = value.Y;
904+
}
905+
}
906+
public readonly Vector2 ZZ => new(Z, Z);
907+
908+
public readonly Vector3 XXX => new(X, X, X);
909+
public readonly Vector3 XXY => new(X, X, Y);
910+
public readonly Vector3 XXZ => new(X, X, Z);
911+
public readonly Vector3 XYX => new(X, Y, X);
912+
public readonly Vector3 XYY => new(X, Y, Y);
913+
public Vector3 XYZ
914+
{
915+
readonly get => new(X, Y, Z);
916+
set
917+
{
918+
X = value.X;
919+
Y = value.Y;
920+
Z = value.Z;
921+
}
922+
}
923+
public readonly Vector3 XZX => new(X, Z, X);
924+
public Vector3 XZY
925+
{
926+
readonly get => new(X, Z, Y);
927+
set
928+
{
929+
X = value.X;
930+
Z = value.Y;
931+
Y = value.Z;
932+
}
933+
}
934+
public readonly Vector3 XZZ => new(X, Z, Z);
935+
public readonly Vector3 YXX => new(Y, X, X);
936+
public readonly Vector3 YXY => new(Y, X, Y);
937+
public Vector3 YXZ
938+
{
939+
readonly get => new(Y, X, Z);
940+
set
941+
{
942+
Y = value.X;
943+
X = value.Y;
944+
Z = value.Z;
945+
}
946+
}
947+
public readonly Vector3 YYX => new(Y, Y, X);
948+
public readonly Vector3 YYY => new(Y, Y, Y);
949+
public readonly Vector3 YYZ => new(Y, Y, Z);
950+
public Vector3 YZX
951+
{
952+
readonly get => new(Y, Z, X);
953+
set
954+
{
955+
Y = value.X;
956+
Z = value.Y;
957+
X = value.Z;
958+
}
959+
}
960+
public readonly Vector3 YZY => new(Y, Z, Y);
961+
public readonly Vector3 YZZ => new(Y, Z, Z);
962+
public readonly Vector3 ZXX => new(Z, X, X);
963+
public Vector3 ZXY
964+
{
965+
readonly get => new(Z, X, Y);
966+
set
967+
{
968+
Z = value.X;
969+
X = value.Y;
970+
Y = value.Z;
971+
}
972+
}
973+
public readonly Vector3 ZXZ => new(Z, X, Z);
974+
public Vector3 ZYX
975+
{
976+
readonly get => new(Z, Y, X);
977+
set
978+
{
979+
Z = value.X;
980+
Y = value.Y;
981+
X = value.Z;
982+
}
983+
}
984+
public readonly Vector3 ZYY => new(Z, Y, Y);
985+
public readonly Vector3 ZYZ => new(Z, Y, Z);
986+
public readonly Vector3 ZZX => new(Z, Z, X);
987+
public readonly Vector3 ZZY => new(Z, Z, Y);
988+
public readonly Vector3 ZZZ => new(Z, Z, Z);
989+
990+
public readonly Vector4 XXXX => new(X, X, X, X);
991+
public readonly Vector4 XXXY => new(X, X, X, Y);
992+
public readonly Vector4 XXXZ => new(X, X, X, Z);
993+
public readonly Vector4 XXYX => new(X, X, Y, X);
994+
public readonly Vector4 XXYY => new(X, X, Y, Y);
995+
public readonly Vector4 XXYZ => new(X, X, Y, Z);
996+
public readonly Vector4 XXZX => new(X, X, Z, X);
997+
public readonly Vector4 XXZY => new(X, X, Z, Y);
998+
public readonly Vector4 XXZZ => new(X, X, Z, Z);
999+
public readonly Vector4 XYXX => new(X, Y, X, X);
1000+
public readonly Vector4 XYXY => new(X, Y, X, Y);
1001+
public readonly Vector4 XYXZ => new(X, Y, X, Z);
1002+
public readonly Vector4 XYYX => new(X, Y, Y, X);
1003+
public readonly Vector4 XYYY => new(X, Y, Y, Y);
1004+
public readonly Vector4 XYYZ => new(X, Y, Y, Z);
1005+
public readonly Vector4 XYZX => new(X, Y, Z, X);
1006+
public readonly Vector4 XYZY => new(X, Y, Z, Y);
1007+
public readonly Vector4 XYZZ => new(X, Y, Z, Z);
1008+
public readonly Vector4 XZXX => new(X, Z, X, X);
1009+
public readonly Vector4 XZXY => new(X, Z, X, Y);
1010+
public readonly Vector4 XZXZ => new(X, Z, X, Z);
1011+
public readonly Vector4 XZYX => new(X, Z, Y, X);
1012+
public readonly Vector4 XZYY => new(X, Z, Y, Y);
1013+
public readonly Vector4 XZYZ => new(X, Z, Y, Z);
1014+
public readonly Vector4 XZZX => new(X, Z, Z, X);
1015+
public readonly Vector4 XZZY => new(X, Z, Z, Y);
1016+
public readonly Vector4 XZZZ => new(X, Z, Z, Z);
1017+
public readonly Vector4 YXXX => new(Y, X, X, X);
1018+
public readonly Vector4 YXXY => new(Y, X, X, Y);
1019+
public readonly Vector4 YXXZ => new(Y, X, X, Z);
1020+
public readonly Vector4 YXYX => new(Y, X, Y, X);
1021+
public readonly Vector4 YXYY => new(Y, X, Y, Y);
1022+
public readonly Vector4 YXYZ => new(Y, X, Y, Z);
1023+
public readonly Vector4 YXZX => new(Y, X, Z, X);
1024+
public readonly Vector4 YXZY => new(Y, X, Z, Y);
1025+
public readonly Vector4 YXZZ => new(Y, X, Z, Z);
1026+
public readonly Vector4 YYXX => new(Y, Y, X, X);
1027+
public readonly Vector4 YYXY => new(Y, Y, X, Y);
1028+
public readonly Vector4 YYXZ => new(Y, Y, X, Z);
1029+
public readonly Vector4 YYYX => new(Y, Y, Y, X);
1030+
public readonly Vector4 YYYY => new(Y, Y, Y, Y);
1031+
public readonly Vector4 YYYZ => new(Y, Y, Y, Z);
1032+
public readonly Vector4 YYZX => new(Y, Y, Z, X);
1033+
public readonly Vector4 YYZY => new(Y, Y, Z, Y);
1034+
public readonly Vector4 YYZZ => new(Y, Y, Z, Z);
1035+
public readonly Vector4 YZXX => new(Y, Z, X, X);
1036+
public readonly Vector4 YZXY => new(Y, Z, X, Y);
1037+
public readonly Vector4 YZXZ => new(Y, Z, X, Z);
1038+
public readonly Vector4 YZYX => new(Y, Z, Y, X);
1039+
public readonly Vector4 YZYY => new(Y, Z, Y, Y);
1040+
public readonly Vector4 YZYZ => new(Y, Z, Y, Z);
1041+
public readonly Vector4 YZZX => new(Y, Z, Z, X);
1042+
public readonly Vector4 YZZY => new(Y, Z, Z, Y);
1043+
public readonly Vector4 YZZZ => new(Y, Z, Z, Z);
1044+
public readonly Vector4 ZXXX => new(Z, X, X, X);
1045+
public readonly Vector4 ZXXY => new(Z, X, X, Y);
1046+
public readonly Vector4 ZXXZ => new(Z, X, X, Z);
1047+
public readonly Vector4 ZXYX => new(Z, X, Y, X);
1048+
public readonly Vector4 ZXYY => new(Z, X, Y, Y);
1049+
public readonly Vector4 ZXYZ => new(Z, X, Y, Z);
1050+
public readonly Vector4 ZXZX => new(Z, X, Z, X);
1051+
public readonly Vector4 ZXZY => new(Z, X, Z, Y);
1052+
public readonly Vector4 ZXZZ => new(Z, X, Z, Z);
1053+
public readonly Vector4 ZYXX => new(Z, Y, X, X);
1054+
public readonly Vector4 ZYXY => new(Z, Y, X, Y);
1055+
public readonly Vector4 ZYXZ => new(Z, Y, X, Z);
1056+
public readonly Vector4 ZYYX => new(Z, Y, Y, X);
1057+
public readonly Vector4 ZYYY => new(Z, Y, Y, Y);
1058+
public readonly Vector4 ZYYZ => new(Z, Y, Y, Z);
1059+
public readonly Vector4 ZYZX => new(Z, Y, Z, X);
1060+
public readonly Vector4 ZYZY => new(Z, Y, Z, Y);
1061+
public readonly Vector4 ZYZZ => new(Z, Y, Z, Z);
1062+
public readonly Vector4 ZZXX => new(Z, Z, X, X);
1063+
public readonly Vector4 ZZXY => new(Z, Z, X, Y);
1064+
public readonly Vector4 ZZXZ => new(Z, Z, X, Z);
1065+
public readonly Vector4 ZZYX => new(Z, Z, Y, X);
1066+
public readonly Vector4 ZZYY => new(Z, Z, Y, Y);
1067+
public readonly Vector4 ZZYZ => new(Z, Z, Y, Z);
1068+
public readonly Vector4 ZZZX => new(Z, Z, Z, X);
1069+
public readonly Vector4 ZZZY => new(Z, Z, Z, Y);
1070+
public readonly Vector4 ZZZZ => new(Z, Z, Z, Z);
1071+
#pragma warning restore CS1591
1072+
8491073
/// <summary>
8501074
/// Constructs a new <see cref="Vector3"/> with the given components.
8511075
/// </summary>
@@ -859,6 +1083,39 @@ public Vector3(real_t x, real_t y, real_t z)
8591083
Z = z;
8601084
}
8611085

1086+
/// <summary>
1087+
/// Constructs a new <see cref="Vector3"/> with the given components.
1088+
/// </summary>
1089+
/// <param name="v">The vector's X, Y, and Z components.</param>
1090+
public Vector3(real_t v)
1091+
{
1092+
X = Y = Z = v;
1093+
}
1094+
1095+
/// <summary>
1096+
/// Constructs a new <see cref="Vector3"/> with the given components.
1097+
/// </summary>
1098+
/// <param name="x">The vector's X component.</param>
1099+
/// <param name="yz">The vector's Y and Z components.</param>
1100+
public Vector3(real_t x, Vector2 yz)
1101+
{
1102+
X = x;
1103+
Y = yz.X;
1104+
Z = yz.Y;
1105+
}
1106+
1107+
/// <summary>
1108+
/// Constructs a new <see cref="Vector3"/> with the given components.
1109+
/// </summary>
1110+
/// <param name="xy">The vector's X and Y components.</param>
1111+
/// <param name="z">The vector's Z component.</param>
1112+
public Vector3(Vector2 xy, real_t z)
1113+
{
1114+
X = xy.X;
1115+
Y = xy.Y;
1116+
Z = z;
1117+
}
1118+
8621119
/// <summary>
8631120
/// Adds each component of the <see cref="Vector3"/>
8641121
/// with the components of the given <see cref="Vector3"/>.

‎modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3I.cs

+257
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,230 @@ public readonly Vector3I Snapped(int step)
406406
/// <value>Equivalent to <c>new Vector3I(0, 0, 1)</c>.</value>
407407
public static Vector3I Back { get { return _back; } }
408408

409+
#pragma warning disable CS1591 // Disable warning: "Missing XML comment for publicly visible type or member"
410+
public readonly Vector2I XX => new(X, X);
411+
public Vector2I XY
412+
{
413+
readonly get => new(X, Y);
414+
set
415+
{
416+
X = value.X;
417+
Y = value.Y;
418+
}
419+
}
420+
public Vector2I XZ
421+
{
422+
readonly get => new(X, Z);
423+
set
424+
{
425+
X = value.X;
426+
Z = value.Y;
427+
}
428+
}
429+
public Vector2I YX
430+
{
431+
readonly get => new(Y, X);
432+
set
433+
{
434+
Y = value.X;
435+
X = value.Y;
436+
}
437+
}
438+
public readonly Vector2I YY => new(Y, Y);
439+
public Vector2I YZ
440+
{
441+
readonly get => new(Y, Z);
442+
set
443+
{
444+
Y = value.X;
445+
Z = value.Y;
446+
}
447+
}
448+
public Vector2I ZX
449+
{
450+
readonly get => new(Z, X);
451+
set
452+
{
453+
Z = value.X;
454+
X = value.Y;
455+
}
456+
}
457+
public Vector2I ZY
458+
{
459+
readonly get => new(Z, Y);
460+
set
461+
{
462+
Z = value.X;
463+
Y = value.Y;
464+
}
465+
}
466+
public readonly Vector2I ZZ => new(Z, Z);
467+
468+
public readonly Vector3I XXX => new(X, X, X);
469+
public readonly Vector3I XXY => new(X, X, Y);
470+
public readonly Vector3I XXZ => new(X, X, Z);
471+
public readonly Vector3I XYX => new(X, Y, X);
472+
public readonly Vector3I XYY => new(X, Y, Y);
473+
public Vector3I XYZ
474+
{
475+
readonly get => new(X, Y, Z);
476+
set
477+
{
478+
X = value.X;
479+
Y = value.Y;
480+
Z = value.Z;
481+
}
482+
}
483+
public readonly Vector3I XZX => new(X, Z, X);
484+
public Vector3I XZY
485+
{
486+
readonly get => new(X, Z, Y);
487+
set
488+
{
489+
X = value.X;
490+
Z = value.Y;
491+
Y = value.Z;
492+
}
493+
}
494+
public readonly Vector3I XZZ => new(X, Z, Z);
495+
public readonly Vector3I YXX => new(Y, X, X);
496+
public readonly Vector3I YXY => new(Y, X, Y);
497+
public Vector3I YXZ
498+
{
499+
readonly get => new(Y, X, Z);
500+
set
501+
{
502+
Y = value.X;
503+
X = value.Y;
504+
Z = value.Z;
505+
}
506+
}
507+
public readonly Vector3I YYX => new(Y, Y, X);
508+
public readonly Vector3I YYY => new(Y, Y, Y);
509+
public readonly Vector3I YYZ => new(Y, Y, Z);
510+
public Vector3I YZX
511+
{
512+
readonly get => new(Y, Z, X);
513+
set
514+
{
515+
Y = value.X;
516+
Z = value.Y;
517+
X = value.Z;
518+
}
519+
}
520+
public readonly Vector3I YZY => new(Y, Z, Y);
521+
public readonly Vector3I YZZ => new(Y, Z, Z);
522+
public readonly Vector3I ZXX => new(Z, X, X);
523+
public Vector3I ZXY
524+
{
525+
readonly get => new(Z, X, Y);
526+
set
527+
{
528+
Z = value.X;
529+
X = value.Y;
530+
Y = value.Z;
531+
}
532+
}
533+
public readonly Vector3I ZXZ => new(Z, X, Z);
534+
public Vector3I ZYX
535+
{
536+
readonly get => new(Z, Y, X);
537+
set
538+
{
539+
Z = value.X;
540+
Y = value.Y;
541+
X = value.Z;
542+
}
543+
}
544+
public readonly Vector3I ZYY => new(Z, Y, Y);
545+
public readonly Vector3I ZYZ => new(Z, Y, Z);
546+
public readonly Vector3I ZZX => new(Z, Z, X);
547+
public readonly Vector3I ZZY => new(Z, Z, Y);
548+
public readonly Vector3I ZZZ => new(Z, Z, Z);
549+
550+
public readonly Vector4I XXXX => new(X, X, X, X);
551+
public readonly Vector4I XXXY => new(X, X, X, Y);
552+
public readonly Vector4I XXXZ => new(X, X, X, Z);
553+
public readonly Vector4I XXYX => new(X, X, Y, X);
554+
public readonly Vector4I XXYY => new(X, X, Y, Y);
555+
public readonly Vector4I XXYZ => new(X, X, Y, Z);
556+
public readonly Vector4I XXZX => new(X, X, Z, X);
557+
public readonly Vector4I XXZY => new(X, X, Z, Y);
558+
public readonly Vector4I XXZZ => new(X, X, Z, Z);
559+
public readonly Vector4I XYXX => new(X, Y, X, X);
560+
public readonly Vector4I XYXY => new(X, Y, X, Y);
561+
public readonly Vector4I XYXZ => new(X, Y, X, Z);
562+
public readonly Vector4I XYYX => new(X, Y, Y, X);
563+
public readonly Vector4I XYYY => new(X, Y, Y, Y);
564+
public readonly Vector4I XYYZ => new(X, Y, Y, Z);
565+
public readonly Vector4I XYZX => new(X, Y, Z, X);
566+
public readonly Vector4I XYZY => new(X, Y, Z, Y);
567+
public readonly Vector4I XYZZ => new(X, Y, Z, Z);
568+
public readonly Vector4I XZXX => new(X, Z, X, X);
569+
public readonly Vector4I XZXY => new(X, Z, X, Y);
570+
public readonly Vector4I XZXZ => new(X, Z, X, Z);
571+
public readonly Vector4I XZYX => new(X, Z, Y, X);
572+
public readonly Vector4I XZYY => new(X, Z, Y, Y);
573+
public readonly Vector4I XZYZ => new(X, Z, Y, Z);
574+
public readonly Vector4I XZZX => new(X, Z, Z, X);
575+
public readonly Vector4I XZZY => new(X, Z, Z, Y);
576+
public readonly Vector4I XZZZ => new(X, Z, Z, Z);
577+
public readonly Vector4I YXXX => new(Y, X, X, X);
578+
public readonly Vector4I YXXY => new(Y, X, X, Y);
579+
public readonly Vector4I YXXZ => new(Y, X, X, Z);
580+
public readonly Vector4I YXYX => new(Y, X, Y, X);
581+
public readonly Vector4I YXYY => new(Y, X, Y, Y);
582+
public readonly Vector4I YXYZ => new(Y, X, Y, Z);
583+
public readonly Vector4I YXZX => new(Y, X, Z, X);
584+
public readonly Vector4I YXZY => new(Y, X, Z, Y);
585+
public readonly Vector4I YXZZ => new(Y, X, Z, Z);
586+
public readonly Vector4I YYXX => new(Y, Y, X, X);
587+
public readonly Vector4I YYXY => new(Y, Y, X, Y);
588+
public readonly Vector4I YYXZ => new(Y, Y, X, Z);
589+
public readonly Vector4I YYYX => new(Y, Y, Y, X);
590+
public readonly Vector4I YYYY => new(Y, Y, Y, Y);
591+
public readonly Vector4I YYYZ => new(Y, Y, Y, Z);
592+
public readonly Vector4I YYZX => new(Y, Y, Z, X);
593+
public readonly Vector4I YYZY => new(Y, Y, Z, Y);
594+
public readonly Vector4I YYZZ => new(Y, Y, Z, Z);
595+
public readonly Vector4I YZXX => new(Y, Z, X, X);
596+
public readonly Vector4I YZXY => new(Y, Z, X, Y);
597+
public readonly Vector4I YZXZ => new(Y, Z, X, Z);
598+
public readonly Vector4I YZYX => new(Y, Z, Y, X);
599+
public readonly Vector4I YZYY => new(Y, Z, Y, Y);
600+
public readonly Vector4I YZYZ => new(Y, Z, Y, Z);
601+
public readonly Vector4I YZZX => new(Y, Z, Z, X);
602+
public readonly Vector4I YZZY => new(Y, Z, Z, Y);
603+
public readonly Vector4I YZZZ => new(Y, Z, Z, Z);
604+
public readonly Vector4I ZXXX => new(Z, X, X, X);
605+
public readonly Vector4I ZXXY => new(Z, X, X, Y);
606+
public readonly Vector4I ZXXZ => new(Z, X, X, Z);
607+
public readonly Vector4I ZXYX => new(Z, X, Y, X);
608+
public readonly Vector4I ZXYY => new(Z, X, Y, Y);
609+
public readonly Vector4I ZXYZ => new(Z, X, Y, Z);
610+
public readonly Vector4I ZXZX => new(Z, X, Z, X);
611+
public readonly Vector4I ZXZY => new(Z, X, Z, Y);
612+
public readonly Vector4I ZXZZ => new(Z, X, Z, Z);
613+
public readonly Vector4I ZYXX => new(Z, Y, X, X);
614+
public readonly Vector4I ZYXY => new(Z, Y, X, Y);
615+
public readonly Vector4I ZYXZ => new(Z, Y, X, Z);
616+
public readonly Vector4I ZYYX => new(Z, Y, Y, X);
617+
public readonly Vector4I ZYYY => new(Z, Y, Y, Y);
618+
public readonly Vector4I ZYYZ => new(Z, Y, Y, Z);
619+
public readonly Vector4I ZYZX => new(Z, Y, Z, X);
620+
public readonly Vector4I ZYZY => new(Z, Y, Z, Y);
621+
public readonly Vector4I ZYZZ => new(Z, Y, Z, Z);
622+
public readonly Vector4I ZZXX => new(Z, Z, X, X);
623+
public readonly Vector4I ZZXY => new(Z, Z, X, Y);
624+
public readonly Vector4I ZZXZ => new(Z, Z, X, Z);
625+
public readonly Vector4I ZZYX => new(Z, Z, Y, X);
626+
public readonly Vector4I ZZYY => new(Z, Z, Y, Y);
627+
public readonly Vector4I ZZYZ => new(Z, Z, Y, Z);
628+
public readonly Vector4I ZZZX => new(Z, Z, Z, X);
629+
public readonly Vector4I ZZZY => new(Z, Z, Z, Y);
630+
public readonly Vector4I ZZZZ => new(Z, Z, Z, Z);
631+
#pragma warning restore CS1591
632+
409633
/// <summary>
410634
/// Constructs a new <see cref="Vector3I"/> with the given components.
411635
/// </summary>
@@ -419,6 +643,39 @@ public Vector3I(int x, int y, int z)
419643
Z = z;
420644
}
421645

646+
/// <summary>
647+
/// Constructs a new <see cref="Vector3I"/> with the given components.
648+
/// </summary>
649+
/// <param name="v">The vector's X, Y, and Z components.</param>
650+
public Vector3I(int v)
651+
{
652+
X = Y = Z = v;
653+
}
654+
655+
/// <summary>
656+
/// Constructs a new <see cref="Vector3I"/> with the given components.
657+
/// </summary>
658+
/// <param name="x">The vector's X component.</param>
659+
/// <param name="yz">The vector's Y and Z components.</param>
660+
public Vector3I(int x, Vector2I yz)
661+
{
662+
X = x;
663+
Y = yz.X;
664+
Z = yz.Y;
665+
}
666+
667+
/// <summary>
668+
/// Constructs a new <see cref="Vector3I"/> with the given components.
669+
/// </summary>
670+
/// <param name="xy">The vector's X and Y components.</param>
671+
/// <param name="z">The vector's Z component.</param>
672+
public Vector3I(Vector2I xy, int z)
673+
{
674+
X = xy.X;
675+
Y = xy.Y;
676+
Z = z;
677+
}
678+
422679
/// <summary>
423680
/// Adds each component of the <see cref="Vector3I"/>
424681
/// with the components of the given <see cref="Vector3I"/>.

‎modules/mono/glue/GodotSharp/GodotSharp/Core/Vector4.cs

+983
Large diffs are not rendered by default.

‎modules/mono/glue/GodotSharp/GodotSharp/Core/Vector4I.cs

+983
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.