Skip to content

Commit

Permalink
Custom Math Prototype
Browse files Browse the repository at this point in the history
  • Loading branch information
osyrisrblx committed Feb 13, 2024
1 parent aa6ff08 commit d5ef824
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 70 deletions.
111 changes: 41 additions & 70 deletions include/macro_math.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,73 +2,44 @@

// MACRO MATH API

declare interface CFrame {
/** macro for CFrame + Vector3 */
add(this: CFrame, v3: Vector3): CFrame;
/** macro for CFrame - Vector3 */
sub(this: CFrame, v3: Vector3): CFrame;
/** macro for CFrame * CFrame */
mul(this: CFrame, cf: CFrame): CFrame;
/** macro for CFrame * Vector3 */
mul(this: CFrame, v3: Vector3): Vector3;
/** macro for CFrame * CFrame | Vector3 */
mul(this: CFrame, other: CFrame | Vector3): CFrame | Vector3;
}

declare interface UDim {
/** macro for UDim + UDim */
add(this: UDim, udim: UDim): UDim;
/** macro for UDim - UDim */
sub(this: UDim, udim: UDim): UDim;
}

declare interface UDim2 {
/** macro for UDim2 + UDim2 */
add(this: UDim2, udim2: UDim2): UDim2;
/** macro for UDim2 - UDim2 */
sub(this: UDim2, udim2: UDim2): UDim2;
}

declare interface Vector2 {
/** macro for Vector2 + Vector2 */
add(this: Vector2, v2: Vector2): Vector2;
/** macro for Vector2 - Vector2 */
sub(this: Vector2, v2: Vector2): Vector2;
/** macro for Vector2 * Vector2 | number */
mul(this: Vector2, other: Vector2 | number): Vector2;
/** macro for Vector2 / Vector2 | number */
div(this: Vector2, other: Vector2 | number): Vector2;
}

declare interface Vector2int16 {
/** macro for Vector2int16 + Vector2int16 */
add(this: Vector2int16, v2: Vector2int16): Vector2int16;
/** macro for Vector2int16 - Vector2int16 */
sub(this: Vector2int16, v2: Vector2int16): Vector2int16;
/** macro for Vector2int16 * Vector2int16 */
mul(this: Vector2int16, v2: Vector2int16): Vector2int16;
/** macro for Vector2int16 / Vector2int16 */
div(this: Vector2int16, v2: Vector2int16): Vector2int16;
}

declare interface Vector3 {
/** macro for Vector3 + Vector3 */
add(this: Vector3, v3: Vector3): Vector3;
/** macro for Vector3 - Vector3 */
sub(this: Vector3, v3: Vector3): Vector3;
/** macro for Vector3 * Vector3 | number */
mul(this: Vector3, other: Vector3 | number): Vector3;
/** macro for Vector3 / Vector3 | number */
div(this: Vector3, other: Vector3 | number): Vector3;
}

declare interface Vector3int16 {
/** macro for Vector2int16 + Vector2int16 */
add(this: Vector3int16, v3: Vector3int16): Vector3int16;
/** macro for Vector2int16 - Vector2int16 */
sub(this: Vector3int16, v3: Vector3int16): Vector3int16;
/** macro for Vector2int16 * Vector2int16 */
mul(this: Vector3int16, v3: Vector3int16): Vector3int16;
/** macro for Vector2int16 / Vector2int16 */
div(this: Vector3int16, v3: Vector3int16): Vector3int16;
}
declare interface Number extends IDiv<{ (this: number, other: number): number }> {}

declare interface CFrame
extends Add<{ (this: CFrame, v3: Vector3): CFrame }>,
Sub<{ (this: CFrame, v3: Vector3): CFrame }>,
Mul<{
(this: CFrame, cf: CFrame): CFrame;
(this: CFrame, v3: Vector3): Vector3;
(this: CFrame, other: CFrame | Vector3): CFrame | Vector3;
}> {}

declare interface UDim extends Add<{ (this: UDim, udim: UDim): UDim }>, Sub<{ (this: UDim, udim: UDim): UDim }> {}

declare interface UDim2
extends Add<{ (this: UDim2, udim2: UDim2): UDim2 }>,
Sub<{ (this: UDim2, udim2: UDim2): UDim2 }> {}

declare interface Vector2
extends Add<{ (this: Vector2, v2: Vector2): Vector2 }>,
Sub<{ (this: Vector2, v2: Vector2): Vector2 }>,
Mul<{ (this: Vector2, v2: Vector2): Vector2 }>,
Div<{ (this: Vector2, other: Vector2 | number): Vector2 }>,
IDiv<{ (this: Vector2, other: Vector2 | number): Vector2 }> {}

declare interface Vector2int16
extends Add<{ (this: Vector2int16, v2: Vector2int16): Vector2int16 }>,
Sub<{ (this: Vector2int16, v2: Vector2int16): Vector2int16 }>,
Mul<{ (this: Vector2int16, v2: Vector2int16): Vector2int16 }>,
Div<{ (this: Vector2int16, v2: Vector2int16): Vector2int16 }> {}

declare interface Vector3
extends Add<{ (this: Vector3, v3: Vector3): Vector3 }>,
Sub<{ (this: Vector3, v3: Vector3): Vector3 }>,
Mul<{ (this: Vector3, other: Vector3 | number): Vector3 }>,
Div<{ (this: Vector3, other: Vector3 | number): Vector3 }> {}

declare interface Vector3int16
extends Add<{ (this: Vector3int16, v3: Vector3int16): Vector3int16 }>,
Sub<{ (this: Vector3int16, v3: Vector3int16): Vector3int16 }>,
Mul<{ (this: Vector3int16, v3: Vector3int16): Vector3int16 }>,
Div<{ (this: Vector3int16, v3: Vector3int16): Vector3int16 }> {}
69 changes: 69 additions & 0 deletions legacy_macro_math.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/// <reference no-default-lib="true"/>

// MACRO MATH API

declare interface CFrame {
add(this: CFrame, v3: Vector3): CFrame;
sub(this: CFrame, v3: Vector3): CFrame;
mul(this: CFrame, cf: CFrame): CFrame;
mul(this: CFrame, v3: Vector3): Vector3;
mul(this: CFrame, other: CFrame | Vector3): CFrame | Vector3;
}

declare interface UDim {
/** macro for UDim + UDim */
add(this: UDim, udim: UDim): UDim;
/** macro for UDim - UDim */
sub(this: UDim, udim: UDim): UDim;
}

declare interface UDim2 {
/** macro for UDim2 + UDim2 */
add(this: UDim2, udim2: UDim2): UDim2;
/** macro for UDim2 - UDim2 */
sub(this: UDim2, udim2: UDim2): UDim2;
}

declare interface Vector2 {
/** macro for Vector2 + Vector2 */
add(this: Vector2, v2: Vector2): Vector2;
/** macro for Vector2 - Vector2 */
sub(this: Vector2, v2: Vector2): Vector2;
/** macro for Vector2 * Vector2 | number */
mul(this: Vector2, other: Vector2 | number): Vector2;
/** macro for Vector2 / Vector2 | number */
div(this: Vector2, other: Vector2 | number): Vector2;
}

declare interface Vector2int16 {
/** macro for Vector2int16 + Vector2int16 */
add(this: Vector2int16, v2: Vector2int16): Vector2int16;
/** macro for Vector2int16 - Vector2int16 */
sub(this: Vector2int16, v2: Vector2int16): Vector2int16;
/** macro for Vector2int16 * Vector2int16 */
mul(this: Vector2int16, v2: Vector2int16): Vector2int16;
/** macro for Vector2int16 / Vector2int16 */
div(this: Vector2int16, v2: Vector2int16): Vector2int16;
}

declare interface Vector3 {
/** macro for Vector3 + Vector3 */
add(this: Vector3, v3: Vector3): Vector3;
/** macro for Vector3 - Vector3 */
sub(this: Vector3, v3: Vector3): Vector3;
/** macro for Vector3 * Vector3 | number */
mul(this: Vector3, other: Vector3 | number): Vector3;
/** macro for Vector3 / Vector3 | number */
div(this: Vector3, other: Vector3 | number): Vector3;
}

declare interface Vector3int16 {
/** macro for Vector2int16 + Vector2int16 */
add(this: Vector3int16, v3: Vector3int16): Vector3int16;
/** macro for Vector2int16 - Vector2int16 */
sub(this: Vector3int16, v3: Vector3int16): Vector3int16;
/** macro for Vector2int16 * Vector2int16 */
mul(this: Vector3int16, v3: Vector3int16): Vector3int16;
/** macro for Vector2int16 / Vector2int16 */
div(this: Vector3int16, v3: Vector3int16): Vector3int16;
}

0 comments on commit d5ef824

Please sign in to comment.