Browse Source

Added some utility functions to Vector2 / 3 / 4

Hi, I felt adding these functions would be consistent with the other ones and they are useful for producing clearer and more compact code.
jahow 10 năm trước cách đây
mục cha
commit
365ca1b246
1 tập tin đã thay đổi với 45 bổ sung1 xóa
  1. 45 1
      Babylon/Math/babylon.math.ts

+ 45 - 1
Babylon/Math/babylon.math.ts

@@ -295,6 +295,13 @@
             return new Vector2(this.x + otherVector.x, this.y + otherVector.y);
         }
 
+        public addInPlace(otherVector: Vector2): Vector2 {
+            this.x += otherVector.x;
+            this.y += otherVector.y;
+
+            return this;
+        }
+
         public subtract(otherVector: Vector2): Vector2 {
             return new Vector2(this.x - otherVector.x, this.y - otherVector.y);
         }
@@ -339,6 +346,10 @@
             return this;
         }
 
+        public divideByFloats(x: number, y: number): Vector2 {
+            return new Vector2(this.x / x, this.y / y);
+        }
+
         public negate(): Vector2 {
             return new Vector2(-this.x, -this.y);
         }
@@ -559,6 +570,18 @@
             return this;
         }
 
+        public addFromFloats(x: number, y: number, z: number): Vector3 {
+            return new Vector3(this.x + x, this.y + y, this.z + z);
+        }
+
+        public addFromFloatsToRef(x: number, y: number, z: number, result: Vector3): Vector3 {
+            result.x = this.x + x;
+            result.y = this.y + y;
+            result.z = this.z + z;
+
+            return this;
+        }
+
         public subtractInPlace(otherVector: Vector3): Vector3 {
             this.x -= otherVector.x;
             this.y -= otherVector.y;
@@ -660,6 +683,10 @@
             return this;
         }
 
+        public divideByFloats(x: number, y: number, z: number): Vector3 {
+            return new Vector3(this.x / x, this.y / y, this.z / z);
+        }
+
         public MinimizeInPlace(other: Vector3): Vector3 {
             if (other.x < this.x) this.x = other.x;
             if (other.y < this.y) this.y = other.y;
@@ -1170,6 +1197,19 @@
             return this;
         }
 
+        public addFromFloats(x: number, y: number, z: number, w: number): Vector4 {
+            return new Vector4(this.x + x, this.y + y, this.z + z, this.w + w);
+        }
+
+        public addFromFloatsToRef(x: number, y: number, z: number, w: number, result: Vector4): Vector4 {
+            result.x = this.x + x;
+            result.y = this.y + y;
+            result.z = this.z + z;
+            result.w = this.w + w;
+
+            return this;
+        }
+
         public subtractInPlace(otherVector: Vector4): Vector4 {
             this.x -= otherVector.x;
             this.y -= otherVector.y;
@@ -1283,6 +1323,10 @@
             return this;
         }
 
+        public divideByFloats(x: number, y: number, z: number, w: number): Vector4 {
+            return new Vector4(this.x / x, this.y / y, this.z / z, this.w / w);
+        }
+
         public MinimizeInPlace(other: Vector4): Vector4 {
             if (other.x < this.x) this.x = other.x;
             if (other.y < this.y) this.y = other.y;
@@ -3699,4 +3743,4 @@
             SIMDHelper._isEnabled = true;
         }
     }
-}
+}