Browse Source

Single precision: Backport from pixi-spine (#964)

Ivan Popelyshev 8 years ago
parent
commit
720b9c316b

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-all.js.map


+ 1 - 1
spine-ts/core/src/SkeletonJson.ts

@@ -699,7 +699,7 @@ module spine {
 					let eventMap = map.events[i];
 					let eventData = skeletonData.findEvent(eventMap.name);
 					if (eventData == null) throw new Error("Event not found: " + eventMap.name);
-					let event = new Event(eventMap.time, eventData);
+					let event = new Event(Utils.toSinglePrecision(eventMap.time), eventData);
 					event.intValue = this.getValue(eventMap, "int", eventData.intValue);
 					event.floatValue = this.getValue(eventMap, "float", eventData.floatValue);
 					event.stringValue = this.getValue(eventMap, "string", eventData.stringValue);

+ 4 - 0
spine-ts/core/src/Utils.ts

@@ -255,6 +255,10 @@ module spine {
 		static toFloatArray (array: Array<number>) {
 			return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;
 		}
+
+		static toSinglePrecision (value: number) {
+			return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value;
+		}
 	}
 
 	export class DebugUtils {

+ 13 - 0
spine-ts/core/src/polyfills.ts

@@ -0,0 +1,13 @@
+interface Math {
+	fround(n: number): number;
+}
+
+(() => {
+	if (!Math.fround) {
+		Math.fround = (function (array) {
+			return function (x: number) {
+				return array[0] = x, array[0];
+			};
+		})(new Float32Array(1));
+	}
+})();

Some files were not shown because too many files changed in this diff