Browse Source

Added support to animate on Vector2 values.

Daniel Eriksson 10 năm trước cách đây
mục cha
commit
50eafb9e94
1 tập tin đã thay đổi với 25 bổ sung0 xóa
  1. 25 0
      Babylon/Animations/babylon.animation.ts

+ 25 - 0
Babylon/Animations/babylon.animation.ts

@@ -35,6 +35,10 @@
         public vector3InterpolateFunction(startValue: Vector3, endValue: Vector3, gradient: number): Vector3 {
             return BABYLON.Vector3.Lerp(startValue, endValue, gradient);
         }
+		
+		 public vector2InterpolateFunction(startValue: Vector2, endValue: Vector2, gradient: number): Vector2 {
+            return BABYLON.Vector2.Lerp(startValue, endValue, gradient);
+        }
 
         public color3InterpolateFunction(startValue: Color3, endValue: Color3, gradient: number): Color3 {
             return BABYLON.Color3.Lerp(startValue, endValue, gradient);
@@ -101,6 +105,15 @@
                                 case Animation.ANIMATIONLOOPMODE_RELATIVE:
                                     return this.vector3InterpolateFunction(startValue, endValue, gradient).add(offsetValue.scale(repeatCount));
                             }
+						// Vector2
+                        case Animation.ANIMATIONTYPE_VECTOR2:
+                            switch (loopMode) {
+                                case Animation.ANIMATIONLOOPMODE_CYCLE:
+                                case Animation.ANIMATIONLOOPMODE_CONSTANT:
+                                    return this.vector2InterpolateFunction(startValue, endValue, gradient);
+                                case Animation.ANIMATIONLOOPMODE_RELATIVE:
+                                    return this.vector2InterpolateFunction(startValue, endValue, gradient).add(offsetValue.scale(repeatCount));
+                            }
                         // Color3
                         case Animation.ANIMATIONTYPE_COLOR3:
                             switch (loopMode) {
@@ -180,6 +193,9 @@
                             // Vector3
                             case Animation.ANIMATIONTYPE_VECTOR3:
                                 this._offsetsCache[keyOffset] = toValue.subtract(fromValue);
+							// Vector2
+                            case Animation.ANIMATIONTYPE_VECTOR2:
+                                this._offsetsCache[keyOffset] = toValue.subtract(fromValue);
                             // Color3
                             case Animation.ANIMATIONTYPE_COLOR3:
                                 this._offsetsCache[keyOffset] = toValue.subtract(fromValue);
@@ -209,6 +225,10 @@
                     case Animation.ANIMATIONTYPE_VECTOR3:
                         offsetValue = Vector3.Zero();
                         break;
+					// Vector2
+                    case Animation.ANIMATIONTYPE_VECTOR2:
+                        offsetValue = Vector2.Zero();
+                        break;
                     // Color3
                     case Animation.ANIMATIONTYPE_COLOR3:
                         offsetValue = Color3.Black();
@@ -250,6 +270,7 @@
         private static _ANIMATIONTYPE_QUATERNION = 2;
         private static _ANIMATIONTYPE_MATRIX = 3;
         private static _ANIMATIONTYPE_COLOR3 = 4;
+		private static _ANIMATIONTYPE_VECTOR2 = 5;
         private static _ANIMATIONLOOPMODE_RELATIVE = 0;
         private static _ANIMATIONLOOPMODE_CYCLE = 1;
         private static _ANIMATIONLOOPMODE_CONSTANT = 2;
@@ -262,6 +283,10 @@
             return Animation._ANIMATIONTYPE_VECTOR3;
         }
 
+		public static get ANIMATIONTYPE_VECTOR2(): number {
+            return Animation._ANIMATIONTYPE_VECTOR2;
+        }
+		
         public static get ANIMATIONTYPE_QUATERNION(): number {
             return Animation._ANIMATIONTYPE_QUATERNION;
         }