From cadaeda3bff2ec4e28c772f4cd055b15cdfb8c70 Mon Sep 17 00:00:00 2001 From: yhh <359807859@qq.com> Date: Fri, 1 Jan 2021 18:29:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=82=E9=85=8D?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 3 + engine_support/egret | 2 +- .../demo_egret/libs/ecs-tween/ecs-tween.d.ts | 319 +++++ .../demo_egret/libs/ecs-tween/ecs-tween.js | 1110 +++++++++++++++++ .../libs/ecs-tween/ecs-tween.min.js | 1 + source/bin/framework.d.ts | 299 ++--- source/bin/framework.js | 589 ++++----- source/bin/framework.min.js | 2 +- source/src/ECS/CoreEvents.ts | 1 + source/src/ECS/Scene.ts | 17 +- source/src/ECS/Transform.ts | 8 +- source/src/Utils/Emitter.ts | 2 +- 12 files changed, 1906 insertions(+), 447 deletions(-) create mode 100644 extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.d.ts create mode 100644 extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.js create mode 100644 extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.min.js diff --git a/.gitmodules b/.gitmodules index 4c1f73a8..1e19f1ef 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "engine_support/egret"] path = engine_support/egret url = https://github.com/esengine/egret-ecs-ext.git +[submodule "extensions/ecs-tween"] + path = extensions/ecs-tween + url = https://github.com/esengine/ecs-tween diff --git a/engine_support/egret b/engine_support/egret index 05ab4bfb..56a668a5 160000 --- a/engine_support/egret +++ b/engine_support/egret @@ -1 +1 @@ -Subproject commit 05ab4bfb0d3d3f0ff7a3d9e5c507c184da03873f +Subproject commit 56a668a551b317fe13e54b2aa0bc9eae9e19d871 diff --git a/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.d.ts b/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.d.ts new file mode 100644 index 00000000..d16face7 --- /dev/null +++ b/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.d.ts @@ -0,0 +1,319 @@ +declare module es { + abstract class AbstractTweenable implements ITweenable { + protected _isPaused: boolean; + protected _isCurrentlyManagedByTweenManager: boolean; + abstract tick(): boolean; + recycleSelf(): void; + isRunning(): boolean; + start(): void; + pause(): void; + resume(): void; + stop(bringToCompletion?: boolean): void; + } +} +declare module es { + class PropertyTweens { + static NumberPropertyTo(self: any, memberName: string, to: number, duration: number): ITween; + static Vector2PropertyTo(self: any, memeberName: string, to: Vector2, duration: number): ITween; + } +} +declare module es { + class TransformSpringTween extends AbstractTweenable { + readonly targetType: TransformTargetType; + private _transform; + private _targetType; + private _targetValue; + private _velocity; + dampingRatio: number; + angularFrequency: number; + constructor(transform: Transform, targetType: TransformTargetType, targetValue: Vector2); + setTargetValue(targetValue: Vector2): void; + updateDampingRatioWithHalfLife(lambda: number): void; + tick(): boolean; + private setTweenedValue; + private getCurrentValueOfTweenedTargetType; + } +} +declare module es { + enum LoopType { + none = 0, + restartFromBeginning = 1, + pingpong = 2 + } + enum TweenState { + running = 0, + paused = 1, + complete = 2 + } + abstract class Tween implements ITweenable, ITween { + protected _target: ITweenTarget; + protected _isFromValueOverridden: boolean; + protected _fromValue: T; + protected _toValue: T; + protected _easeType: EaseType; + protected _shouldRecycleTween: boolean; + protected _isRelative: boolean; + protected _completionHandler: (tween: ITween) => void; + protected _loopCompleteHandler: (tween: ITween) => void; + protected _nextTween: ITweenable; + protected _tweenState: TweenState; + private _isTimeScaleIndependent; + protected _delay: number; + protected _duration: number; + protected _timeScale: number; + protected _elapsedTime: number; + protected _loopType: LoopType; + protected _loops: number; + protected _delayBetweenLoops: number; + private _isRunningInReverse; + context: any; + setEaseType(easeType: EaseType): ITween; + setDelay(delay: number): ITween; + setDuration(duration: number): ITween; + setTimeScale(timeSclae: number): ITween; + setIsTimeScaleIndependent(): ITween; + setCompletionHandler(completeHandler: (tween: ITween) => void): ITween; + setLoops(loopType: LoopType, loops?: number, delayBetweenLoops?: number): ITween; + setLoopCompletionHanlder(loopCompleteHandler: (tween: ITween) => void): ITween; + setFrom(from: T): ITween; + prepareForReuse(from: T, to: T, duration: number): ITween; + setRecycleTween(shouldRecycleTween: boolean): ITween; + abstract setIsRelative(): ITween; + setContext(context: any): ITween; + setNextTween(nextTween: ITweenable): ITween; + tick(): boolean; + recycleSelf(): void; + isRunning(): boolean; + start(): void; + pause(): void; + resume(): void; + stop(bringToCompletion?: boolean): void; + jumpToElapsedTime(elapsedTime: any): void; + reverseTween(): void; + waitForCompletion(): IterableIterator; + getTargetObject(): any; + private resetState; + initialize(target: ITweenTarget, to: T, duration: number): void; + private handleLooping; + protected abstract updateValue(): any; + } +} +declare module es { + class NumberTween extends Tween { + static create(): NumberTween; + constructor(target?: ITweenTarget, to?: number, duration?: number); + setIsRelative(): ITween; + protected updateValue(): void; + recycleSelf(): void; + } + class Vector2Tween extends Tween { + static create(): Vector2Tween; + constructor(target?: ITweenTarget, to?: Vector2, duration?: number); + setIsRelative(): ITween; + protected updateValue(): void; + recycleSelf(): void; + } + class RectangleTween extends Tween { + static create(): RectangleTween; + constructor(target?: ITweenTarget, to?: Rectangle, duration?: number); + setIsRelative(): ITween; + protected updateValue(): void; + recycleSelf(): void; + } +} +declare module es { + enum TransformTargetType { + position = 0, + localPosition = 1, + scale = 2, + localScale = 3, + rotationDegrees = 4, + localRotationDegrees = 5 + } + class TransformVector2Tween extends Vector2Tween implements ITweenTarget { + private _transform; + private _targetType; + setTweenedValue(value: Vector2): void; + getTweenedValue(): Vector2; + getTargetObject(): Transform; + setTargetAndType(transform: Transform, targetType: TransformTargetType): void; + protected updateValue(): void; + recycleSelf(): void; + } +} +declare module es { + enum EaseType { + linear = 0, + sineIn = 1, + sineOut = 2, + sineInOut = 3, + quadIn = 4, + quadOut = 5, + quadInOut = 6, + quintIn = 7, + quintOut = 8, + quintInOut = 9, + cubicIn = 10, + cubicOut = 11, + cubicInOut = 12, + quartIn = 13, + quartOut = 14, + quartInOut = 15, + expoIn = 16, + expoOut = 17, + expoInOut = 18, + circleIn = 19, + circleOut = 20, + circleInOut = 21, + elasticIn = 22, + elasticOut = 23, + elasticInOut = 24, + punch = 25, + backIn = 26, + backOut = 27, + backInOut = 28, + bounceIn = 29, + bounceOut = 30, + bounceInOut = 31 + } + class EaseHelper { + static oppositeEaseType(easeType: EaseType): EaseType.linear | EaseType.sineIn | EaseType.sineOut | EaseType.sineInOut | EaseType.quadIn | EaseType.quadOut | EaseType.quadInOut | EaseType.quintIn | EaseType.quintOut | EaseType.quintInOut | EaseType.cubicIn | EaseType.cubicOut | EaseType.cubicInOut | EaseType.quartIn | EaseType.quartInOut | EaseType.expoIn | EaseType.expoOut | EaseType.expoInOut | EaseType.circleIn | EaseType.circleOut | EaseType.circleInOut | EaseType.elasticIn | EaseType.elasticOut | EaseType.elasticInOut | EaseType.punch | EaseType.backIn | EaseType.backOut | EaseType.backInOut | EaseType.bounceIn | EaseType.bounceOut | EaseType.bounceInOut; + static ease(easeType: EaseType, t: number, duration: number): number; + } +} +declare module es { + class TweenManager extends GlobalManager { + static defaultEaseType: EaseType; + static removeAllTweensOnLevelLoad: boolean; + static cacheNumberTweens: boolean; + static cacheVector2Tweens: boolean; + static cacheRectTweens: boolean; + private _activeTweens; + private _tempTweens; + private _isUpdating; + private static _instance; + constructor(); + update(): void; + static addTween(tween: ITweenable): void; + static removeTween(tween: ITweenable): void; + static stopAllTweens(bringToCompletion?: boolean): void; + static allTweensWithContext(context: any): ITweenable[]; + static stopAllTweensWithContext(context: any, bringToCompletion?: boolean): void; + static allTweenWithTarget(target: any): ITweenable[]; + static stopAllTweensWithTarget(target: any, bringToCompletion?: boolean): void; + } +} +declare module es { + module Easing { + class Linear { + static easeNone(t: number, d: number): number; + } + class Quadratic { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Back { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Bounce { + static easeOut(t: number, d: number): number; + static easeIn(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Circular { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Cubic { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Elastic { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + static punch(t: number, d: number): number; + } + class Exponential { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Quartic { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Quintic { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + class Sinusoidal { + static easeIn(t: number, d: number): number; + static easeOut(t: number, d: number): number; + static easeInOut(t: number, d: number): number; + } + } +} +declare module es { + class Lerps { + static lerp(from: number, to: number, t: number): number; + static lerpVector2(from: Vector2, to: Vector2, t: number): Vector2; + static lerpRectangle(from: Rectangle, to: Rectangle, t: number): Rectangle; + static angleLerp(from: Vector2, to: Vector2, t: number): Vector2; + static ease(easeType: EaseType, from: number, to: number, t: number, duration: number): number; + static easeVector2(easeType: EaseType, from: Vector2, to: Vector2, t: number, duration: number): Vector2; + static easeRectangle(easeType: EaseType, from: Rectangle, to: Rectangle, t: number, duration: number): Rectangle; + static easeAngle(easeType: EaseType, from: Vector2, to: Vector2, t: number, duration: number): Vector2; + static fastSpring(currentValue: Vector2, targetValue: Vector2, velocity: Vector2, dampingRatio: number, angularFrequency: number): Vector2; + } +} +declare module es { + interface ITween extends ITweenControl { + setEaseType(easeType: EaseType): ITween; + setDelay(delay: number): ITween; + setDuration(duration: number): ITween; + setTimeScale(timeScale: number): ITween; + setIsTimeScaleIndependent(): ITween; + setCompletionHandler(completionHandler: (tween: ITween) => void): ITween; + setLoops(loopType: LoopType, loops: number, delayBetweenLoops: number): ITween; + setFrom(from: T): ITween; + prepareForReuse(from: T, to: T, duration: number): ITween; + setRecycleTween(shouldRecycleTween: boolean): ITween; + setIsRelative(): ITween; + setContext(context: any): ITween; + setNextTween(nextTween: ITweenable): ITween; + } +} +declare module es { + interface ITweenControl extends ITweenable { + context: any; + jumpToElapsedTime(elapsedTime: number): any; + waitForCompletion(): any; + getTargetObject(): any; + } +} +declare module es { + interface ITweenTarget { + setTweenedValue(value: T): any; + getTweenedValue(): T; + getTargetObject(): any; + } +} +declare module es { + interface ITweenable { + tick(): boolean; + recycleSelf(): any; + isRunning(): boolean; + start(): any; + pause(): any; + resume(): any; + stop(bringToCompletion: boolean): any; + } +} diff --git a/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.js b/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.js new file mode 100644 index 00000000..3da86956 --- /dev/null +++ b/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.js @@ -0,0 +1,1110 @@ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var es; +(function (es) { + var AbstractTweenable = (function () { + function AbstractTweenable() { + } + AbstractTweenable.prototype.recycleSelf = function () { + }; + AbstractTweenable.prototype.isRunning = function () { + return this._isCurrentlyManagedByTweenManager && !this._isPaused; + }; + AbstractTweenable.prototype.start = function () { + if (this._isCurrentlyManagedByTweenManager) { + this._isPaused = false; + return; + } + es.TweenManager.addTween(this); + this._isCurrentlyManagedByTweenManager = true; + this._isPaused = false; + }; + AbstractTweenable.prototype.pause = function () { + this._isPaused = true; + }; + AbstractTweenable.prototype.resume = function () { + this._isPaused = false; + }; + AbstractTweenable.prototype.stop = function (bringToCompletion) { + if (bringToCompletion === void 0) { bringToCompletion = false; } + es.TweenManager.removeTween(this); + this._isCurrentlyManagedByTweenManager = false; + this._isPaused = true; + }; + return AbstractTweenable; + }()); + es.AbstractTweenable = AbstractTweenable; +})(es || (es = {})); +var es; +(function (es) { + var PropertyTarget = (function () { + function PropertyTarget(target, propertyName) { + this._target = target; + this._propertyName = propertyName; + } + PropertyTarget.prototype.getTargetObject = function () { + return this._target; + }; + PropertyTarget.prototype.setTweenedValue = function (value) { + this._target[this._propertyName] = value; + }; + PropertyTarget.prototype.getTweenedValue = function () { + return this._target[this._propertyName]; + }; + return PropertyTarget; + }()); + var PropertyTweens = (function () { + function PropertyTweens() { + } + PropertyTweens.NumberPropertyTo = function (self, memberName, to, duration) { + var tweenTarget = new PropertyTarget(self, memberName); + var tween = es.TweenManager.cacheNumberTweens ? es.Pool.obtain(es.NumberTween) : new es.NumberTween(); + tween.initialize(tweenTarget, to, duration); + return tween; + }; + PropertyTweens.Vector2PropertyTo = function (self, memeberName, to, duration) { + var tweenTarget = new PropertyTarget(self, memeberName); + var tween = es.TweenManager.cacheVector2Tweens ? es.Pool.obtain(es.Vector2Tween) : new es.Vector2Tween(); + tween.initialize(tweenTarget, to, duration); + return tween; + }; + return PropertyTweens; + }()); + es.PropertyTweens = PropertyTweens; +})(es || (es = {})); +var es; +(function (es) { + var TransformSpringTween = (function (_super) { + __extends(TransformSpringTween, _super); + function TransformSpringTween(transform, targetType, targetValue) { + var _this = _super.call(this) || this; + _this.dampingRatio = 0.23; + _this.angularFrequency = 25; + _this._transform = transform; + _this._targetType = targetType; + _this.setTargetValue(targetValue); + return _this; + } + Object.defineProperty(TransformSpringTween.prototype, "targetType", { + get: function () { + return this._targetType; + }, + enumerable: true, + configurable: true + }); + TransformSpringTween.prototype.setTargetValue = function (targetValue) { + this._velocity = es.Vector2.zero; + this._targetValue = targetValue; + if (!this._isCurrentlyManagedByTweenManager) + this.start(); + }; + TransformSpringTween.prototype.updateDampingRatioWithHalfLife = function (lambda) { + this.dampingRatio = (-lambda / this.angularFrequency) * Math.log(0.5); + }; + TransformSpringTween.prototype.tick = function () { + if (!this._isPaused) + this.setTweenedValue(es.Lerps.fastSpring(this.getCurrentValueOfTweenedTargetType(), this._targetValue, this._velocity, this.dampingRatio, this.angularFrequency)); + return false; + }; + TransformSpringTween.prototype.setTweenedValue = function (value) { + switch (this._targetType) { + case es.TransformTargetType.position: + this._transform.position = value; + break; + case es.TransformTargetType.localPosition: + this._transform.localPosition = value; + break; + case es.TransformTargetType.scale: + this._transform.scale = value; + break; + case es.TransformTargetType.localScale: + this._transform.localScale = value; + break; + case es.TransformTargetType.rotationDegrees: + this._transform.rotationDegrees = value.x; + case es.TransformTargetType.localRotationDegrees: + this._transform.localRotationDegrees = value.x; + break; + } + }; + TransformSpringTween.prototype.getCurrentValueOfTweenedTargetType = function () { + switch (this._targetType) { + case es.TransformTargetType.position: + return this._transform.position; + case es.TransformTargetType.localPosition: + return this._transform.localPosition; + case es.TransformTargetType.scale: + return this._transform.scale; + case es.TransformTargetType.localScale: + return this._transform.localScale; + case es.TransformTargetType.rotationDegrees: + return new es.Vector2(this._transform.rotationDegrees); + case es.TransformTargetType.localRotationDegrees: + return new es.Vector2(this._transform.localRotationDegrees, 0); + default: + return es.Vector2.zero; + } + }; + return TransformSpringTween; + }(es.AbstractTweenable)); + es.TransformSpringTween = TransformSpringTween; +})(es || (es = {})); +var es; +(function (es) { + var LoopType; + (function (LoopType) { + LoopType[LoopType["none"] = 0] = "none"; + LoopType[LoopType["restartFromBeginning"] = 1] = "restartFromBeginning"; + LoopType[LoopType["pingpong"] = 2] = "pingpong"; + })(LoopType = es.LoopType || (es.LoopType = {})); + var TweenState; + (function (TweenState) { + TweenState[TweenState["running"] = 0] = "running"; + TweenState[TweenState["paused"] = 1] = "paused"; + TweenState[TweenState["complete"] = 2] = "complete"; + })(TweenState = es.TweenState || (es.TweenState = {})); + var Tween = (function () { + function Tween() { + this._shouldRecycleTween = true; + this._tweenState = TweenState.complete; + this._timeScale = 1; + } + Tween.prototype.setEaseType = function (easeType) { + this._easeType = easeType; + return this; + }; + Tween.prototype.setDelay = function (delay) { + this._delay = delay; + this._elapsedTime = -this._delay; + return this; + }; + Tween.prototype.setDuration = function (duration) { + this._duration = duration; + return this; + }; + Tween.prototype.setTimeScale = function (timeSclae) { + this._timeScale = timeSclae; + return this; + }; + Tween.prototype.setIsTimeScaleIndependent = function () { + this._isTimeScaleIndependent = true; + return this; + }; + Tween.prototype.setCompletionHandler = function (completeHandler) { + this._completionHandler = completeHandler; + return this; + }; + Tween.prototype.setLoops = function (loopType, loops, delayBetweenLoops) { + if (loops === void 0) { loops = 1; } + if (delayBetweenLoops === void 0) { delayBetweenLoops = 0; } + this._loopType = loopType; + this._delayBetweenLoops = delayBetweenLoops; + if (loops < 0) + loops = -1; + if (loopType == LoopType.pingpong) + loops = loops * 2; + this._loops = loops; + return this; + }; + Tween.prototype.setLoopCompletionHanlder = function (loopCompleteHandler) { + this._loopCompleteHandler = loopCompleteHandler; + return this; + }; + Tween.prototype.setFrom = function (from) { + this._isFromValueOverridden = true; + this._fromValue = from; + return this; + }; + Tween.prototype.prepareForReuse = function (from, to, duration) { + this.initialize(this._target, to, duration); + return this; + }; + Tween.prototype.setRecycleTween = function (shouldRecycleTween) { + this._shouldRecycleTween = shouldRecycleTween; + return this; + }; + Tween.prototype.setContext = function (context) { + this.context = context; + return this; + }; + Tween.prototype.setNextTween = function (nextTween) { + this._nextTween = nextTween; + return this; + }; + Tween.prototype.tick = function () { + if (this._tweenState == TweenState.paused) + return false; + var elapsedTimeExcess = 0; + if (!this._isRunningInReverse && this._elapsedTime >= this._duration) { + elapsedTimeExcess = this._elapsedTime - this._duration; + this._elapsedTime = this._duration; + this._tweenState = TweenState.complete; + } + else if (this._isRunningInReverse && this._elapsedTime <= 0) { + elapsedTimeExcess = 0 - this._elapsedTime; + this._elapsedTime = 0; + this._tweenState = TweenState.complete; + } + if (this._elapsedTime >= 0 && this._elapsedTime <= this._duration) { + this.updateValue(); + } + if (this._loopType != LoopType.none && this._tweenState == TweenState.complete && this._loops != 0) { + this.handleLooping(elapsedTimeExcess); + } + var deltaTime = this._isTimeScaleIndependent ? es.Time.unscaledDeltaTime : es.Time.deltaTime; + deltaTime *= this._timeScale; + if (this._isRunningInReverse) + this._elapsedTime -= deltaTime; + else + this._elapsedTime += deltaTime; + if (this._tweenState == TweenState.complete) { + this._completionHandler && this._completionHandler(this); + if (this._nextTween != null) { + this._nextTween.start(); + this._nextTween = null; + } + return true; + } + return false; + }; + Tween.prototype.recycleSelf = function () { + if (this._shouldRecycleTween) { + this._target = null; + this._nextTween = null; + } + }; + Tween.prototype.isRunning = function () { + return this._tweenState == TweenState.running; + }; + Tween.prototype.start = function () { + if (!this._isFromValueOverridden) + this._fromValue = this._target.getTargetObject(); + if (this._tweenState == TweenState.complete) { + this._tweenState = TweenState.running; + es.TweenManager.addTween(this); + } + }; + Tween.prototype.pause = function () { + this._tweenState = TweenState.paused; + }; + Tween.prototype.resume = function () { + this._tweenState = TweenState.running; + }; + Tween.prototype.stop = function (bringToCompletion) { + if (bringToCompletion === void 0) { bringToCompletion = false; } + this._tweenState = TweenState.complete; + if (bringToCompletion) { + this._elapsedTime = this._isRunningInReverse ? 0 : this._duration; + this._loopType = LoopType.none; + this._loops = 0; + } + else { + es.TweenManager.removeTween(this); + } + }; + Tween.prototype.jumpToElapsedTime = function (elapsedTime) { + this._elapsedTime = es.MathHelper.clamp(elapsedTime, 0, this._duration); + this.updateValue(); + }; + Tween.prototype.reverseTween = function () { + this._isRunningInReverse = !this._isRunningInReverse; + }; + Tween.prototype.waitForCompletion = function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(this._tweenState != TweenState.complete)) return [3, 2]; + return [4, null]; + case 1: + _a.sent(); + return [3, 0]; + case 2: return [2]; + } + }); + }; + Tween.prototype.getTargetObject = function () { + return this._target.getTargetObject(); + }; + Tween.prototype.resetState = function () { + this.context = null; + this._completionHandler = this._loopCompleteHandler = null; + this._isFromValueOverridden = false; + this._isTimeScaleIndependent = false; + this._tweenState = TweenState.complete; + this._isRelative = false; + this._easeType = es.TweenManager.defaultEaseType; + if (this._nextTween != null) { + this._nextTween.recycleSelf(); + this._nextTween = null; + } + this._delay = 0; + this._duration = 0; + this._timeScale = 1; + this._elapsedTime = 0; + this._loopType = LoopType.none; + this._delayBetweenLoops = 0; + this._loops = 0; + this._isRunningInReverse = false; + }; + Tween.prototype.initialize = function (target, to, duration) { + this.resetState(); + this._target = target; + this._toValue = to; + this._duration = duration; + }; + Tween.prototype.handleLooping = function (elapsedTimeExcess) { + this._loops--; + if (this._loopType == LoopType.pingpong) { + this.reverseTween(); + } + if (this._loopType == LoopType.restartFromBeginning || this._loops % 2 == 0) { + this._loopCompleteHandler && this._completionHandler(this); + } + if (this._loops != 0) { + this._tweenState = TweenState.running; + if (this._loopType == LoopType.restartFromBeginning) { + this._elapsedTime = elapsedTimeExcess - this._delayBetweenLoops; + } + else { + if (this._isRunningInReverse) + this._elapsedTime += this._delayBetweenLoops - elapsedTimeExcess; + else + this._elapsedTime = elapsedTimeExcess - this._delayBetweenLoops; + } + if (this._delayBetweenLoops == 0 && elapsedTimeExcess > 0) { + this.updateValue(); + } + } + }; + return Tween; + }()); + es.Tween = Tween; +})(es || (es = {})); +var es; +(function (es) { + var NumberTween = (function (_super) { + __extends(NumberTween, _super); + function NumberTween(target, to, duration) { + var _this = _super.call(this) || this; + _this.initialize(target, to, duration); + return _this; + } + NumberTween.create = function () { + return es.TweenManager.cacheNumberTweens ? es.Pool.obtain(NumberTween) : new NumberTween(); + }; + NumberTween.prototype.setIsRelative = function () { + this._isRelative = true; + this._toValue += this._fromValue; + return this; + }; + NumberTween.prototype.updateValue = function () { + this._target.setTweenedValue(es.Lerps.ease(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); + }; + NumberTween.prototype.recycleSelf = function () { + _super.prototype.recycleSelf.call(this); + if (this._shouldRecycleTween && es.TweenManager.cacheNumberTweens) + es.Pool.free(this); + }; + return NumberTween; + }(es.Tween)); + es.NumberTween = NumberTween; + var Vector2Tween = (function (_super) { + __extends(Vector2Tween, _super); + function Vector2Tween(target, to, duration) { + var _this = _super.call(this) || this; + _this.initialize(target, to, duration); + return _this; + } + Vector2Tween.create = function () { + return es.TweenManager.cacheVector2Tweens ? es.Pool.obtain(Vector2Tween) : new Vector2Tween(); + }; + Vector2Tween.prototype.setIsRelative = function () { + this._isRelative = true; + this._toValue.add(this._fromValue); + return this; + }; + Vector2Tween.prototype.updateValue = function () { + this._target.setTweenedValue(es.Lerps.easeVector2(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); + }; + Vector2Tween.prototype.recycleSelf = function () { + _super.prototype.recycleSelf.call(this); + if (this._shouldRecycleTween && es.TweenManager.cacheVector2Tweens) + es.Pool.free(this); + }; + return Vector2Tween; + }(es.Tween)); + es.Vector2Tween = Vector2Tween; + var RectangleTween = (function (_super) { + __extends(RectangleTween, _super); + function RectangleTween(target, to, duration) { + var _this = _super.call(this) || this; + _this.initialize(target, to, duration); + return _this; + } + RectangleTween.create = function () { + return es.TweenManager.cacheRectTweens ? es.Pool.obtain(RectangleTween) : new RectangleTween(); + }; + RectangleTween.prototype.setIsRelative = function () { + this._isRelative = true; + this._toValue = new es.Rectangle(this._toValue.x + this._fromValue.x, this._toValue.y + this._fromValue.y, this._toValue.width + this._fromValue.width, this._toValue.height + this._fromValue.height); + return this; + }; + RectangleTween.prototype.updateValue = function () { + this._target.setTweenedValue(es.Lerps.easeRectangle(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); + }; + RectangleTween.prototype.recycleSelf = function () { + _super.prototype.recycleSelf.call(this); + if (this._shouldRecycleTween && es.TweenManager.cacheRectTweens) + es.Pool.free(this); + }; + return RectangleTween; + }(es.Tween)); + es.RectangleTween = RectangleTween; +})(es || (es = {})); +var es; +(function (es) { + var TransformTargetType; + (function (TransformTargetType) { + TransformTargetType[TransformTargetType["position"] = 0] = "position"; + TransformTargetType[TransformTargetType["localPosition"] = 1] = "localPosition"; + TransformTargetType[TransformTargetType["scale"] = 2] = "scale"; + TransformTargetType[TransformTargetType["localScale"] = 3] = "localScale"; + TransformTargetType[TransformTargetType["rotationDegrees"] = 4] = "rotationDegrees"; + TransformTargetType[TransformTargetType["localRotationDegrees"] = 5] = "localRotationDegrees"; + })(TransformTargetType = es.TransformTargetType || (es.TransformTargetType = {})); + var TransformVector2Tween = (function (_super) { + __extends(TransformVector2Tween, _super); + function TransformVector2Tween() { + return _super !== null && _super.apply(this, arguments) || this; + } + TransformVector2Tween.prototype.setTweenedValue = function (value) { + switch (this._targetType) { + case TransformTargetType.position: + this._transform.position = value; + break; + case TransformTargetType.localPosition: + this._transform.localPosition = value; + break; + case TransformTargetType.scale: + this._transform.scale = value; + break; + case TransformTargetType.localScale: + this._transform.localScale = value; + break; + case TransformTargetType.rotationDegrees: + this._transform.rotationDegrees = value.x; + case TransformTargetType.localRotationDegrees: + this._transform.localRotationDegrees = value.x; + break; + } + }; + TransformVector2Tween.prototype.getTweenedValue = function () { + switch (this._targetType) { + case TransformTargetType.position: + return this._transform.position; + case TransformTargetType.localPosition: + return this._transform.localPosition; + case TransformTargetType.scale: + return this._transform.scale; + case TransformTargetType.localScale: + return this._transform.localScale; + case TransformTargetType.rotationDegrees: + return new es.Vector2(this._transform.rotationDegrees); + case TransformTargetType.localRotationDegrees: + return new es.Vector2(this._transform.localRotationDegrees, 0); + } + }; + TransformVector2Tween.prototype.getTargetObject = function () { + return this._transform; + }; + TransformVector2Tween.prototype.setTargetAndType = function (transform, targetType) { + this._transform = transform; + this._targetType = targetType; + }; + TransformVector2Tween.prototype.updateValue = function () { + if ((this._targetType == TransformTargetType.rotationDegrees || + this._targetType == TransformTargetType.localRotationDegrees) && !this._isRelative) { + this.setTweenedValue(es.Lerps.easeAngle(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); + } + else { + this.setTweenedValue(es.Lerps.easeVector2(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); + } + }; + TransformVector2Tween.prototype.recycleSelf = function () { + if (this._shouldRecycleTween) { + this._target = null; + this._nextTween = null; + this._transform = null; + es.Pool.free(this); + } + }; + return TransformVector2Tween; + }(es.Vector2Tween)); + es.TransformVector2Tween = TransformVector2Tween; +})(es || (es = {})); +var es; +(function (es) { + var EaseType; + (function (EaseType) { + EaseType[EaseType["linear"] = 0] = "linear"; + EaseType[EaseType["sineIn"] = 1] = "sineIn"; + EaseType[EaseType["sineOut"] = 2] = "sineOut"; + EaseType[EaseType["sineInOut"] = 3] = "sineInOut"; + EaseType[EaseType["quadIn"] = 4] = "quadIn"; + EaseType[EaseType["quadOut"] = 5] = "quadOut"; + EaseType[EaseType["quadInOut"] = 6] = "quadInOut"; + EaseType[EaseType["quintIn"] = 7] = "quintIn"; + EaseType[EaseType["quintOut"] = 8] = "quintOut"; + EaseType[EaseType["quintInOut"] = 9] = "quintInOut"; + EaseType[EaseType["cubicIn"] = 10] = "cubicIn"; + EaseType[EaseType["cubicOut"] = 11] = "cubicOut"; + EaseType[EaseType["cubicInOut"] = 12] = "cubicInOut"; + EaseType[EaseType["quartIn"] = 13] = "quartIn"; + EaseType[EaseType["quartOut"] = 14] = "quartOut"; + EaseType[EaseType["quartInOut"] = 15] = "quartInOut"; + EaseType[EaseType["expoIn"] = 16] = "expoIn"; + EaseType[EaseType["expoOut"] = 17] = "expoOut"; + EaseType[EaseType["expoInOut"] = 18] = "expoInOut"; + EaseType[EaseType["circleIn"] = 19] = "circleIn"; + EaseType[EaseType["circleOut"] = 20] = "circleOut"; + EaseType[EaseType["circleInOut"] = 21] = "circleInOut"; + EaseType[EaseType["elasticIn"] = 22] = "elasticIn"; + EaseType[EaseType["elasticOut"] = 23] = "elasticOut"; + EaseType[EaseType["elasticInOut"] = 24] = "elasticInOut"; + EaseType[EaseType["punch"] = 25] = "punch"; + EaseType[EaseType["backIn"] = 26] = "backIn"; + EaseType[EaseType["backOut"] = 27] = "backOut"; + EaseType[EaseType["backInOut"] = 28] = "backInOut"; + EaseType[EaseType["bounceIn"] = 29] = "bounceIn"; + EaseType[EaseType["bounceOut"] = 30] = "bounceOut"; + EaseType[EaseType["bounceInOut"] = 31] = "bounceInOut"; + })(EaseType = es.EaseType || (es.EaseType = {})); + var EaseHelper = (function () { + function EaseHelper() { + } + EaseHelper.oppositeEaseType = function (easeType) { + switch (easeType) { + case EaseType.linear: + return easeType; + case EaseType.backIn: + return EaseType.backOut; + case EaseType.backOut: + return EaseType.backIn; + case EaseType.backInOut: + return easeType; + case EaseType.bounceIn: + return EaseType.bounceOut; + case EaseType.bounceOut: + return EaseType.bounceIn; + case EaseType.bounceInOut: + return easeType; + case EaseType.circleIn: + return EaseType.circleOut; + case EaseType.circleOut: + return EaseType.circleIn; + case EaseType.circleInOut: + return easeType; + case EaseType.cubicIn: + return EaseType.cubicOut; + case EaseType.cubicOut: + return EaseType.cubicIn; + case EaseType.circleInOut: + return easeType; + case EaseType.punch: + return easeType; + case EaseType.expoIn: + return EaseType.expoOut; + case EaseType.expoOut: + return EaseType.expoIn; + case EaseType.expoInOut: + return easeType; + case EaseType.quadIn: + return EaseType.quadOut; + case EaseType.quadOut: + return EaseType.quadIn; + case EaseType.quadInOut: + return easeType; + case EaseType.quartIn: + return EaseType.quadOut; + case EaseType.quartOut: + return EaseType.quartIn; + case EaseType.quadInOut: + return easeType; + case EaseType.sineIn: + return EaseType.sineOut; + case EaseType.sineOut: + return EaseType.sineIn; + case EaseType.sineInOut: + return easeType; + default: + return easeType; + } + }; + EaseHelper.ease = function (easeType, t, duration) { + switch (easeType) { + case EaseType.linear: + return es.Easing.Linear.easeNone(t, duration); + case EaseType.backIn: + return es.Easing.Back.easeIn(t, duration); + case EaseType.backOut: + return es.Easing.Back.easeOut(t, duration); + case EaseType.backInOut: + return es.Easing.Back.easeInOut(t, duration); + case EaseType.bounceIn: + return es.Easing.Bounce.easeIn(t, duration); + case EaseType.bounceOut: + return es.Easing.Bounce.easeOut(t, duration); + case EaseType.bounceInOut: + return es.Easing.Bounce.easeInOut(t, duration); + case EaseType.circleIn: + return es.Easing.Circular.easeIn(t, duration); + case EaseType.circleOut: + return es.Easing.Circular.easeOut(t, duration); + case EaseType.circleInOut: + return es.Easing.Circular.easeInOut(t, duration); + case EaseType.cubicIn: + return es.Easing.Cubic.easeIn(t, duration); + case EaseType.cubicOut: + return es.Easing.Cubic.easeOut(t, duration); + case EaseType.cubicInOut: + return es.Easing.Cubic.easeInOut(t, duration); + case EaseType.elasticIn: + return es.Easing.Elastic.easeIn(t, duration); + case EaseType.elasticOut: + return es.Easing.Elastic.easeOut(t, duration); + case EaseType.elasticInOut: + return es.Easing.Elastic.easeInOut(t, duration); + case EaseType.punch: + return es.Easing.Elastic.punch(t, duration); + case EaseType.expoIn: + return es.Easing.Exponential.easeIn(t, duration); + case EaseType.expoOut: + return es.Easing.Exponential.easeOut(t, duration); + case EaseType.expoInOut: + return es.Easing.Exponential.easeInOut(t, duration); + case EaseType.quadIn: + return es.Easing.Quadratic.easeIn(t, duration); + case EaseType.quadOut: + return es.Easing.Quadratic.easeOut(t, duration); + case EaseType.quadInOut: + return es.Easing.Quadratic.easeInOut(t, duration); + case EaseType.quadIn: + return es.Easing.Quadratic.easeIn(t, duration); + case EaseType.quadOut: + return es.Easing.Quadratic.easeOut(t, duration); + case EaseType.quadInOut: + return es.Easing.Quadratic.easeInOut(t, duration); + case EaseType.quintIn: + return es.Easing.Quintic.easeIn(t, duration); + case EaseType.quintOut: + return es.Easing.Quintic.easeOut(t, duration); + case EaseType.quintInOut: + return es.Easing.Quintic.easeInOut(t, duration); + case EaseType.sineIn: + return es.Easing.Sinusoidal.easeIn(t, duration); + case EaseType.sineOut: + return es.Easing.Sinusoidal.easeOut(t, duration); + case EaseType.sineInOut: + return es.Easing.Sinusoidal.easeInOut(t, duration); + default: + return es.Easing.Linear.easeNone(t, duration); + } + }; + return EaseHelper; + }()); + es.EaseHelper = EaseHelper; +})(es || (es = {})); +var es; +(function (es) { + var TweenManager = (function (_super) { + __extends(TweenManager, _super); + function TweenManager() { + var _this = _super.call(this) || this; + _this._activeTweens = []; + _this._tempTweens = []; + TweenManager._instance = _this; + return _this; + } + TweenManager.prototype.update = function () { + this._isUpdating = true; + for (var i = this._activeTweens.length - 1; i >= 0; --i) { + var tween = this._activeTweens[i]; + if (tween.tick()) + this._tempTweens.push(tween); + } + this._isUpdating = false; + for (var i = 0; i < this._tempTweens.length; i++) { + this._tempTweens[i].recycleSelf(); + new linq.List(this._activeTweens).remove(this._tempTweens[i]); + } + this._tempTweens.length = 0; + }; + TweenManager.addTween = function (tween) { + TweenManager._instance._activeTweens.push(tween); + }; + TweenManager.removeTween = function (tween) { + if (TweenManager._instance._isUpdating) { + TweenManager._instance._tempTweens.push(tween); + } + else { + tween.recycleSelf(); + new linq.List(TweenManager._instance._activeTweens).remove(tween); + } + }; + TweenManager.stopAllTweens = function (bringToCompletion) { + if (bringToCompletion === void 0) { bringToCompletion = false; } + for (var i = TweenManager._instance._activeTweens.length - 1; i >= 0; --i) + TweenManager._instance._activeTweens[i].stop(bringToCompletion); + }; + TweenManager.allTweensWithContext = function (context) { + var foundTweens = []; + for (var i = 0; i < TweenManager._instance._activeTweens.length; i++) { + if (TweenManager._instance._activeTweens[i].context == context) + foundTweens.push(TweenManager._instance._activeTweens[i]); + } + return foundTweens; + }; + TweenManager.stopAllTweensWithContext = function (context, bringToCompletion) { + if (bringToCompletion === void 0) { bringToCompletion = false; } + for (var i = TweenManager._instance._activeTweens.length - 1; i >= 0; --i) { + if (TweenManager._instance._activeTweens[i].context == context) + TweenManager._instance._activeTweens[i].stop(bringToCompletion); + } + }; + TweenManager.allTweenWithTarget = function (target) { + var foundTweens = []; + for (var i = 0; i < TweenManager._instance._activeTweens.length; i++) { + if (TweenManager._instance._activeTweens[i]) { + var tweenControl = TweenManager._instance._activeTweens[i]; + if (tweenControl.getTargetObject() == target) + foundTweens.push(TweenManager._instance._activeTweens[i]); + } + } + return foundTweens; + }; + TweenManager.stopAllTweensWithTarget = function (target, bringToCompletion) { + if (bringToCompletion === void 0) { bringToCompletion = false; } + for (var i = TweenManager._instance._activeTweens.length - 1; i >= 0; --i) { + if (TweenManager._instance._activeTweens[i]) { + var tweenControl = TweenManager._instance._activeTweens[i]; + if (tweenControl.getTargetObject() == target) + tweenControl.stop(bringToCompletion); + } + } + }; + TweenManager.defaultEaseType = es.EaseType.quartIn; + TweenManager.removeAllTweensOnLevelLoad = false; + TweenManager.cacheNumberTweens = true; + TweenManager.cacheVector2Tweens = true; + TweenManager.cacheRectTweens = true; + return TweenManager; + }(es.GlobalManager)); + es.TweenManager = TweenManager; +})(es || (es = {})); +var es; +(function (es) { + var Easing; + (function (Easing) { + var Linear = (function () { + function Linear() { + } + Linear.easeNone = function (t, d) { + return t / d; + }; + return Linear; + }()); + Easing.Linear = Linear; + var Quadratic = (function () { + function Quadratic() { + } + Quadratic.easeIn = function (t, d) { + return (t /= d) * t; + }; + Quadratic.easeOut = function (t, d) { + return -1 * (t /= d) * (t - 2); + }; + Quadratic.easeInOut = function (t, d) { + if ((t /= d / 2) < 1) + return 0.5 * t * t; + return -0.5 * ((--t) * (t - 2) - 1); + }; + return Quadratic; + }()); + Easing.Quadratic = Quadratic; + var Back = (function () { + function Back() { + } + Back.easeIn = function (t, d) { + return (t /= d) * t * ((1.70158 + 1) * t - 1.70158); + }; + Back.easeOut = function (t, d) { + return ((t = t / d - 1) * t * ((1.70158 + 1) * t + 1.70158) + 1); + }; + Back.easeInOut = function (t, d) { + var s = 1.70158; + if ((t /= d / 2) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }; + return Back; + }()); + Easing.Back = Back; + var Bounce = (function () { + function Bounce() { + } + Bounce.easeOut = function (t, d) { + if ((t /= d) < (1 / 2.75)) { + return (7.5625 * t * t); + } + else if (t < (2 / 2.75)) { + return (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75); + } + else if (t < (2.5 / 2.75)) { + return (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375); + } + else { + return (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375); + } + }; + Bounce.easeIn = function (t, d) { + return 1 - this.easeOut(d - t, d); + }; + Bounce.easeInOut = function (t, d) { + if (t < d / 2) + return this.easeIn(t * 2, d) * 0.5; + else + return this.easeOut(t * 2 - d, d) * 0.5 + 1 * 0.5; + }; + return Bounce; + }()); + Easing.Bounce = Bounce; + var Circular = (function () { + function Circular() { + } + Circular.easeIn = function (t, d) { + return -(Math.sqrt(1 - (t /= d) * t) - 1); + }; + Circular.easeOut = function (t, d) { + return Math.sqrt(1 - (t = t / d - 1) * t); + }; + Circular.easeInOut = function (t, d) { + if ((t /= d / 2) < 1) + return -0.5 * (Math.sqrt(1 - t * t) - 1); + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }; + return Circular; + }()); + Easing.Circular = Circular; + var Cubic = (function () { + function Cubic() { + } + Cubic.easeIn = function (t, d) { + return (t /= d) * t * t; + }; + Cubic.easeOut = function (t, d) { + return ((t = t / d - 1) * t * t + 1); + }; + Cubic.easeInOut = function (t, d) { + if ((t /= d / 2) < 1) + return 0.5 * t * t * t; + return 0.5 * ((t -= 2) * t * t + 2); + }; + return Cubic; + }()); + Easing.Cubic = Cubic; + var Elastic = (function () { + function Elastic() { + } + Elastic.easeIn = function (t, d) { + if (t == 0) + return 0; + if ((t /= d) == 1) + return 1; + var p = d * 0.3; + var s = p / 4; + return -(1 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)); + }; + Elastic.easeOut = function (t, d) { + if (t == 0) + return 0; + if ((t /= d) == 1) + return 1; + var p = d * 0.3; + var s = p / 4; + return (1 * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + 1); + }; + Elastic.easeInOut = function (t, d) { + if (t == 0) + return 0; + if ((t /= d / 2) == 2) + return 1; + var p = d * (0.3 * 1.5); + var s = p / 4; + if (t < 1) + return -0.5 * (Math.pow(2, 10 * (t -= 1)) * Math.sin(t * d - s) * (2 * Math.PI) / p); + return (Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + 1); + }; + Elastic.punch = function (t, d) { + if (t == 0) + return 0; + if ((t /= d) == 1) + return 0; + var p = 0.3; + return (Math.pow(2, -10 * t) * Math.sin(t * (2 * Math.PI) / p)); + }; + return Elastic; + }()); + Easing.Elastic = Elastic; + var Exponential = (function () { + function Exponential() { + } + Exponential.easeIn = function (t, d) { + return (t == 0) ? 0 : Math.pow(2, 10 * (t / d - 1)); + }; + Exponential.easeOut = function (t, d) { + return t == d ? 1 : (-Math.pow(2, -10 * t / d) + 1); + }; + Exponential.easeInOut = function (t, d) { + if (t == 0) + return 0; + if (t == d) + return 1; + if ((t /= d / 2) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }; + return Exponential; + }()); + Easing.Exponential = Exponential; + var Quartic = (function () { + function Quartic() { + } + Quartic.easeIn = function (t, d) { + return (t /= d) * t * t * t; + }; + Quartic.easeOut = function (t, d) { + return -1 * ((t = t / d - 1) * t * t * t - 1); + }; + Quartic.easeInOut = function (t, d) { + t /= d / 2; + if (t < 1) + return 0.5 * t * t * t * t; + t -= 2; + return -0.5 * (t * t * t * t - 2); + }; + return Quartic; + }()); + Easing.Quartic = Quartic; + var Quintic = (function () { + function Quintic() { + } + Quintic.easeIn = function (t, d) { + return (t /= d) * t * t * t * t; + }; + Quintic.easeOut = function (t, d) { + return ((t = t / d - 1) * t * t * t * t + 1); + }; + Quintic.easeInOut = function (t, d) { + if ((t /= d / 2) < 1) + return 0.5 * t * t * t * t * t; + return 0.5 * ((t -= 2) * t * t * t * t + 2); + }; + return Quintic; + }()); + Easing.Quintic = Quintic; + var Sinusoidal = (function () { + function Sinusoidal() { + } + Sinusoidal.easeIn = function (t, d) { + return -1 * Math.cos(t / d * (Math.PI / 2)) + 1; + }; + Sinusoidal.easeOut = function (t, d) { + return Math.sin(t / d * (Math.PI / 2)); + }; + Sinusoidal.easeInOut = function (t, d) { + return -0.5 * (Math.cos(Math.PI * t / d) - 1); + }; + return Sinusoidal; + }()); + Easing.Sinusoidal = Sinusoidal; + })(Easing = es.Easing || (es.Easing = {})); +})(es || (es = {})); +var es; +(function (es) { + var Lerps = (function () { + function Lerps() { + } + Lerps.lerp = function (from, to, t) { + return from + (to - from) * t; + }; + Lerps.lerpVector2 = function (from, to, t) { + return new es.Vector2(from.x + (to.x - from.x) * t, from.y + (to.y - from.y) * t); + }; + Lerps.lerpRectangle = function (from, to, t) { + return new es.Rectangle((from.x + (to.x - from.x) * t), (from.y + (to.x - from.y) * t), (from.width + (to.width - from.width) * t), (from.height + (to.height - from.height) * t)); + }; + Lerps.angleLerp = function (from, to, t) { + var toMinusFrom = new es.Vector2(es.MathHelper.deltaAngle(from.x, to.x), es.MathHelper.deltaAngle(from.y, to.y)); + return new es.Vector2(from.x + toMinusFrom.x * t, from.y + toMinusFrom.y * t); + }; + Lerps.ease = function (easeType, from, to, t, duration) { + return this.lerp(from, to, es.EaseHelper.ease(easeType, t, duration)); + }; + Lerps.easeVector2 = function (easeType, from, to, t, duration) { + return this.lerpVector2(from, to, es.EaseHelper.ease(easeType, t, duration)); + }; + Lerps.easeRectangle = function (easeType, from, to, t, duration) { + return this.lerpRectangle(from, to, es.EaseHelper.ease(easeType, t, duration)); + }; + Lerps.easeAngle = function (easeType, from, to, t, duration) { + return this.angleLerp(from, to, es.EaseHelper.ease(easeType, t, duration)); + }; + Lerps.fastSpring = function (currentValue, targetValue, velocity, dampingRatio, angularFrequency) { + velocity.add(new es.Vector2(-2 * es.Time.deltaTime * dampingRatio * angularFrequency) + .multiply(velocity) + .add(new es.Vector2(es.Time.deltaTime * angularFrequency * angularFrequency) + .multiply(es.Vector2.subtract(targetValue, currentValue)))); + currentValue.add(new es.Vector2(es.Time.deltaTime).multiply(velocity)); + return currentValue; + }; + return Lerps; + }()); + es.Lerps = Lerps; +})(es || (es = {})); diff --git a/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.min.js b/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.min.js new file mode 100644 index 00000000..b71b0049 --- /dev/null +++ b/extensions/demo/demo_egret/libs/ecs-tween/ecs-tween.min.js @@ -0,0 +1 @@ +window.es={},window.__extends=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();var __generator=this&&this.__generator||function(e,t){var n,r,i,a,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(a){return function(o){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===a[0]||2===a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=this._duration?(r=this._elapsedTime-this._duration,this._elapsedTime=this._duration,this._tweenState=n.complete):this._isRunningInReverse&&this._elapsedTime<=0&&(r=0-this._elapsedTime,this._elapsedTime=0,this._tweenState=n.complete),this._elapsedTime>=0&&this._elapsedTime<=this._duration&&this.updateValue(),this._loopType!=t.none&&this._tweenState==n.complete&&0!=this._loops&&this.handleLooping(r);var i=this._isTimeScaleIndependent?e.Time.unscaledDeltaTime:e.Time.deltaTime;return i*=this._timeScale,this._isRunningInReverse?this._elapsedTime-=i:this._elapsedTime+=i,this._tweenState==n.complete&&(this._completionHandler&&this._completionHandler(this),null!=this._nextTween&&(this._nextTween.start(),this._nextTween=null),!0)},r.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._target=null,this._nextTween=null)},r.prototype.isRunning=function(){return this._tweenState==n.running},r.prototype.start=function(){this._isFromValueOverridden||(this._fromValue=this._target.getTargetObject()),this._tweenState==n.complete&&(this._tweenState=n.running,e.TweenManager.addTween(this))},r.prototype.pause=function(){this._tweenState=n.paused},r.prototype.resume=function(){this._tweenState=n.running},r.prototype.stop=function(r){void 0===r&&(r=!1),this._tweenState=n.complete,r?(this._elapsedTime=this._isRunningInReverse?0:this._duration,this._loopType=t.none,this._loops=0):e.TweenManager.removeTween(this)},r.prototype.jumpToElapsedTime=function(t){this._elapsedTime=e.MathHelper.clamp(t,0,this._duration),this.updateValue()},r.prototype.reverseTween=function(){this._isRunningInReverse=!this._isRunningInReverse},r.prototype.waitForCompletion=function(){return __generator(this,function(e){switch(e.label){case 0:return this._tweenState==n.complete?[3,2]:[4,null];case 1:return e.sent(),[3,0];case 2:return[2]}})},r.prototype.getTargetObject=function(){return this._target.getTargetObject()},r.prototype.resetState=function(){this.context=null,this._completionHandler=this._loopCompleteHandler=null,this._isFromValueOverridden=!1,this._isTimeScaleIndependent=!1,this._tweenState=n.complete,this._isRelative=!1,this._easeType=e.TweenManager.defaultEaseType,null!=this._nextTween&&(this._nextTween.recycleSelf(),this._nextTween=null),this._delay=0,this._duration=0,this._timeScale=1,this._elapsedTime=0,this._loopType=t.none,this._delayBetweenLoops=0,this._loops=0,this._isRunningInReverse=!1},r.prototype.initialize=function(e,t,n){this.resetState(),this._target=e,this._toValue=t,this._duration=n},r.prototype.handleLooping=function(e){this._loops--,this._loopType==t.pingpong&&this.reverseTween(),this._loopType!=t.restartFromBeginning&&this._loops%2!=0||this._loopCompleteHandler&&this._completionHandler(this),0!=this._loops&&(this._tweenState=n.running,this._loopType==t.restartFromBeginning?this._elapsedTime=e-this._delayBetweenLoops:this._isRunningInReverse?this._elapsedTime+=this._delayBetweenLoops-e:this._elapsedTime=e-this._delayBetweenLoops,0==this._delayBetweenLoops&&e>0&&this.updateValue())},r}();e.Tween=r}(es||(es={})),function(e){var t=function(t){function n(e,n,r){var i=t.call(this)||this;return i.initialize(e,n,r),i}return __extends(n,t),n.create=function(){return e.TweenManager.cacheNumberTweens?e.Pool.obtain(n):new n},n.prototype.setIsRelative=function(){return this._isRelative=!0,this._toValue+=this._fromValue,this},n.prototype.updateValue=function(){this._target.setTweenedValue(e.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){t.prototype.recycleSelf.call(this),this._shouldRecycleTween&&e.TweenManager.cacheNumberTweens&&e.Pool.free(this)},n}(e.Tween);e.NumberTween=t;var n=function(t){function n(e,n,r){var i=t.call(this)||this;return i.initialize(e,n,r),i}return __extends(n,t),n.create=function(){return e.TweenManager.cacheVector2Tweens?e.Pool.obtain(n):new n},n.prototype.setIsRelative=function(){return this._isRelative=!0,this._toValue.add(this._fromValue),this},n.prototype.updateValue=function(){this._target.setTweenedValue(e.Lerps.easeVector2(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){t.prototype.recycleSelf.call(this),this._shouldRecycleTween&&e.TweenManager.cacheVector2Tweens&&e.Pool.free(this)},n}(e.Tween);e.Vector2Tween=n;var r=function(t){function n(e,n,r){var i=t.call(this)||this;return i.initialize(e,n,r),i}return __extends(n,t),n.create=function(){return e.TweenManager.cacheRectTweens?e.Pool.obtain(n):new n},n.prototype.setIsRelative=function(){return this._isRelative=!0,this._toValue=new e.Rectangle(this._toValue.x+this._fromValue.x,this._toValue.y+this._fromValue.y,this._toValue.width+this._fromValue.width,this._toValue.height+this._fromValue.height),this},n.prototype.updateValue=function(){this._target.setTweenedValue(e.Lerps.easeRectangle(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){t.prototype.recycleSelf.call(this),this._shouldRecycleTween&&e.TweenManager.cacheRectTweens&&e.Pool.free(this)},n}(e.Tween);e.RectangleTween=r}(es||(es={})),function(e){var t;!function(e){e[e.position=0]="position",e[e.localPosition=1]="localPosition",e[e.scale=2]="scale",e[e.localScale=3]="localScale",e[e.rotationDegrees=4]="rotationDegrees",e[e.localRotationDegrees=5]="localRotationDegrees"}(t=e.TransformTargetType||(e.TransformTargetType={}));var n=function(n){function r(){return null!==n&&n.apply(this,arguments)||this}return __extends(r,n),r.prototype.setTweenedValue=function(e){switch(this._targetType){case t.position:this._transform.position=e;break;case t.localPosition:this._transform.localPosition=e;break;case t.scale:this._transform.scale=e;break;case t.localScale:this._transform.localScale=e;break;case t.rotationDegrees:this._transform.rotationDegrees=e.x;case t.localRotationDegrees:this._transform.localRotationDegrees=e.x}},r.prototype.getTweenedValue=function(){switch(this._targetType){case t.position:return this._transform.position;case t.localPosition:return this._transform.localPosition;case t.scale:return this._transform.scale;case t.localScale:return this._transform.localScale;case t.rotationDegrees:return new e.Vector2(this._transform.rotationDegrees);case t.localRotationDegrees:return new e.Vector2(this._transform.localRotationDegrees,0)}},r.prototype.getTargetObject=function(){return this._transform},r.prototype.setTargetAndType=function(e,t){this._transform=e,this._targetType=t},r.prototype.updateValue=function(){this._targetType!=t.rotationDegrees&&this._targetType!=t.localRotationDegrees||this._isRelative?this.setTweenedValue(e.Lerps.easeVector2(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration)):this.setTweenedValue(e.Lerps.easeAngle(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},r.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._target=null,this._nextTween=null,this._transform=null,e.Pool.free(this))},r}(e.Vector2Tween);e.TransformVector2Tween=n}(es||(es={})),function(e){var t;!function(e){e[e.linear=0]="linear",e[e.sineIn=1]="sineIn",e[e.sineOut=2]="sineOut",e[e.sineInOut=3]="sineInOut",e[e.quadIn=4]="quadIn",e[e.quadOut=5]="quadOut",e[e.quadInOut=6]="quadInOut",e[e.quintIn=7]="quintIn",e[e.quintOut=8]="quintOut",e[e.quintInOut=9]="quintInOut",e[e.cubicIn=10]="cubicIn",e[e.cubicOut=11]="cubicOut",e[e.cubicInOut=12]="cubicInOut",e[e.quartIn=13]="quartIn",e[e.quartOut=14]="quartOut",e[e.quartInOut=15]="quartInOut",e[e.expoIn=16]="expoIn",e[e.expoOut=17]="expoOut",e[e.expoInOut=18]="expoInOut",e[e.circleIn=19]="circleIn",e[e.circleOut=20]="circleOut",e[e.circleInOut=21]="circleInOut",e[e.elasticIn=22]="elasticIn",e[e.elasticOut=23]="elasticOut",e[e.elasticInOut=24]="elasticInOut",e[e.punch=25]="punch",e[e.backIn=26]="backIn",e[e.backOut=27]="backOut",e[e.backInOut=28]="backInOut",e[e.bounceIn=29]="bounceIn",e[e.bounceOut=30]="bounceOut",e[e.bounceInOut=31]="bounceInOut"}(t=e.EaseType||(e.EaseType={}));var n=function(){function n(){}return n.oppositeEaseType=function(e){switch(e){case t.linear:return e;case t.backIn:return t.backOut;case t.backOut:return t.backIn;case t.backInOut:return e;case t.bounceIn:return t.bounceOut;case t.bounceOut:return t.bounceIn;case t.bounceInOut:return e;case t.circleIn:return t.circleOut;case t.circleOut:return t.circleIn;case t.circleInOut:return e;case t.cubicIn:return t.cubicOut;case t.cubicOut:return t.cubicIn;case t.circleInOut:case t.punch:return e;case t.expoIn:return t.expoOut;case t.expoOut:return t.expoIn;case t.expoInOut:return e;case t.quadIn:return t.quadOut;case t.quadOut:return t.quadIn;case t.quadInOut:return e;case t.quartIn:return t.quadOut;case t.quartOut:return t.quartIn;case t.quadInOut:return e;case t.sineIn:return t.sineOut;case t.sineOut:return t.sineIn;case t.sineInOut:default:return e}},n.ease=function(n,r,i){switch(n){case t.linear:return e.Easing.Linear.easeNone(r,i);case t.backIn:return e.Easing.Back.easeIn(r,i);case t.backOut:return e.Easing.Back.easeOut(r,i);case t.backInOut:return e.Easing.Back.easeInOut(r,i);case t.bounceIn:return e.Easing.Bounce.easeIn(r,i);case t.bounceOut:return e.Easing.Bounce.easeOut(r,i);case t.bounceInOut:return e.Easing.Bounce.easeInOut(r,i);case t.circleIn:return e.Easing.Circular.easeIn(r,i);case t.circleOut:return e.Easing.Circular.easeOut(r,i);case t.circleInOut:return e.Easing.Circular.easeInOut(r,i);case t.cubicIn:return e.Easing.Cubic.easeIn(r,i);case t.cubicOut:return e.Easing.Cubic.easeOut(r,i);case t.cubicInOut:return e.Easing.Cubic.easeInOut(r,i);case t.elasticIn:return e.Easing.Elastic.easeIn(r,i);case t.elasticOut:return e.Easing.Elastic.easeOut(r,i);case t.elasticInOut:return e.Easing.Elastic.easeInOut(r,i);case t.punch:return e.Easing.Elastic.punch(r,i);case t.expoIn:return e.Easing.Exponential.easeIn(r,i);case t.expoOut:return e.Easing.Exponential.easeOut(r,i);case t.expoInOut:return e.Easing.Exponential.easeInOut(r,i);case t.quadIn:return e.Easing.Quadratic.easeIn(r,i);case t.quadOut:return e.Easing.Quadratic.easeOut(r,i);case t.quadInOut:return e.Easing.Quadratic.easeInOut(r,i);case t.quadIn:return e.Easing.Quadratic.easeIn(r,i);case t.quadOut:return e.Easing.Quadratic.easeOut(r,i);case t.quadInOut:return e.Easing.Quadratic.easeInOut(r,i);case t.quintIn:return e.Easing.Quintic.easeIn(r,i);case t.quintOut:return e.Easing.Quintic.easeOut(r,i);case t.quintInOut:return e.Easing.Quintic.easeInOut(r,i);case t.sineIn:return e.Easing.Sinusoidal.easeIn(r,i);case t.sineOut:return e.Easing.Sinusoidal.easeOut(r,i);case t.sineInOut:return e.Easing.Sinusoidal.easeInOut(r,i);default:return e.Easing.Linear.easeNone(r,i)}},n}();e.EaseHelper=n}(es||(es={})),function(e){var t=function(t){function n(){var e=t.call(this)||this;return e._activeTweens=[],e._tempTweens=[],n._instance=e,e}return __extends(n,t),n.prototype.update=function(){this._isUpdating=!0;for(var e=this._activeTweens.length-1;e>=0;--e){var t=this._activeTweens[e];t.tick()&&this._tempTweens.push(t)}this._isUpdating=!1;for(e=0;e=0;--t)n._instance._activeTweens[t].stop(e)},n.allTweensWithContext=function(e){for(var t=[],r=0;r=0;--r)n._instance._activeTweens[r].context==e&&n._instance._activeTweens[r].stop(t)},n.allTweenWithTarget=function(e){for(var t=[],r=0;r=0;--r)if(n._instance._activeTweens[r]){var i=n._instance._activeTweens[r];i.getTargetObject()==e&&i.stop(t)}},n.defaultEaseType=e.EaseType.quartIn,n.removeAllTweensOnLevelLoad=!1,n.cacheNumberTweens=!0,n.cacheVector2Tweens=!0,n.cacheRectTweens=!0,n}(e.GlobalManager);e.TweenManager=t}(es||(es={})),function(e){!function(e){var t=function(){function e(){}return e.easeNone=function(e,t){return e/t},e}();e.Linear=t;var n=function(){function e(){}return e.easeIn=function(e,t){return(e/=t)*e},e.easeOut=function(e,t){return-1*(e/=t)*(e-2)},e.easeInOut=function(e,t){return(e/=t/2)<1?.5*e*e:-.5*(--e*(e-2)-1)},e}();e.Quadratic=n;var r=function(){function e(){}return e.easeIn=function(e,t){return(e/=t)*e*(2.70158*e-1.70158)},e.easeOut=function(e,t){return(e=e/t-1)*e*(2.70158*e+1.70158)+1},e.easeInOut=function(e,t){var n=1.70158;return(e/=t/2)<1?e*e*((1+(n*=1.525))*e-n)*.5:.5*((e-=2)*e*((1+(n*=1.525))*e+n)+2)},e}();e.Back=r;var i=function(){function e(){}return e.easeOut=function(e,t){return(e/=t)<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},e.easeIn=function(e,t){return 1-this.easeOut(t-e,t)},e.easeInOut=function(e,t){return e { + x: number; + y: number; + /** + * 从两个值构造一个带有X和Y的二维向量。 + * @param x 二维空间中的x坐标 + * @param y 二维空间的y坐标 + */ + constructor(x?: number, y?: number); + static readonly zero: Vector2; + static readonly one: Vector2; + static readonly unitX: Vector2; + static readonly unitY: Vector2; + /** + * + * @param value1 + * @param value2 + */ + static add(value1: Vector2, value2: Vector2): Vector2; + /** + * + * @param value1 + * @param value2 + */ + static divide(value1: Vector2, value2: Vector2): Vector2; + /** + * + * @param value1 + * @param value2 + */ + static multiply(value1: Vector2, value2: Vector2): Vector2; + /** + * + * @param value1 + * @param value2 + */ + static subtract(value1: Vector2, value2: Vector2): Vector2; + /** + * 创建一个新的Vector2 + * 它包含来自另一个向量的标准化值。 + * @param value + */ + static normalize(value: Vector2): Vector2; + /** + * 返回两个向量的点积 + * @param value1 + * @param value2 + */ + static dot(value1: Vector2, value2: Vector2): number; + /** + * 返回两个向量之间距离的平方 + * @param value1 + * @param value2 + */ + static distanceSquared(value1: Vector2, value2: Vector2): number; + /** + * 将指定的值限制在一个范围内 + * @param value1 + * @param min + * @param max + */ + static clamp(value1: Vector2, min: Vector2, max: Vector2): Vector2; + /** + * 创建一个新的Vector2,其中包含指定向量的线性插值 + * @param value1 第一个向量 + * @param value2 第二个向量 + * @param amount 加权值(0.0-1.0之间) + * @returns 指定向量的线性插值结果 + */ + static lerp(value1: Vector2, value2: Vector2, amount: number): Vector2; + /** + * 创建一个新的Vector2,该Vector2包含了通过指定的Matrix进行的二维向量变换。 + * @param position + * @param matrix + */ + static transform(position: Vector2, matrix: Matrix2D): Vector2; + /** + * 返回两个向量之间的距离 + * @param value1 + * @param value2 + * @returns 两个向量之间的距离 + */ + static distance(value1: Vector2, value2: Vector2): number; + /** + * 返回两个向量之间的角度,单位是度数 + * @param from + * @param to + */ + static angle(from: Vector2, to: Vector2): number; + /** + * 创建一个包含指定向量反转的新Vector2 + * @param value + * @returns 矢量反演的结果 + */ + static negate(value: Vector2): Vector2; + /** + * + * @param value + */ + add(value: Vector2): Vector2; + /** + * + * @param value + */ + divide(value: Vector2): Vector2; + /** + * + * @param value + */ + multiply(value: Vector2): Vector2; + /** + * 从当前Vector2减去一个Vector2 + * @param value 要减去的Vector2 + * @returns 当前Vector2 + */ + subtract(value: Vector2): this; + /** + * 将这个Vector2变成一个方向相同的单位向量 + */ + normalize(): void; + /** 返回它的长度 */ + length(): number; + /** + * 返回该Vector2的平方长度 + * @returns 这个Vector2的平方长度 + */ + lengthSquared(): number; + /** + * 四舍五入X和Y值 + */ + round(): Vector2; + /** + * 返回以自己为中心点的左右角,单位为度 + * @param left + * @param right + */ + angleBetween(left: Vector2, right: Vector2): number; + /** + * 比较当前实例是否等于指定的对象 + * @param other 要比较的对象 + * @returns 如果实例相同true 否则false + */ + equals(other: Vector2 | object): boolean; + clone(): Vector2; + } +} declare module es { enum SceneResolutionPolicy { /** @@ -2635,154 +2784,6 @@ declare module es { reset(): void; } } -declare module es { - /** 2d 向量 */ - class Vector2 implements IEquatable { - x: number; - y: number; - /** - * 从两个值构造一个带有X和Y的二维向量。 - * @param x 二维空间中的x坐标 - * @param y 二维空间的y坐标 - */ - constructor(x?: number, y?: number); - static readonly zero: Vector2; - static readonly one: Vector2; - static readonly unitX: Vector2; - static readonly unitY: Vector2; - /** - * - * @param value1 - * @param value2 - */ - static add(value1: Vector2, value2: Vector2): Vector2; - /** - * - * @param value1 - * @param value2 - */ - static divide(value1: Vector2, value2: Vector2): Vector2; - /** - * - * @param value1 - * @param value2 - */ - static multiply(value1: Vector2, value2: Vector2): Vector2; - /** - * - * @param value1 - * @param value2 - */ - static subtract(value1: Vector2, value2: Vector2): Vector2; - /** - * 创建一个新的Vector2 - * 它包含来自另一个向量的标准化值。 - * @param value - */ - static normalize(value: Vector2): Vector2; - /** - * 返回两个向量的点积 - * @param value1 - * @param value2 - */ - static dot(value1: Vector2, value2: Vector2): number; - /** - * 返回两个向量之间距离的平方 - * @param value1 - * @param value2 - */ - static distanceSquared(value1: Vector2, value2: Vector2): number; - /** - * 将指定的值限制在一个范围内 - * @param value1 - * @param min - * @param max - */ - static clamp(value1: Vector2, min: Vector2, max: Vector2): Vector2; - /** - * 创建一个新的Vector2,其中包含指定向量的线性插值 - * @param value1 第一个向量 - * @param value2 第二个向量 - * @param amount 加权值(0.0-1.0之间) - * @returns 指定向量的线性插值结果 - */ - static lerp(value1: Vector2, value2: Vector2, amount: number): Vector2; - /** - * 创建一个新的Vector2,该Vector2包含了通过指定的Matrix进行的二维向量变换。 - * @param position - * @param matrix - */ - static transform(position: Vector2, matrix: Matrix2D): Vector2; - /** - * 返回两个向量之间的距离 - * @param value1 - * @param value2 - * @returns 两个向量之间的距离 - */ - static distance(value1: Vector2, value2: Vector2): number; - /** - * 返回两个向量之间的角度,单位是度数 - * @param from - * @param to - */ - static angle(from: Vector2, to: Vector2): number; - /** - * 创建一个包含指定向量反转的新Vector2 - * @param value - * @returns 矢量反演的结果 - */ - static negate(value: Vector2): Vector2; - /** - * - * @param value - */ - add(value: Vector2): Vector2; - /** - * - * @param value - */ - divide(value: Vector2): Vector2; - /** - * - * @param value - */ - multiply(value: Vector2): Vector2; - /** - * 从当前Vector2减去一个Vector2 - * @param value 要减去的Vector2 - * @returns 当前Vector2 - */ - subtract(value: Vector2): this; - /** - * 将这个Vector2变成一个方向相同的单位向量 - */ - normalize(): void; - /** 返回它的长度 */ - length(): number; - /** - * 返回该Vector2的平方长度 - * @returns 这个Vector2的平方长度 - */ - lengthSquared(): number; - /** - * 四舍五入X和Y值 - */ - round(): Vector2; - /** - * 返回以自己为中心点的左右角,单位为度 - * @param left - * @param right - */ - angleBetween(left: Vector2, right: Vector2): number; - /** - * 比较当前实例是否等于指定的对象 - * @param other 要比较的对象 - * @returns 如果实例相同true 否则false - */ - equals(other: Vector2 | object): boolean; - clone(): Vector2; - } -} declare module es { /** * 移动器使用的帮助器类,用于管理触发器碰撞器交互并调用itriggerlistener diff --git a/source/bin/framework.js b/source/bin/framework.js index 5cbac5cc..102986c2 100644 --- a/source/bin/framework.js +++ b/source/bin/framework.js @@ -1,24 +1,4 @@ "use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; @@ -39,6 +19,26 @@ var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; var es; (function (es) { /** @@ -96,10 +96,11 @@ var es; for (var _i = 1; _i < arguments.length; _i++) { data[_i - 1] = arguments[_i]; } + var _a; var list = this._messageTable.get(eventType); if (list) { for (var i = list.length - 1; i >= 0; i--) - list[i].func.call(list[i].context, data); + (_a = list[i].func).call.apply(_a, __spread([list[i].context], data)); } }; return Emitter; @@ -379,6 +380,7 @@ var es; CoreEvents[CoreEvents["resolutionScale"] = 8] = "resolutionScale"; CoreEvents[CoreEvents["resolutionOffset"] = 9] = "resolutionOffset"; CoreEvents[CoreEvents["createRenderTarget"] = 10] = "createRenderTarget"; + CoreEvents[CoreEvents["createCamera"] = 11] = "createCamera"; })(CoreEvents = es.CoreEvents || (es.CoreEvents = {})); })(es || (es = {})); var es; @@ -839,6 +841,271 @@ var es; es.Entity = Entity; })(es || (es = {})); var es; +(function (es) { + /** 2d 向量 */ + var Vector2 = /** @class */ (function () { + /** + * 从两个值构造一个带有X和Y的二维向量。 + * @param x 二维空间中的x坐标 + * @param y 二维空间的y坐标 + */ + function Vector2(x, y) { + this.x = 0; + this.y = 0; + this.x = x ? x : 0; + this.y = y != undefined ? y : this.x; + } + Object.defineProperty(Vector2, "zero", { + get: function () { + return new Vector2(0, 0); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Vector2, "one", { + get: function () { + return new Vector2(1, 1); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Vector2, "unitX", { + get: function () { + return new Vector2(1, 0); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Vector2, "unitY", { + get: function () { + return new Vector2(0, 1); + }, + enumerable: true, + configurable: true + }); + /** + * + * @param value1 + * @param value2 + */ + Vector2.add = function (value1, value2) { + var result = Vector2.zero; + result.x = value1.x + value2.x; + result.y = value1.y + value2.y; + return result; + }; + /** + * + * @param value1 + * @param value2 + */ + Vector2.divide = function (value1, value2) { + var result = Vector2.zero; + result.x = value1.x / value2.x; + result.y = value1.y / value2.y; + return result; + }; + /** + * + * @param value1 + * @param value2 + */ + Vector2.multiply = function (value1, value2) { + var result = new Vector2(0, 0); + result.x = value1.x * value2.x; + result.y = value1.y * value2.y; + return result; + }; + /** + * + * @param value1 + * @param value2 + */ + Vector2.subtract = function (value1, value2) { + var result = new Vector2(0, 0); + result.x = value1.x - value2.x; + result.y = value1.y - value2.y; + return result; + }; + /** + * 创建一个新的Vector2 + * 它包含来自另一个向量的标准化值。 + * @param value + */ + Vector2.normalize = function (value) { + var nValue = new Vector2(value.x, value.y); + var val = 1 / Math.sqrt((nValue.x * nValue.x) + (nValue.y * nValue.y)); + nValue.x *= val; + nValue.y *= val; + return nValue; + }; + /** + * 返回两个向量的点积 + * @param value1 + * @param value2 + */ + Vector2.dot = function (value1, value2) { + return (value1.x * value2.x) + (value1.y * value2.y); + }; + /** + * 返回两个向量之间距离的平方 + * @param value1 + * @param value2 + */ + Vector2.distanceSquared = function (value1, value2) { + var v1 = value1.x - value2.x, v2 = value1.y - value2.y; + return (v1 * v1) + (v2 * v2); + }; + /** + * 将指定的值限制在一个范围内 + * @param value1 + * @param min + * @param max + */ + Vector2.clamp = function (value1, min, max) { + return new Vector2(es.MathHelper.clamp(value1.x, min.x, max.x), es.MathHelper.clamp(value1.y, min.y, max.y)); + }; + /** + * 创建一个新的Vector2,其中包含指定向量的线性插值 + * @param value1 第一个向量 + * @param value2 第二个向量 + * @param amount 加权值(0.0-1.0之间) + * @returns 指定向量的线性插值结果 + */ + Vector2.lerp = function (value1, value2, amount) { + return new Vector2(es.MathHelper.lerp(value1.x, value2.x, amount), es.MathHelper.lerp(value1.y, value2.y, amount)); + }; + /** + * 创建一个新的Vector2,该Vector2包含了通过指定的Matrix进行的二维向量变换。 + * @param position + * @param matrix + */ + Vector2.transform = function (position, matrix) { + return new Vector2((position.x * matrix.m11) + (position.y * matrix.m21) + matrix.m31, (position.x * matrix.m12) + (position.y * matrix.m22) + matrix.m32); + }; + /** + * 返回两个向量之间的距离 + * @param value1 + * @param value2 + * @returns 两个向量之间的距离 + */ + Vector2.distance = function (value1, value2) { + var v1 = value1.x - value2.x, v2 = value1.y - value2.y; + return Math.sqrt((v1 * v1) + (v2 * v2)); + }; + /** + * 返回两个向量之间的角度,单位是度数 + * @param from + * @param to + */ + Vector2.angle = function (from, to) { + from = Vector2.normalize(from); + to = Vector2.normalize(to); + return Math.acos(es.MathHelper.clamp(Vector2.dot(from, to), -1, 1)) * es.MathHelper.Rad2Deg; + }; + /** + * 创建一个包含指定向量反转的新Vector2 + * @param value + * @returns 矢量反演的结果 + */ + Vector2.negate = function (value) { + value.x = -value.x; + value.y = -value.y; + return value; + }; + /** + * + * @param value + */ + Vector2.prototype.add = function (value) { + this.x += value.x; + this.y += value.y; + return this; + }; + /** + * + * @param value + */ + Vector2.prototype.divide = function (value) { + this.x /= value.x; + this.y /= value.y; + return this; + }; + /** + * + * @param value + */ + Vector2.prototype.multiply = function (value) { + this.x *= value.x; + this.y *= value.y; + return this; + }; + /** + * 从当前Vector2减去一个Vector2 + * @param value 要减去的Vector2 + * @returns 当前Vector2 + */ + Vector2.prototype.subtract = function (value) { + this.x -= value.x; + this.y -= value.y; + return this; + }; + /** + * 将这个Vector2变成一个方向相同的单位向量 + */ + Vector2.prototype.normalize = function () { + var val = 1 / Math.sqrt((this.x * this.x) + (this.y * this.y)); + this.x *= val; + this.y *= val; + }; + /** 返回它的长度 */ + Vector2.prototype.length = function () { + return Math.sqrt((this.x * this.x) + (this.y * this.y)); + }; + /** + * 返回该Vector2的平方长度 + * @returns 这个Vector2的平方长度 + */ + Vector2.prototype.lengthSquared = function () { + return (this.x * this.x) + (this.y * this.y); + }; + /** + * 四舍五入X和Y值 + */ + Vector2.prototype.round = function () { + return new Vector2(Math.round(this.x), Math.round(this.y)); + }; + /** + * 返回以自己为中心点的左右角,单位为度 + * @param left + * @param right + */ + Vector2.prototype.angleBetween = function (left, right) { + var one = Vector2.subtract(left, this); + var two = Vector2.subtract(right, this); + return es.Vector2Ext.angle(one, two); + }; + /** + * 比较当前实例是否等于指定的对象 + * @param other 要比较的对象 + * @returns 如果实例相同true 否则false + */ + Vector2.prototype.equals = function (other) { + if (other instanceof Vector2) { + return other.x == this.x && other.y == this.y; + } + return false; + }; + Vector2.prototype.clone = function () { + return new Vector2(this.x, this.y); + }; + return Vector2; + }()); + es.Vector2 = Vector2; +})(es || (es = {})); +/// +var es; +/// (function (es) { var SceneResolutionPolicy; (function (SceneResolutionPolicy) { @@ -858,12 +1125,24 @@ var es; * 如果ResolutionPolicy是完美的像素,这将被设置为为它计算的比例 */ this.pixelPerfectScale = 1; + /** + * 场景使用的设计分辨率大小 + */ + this._designResolutionSize = es.Vector2.zero; + this._designBleedSize = es.Vector2.zero; + /** + * 这将根据分辨率策略进行设置,并用于RenderTarget的最终输出 + */ + this._finalRenderDestinationRect = es.Rectangle.empty; + this._sceneRenderTarget = new es.Ref(null); + this._destinationRenderTarget = new es.Ref(null); this._sceneComponents = []; this._renderers = []; this._afterPostProcessorRenderers = []; this.entities = new es.EntityList(this); this.renderableComponents = new es.RenderableComponentList(); this.entityProcessors = new es.EntityProcessorList(); + es.Framework.emitter.emit(es.CoreEvents.createCamera, this); this._resolutionPolicy = Scene._defaultSceneResolutionPolicy; this._designResolutionSize = Scene._defaultDesignResolutionSize; this._designBleedSize = Scene._defaultDesignBleedSize; @@ -1289,6 +1568,11 @@ var es; Scene.prototype.getEntityProcessor = function () { return this.entityProcessors.getProcessor(); }; + /** + * 所有场景的默认分辨率大小 + */ + Scene._defaultDesignResolutionSize = es.Vector2.zero; + Scene._defaultDesignBleedSize = es.Vector2.zero; /** * 用于所有场景的默认分辨率策略 */ @@ -6075,269 +6359,6 @@ var es; es.SubpixelVector2 = SubpixelVector2; })(es || (es = {})); var es; -(function (es) { - /** 2d 向量 */ - var Vector2 = /** @class */ (function () { - /** - * 从两个值构造一个带有X和Y的二维向量。 - * @param x 二维空间中的x坐标 - * @param y 二维空间的y坐标 - */ - function Vector2(x, y) { - this.x = 0; - this.y = 0; - this.x = x ? x : 0; - this.y = y != undefined ? y : this.x; - } - Object.defineProperty(Vector2, "zero", { - get: function () { - return new Vector2(0, 0); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Vector2, "one", { - get: function () { - return new Vector2(1, 1); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Vector2, "unitX", { - get: function () { - return new Vector2(1, 0); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Vector2, "unitY", { - get: function () { - return new Vector2(0, 1); - }, - enumerable: true, - configurable: true - }); - /** - * - * @param value1 - * @param value2 - */ - Vector2.add = function (value1, value2) { - var result = Vector2.zero; - result.x = value1.x + value2.x; - result.y = value1.y + value2.y; - return result; - }; - /** - * - * @param value1 - * @param value2 - */ - Vector2.divide = function (value1, value2) { - var result = Vector2.zero; - result.x = value1.x / value2.x; - result.y = value1.y / value2.y; - return result; - }; - /** - * - * @param value1 - * @param value2 - */ - Vector2.multiply = function (value1, value2) { - var result = new Vector2(0, 0); - result.x = value1.x * value2.x; - result.y = value1.y * value2.y; - return result; - }; - /** - * - * @param value1 - * @param value2 - */ - Vector2.subtract = function (value1, value2) { - var result = new Vector2(0, 0); - result.x = value1.x - value2.x; - result.y = value1.y - value2.y; - return result; - }; - /** - * 创建一个新的Vector2 - * 它包含来自另一个向量的标准化值。 - * @param value - */ - Vector2.normalize = function (value) { - var nValue = new Vector2(value.x, value.y); - var val = 1 / Math.sqrt((nValue.x * nValue.x) + (nValue.y * nValue.y)); - nValue.x *= val; - nValue.y *= val; - return nValue; - }; - /** - * 返回两个向量的点积 - * @param value1 - * @param value2 - */ - Vector2.dot = function (value1, value2) { - return (value1.x * value2.x) + (value1.y * value2.y); - }; - /** - * 返回两个向量之间距离的平方 - * @param value1 - * @param value2 - */ - Vector2.distanceSquared = function (value1, value2) { - var v1 = value1.x - value2.x, v2 = value1.y - value2.y; - return (v1 * v1) + (v2 * v2); - }; - /** - * 将指定的值限制在一个范围内 - * @param value1 - * @param min - * @param max - */ - Vector2.clamp = function (value1, min, max) { - return new Vector2(es.MathHelper.clamp(value1.x, min.x, max.x), es.MathHelper.clamp(value1.y, min.y, max.y)); - }; - /** - * 创建一个新的Vector2,其中包含指定向量的线性插值 - * @param value1 第一个向量 - * @param value2 第二个向量 - * @param amount 加权值(0.0-1.0之间) - * @returns 指定向量的线性插值结果 - */ - Vector2.lerp = function (value1, value2, amount) { - return new Vector2(es.MathHelper.lerp(value1.x, value2.x, amount), es.MathHelper.lerp(value1.y, value2.y, amount)); - }; - /** - * 创建一个新的Vector2,该Vector2包含了通过指定的Matrix进行的二维向量变换。 - * @param position - * @param matrix - */ - Vector2.transform = function (position, matrix) { - return new Vector2((position.x * matrix.m11) + (position.y * matrix.m21) + matrix.m31, (position.x * matrix.m12) + (position.y * matrix.m22) + matrix.m32); - }; - /** - * 返回两个向量之间的距离 - * @param value1 - * @param value2 - * @returns 两个向量之间的距离 - */ - Vector2.distance = function (value1, value2) { - var v1 = value1.x - value2.x, v2 = value1.y - value2.y; - return Math.sqrt((v1 * v1) + (v2 * v2)); - }; - /** - * 返回两个向量之间的角度,单位是度数 - * @param from - * @param to - */ - Vector2.angle = function (from, to) { - from = Vector2.normalize(from); - to = Vector2.normalize(to); - return Math.acos(es.MathHelper.clamp(Vector2.dot(from, to), -1, 1)) * es.MathHelper.Rad2Deg; - }; - /** - * 创建一个包含指定向量反转的新Vector2 - * @param value - * @returns 矢量反演的结果 - */ - Vector2.negate = function (value) { - value.x = -value.x; - value.y = -value.y; - return value; - }; - /** - * - * @param value - */ - Vector2.prototype.add = function (value) { - this.x += value.x; - this.y += value.y; - return this; - }; - /** - * - * @param value - */ - Vector2.prototype.divide = function (value) { - this.x /= value.x; - this.y /= value.y; - return this; - }; - /** - * - * @param value - */ - Vector2.prototype.multiply = function (value) { - this.x *= value.x; - this.y *= value.y; - return this; - }; - /** - * 从当前Vector2减去一个Vector2 - * @param value 要减去的Vector2 - * @returns 当前Vector2 - */ - Vector2.prototype.subtract = function (value) { - this.x -= value.x; - this.y -= value.y; - return this; - }; - /** - * 将这个Vector2变成一个方向相同的单位向量 - */ - Vector2.prototype.normalize = function () { - var val = 1 / Math.sqrt((this.x * this.x) + (this.y * this.y)); - this.x *= val; - this.y *= val; - }; - /** 返回它的长度 */ - Vector2.prototype.length = function () { - return Math.sqrt((this.x * this.x) + (this.y * this.y)); - }; - /** - * 返回该Vector2的平方长度 - * @returns 这个Vector2的平方长度 - */ - Vector2.prototype.lengthSquared = function () { - return (this.x * this.x) + (this.y * this.y); - }; - /** - * 四舍五入X和Y值 - */ - Vector2.prototype.round = function () { - return new Vector2(Math.round(this.x), Math.round(this.y)); - }; - /** - * 返回以自己为中心点的左右角,单位为度 - * @param left - * @param right - */ - Vector2.prototype.angleBetween = function (left, right) { - var one = Vector2.subtract(left, this); - var two = Vector2.subtract(right, this); - return es.Vector2Ext.angle(one, two); - }; - /** - * 比较当前实例是否等于指定的对象 - * @param other 要比较的对象 - * @returns 如果实例相同true 否则false - */ - Vector2.prototype.equals = function (other) { - if (other instanceof Vector2) { - return other.x == this.x && other.y == this.y; - } - return false; - }; - Vector2.prototype.clone = function () { - return new Vector2(this.x, this.y); - }; - return Vector2; - }()); - es.Vector2 = Vector2; -})(es || (es = {})); -var es; (function (es) { /** * 移动器使用的帮助器类,用于管理触发器碰撞器交互并调用itriggerlistener diff --git a/source/bin/framework.min.js b/source/bin/framework.min.js index 7e079633..d48738b6 100644 --- a/source/bin/framework.min.js +++ b/source/bin/framework.min.js @@ -1 +1 @@ -window.es={},window.__extends=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();var transform,__values=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;return e?e.call(t):{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}},__read=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s},__spread=this&&this.__spread||function(){for(var t=[],e=0;e=0;r--)i[r].func.call(i[r].context,e)},t}();t.Emitter=n}(es||(es={})),function(t){var e=function(){function e(){}return e.emitter=new t.Emitter,e}();t.Framework=e}(es||(es={})),function(t){var e=function(){function t(){}return t.debugText=16777215,t.colliderBounds=5033164.5,t.colliderEdge=9109504,t.colliderPosition=16776960,t.colliderCenter=16711680,t.renderableBounds=16776960,t.renderableCenter=10040012,t.verletParticle=14431326,t.verletConstraintEdge=4406838,t}();t.Debug=e}(es||(es={})),function(t){var e=function(){function t(){}return t.fail=function(t){void 0===t&&(t=null);for(var e=[],n=1;n=0;t--){this.transform.getChild(t).entity.destroy()}},n.prototype.detachFromScene=function(){this.scene.entities.remove(this),this.components.deregisterAllComponents();for(var t=0;tr?this.pixelPerfectScale=i.x/n.x:this.pixelPerfectScale=i.y/n.y,0==this.pixelPerfectScale&&(this.pixelPerfectScale=1)),this._resolutionPolicy){case e.none:this._finalRenderDestinationRect.x=this._finalRenderDestinationRect.y=0,this._finalRenderDestinationRect.width=i.x,this._finalRenderDestinationRect.height=i.y,h=!0;break;case e.bestFit:var u=i.x/(n.x-this._designBleedSize.x),l=i.y/(n.y-this._designBleedSize.y),p=Math.max(a,c),f=Math.min(u,l);a=c=Math.min(p,f),o=n.x,s=n.y}if(!h){var d=n.x*a,m=n.y*c;this._finalRenderDestinationRect=new t.Rectangle((i.x-d)/2,(i.y-m)/2,d,m)}var y=o/this._finalRenderDestinationRect.width,g=s/this._finalRenderDestinationRect.height;t.Framework.emitter.emit(t.CoreEvents.resolutionScale,new t.Vector2(y,g)),t.Framework.emitter.emit(t.CoreEvents.resolutionOffset,this._finalRenderDestinationRect.location),null!=this._sceneRenderTarget&&t.Framework.emitter.emit(t.CoreEvents.disposeRenderTarget,this._sceneRenderTarget),t.Framework.emitter.emit(t.CoreEvents.createRenderTarget,this._sceneRenderTarget,o,s),null!=this._destinationRenderTarget&&(t.Framework.emitter.emit(t.CoreEvents.disposeRenderTarget,this._destinationRenderTarget),t.Framework.emitter.emit(t.CoreEvents.createRenderTarget,this._destinationRenderTarget,o,s));for(var _=0;_=0;e--)this._sceneComponents[e].enabled&&this._sceneComponents[e].update();null!=this.entityProcessors&&this.entityProcessors.update(),this.entities.update(),this.renderableComponents.updateList(),null!=this.entityProcessors&&this.entityProcessors.lateUpdate()},n.prototype.render=function(){if(0!=this._renderers.length){this._renderers[0].wantsToRenderToSceneRenderTarget&&(t.Framework.emitter.emit(t.CoreEvents.setRenderTarget,this._sceneRenderTarget),t.Framework.emitter.emit(t.CoreEvents.clearGraphics));for(var e=!1,n=0;ne.x?-1:1,i=t.Vector2.normalize(t.Vector2.subtract(this.position,e));this.rotation=n*Math.acos(t.Vector2.dot(i,t.Vector2.unitY))},n.prototype.setLocalRotation=function(t){return this._localRotation=t,this._localDirty=this._positionDirty=this._localPositionDirty=this._localRotationDirty=this._localScaleDirty=!0,this.setDirty(e.rotationDirty),this},n.prototype.setLocalRotationDegrees=function(e){return this.setLocalRotation(t.MathHelper.toRadians(e))},n.prototype.setScale=function(e){return this._scale=e,this.parent?this.localScale=t.Vector2.divide(e,this.parent._scale):this.localScale=e,this},n.prototype.setLocalScale=function(t){return this._localScale=t,this._localDirty=this._positionDirty=this._localScaleDirty=!0,this.setDirty(e.scaleDirty),this},n.prototype.roundPosition=function(){this.position=t.Vector2Ext.round(this._position)},n.prototype.updateTransform=function(){this.hierarchyDirty!=e.clean&&(null!=this.parent&&this.parent.updateTransform(),this._localDirty&&(this._localPositionDirty&&(this._translationMatrix=t.Matrix2D.createTranslation(this._localPosition.x,this._localPosition.y),this._localPositionDirty=!1),this._localRotationDirty&&(this._rotationMatrix=t.Matrix2D.createRotation(this._localRotation),this._localRotationDirty=!1),this._localScaleDirty&&(this._scaleMatrix=t.Matrix2D.createScale(this._localScale.x,this._localScale.y),this._localScaleDirty=!1),this._localTransform=this._scaleMatrix.multiply(this._rotationMatrix),this._localTransform=this._localTransform.multiply(this._translationMatrix),null==this.parent&&(this._worldTransform=this._localTransform,this._rotation=this._localRotation,this._scale=this._localScale,this._worldInverseDirty=!0),this._localDirty=!1),null!=this.parent&&(this._worldTransform=this._localTransform.multiply(this.parent._worldTransform),this._rotation=this._localRotation+this.parent._rotation,this._scale=t.Vector2.multiply(this.parent._scale,this._localScale),this._worldInverseDirty=!0),this._worldToLocalDirty=!0,this._positionDirty=!0,this.hierarchyDirty=e.clean)},n.prototype.setDirty=function(e){if(0==(this.hierarchyDirty&e)){switch(this.hierarchyDirty|=e,e){case t.DirtyType.positionDirty:this.entity.onTransformChanged(transform.Component.position);break;case t.DirtyType.rotationDirty:this.entity.onTransformChanged(transform.Component.rotation);break;case t.DirtyType.scaleDirty:this.entity.onTransformChanged(transform.Component.scale)}for(var n=0;n0?this._cache.shift():new this._type}catch(t){throw new Error(this._type+t)}},t.prototype.free=function(t){t.reset(),this._cache.push(t)},t}();t.ComponentPool=e}(es||(es={})),function(t){var e=function(){function t(){}return t.prototype.compare=function(t,e){return t.updateOrder-e.updateOrder},t}();t.IUpdatableComparer=e,t.isIUpdatable=function(t){return void 0!==t.update}}(es||(es={})),function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(t.Component);t.PooledComponent=e}(es||(es={})),function(t){var e=function(){function t(){this.updateOrder=0,this._enabled=!0}return Object.defineProperty(t.prototype,"enabled",{get:function(){return this._enabled},set:function(t){this.setEnabled(t)},enumerable:!0,configurable:!0}),t.prototype.onEnabled=function(){},t.prototype.onDisabled=function(){},t.prototype.onRemovedFromScene=function(){},t.prototype.update=function(){},t.prototype.setEnabled=function(t){return this._enabled!=t&&(this._enabled=t,this._enabled?this.onEnabled():this.onDisabled()),this},t.prototype.setUpdateOrder=function(t){return this.updateOrder!=t&&(this.updateOrder=t),this},t.prototype.compare=function(t){return this.updateOrder-t.updateOrder},t}();t.SceneComponent=e}(es||(es={})),function(t){var e=function(e){function n(){var n=e.call(this)||this;return n.shouldUseGravity=!0,n.velocity=new t.Vector2,n._mass=10,n._elasticity=.5,n._friction=.5,n._glue=.01,n._inverseMass=0,n._inverseMass=1/n._mass,n}return __extends(n,e),Object.defineProperty(n.prototype,"mass",{get:function(){return this._mass},set:function(t){this.setMass(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"elasticity",{get:function(){return this._elasticity},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"elasticiy",{set:function(t){this.setElasticity(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"friction",{get:function(){return this._friction},set:function(t){this.setFriction(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"glue",{get:function(){return this._glue},set:function(t){this.setGlue(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isImmovable",{get:function(){return this._mass<1e-4},enumerable:!0,configurable:!0}),n.prototype.setMass=function(e){return this._mass=t.MathHelper.clamp(e,0,Number.MAX_VALUE),this._mass>1e-4?this._inverseMass=1/this._mass:this._inverseMass=0,this},n.prototype.setElasticity=function(e){return this._elasticity=t.MathHelper.clamp01(e),this},n.prototype.setFriction=function(e){return this._friction=t.MathHelper.clamp01(e),this},n.prototype.setGlue=function(e){return this._glue=t.MathHelper.clamp(e,0,10),this},n.prototype.addImpulse=function(e){this.isImmovable||(this.velocity=t.Vector2.add(this.velocity,t.Vector2.multiply(e,new t.Vector2(1e5)).multiply(new t.Vector2(this._inverseMass*t.Time.deltaTime))))},n.prototype.onAddedToEntity=function(){this._collider=this.entity.getComponent(t.Collider),null==this._collider&&console.warn("ArcadeRigidbody 没有 Collider。ArcadeRigidbody需要一个Collider!")},n.prototype.update=function(){var e,i;if(this.isImmovable||null==this._collider)this.velocity=t.Vector2.zero;else{this.shouldUseGravity&&(this.velocity=t.Vector2.add(this.velocity,t.Vector2.multiply(t.Physics.gravity,new t.Vector2(t.Time.deltaTime)))),this.entity.transform.position=t.Vector2.add(this.entity.transform.position,t.Vector2.multiply(this.velocity,new t.Vector2(t.Time.deltaTime)));var r=new t.CollisionResult,o=t.Physics.boxcastBroadphaseExcludingSelfNonRect(this._collider,this._collider.collidesWithLayers.value);try{for(var s=__values(o),a=s.next();!a.done;a=s.next()){var c=a.value;if(!c.entity.equals(this.entity)&&this._collider.collidesWithNonMotion(c,r)){var h=c.entity.getComponent(n);if(null!=h)this.processOverlap(h,r.minimumTranslationVector),this.processCollision(h,r.minimumTranslationVector);else{this.entity.transform.position=t.Vector2.subtract(this.entity.transform.position,r.minimumTranslationVector);var u=this.velocity.clone();this.calculateResponseVelocity(u,r.minimumTranslationVector,u),this.velocity=t.Vector2.add(this.velocity,u)}}}}catch(t){e={error:t}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(e)throw e.error}}}},n.prototype.processOverlap=function(e,n){this.isImmovable?e.entity.transform.position=t.Vector2.add(e.entity.transform.position,n):e.isImmovable?this.entity.transform.position=t.Vector2.subtract(this.entity.transform.position,n):(this.entity.transform.position=t.Vector2.subtract(this.entity.transform.position,t.Vector2.multiply(n,t.Vector2Ext.halfVector())),e.entity.transform.position=t.Vector2.add(e.entity.transform.position,t.Vector2.multiply(n,t.Vector2Ext.halfVector())))},n.prototype.processCollision=function(e,n){var i=t.Vector2.subtract(this.velocity,e.velocity);this.calculateResponseVelocity(i,n,i);var r=this._inverseMass+e._inverseMass,o=this._inverseMass/r,s=e._inverseMass/r;this.velocity=t.Vector2.add(this.velocity,new t.Vector2(i.x*o,i.y*o)),e.velocity=t.Vector2.subtract(e.velocity,new t.Vector2(i.x*s,i.y*s))},n.prototype.calculateResponseVelocity=function(e,n,i){void 0===i&&(i=new t.Vector2);var r=t.Vector2.multiply(n,new t.Vector2(-1)),o=t.Vector2.normalize(r),s=t.Vector2.dot(e,o),a=new t.Vector2(o.x*s,o.y*s),c=t.Vector2.subtract(e,a);s>0&&(a=t.Vector2.zero);var h=this._friction;c.lengthSquared()>6;0!=(e&t.LONG_MASK)&&n++,this._bits=new Array(n),this._bits.fill(0)}return t.prototype.and=function(t){for(var e,n=Math.min(this._bits.length,t._bits.length),i=0;i=0;)this._bits[e]&=~t._bits[e]},t.prototype.cardinality=function(){for(var t=0,e=this._bits.length-1;e>=0;e--){var n=this._bits[e];if(0!=n)if(-1!=n){var i=((n=((n=(n>>1&0x5555555555555400)+(0x5555555555555400&n))>>2&0x3333333333333400)+(0x3333333333333400&n))>>32)+n>>>0;t+=((i=((i=(i>>4&252645135)+(252645135&i))>>8&16711935)+(16711935&i))>>16&65535)+(65535&i)}else t+=64}return t},t.prototype.clear=function(t){if(null!=t){var e=t>>6;this.ensure(e),this._bits[e]&=~(1<>6;return!(e>=this._bits.length)&&0!=(this._bits[e]&1<=0;)if(0!=(this._bits[e]&t._bits[e]))return!0;return!1},t.prototype.isEmpty=function(){for(var t=this._bits.length-1;t>=0;t--)if(this._bits[t])return!1;return!0},t.prototype.nextSetBit=function(t){for(var e=t>>6,n=1<>6;this.ensure(n),this._bits[n]|=1<=this._bits.length){var e=this._bits.length;this._bits.length=t+1,this._bits.fill(0,e,t+1)}},t.LONG_MASK=63,t}();t.BitSet=e}(es||(es={})),function(t){var e=function(){function e(t){this._components=[],this._updatableComponents=[],this._componentsToAdd=[],this._componentsToRemove=[],this._tempBufferList=[],this._entity=t}return Object.defineProperty(e.prototype,"count",{get:function(){return this._components.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"buffer",{get:function(){return this._components},enumerable:!0,configurable:!0}),e.prototype.markEntityListUnsorted=function(){this._isComponentListUnsorted=!0},e.prototype.add=function(t){this._componentsToAdd.push(t)},e.prototype.remove=function(t){var e=new linq.List(this._componentsToRemove),n=new linq.List(this._componentsToAdd);e.contains(t)&&console.warn("您正在尝试删除一个您已经删除的组件("+t+")"),n.contains(t)?n.remove(t):e.add(t)},e.prototype.removeAllComponents=function(){for(var t=0;t0){for(var n=0;n0){n=0;for(var i=this._componentsToAdd.length;n0&&(this._entitiesToRemove.toArray().forEach(function(t){e.removeFromTagList(t),new linq.List(e._entities).remove(t),t.onRemovedFromScene(),t.scene=null,e.scene.entityProcessors.onEntityRemoved(t)}),this._entitiesToRemove.clear()),this._entitiesToAdded.getCount()>0&&(this._entitiesToAdded.toArray().forEach(function(t){e._entities.push(t),t.scene=e.scene,e.addToTagList(t),e.scene.entityProcessors.onEntityAdded(t)}),this._entitiesToAdded.toArray().forEach(function(t){t.onAddedToScene()}),this._entitiesToAdded.clear(),this._isEntityListUnsorted=!0),this._isEntityListUnsorted&&(this._entities.sort(t.Entity.entityComparer.compare),this._isEntityListUnsorted=!1),this._unsortedTags.size>0&&(this._unsortedTags.forEach(function(t){return e._entityDict.get(t).sort(function(t,e){return t.compareTo(e)})}),this._unsortedTags.clear())},e.prototype.findEntity=function(t){for(var e=0;e=t)return n}for(e=1|t;ethis.maxPrimeArrayLength&&this.maxPrimeArrayLength>t?this.maxPrimeArrayLength:this.getPrime(e)},t.getHashCode=function(t){var e,n=0;if(0==(e="object"==typeof t?JSON.stringify(t):t.toString()).length)return n;for(var i=0;i=0;e=this.allSet.nextSetBit(e+1))if(!t.get(e))return!1;return!(!this.exclusionSet.isEmpty()&&this.exclusionSet.intersects(t))&&!(!this.oneSet.isEmpty()&&!this.oneSet.intersects(t))},e.prototype.all=function(){for(var e=this,n=[],i=0;i0){for(var t=0,n=this._unsortedRenderLayers.length;t=e)return t;var i=!1;"-"==t.substr(0,1)&&(i=!0,t=t.substr(1));for(var r=e-n,o=0;o1?this.reverse(t.substring(1))+t.substring(0,1):t},t.cutOff=function(t,e,n,i){void 0===i&&(i=!0),e=Math.floor(e),n=Math.floor(n);var r=t.length;e>r&&(e=r);var o,s=e,a=e+n;return i?o=t.substring(0,s)+t.substr(a,r):(a=(s=r-1-e-n)+n,o=t.substring(0,s+1)+t.substr(a+1,r)),o},t.strReplace=function(t,e){for(var n=0,i=e.length;n",">",'"',""","'","'","®","®","©","©","™","™"],t}();!function(t){var e=function(){function t(){}return t.update=function(t){var e=(t-this._lastTime)/1e3;this.totalTime+=e,this.deltaTime=e*this.timeScale,this.unscaledDeltaTime=e,this.timeSinceSceneLoad+=e,this.frameCount++,this._lastTime=t},t.sceneChanged=function(){this.timeSinceSceneLoad=0},t.checkEvery=function(t){return this.timeSinceSceneLoad/t>(this.timeSinceSceneLoad-this.deltaTime)/t},t.totalTime=0,t.unscaledDeltaTime=0,t.deltaTime=0,t.timeScale=1,t.frameCount=0,t.timeSinceSceneLoad=0,t._lastTime=0,t}();t.Time=e}(es||(es={}));var stopwatch,TimeUtils=function(){function t(){}return t.monthId=function(t){void 0===t&&(t=null);var e=(t=t||new Date).getFullYear(),n=t.getMonth()+1;return parseInt(e+(n<10?"0":"")+n)},t.dateId=function(t){void 0===t&&(t=null);var e=(t=t||new Date).getMonth()+1,n=e<10?"0":"",i=t.getDate(),r=i<10?"0":"";return parseInt(t.getFullYear()+n+e+r+i)},t.weekId=function(t,e){void 0===t&&(t=null),void 0===e&&(e=!0),t=t||new Date;var n=new Date;n.setTime(t.getTime()),n.setDate(1),n.setMonth(0);var i=n.getFullYear(),r=n.getDay();0==r&&(r=7);var o=!1;r<=4?(o=r>1,n.setDate(n.getDate()-(r-1))):n.setDate(n.getDate()+7-r+1);var s=this.diffDay(t,n,!1);if(s<0)return n.setDate(1),n.setMonth(0),n.setDate(n.getDate()-1),this.weekId(n,!1);var a=s/7,c=Math.floor(a)+1;if(53==c){n.setTime(t.getTime()),n.setDate(n.getDate()-1);var h=n.getDay();if(0==h&&(h=7),e&&(!o||h<4))return n.setFullYear(n.getFullYear()+1),n.setDate(1),n.setMonth(0),this.weekId(n,!1)}return parseInt(i+"00"+(c>9?"":"0")+c)},t.diffDay=function(t,e,n){void 0===n&&(n=!1);var i=(t.getTime()-e.getTime())/864e5;return n?Math.ceil(i):Math.floor(i)},t.getFirstDayOfWeek=function(t){var e=(t=t||new Date).getDay()||7;return new Date(t.getFullYear(),t.getMonth(),t.getDate()+1-e,0,0,0,0)},t.getFirstOfDay=function(t){return(t=t||new Date).setHours(0,0,0,0),t},t.getNextFirstOfDay=function(t){return new Date(this.getFirstOfDay(t).getTime()+864e5)},t.formatDate=function(t){var e=t.getFullYear(),n=t.getMonth()+1;n=n<10?"0"+n:n;var i=t.getDate();return e+"-"+n+"-"+(i=i<10?"0"+i:i)},t.formatDateTime=function(t){var e=t.getFullYear(),n=t.getMonth()+1;n=n<10?"0"+n:n;var i=t.getDate();i=i<10?"0"+i:i;var r=t.getHours(),o=t.getMinutes();o=o<10?"0"+o:o;var s=t.getSeconds();return e+"-"+n+"-"+i+" "+r+":"+o+":"+(s=s<10?"0"+s:s)},t.parseDate=function(t){var e=Date.parse(t);return isNaN(e)?new Date:new Date(Date.parse(t.replace(/-/g,"/")))},t.secondToTime=function(t,e,n){void 0===t&&(t=0),void 0===e&&(e=":"),void 0===n&&(n=!0);var i=Math.floor(t/3600),r=Math.floor(t%3600/60),o=Math.floor(t%3600%60),s=i.toString(),a=r.toString(),c=o.toString();return i<10&&(s="0"+s),r<10&&(a="0"+a),o<10&&(c="0"+c),n?s+e+a+e+c:a+e+c},t.timeToMillisecond=function(t,e){void 0===e&&(e=":");for(var n=t.split(e),i=0,r=n.length,o=0;o=1?(e.value=1,n=this._points.length-4):(e.value=t.MathHelper.clamp01(e.value)*this._curveCount,n=~~e,e.value-=n,n*=3),n},e.prototype.setControlPoint=function(e,n){if(e%3==0){var i=t.Vector2.subtract(n,this._points[e]);e>0&&this._points[e-1].add(i),e+1n?n:t},e.pointOnCirlce=function(n,i,r){var o=e.toRadians(r);return new t.Vector2(Math.cos(o)*o+n.x,Math.sin(o)*o+n.y)},e.isEven=function(t){return t%2==0},e.clamp01=function(t){return t<0?0:t>1?1:t},e.angleBetweenVectors=function(t,e){return Math.atan2(e.y-t.y,e.x-t.x)},e.angleToVector=function(e,n){return new t.Vector2(Math.cos(e)*n,Math.sin(e)*n)},e.incrementWithWrap=function(t,e){return++t==e?0:t},e.roundToNearest=function(t,e){return Math.round(t/e)*e},e.withinEpsilon=function(t,e){return void 0===e&&(e=this.Epsilon),Math.abs(t)180&&(n-=360),n},e.repeat=function(t,e){return t-Math.floor(t/e)*e},e.Epsilon=1e-5,e.Rad2Deg=57.29578,e.Deg2Rad=.0174532924,e.PiOver2=Math.PI/2,e}();t.MathHelper=e}(es||(es={})),function(t){var e=function(){function t(){}return t.createOrthographicOffCenter=function(e,n,i,r,o,s,a){void 0===a&&(a=new t),a.m11=2/(n-e),a.m12=0,a.m13=0,a.m14=0,a.m21=0,a.m22=2/(r-i),a.m23=0,a.m24=0,a.m31=0,a.m32=0,a.m33=1/(o-s),a.m34=0,a.m41=(e+n)/(e-n),a.m42=(r+i)/(i-r),a.m43=o/(o-s),a.m44=1},t.multiply=function(e,n,i){void 0===i&&(i=new t);var r=e.m11*n.m11+e.m12*n.m21+e.m13*n.m31+e.m14*n.m41,o=e.m11*n.m12+e.m12*n.m22+e.m13*n.m32+e.m14*n.m42,s=e.m11*n.m13+e.m12*n.m23+e.m13*n.m33+e.m14*n.m43,a=e.m11*n.m14+e.m12*n.m24+e.m13*n.m34+e.m14*n.m44,c=e.m21*n.m11+e.m22*n.m21+e.m23*n.m31+e.m24*n.m41,h=e.m21*n.m12+e.m22*n.m22+e.m23*n.m32+e.m24*n.m42,u=e.m21*n.m13+e.m22*n.m23+e.m23*n.m33+e.m24*n.m43,l=e.m21*n.m14+e.m22*n.m24+e.m23*n.m34+e.m24*n.m44,p=e.m31*n.m11+e.m32*n.m21+e.m33*n.m31+e.m34*n.m41,f=e.m31*n.m12+e.m32*n.m22+e.m33*n.m32+e.m34*n.m42,d=e.m31*n.m13+e.m32*n.m23+e.m33*n.m33+e.m34*n.m43,m=e.m31*n.m14+e.m32*n.m24+e.m33*n.m34+e.m34*n.m44,y=e.m41*n.m11+e.m42*n.m21+e.m43*n.m31+e.m44*n.m41,g=e.m41*n.m12+e.m42*n.m22+e.m43*n.m32+e.m44*n.m42,_=e.m41*n.m13+e.m42*n.m23+e.m43*n.m33+e.m44*n.m43,v=e.m41*n.m14+e.m42*n.m24+e.m43*n.m34+e.m44*n.m44;i.m11=r,i.m12=o,i.m13=s,i.m14=a,i.m21=c,i.m22=h,i.m23=u,i.m24=l,i.m31=p,i.m32=f,i.m33=d,i.m34=m,i.m41=y,i.m42=g,i.m43=_,i.m44=v},t}();t.Matrix=e}(es||(es={})),function(t){var e=function(){function e(t,e,n,i,r,o){this.m11=0,this.m12=0,this.m21=0,this.m22=0,this.m31=0,this.m32=0,this.m11=t,this.m12=e,this.m21=n,this.m22=i,this.m31=r,this.m32=o}return Object.defineProperty(e,"identity",{get:function(){return new e(1,0,0,1,0,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"translation",{get:function(){return new t.Vector2(this.m31,this.m32)},set:function(t){this.m31=t.x,this.m32=t.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotation",{get:function(){return Math.atan2(this.m21,this.m11)},set:function(t){var e=Math.cos(t),n=Math.sin(t);this.m11=e,this.m12=n,this.m21=-n,this.m22=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotationDegrees",{get:function(){return t.MathHelper.toDegrees(this.rotation)},set:function(e){this.rotation=t.MathHelper.toRadians(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scale",{get:function(){return new t.Vector2(this.m11,this.m22)},set:function(t){this.m11=t.x,this.m22=t.y},enumerable:!0,configurable:!0}),e.createRotation=function(t){var e=this.identity,n=Math.cos(t),i=Math.sin(t);return e.m11=n,e.m12=i,e.m21=-i,e.m22=n,e},e.createScale=function(t,e){var n=this.identity;return n.m11=t,n.m12=0,n.m21=0,n.m22=e,n.m31=0,n.m32=0,n},e.createTranslation=function(t,e){var n=this.identity;return n.m11=1,n.m12=0,n.m21=0,n.m22=1,n.m31=t,n.m32=e,n},e.invert=function(t){var e=1/t.determinant(),n=this.identity;return n.m11=t.m22*e,n.m12=-t.m12*e,n.m21=-t.m21*e,n.m22=t.m11*e,n.m31=(t.m32*t.m21-t.m31*t.m22)*e,n.m32=-(t.m32*t.m11-t.m31*t.m12)*e,n},e.prototype.add=function(t){return this.m11+=t.m11,this.m12+=t.m12,this.m21+=t.m21,this.m22+=t.m22,this.m31+=t.m31,this.m32+=t.m32,this},e.prototype.substract=function(t){return this.m11-=t.m11,this.m12-=t.m12,this.m21-=t.m21,this.m22-=t.m22,this.m31-=t.m31,this.m32-=t.m32,this},e.prototype.divide=function(t){return this.m11/=t.m11,this.m12/=t.m12,this.m21/=t.m21,this.m22/=t.m22,this.m31/=t.m31,this.m32/=t.m32,this},e.prototype.multiply=function(t){var e=this.m11*t.m11+this.m12*t.m21,n=this.m11*t.m12+this.m12*t.m22,i=this.m21*t.m11+this.m22*t.m21,r=this.m21*t.m12+this.m22*t.m22,o=this.m31*t.m11+this.m32*t.m21+t.m31,s=this.m31*t.m12+this.m32*t.m22+t.m32;return this.m11=e,this.m12=n,this.m21=i,this.m22=r,this.m31=o,this.m32=s,this},e.prototype.determinant=function(){return this.m11*this.m22-this.m12*this.m21},e.lerp=function(t,e,n){return t.m11=t.m11+(e.m11-t.m11)*n,t.m12=t.m12+(e.m12-t.m12)*n,t.m21=t.m21+(e.m21-t.m21)*n,t.m22=t.m22+(e.m22-t.m22)*n,t.m31=t.m31+(e.m31-t.m31)*n,t.m32=t.m32+(e.m32-t.m32)*n,t},e.transpose=function(t){var e=this.identity;return e.m11=t.m11,e.m12=t.m21,e.m21=t.m12,e.m22=t.m22,e.m31=0,e.m32=0,e},e.prototype.mutiplyTranslation=function(n,i){var r=e.createTranslation(n,i);return t.MatrixHelper.mutiply(this,r)},e.prototype.equals=function(t){return this==t},e.toMatrix=function(e){var n=new t.Matrix;return n.m11=e.m11,n.m12=e.m12,n.m13=0,n.m14=0,n.m21=e.m21,n.m22=e.m22,n.m23=0,n.m24=0,n.m31=0,n.m32=0,n.m33=1,n.m34=0,n.m41=e.m31,n.m42=e.m32,n.m43=0,n.m44=1,n},e.prototype.toString=function(){return"{m11:"+this.m11+" m12:"+this.m12+" m21:"+this.m21+" m22:"+this.m22+" m31:"+this.m31+" m32:"+this.m32+"}"},e}();t.Matrix2D=e}(es||(es={})),function(t){var e=function(){function e(){}return e.add=function(e,n){var i=t.Matrix2D.identity;return i.m11=e.m11+n.m11,i.m12=e.m12+n.m12,i.m21=e.m21+n.m21,i.m22=e.m22+n.m22,i.m31=e.m31+n.m31,i.m32=e.m32+n.m32,i},e.divide=function(e,n){var i=t.Matrix2D.identity;return i.m11=e.m11/n.m11,i.m12=e.m12/n.m12,i.m21=e.m21/n.m21,i.m22=e.m22/n.m22,i.m31=e.m31/n.m31,i.m32=e.m32/n.m32,i},e.mutiply=function(e,n){var i=t.Matrix2D.identity;if(n instanceof t.Matrix2D){var r=e.m11*n.m11+e.m12*n.m21,o=n.m11*n.m12+e.m12*n.m22,s=e.m21*n.m11+e.m22*n.m21,a=e.m21*n.m12+e.m22*n.m22,c=e.m31*n.m11+e.m32*n.m21+n.m31,h=e.m31*n.m12+e.m32*n.m22+n.m32;i.m11=r,i.m12=o,i.m21=s,i.m22=a,i.m31=c,i.m32=h}else"number"==typeof n&&(i.m11=e.m11*n,i.m12=e.m12*n,i.m21=e.m21*n,i.m22=e.m22*n,i.m31=e.m31*n,i.m32=e.m32*n);return i},e.subtract=function(e,n){var i=t.Matrix2D.identity;return i.m11=e.m11-n.m11,i.m12=e.m12-n.m12,i.m21=e.m21-n.m21,i.m22=e.m22-n.m22,i.m31=e.m31-n.m31,i.m32=e.m32-n.m32,i},e}();t.MatrixHelper=e}(es||(es={})),function(t){var e=function(){function e(t,e,n,i){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),this.x=0,this.y=0,this.width=0,this.height=0,this.x=t,this.y=e,this.width=n,this.height=i}return Object.defineProperty(e,"empty",{get:function(){return new e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"maxRect",{get:function(){return new e(Number.MIN_VALUE/2,Number.MIN_VALUE/2,Number.MAX_VALUE,Number.MAX_VALUE)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"max",{get:function(){return new t.Vector2(this.right,this.bottom)},enumerable:!0,configurable:!0}),e.prototype.isEmpty=function(){return 0==this.width&&0==this.height&&0==this.x&&0==this.y},Object.defineProperty(e.prototype,"location",{get:function(){return new t.Vector2(this.x,this.y)},set:function(t){this.x=t.x,this.y=t.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return new t.Vector2(this.width,this.height)},set:function(t){this.width=t.x,this.height=t.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"center",{get:function(){return new t.Vector2(this.x+this.width/2,this.y+this.height/2)},enumerable:!0,configurable:!0}),e.fromMinMax=function(t,n,i,r){return new e(t,n,i-t,r-n)},e.rectEncompassingPoints=function(t){for(var e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY,o=0;oi&&(i=s.x),s.yr&&(r=s.y)}return this.fromMinMax(e,n,i,r)},e.prototype.getSide=function(e){switch(e){case t.Edge.top:return this.top;case t.Edge.bottom:return this.bottom;case t.Edge.left:return this.left;case t.Edge.right:return this.right;default:throw new Error("Argument Out Of Range")}},e.prototype.contains=function(t,e){return this.x<=t&&tthis.x+this.width)return!1}else{var i=1/t.direction.x,r=(this.x-t.start.x)*i,o=(this.x+this.width-t.start.x)*i;if(r>o){var s=r;r=o,o=s}if(e.value=Math.max(r,e.value),n=Math.min(o,n),e.value>n)return!1}if(Math.abs(t.direction.y)<1e-6){if(t.start.ythis.y+this.height)return!1}else{var a=1/t.direction.y,c=(this.y-t.start.y)*a,h=(this.y+this.height-t.start.y)*a;if(c>h){var u=c;c=h,h=u}if(e.value=Math.max(c,e.value),n=Math.max(h,n),e.value>n)return!1}return!0},e.prototype.containsRect=function(t){return this.x<=t.x&&t.x0?this.x:this.x+t,i.y=n>0?this.y:this.y+n,i.width=t>0?t+this.width:this.width-t,i.height=n>0?n+this.height:this.height-n,i},e.prototype.collisionCheck=function(t,e,n){e.value=n.value=0;var i=t.x-(this.x+this.width),r=t.x+t.width-this.x,o=t.y-(this.y+this.height),s=t.y+t.height-this.y;return!(i>0||r<0||o>0||s<0)&&(e.value=Math.abs(i)=l||Math.abs(u)>=p)return t.Vector2.zero;var f=h>0?l-h:-l-h,d=u>0?p-u:-p-u;return new t.Vector2(f,d)},e.prototype.equals=function(t){return this===t},e.prototype.getHashCode=function(){return this.x^this.y^this.width^this.height},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e}();t.Rectangle=e}(es||(es={})),function(t){var e=function(){function t(){this.remainder=0}return t.prototype.update=function(t){this.remainder+=t;var e=Math.floor(Math.trunc(this.remainder));return this.remainder-=e,t=e},t.prototype.reset=function(){this.remainder=0},t}();t.SubpixelFloat=e}(es||(es={})),function(t){var e=function(){function e(){this._x=new t.SubpixelFloat,this._y=new t.SubpixelFloat}return e.prototype.update=function(t){t.x=this._x.update(t.x),t.y=this._y.update(t.y)},e.prototype.reset=function(){this._x.reset(),this._y.reset()},e}();t.SubpixelVector2=e}(es||(es={})),function(t){var e=function(){function e(t,e){this.x=0,this.y=0,this.x=t||0,this.y=null!=e?e:this.x}return Object.defineProperty(e,"zero",{get:function(){return new e(0,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e,"one",{get:function(){return new e(1,1)},enumerable:!0,configurable:!0}),Object.defineProperty(e,"unitX",{get:function(){return new e(1,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e,"unitY",{get:function(){return new e(0,1)},enumerable:!0,configurable:!0}),e.add=function(t,n){var i=e.zero;return i.x=t.x+n.x,i.y=t.y+n.y,i},e.divide=function(t,n){var i=e.zero;return i.x=t.x/n.x,i.y=t.y/n.y,i},e.multiply=function(t,n){var i=new e(0,0);return i.x=t.x*n.x,i.y=t.y*n.y,i},e.subtract=function(t,n){var i=new e(0,0);return i.x=t.x-n.x,i.y=t.y-n.y,i},e.normalize=function(t){var n=new e(t.x,t.y),i=1/Math.sqrt(n.x*n.x+n.y*n.y);return n.x*=i,n.y*=i,n},e.dot=function(t,e){return t.x*e.x+t.y*e.y},e.distanceSquared=function(t,e){var n=t.x-e.x,i=t.y-e.y;return n*n+i*i},e.clamp=function(n,i,r){return new e(t.MathHelper.clamp(n.x,i.x,r.x),t.MathHelper.clamp(n.y,i.y,r.y))},e.lerp=function(n,i,r){return new e(t.MathHelper.lerp(n.x,i.x,r),t.MathHelper.lerp(n.y,i.y,r))},e.transform=function(t,n){return new e(t.x*n.m11+t.y*n.m21+n.m31,t.x*n.m12+t.y*n.m22+n.m32)},e.distance=function(t,e){var n=t.x-e.x,i=t.y-e.y;return Math.sqrt(n*n+i*i)},e.angle=function(n,i){return n=e.normalize(n),i=e.normalize(i),Math.acos(t.MathHelper.clamp(e.dot(n,i),-1,1))*t.MathHelper.Rad2Deg},e.negate=function(t){return t.x=-t.x,t.y=-t.y,t},e.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},e.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this},e.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this},e.prototype.subtract=function(t){return this.x-=t.x,this.y-=t.y,this},e.prototype.normalize=function(){var t=1/Math.sqrt(this.x*this.x+this.y*this.y);this.x*=t,this.y*=t},e.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.prototype.lengthSquared=function(){return this.x*this.x+this.y*this.y},e.prototype.round=function(){return new e(Math.round(this.x),Math.round(this.y))},e.prototype.angleBetween=function(n,i){var r=e.subtract(n,this),o=e.subtract(i,this);return t.Vector2Ext.angle(r,o)},e.prototype.equals=function(t){return t instanceof e&&(t.x==this.x&&t.y==this.y)},e.prototype.clone=function(){return new e(this.x,this.y)},e}();t.Vector2=e}(es||(es={})),function(t){var e=function(){function e(e){this._activeTriggerIntersections=new t.HashSet,this._previousTriggerIntersections=new t.HashSet,this._tempTriggerList=[],this._entity=e}return e.prototype.update=function(){for(var e=this._entity.getComponents(t.Collider),n=0;n1)return!1;var u=(c.x*o.y-c.y*o.x)/a;return!(u<0||u>1)},n.lineToLineIntersection=function(e,n,i,r,o){void 0===o&&(o=new t.Vector2),o.x=0,o.y=0;var s=t.Vector2.subtract(n,e),a=t.Vector2.subtract(r,i),c=s.x*a.y-s.y*a.x;if(0==c)return!1;var h=t.Vector2.subtract(i,e),u=(h.x*a.y-h.y*a.x)/c;if(u<0||u>1)return!1;var l=(h.x*s.y-h.y*s.x)/c;if(l<0||l>1)return!1;var p=t.Vector2.add(e,new t.Vector2(u*s.x,u*s.y));return o.x=p.x,o.y=p.y,!0},n.closestPointOnLine=function(e,n,i){var r=t.Vector2.subtract(n,e),o=t.Vector2.subtract(i,e),s=t.Vector2.dot(o,r)/t.Vector2.dot(r,r);return s=t.MathHelper.clamp(s,0,1),t.Vector2.add(e,new t.Vector2(r.x*s,r.y*s))},n.circleToCircle=function(e,n,i,r){return t.Vector2.distanceSquared(e,i)<(n+r)*(n+r)},n.circleToLine=function(e,n,i,r){return t.Vector2.distanceSquared(e,this.closestPointOnLine(i,r,e))=t&&r.y>=e&&r.x=t+i&&(s|=e.right),o.y=n+r&&(s|=e.bottom),s},n}();t.Collisions=n}(es||(es={})),function(t){var e=function(){function e(e,n,i,r,o){this.fraction=0,this.distance=0,this.point=t.Vector2.zero,this.normal=t.Vector2.zero,this.collider=e,this.fraction=n,this.distance=i,this.point=r,this.centroid=t.Vector2.zero}return e.prototype.setValues=function(t,e,n,i){this.collider=t,this.fraction=e,this.distance=n,this.point=i},e.prototype.setValuesNonCollider=function(t,e,n,i){this.fraction=t,this.distance=e,this.point=n,this.normal=i},e.prototype.reset=function(){this.collider=null,this.fraction=this.distance=0},e.prototype.toString=function(){return"[RaycastHit] fraction: "+this.fraction+", distance: "+this.distance+", normal: "+this.normal+", centroid: "+this.centroid+", point: "+this.point},e}();t.RaycastHit=e}(es||(es={})),function(t){var e=function(){function e(){}return e.reset=function(){this._spatialHash=new t.SpatialHash(this.spatialHashCellSize),this._hitArray[0].reset(),this._colliderArray[0]=null},e.clear=function(){this._spatialHash.clear()},e.overlapCircle=function(t,n,i){return void 0===i&&(i=e.allLayers),this._colliderArray[0]=null,this._spatialHash.overlapCircle(t,n,this._colliderArray,i),this._colliderArray[0]},e.overlapCircleAll=function(t,e,n,i){if(void 0===i&&(i=-1),0!=n.length)return this._spatialHash.overlapCircle(t,e,n,i);console.warn("传入了一个空的结果数组。不会返回任何结果")},e.boxcastBroadphase=function(t,e){return void 0===e&&(e=this.allLayers),this._spatialHash.aabbBroadphase(t,null,e)},e.boxcastBroadphaseExcludingSelf=function(t,e,n){return void 0===n&&(n=this.allLayers),this._spatialHash.aabbBroadphase(e,t,n)},e.boxcastBroadphaseExcludingSelfNonRect=function(t,e){void 0===e&&(e=this.allLayers);var n=t.bounds.clone();return this._spatialHash.aabbBroadphase(n,t,e)},e.boxcastBroadphaseExcludingSelfDelta=function(t,n,i,r){void 0===r&&(r=e.allLayers);var o=t.bounds.clone().getSweptBroadphaseBounds(n,i);return this._spatialHash.aabbBroadphase(o,t,r)},e.addCollider=function(t){e._spatialHash.register(t)},e.removeCollider=function(t){e._spatialHash.remove(t)},e.updateCollider=function(t){this._spatialHash.remove(t),this._spatialHash.register(t)},e.linecast=function(t,n,i){return void 0===i&&(i=e.allLayers),this._hitArray[0].reset(),this.linecastAll(t,n,this._hitArray,i),this._hitArray[0]},e.linecastAll=function(t,n,i,r){return void 0===r&&(r=e.allLayers),0==i.length?(console.warn("传入了一个空的hits数组。没有点击会被返回"),0):this._spatialHash.linecast(t,n,i,r)},e.overlapRectangle=function(t,n){return void 0===n&&(n=e.allLayers),this._colliderArray[0]=null,this._spatialHash.overlapRectangle(t,this._colliderArray,n),this._colliderArray[0]},e.overlapRectangleAll=function(t,n,i){return void 0===i&&(i=e.allLayers),0==n.length?(console.warn("传入了一个空的结果数组。不会返回任何结果"),0):this._spatialHash.overlapRectangle(t,n,i)},e.gravity=new t.Vector2(0,300),e.spatialHashCellSize=100,e.allLayers=-1,e.raycastsHitTriggers=!1,e.raycastsStartInColliders=!1,e._hitArray=[new t.RaycastHit],e._colliderArray=[null],e}();t.Physics=e}(es||(es={})),function(t){var e=function(){return function(e,n){this.start=e,this.end=n,this.direction=t.Vector2.subtract(this.end,this.start)}}();t.Ray2D=e}(es||(es={})),function(t){var e=function(){function e(e){void 0===e&&(e=100),this.gridBounds=new t.Rectangle,this._overlapTestBox=new t.Box(0,0),this._overlapTestCircle=new t.Circle(0),this._cellDict=new n,this._tempHashSet=new Set,this._cellSize=e,this._inverseCellSize=1/this._cellSize,this._raycastParser=new i}return e.prototype.register=function(e){var n=e.bounds.clone();e.registeredPhysicsBounds=n;var i=this.cellCoords(n.x,n.y),r=this.cellCoords(n.right,n.bottom);this.gridBounds.contains(i.x,i.y)||(this.gridBounds=t.RectangleExt.union(this.gridBounds,i)),this.gridBounds.contains(r.x,r.y)||(this.gridBounds=t.RectangleExt.union(this.gridBounds,r));for(var o=i.x;o<=r.x;o++)for(var s=i.y;s<=r.y;s++){this.cellAtPosition(o,s,!0).push(e)}},e.prototype.remove=function(t){for(var e=t.registeredPhysicsBounds.clone(),n=this.cellCoords(e.x,e.y),i=this.cellCoords(e.right,e.bottom),r=n.x;r<=i.x;r++)for(var o=n.y;o<=i.y;o++){var s=this.cellAtPosition(r,o);s?new linq.List(s).remove(t):console.log("从不存在碰撞器的单元格中移除碰撞器: ["+t+"]")}},e.prototype.removeWithBruteForce=function(t){this._cellDict.remove(t)},e.prototype.clear=function(){this._cellDict.clear()},e.prototype.aabbBroadphase=function(e,n,i){this._tempHashSet.clear();for(var r=this.cellCoords(e.x,e.y),o=this.cellCoords(e.right,e.bottom),s=r.x;s<=o.x;s++)for(var a=r.y;a<=o.y;a++){var c=this.cellAtPosition(s,a);if(null!=c)for(var h=0;h>>0},t.prototype.clear=function(){this._store.clear()},t}();t.NumberDictionary=n;var i=function(){function e(){this._tempHit=new t.RaycastHit,this._checkedColliders=[],this._cellHits=[]}return e.prototype.start=function(t,e,n){this._ray=t,this._hits=e,this._layerMask=n,this.hitCounter=0},e.prototype.checkRayIntersection=function(n,i,r){for(var o=new t.Ref(0),s=0;s=this.points.length?this.points[0]:this.points[i+1];var o=t.Vector2Ext.perpendicular(r,e);t.Vector2Ext.normalize(o),this._edgeNormals[i]=o}},n.buildSymmetricalPolygon=function(e,n){for(var i=new Array(e),r=0;rr&&(r=s,i=o)}return e[i]},n.getClosestPointOnPolygonToPoint=function(e,n,i,r){i.value=Number.MAX_VALUE,r.x=0,r.y=0;for(var o=t.Vector2.zero,s=0,a=0;at.y!=this.points[i].y>t.y&&t.x<(this.points[i].x-this.points[n].x)*(t.y-this.points[n].y)/(this.points[i].y-this.points[n].y)+this.points[n].x&&(e=!e);return e},n.prototype.pointCollidesWithShape=function(e,n){return t.ShapeCollisions.pointToPoly(e,this,n)},n}(t.Shape);t.Polygon=e}(es||(es={})),function(t){var e=function(e){function n(t,i){var r=e.call(this,n.buildBox(t,i),!0)||this;return r.width=t,r.height=i,r}return __extends(n,e),n.buildBox=function(e,n){var i=e/2,r=n/2,o=new Array(4);return o[0]=new t.Vector2(-i,-r),o[1]=new t.Vector2(i,-r),o[2]=new t.Vector2(i,r),o[3]=new t.Vector2(-i,r),o},n.prototype.updateBox=function(e,n){this.width=e,this.height=n;var i=e/2,r=n/2;this.points[0]=new t.Vector2(-i,-r),this.points[1]=new t.Vector2(i,-r),this.points[2]=new t.Vector2(i,r),this.points[3]=new t.Vector2(-i,r);for(var o=0;o1)return!1;var a,c=t.Vector2.add(s.start,t.Vector2.multiply(s.direction,new t.Vector2(r.value))),h=0;c.xn.bounds.right&&(h|=1),c.yn.bounds.bottom&&(h|=2);var u=a+h;return 3==u&&console.log("m == 3. corner "+t.Time.frameCount),!0},e.corner=function(e,n){var i=new t.Vector2;return i.x=0==(1&n)?e.right:e.left,i.y=0==(1&n)?e.bottom:e.top,i},e.testCircleBox=function(e,n,i){i=n.bounds.getClosestPointOnRectangleToPoint(e.position);var r=t.Vector2.subtract(i,e.position);return t.Vector2.dot(r,r)<=e.radius*e.radius},e}();t.RealtimeCollisions=e}(es||(es={})),function(t){var e=function(){function e(){}return e.polygonToPolygon=function(e,n,i){for(var r,o=!0,s=e.edgeNormals.slice(),a=n.edgeNormals.slice(),c=Number.POSITIVE_INFINITY,h=new t.Vector2,u=t.Vector2.subtract(e.position,n.position),l=0;l0&&(o=!1),!o)return!1;(y=Math.abs(y))r.value&&(r.value=o)},e.circleToPolygon=function(e,n,i){void 0===i&&(i=new t.CollisionResult);var r,o=t.Vector2.subtract(e.position,n.position),s=new t.Ref(0),a=t.Polygon.getClosestPointOnPolygonToPoint(n.points,o,s,i.normal),c=n.containsPoint(e.position);if(s.value>e.radius*e.radius&&!c)return!1;if(c)r=t.Vector2.multiply(i.normal,new t.Vector2(Math.sqrt(s.value)-e.radius));else if(0==s.value)r=new t.Vector2(i.normal.x*e.radius,i.normal.y*e.radius);else{var h=Math.sqrt(s.value);r=t.Vector2.subtract(new t.Vector2(-1),t.Vector2.subtract(o,a)).multiply(new t.Vector2((e.radius-h)/h))}return i.minimumTranslationVector=r,i.point=t.Vector2.add(a,n.position),!0},e.circleToBox=function(e,n,i){void 0===i&&(i=new t.CollisionResult);var r=n.bounds.getClosestPointOnRectangleBorderToPoint(e.position,i.normal);if(n.containsPoint(e.position)){i.point=r.clone();var o=t.Vector2.add(r,t.Vector2.multiply(i.normal,new t.Vector2(e.radius)));return i.minimumTranslationVector=t.Vector2.subtract(e.position,o),!0}var s=t.Vector2.distanceSquared(r,e.position);if(0==s)i.minimumTranslationVector=t.Vector2.multiply(i.normal,new t.Vector2(e.radius));else if(s<=e.radius*e.radius){i.normal=t.Vector2.subtract(e.position,r);var a=i.normal.length()-e.radius;return i.point=r,t.Vector2Ext.normalize(i.normal),i.minimumTranslationVector=t.Vector2.multiply(new t.Vector2(a),i.normal),!0}return!1},e.pointToCircle=function(e,n,i){var r=t.Vector2.distanceSquared(e,n.position),o=1+n.radius;if(r1)return!1;var l=(h.x*s.y-h.y*s.x)/c;return!(l<0||l>1)&&(t.Vector2.add(e,t.Vector2.multiply(new t.Vector2(u),s)),!0)},e.lineToCircle=function(e,n,i,r){var o=t.Vector2.distance(e,n),s=t.Vector2.divide(t.Vector2.subtract(n,e),new t.Vector2(o)),a=t.Vector2.subtract(e,i.position),c=t.Vector2.dot(a,s),h=t.Vector2.dot(a,a)-i.radius*i.radius;if(h>0&&c>0)return!1;var u=c*c-h;return!(u<0)&&(r.fraction=-c-Math.sqrt(u),r.fraction<0&&(r.fraction=0),r.point=t.Vector2.add(e,t.Vector2.multiply(new t.Vector2(r.fraction),s)),r.distance=t.Vector2.distance(e,r.point),r.normal=t.Vector2.normalize(t.Vector2.subtract(r.point,i.position)),r.fraction=r.distance/o,!0)},e.boxToBoxCast=function(e,n,i,r){var o=this.minkowskiDifference(e,n);if(o.contains(0,0)){var s=o.getClosestPointOnBoundsToOrigin();return!s.equals(t.Vector2.zero)&&(r.normal=new t.Vector2(-s.x),r.normal.normalize(),r.distance=0,r.fraction=0,!0)}var a=new t.Ray2D(t.Vector2.zero,new t.Vector2(-i.x)),c=new t.Ref(0);return!!(o.rayIntersects(a,c)&&c.value<=1)&&(r.fraction=c.value,r.distance=i.length()*c.value,r.normal=new t.Vector2(-i.x,-i.y),r.normal.normalize(),r.centroid=t.Vector2.add(e.bounds.center,t.Vector2.multiply(i,new t.Vector2(c.value))),!0)},e}();t.ShapeCollisions=e}(es||(es={})),function(t){!function(t){t[t.top=0]="top",t[t.bottom=1]="bottom",t[t.left=2]="left",t[t.right=3]="right"}(t.Edge||(t.Edge={}))}(es||(es={})),function(t){var e=function(){function t(){}return t.repeat=function(t,e){for(var n=[];e--;)n.push(t);return n},t}();t.Enumerable=e}(es||(es={})),function(t){var e=function(){function t(){}return t.default=function(){return new t},t.prototype.equals=function(t,e){return"function"==typeof t.equals?t.equals(e):t===e},t.prototype.getHashCode=function(t){var e=this;if("number"==typeof t)return this._getHashCodeForNumber(t);if("string"==typeof t)return this._getHashCodeForString(t);var n=385229220;return this.forOwn(t,function(t){"number"==typeof t?n+=e._getHashCodeForNumber(t):"string"==typeof t?n+=e._getHashCodeForString(t):"object"==typeof t&&e.forOwn(t,function(){n+=e.getHashCode(t)})}),n},t.prototype._getHashCodeForNumber=function(t){return t},t.prototype._getHashCodeForString=function(t){for(var e=385229220,n=0;n>7,n+=n<<3,n^=n>>17,n+=n<<5},t}();t.Hash=e}(es||(es={})),function(t){var e=function(){return function(t){this.value=t}}();t.Ref=e}(es||(es={})),function(t){var e=function(){function e(){}return Object.defineProperty(e,"size",{get:function(){return new t.Vector2(this.width,this.height)},enumerable:!0,configurable:!0}),Object.defineProperty(e,"center",{get:function(){return new t.Vector2(this.width/2,this.height/2)},enumerable:!0,configurable:!0}),e}();t.Screen=e}(es||(es={})),function(t){var e=function(){function t(){}return t.prototype.update=function(t){this.remainder+=t;var e=Math.trunc(this.remainder);return this.remainder-=e,e},t.prototype.reset=function(){this.remainder=0},t}();t.SubpixelNumber=e}(es||(es={})),function(t){var e=function(){function e(){this.triangleIndices=[],this._triPrev=new Array(12),this._triNext=new Array(12)}return e.testPointTriangle=function(e,n,i,r){return!(t.Vector2Ext.cross(t.Vector2.subtract(e,n),t.Vector2.subtract(i,n))<0)&&(!(t.Vector2Ext.cross(t.Vector2.subtract(e,i),t.Vector2.subtract(r,i))<0)&&!(t.Vector2Ext.cross(t.Vector2.subtract(e,r),t.Vector2.subtract(n,r))<0))},e.prototype.triangulate=function(n,i){void 0===i&&(i=!0);var r=n.length;this.initialize(r);for(var o=0,s=0;r>3&&o<500;){o++;var a=!0,c=n[this._triPrev[s]],h=n[s],u=n[this._triNext[s]];if(t.Vector2Ext.isTriangleCCW(c,h,u)){var l=this._triNext[this._triNext[s]];do{if(e.testPointTriangle(n[l],c,h,u)){a=!1;break}l=this._triNext[l]}while(l!=this._triPrev[s])}else a=!1;a?(this.triangleIndices.push(this._triPrev[s]),this.triangleIndices.push(s),this.triangleIndices.push(this._triNext[s]),this._triNext[this._triPrev[s]]=this._triNext[s],this._triPrev[this._triNext[s]]=this._triPrev[s],r--,s=this._triPrev[s]):s=this._triNext[s]}this.triangleIndices.push(this._triPrev[s]),this.triangleIndices.push(s),this.triangleIndices.push(this._triNext[s]),i||this.triangleIndices.reverse()},e.prototype.initialize=function(t){this.triangleIndices.length=0,this._triNext.lengththis._buckets.length){this._buckets=new Array(t.HashHelpers.expandPrime(this._collisions)),this._collisions=0;for(var l=0;l=e?t%e:t},e}();t.FasterDictionary=e;var n=function(){return function(t,e,n){void 0===n&&(n=-1),this.key=t,this.hashcode=e,this.previous=n,this.next=-1}}();t.FastNode=n}(es||(es={})),function(t){var e=function(){return function(t,e){this.element=t,this.next=e}}();function n(t,e){return t===e}t.Node=e,t.defaultEquals=n;var i=function(){function t(t){void 0===t&&(t=n),this.count=0,this.next=void 0,this.equalsFn=t,this.head=null}return t.prototype.push=function(t){var n,i=new e(t);if(null==this.head)this.head=i;else{for(n=this.head;null!=n.next;)n=n.next;n.next=i}this.count++},t.prototype.removeAt=function(t){if(t>=0&&t=0&&t<=this.count){for(var e=this.head,n=0;n=0&&n<=this.count){var i=new e(t);if(0===n)i.next=this.head,this.head=i;else{var r=this.getElementAt(n-1);i.next=r.next,r.next=i}return this.count++,!0}return!1},t.prototype.indexOf=function(t){for(var e=this.head,n=0;n0)for(var e=0;ethis._objectQueue.length;)this._objectQueue.shift()},t.clearCache=function(){this._objectQueue.length=0},t.obtain=function(){return this._objectQueue.length>0?this._objectQueue.shift():[]},t.free=function(t){this._objectQueue.unshift(t),t.length=0},t._objectQueue=[],t}();t.ListPool=e}(es||(es={})),function(t){var e=function(){function e(t,e){this.first=t,this.second=e}return e.prototype.clear=function(){this.first=this.second=null},e.prototype.equals=function(t){return this.first==t.first&&this.second==t.second},e.prototype.getHashCode=function(){return 37*t.EqualityComparer.default().getHashCode(this.first)+t.EqualityComparer.default().getHashCode(this.second)},e}();t.Pair=e}(es||(es={})),function(t){var e=function(){function e(){}return e.warmCache=function(t,e){if((e-=this._objectQueue.length)>0)for(var n=0;nthis._objectQueue.length;)this._objectQueue.shift()},e.clearCache=function(){this._objectQueue.length=0},e.obtain=function(t){return this._objectQueue.length>0?this._objectQueue.shift():new t},e.free=function(e){this._objectQueue.unshift(e),t.isIPoolable(e)&&e.reset()},e._objectQueue=[],e}();t.Pool=e,t.isIPoolable=function(t){return void 0!==t.reset}}(es||(es={})),function(t){var e=function(t){function e(e){return t.call(this,e)||this}return __extends(e,t),e.prototype.getHashCode=function(t){return t.getHashCode()},e.prototype.areEqual=function(t,e){return t.equals(e)},e}(function(){function t(t){var e=this;this.clear(),t&&t.forEach(function(t){e.add(t)})}return t.prototype.add=function(t){var e=this,n=this.getHashCode(t),i=this.buckets[n];if(void 0===i){var r=new Array;return r.push(t),this.buckets[n]=r,this.count=this.count+1,!0}return!i.some(function(n){return e.areEqual(n,t)})&&(i.push(t),this.count=this.count+1,!0)},t.prototype.remove=function(t){var e=this,n=this.getHashCode(t),i=this.buckets[n];if(void 0===i)return!1;var r=!1,o=new Array;return i.forEach(function(n){e.areEqual(n,t)?r=!0:o.push(t)}),this.buckets[n]=o,r&&(this.count=this.count-1),r},t.prototype.contains=function(t){return this.bucketsContains(this.buckets,t)},t.prototype.getCount=function(){return this.count},t.prototype.clear=function(){this.buckets=new Array,this.count=0},t.prototype.toArray=function(){var t=new Array;return this.buckets.forEach(function(e){e.forEach(function(e){t.push(e)})}),t},t.prototype.exceptWith=function(t){var e=this;t&&t.forEach(function(t){e.remove(t)})},t.prototype.intersectWith=function(t){var e=this;if(t){var n=this.buildInternalBuckets(t);this.toArray().forEach(function(t){e.bucketsContains(n.Buckets,t)||e.remove(t)})}else this.clear()},t.prototype.unionWith=function(t){var e=this;t.forEach(function(t){e.add(t)})},t.prototype.isSubsetOf=function(t){var e=this,n=this.buildInternalBuckets(t);return this.toArray().every(function(t){return e.bucketsContains(n.Buckets,t)})},t.prototype.isSupersetOf=function(t){var e=this;return t.every(function(t){return e.contains(t)})},t.prototype.overlaps=function(t){var e=this;return t.some(function(t){return e.contains(t)})},t.prototype.setEquals=function(t){var e=this;return this.buildInternalBuckets(t).Count===this.count&&t.every(function(t){return e.contains(t)})},t.prototype.buildInternalBuckets=function(t){var e=this,n=new Array,i=0;return t.forEach(function(t){var r=e.getHashCode(t),o=n[r];if(void 0===o){var s=new Array;s.push(t),n[r]=s,i+=1}else o.some(function(n){return e.areEqual(n,t)})||(o.push(t),i+=1)}),{Buckets:n,Count:i}},t.prototype.bucketsContains=function(t,e){var n=this,i=t[this.getHashCode(e)];return void 0!==i&&i.some(function(t){return n.areEqual(t,e)})},t}());t.HashSet=e}(es||(es={})),function(t){var e=function(){function t(){}return t.waitForSeconds=function(t){return n.waiter.wait(t)},t}();t.Coroutine=e;var n=function(){function t(){this.waitTime=0}return t.prototype.wait=function(e){return t.waiter.waitTime=e,t.waiter},t.waiter=new t,t}();t.WaitForSeconds=n}(es||(es={})),function(t){var e=function(){function t(){this.waitTimer=0,this.useUnscaledDeltaTime=!1}return t.prototype.stop=function(){this.isDone=!0},t.prototype.setUseUnscaledDeltaTime=function(t){return this.useUnscaledDeltaTime=t,this},t.prototype.prepareForUse=function(){this.isDone=!1},t.prototype.reset=function(){this.isDone=!0,this.waitTimer=0,this.waitForCoroutine=null,this.enumerator=null,this.useUnscaledDeltaTime=!1},t}();t.CoroutineImpl=e;var n=function(n){function i(){var t=null!==n&&n.apply(this,arguments)||this;return t._unblockedCoroutines=[],t._shouldRunNextFrame=[],t}return __extends(i,n),i.prototype.startCoroutine=function(n){var i=t.Pool.obtain(e);return i.prepareForUse(),i.enumerator=n,this.tickCoroutine(i)?(this._isInUpdate?this._shouldRunNextFrame.push(i):this._unblockedCoroutines.push(i),i):null},i.prototype.update=function(){this._isInUpdate=!0;for(var e=0;e0?(n.waitTimer-=n.useUnscaledDeltaTime?t.Time.unscaledDeltaTime:t.Time.deltaTime,this._shouldRunNextFrame.push(n)):this.tickCoroutine(n)&&this._shouldRunNextFrame.push(n)}}var i=new linq.List(this._unblockedCoroutines);i.clear(),i.addRange(this._shouldRunNextFrame),this._shouldRunNextFrame.length=0,this._isInUpdate=!1},i.prototype.tickCoroutine=function(n){var i=n.enumerator.next();return i.done||n.isDone?(t.Pool.free(n),!1):null==i.value||(i.value instanceof t.WaitForSeconds?(n.waitTimer=i.value.waitTime,!0):"number"==typeof i.value?(n.waitTimer=i.value,!0):"string"==typeof i.value?"break"!=i.value||(t.Pool.free(n),!1):!(i.value instanceof e)||(n.waitForCoroutine=i.value,!0))},i}(t.GlobalManager);t.CoroutineManager=n}(es||(es={})),function(t){var e=function(){function e(t,e,n){void 0===n&&(n=!0),this.binWidth=0,this.binHeight=0,this.usedRectangles=[],this.freeRectangles=[],this.init(t,e,n)}return e.prototype.init=function(e,n,i){void 0===i&&(i=!0),this.binWidth=e,this.binHeight=n,this.allowRotations=i;var r=new t.Rectangle;r.x=0,r.y=0,r.width=e,r.height=n,this.usedRectangles.length=0,this.freeRectangles.length=0,this.freeRectangles.push(r)},e.prototype.insert=function(e,n){var i=new t.Rectangle,r=new t.Ref(0),o=new t.Ref(0);if(0==(i=this.findPositionForNewNodeBestAreaFit(e,n,r,o)).height)return i;for(var s=this.freeRectangles.length,a=0;a=e&&this.freeRectangles[s].height>=n){var c=Math.abs(this.freeRectangles[s].width-e),h=Math.abs(this.freeRectangles[s].height-n),u=Math.min(c,h);(a=n&&this.freeRectangles[s].height>=e){c=Math.abs(this.freeRectangles[s].width-n),h=Math.abs(this.freeRectangles[s].height-e),u=Math.min(c,h);(a=t.x+t.width||e.x+e.width<=t.x||e.y>=t.y+t.height||e.y+e.height<=t.y)return!1;if(e.xt.x){if(e.y>t.y&&e.yt.y){var n;if(e.x>t.x&&e.x=e.x&&t.y>=e.y&&t.x+t.width<=e.x+e.width&&t.y+t.height<=e.y+e.height},e}();t.MaxRectsBinPack=e}(es||(es={}));var ArrayUtils=function(){function t(){}return t.bubbleSort=function(t){for(var e=!1,n=0;nn;i--)if(t[i]0&&t[r-1]>i;r--)t[r]=t[r-1];t[r]=i}},t.binarySearch=function(t,e){for(var n=0,i=t.length,r=n+i>>1;n=t[r]&&(n=r+1),r=n+i>>1;return t[n]==e?n:-1},t.findElementIndex=function(t,e){for(var n=t.length,i=0;it[e]&&(e=i);return e},t.getMinElementIndex=function(t){for(var e=0,n=t.length,i=1;i=0;--r)n.unshift(e[r]);return n},t.getDifferAry=function(t,e){t=this.getUniqueAry(t),e=this.getUniqueAry(e);for(var n=t.concat(e),i={},r=[],o=n.length,s=0;s=0;e-=1)t.splice(e,1)},t.cloneList=function(t){return t?t.slice(0,t.length):null},t.equals=function(t,e){if(t==e)return!0;var n=t.length;if(n!=e.length)return!1;for(;n--;)if(t[n]!=e[n])return!1;return!0},t.insert=function(t,e,n){if(!t)return null;var i=t.length;if(e>i&&(e=i),e<0&&(e=0),e==i)t.push(n);else if(0==e)t.unshift(n);else{for(var r=i-1;r>=e;r-=1)t[r+1]=t[r];t[e]=n}return n},t.shuffle=function(t){for(var e=t.length;e>1;){e--;var n=RandomUtils.randint(0,e+1),i=t[n];t[n]=t[e],t[e]=i}},t.addIfNotPresent=function(t,e){return!new linq.List(t).contains(e)&&(t.push(e),!0)},t.lastItem=function(t){return t[t.length-1]},t.randomItem=function(t){return t[RandomUtils.randint(0,t.length-1)]},t.randomItems=function(t,e){for(var n=new Set;n.size!=e;){var i=this.randomItem(t);n.has(i)||n.add(i)}var r=es.ListPool.obtain();return n.forEach(function(t){return r.push(t)}),r},t}();!function(t){var e=function(){function t(){}return Object.defineProperty(t,"nativeBase64",{get:function(){return"function"==typeof window.atob},enumerable:!0,configurable:!0}),t.decode=function(t){if(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,""),this.nativeBase64)return window.atob(t);for(var e,n,i,r,o,s,a=[],c=0;c>4,n=(15&r)<<4|(o=this._keyStr.indexOf(t.charAt(c++)))>>2,i=(3&o)<<6|(s=this._keyStr.indexOf(t.charAt(c++))),a.push(String.fromCharCode(e)),64!==o&&a.push(String.fromCharCode(n)),64!==s&&a.push(String.fromCharCode(i));return a=a.join("")},t.encode=function(t){if(t=t.replace(/\r\n/g,"\n"),!this.nativeBase64){for(var e,n,i,r,o,s,a,c=[],h=0;h>2,o=(3&e)<<4|(n=t.charCodeAt(h++))>>4,s=(15&n)<<2|(i=t.charCodeAt(h++))>>6,a=63&i,isNaN(n)?s=a=64:isNaN(i)&&(a=64),c.push(this._keyStr.charAt(r)),c.push(this._keyStr.charAt(o)),c.push(this._keyStr.charAt(s)),c.push(this._keyStr.charAt(a));return c=c.join("")}window.btoa(t)},t.decodeBase64AsArray=function(e,n){n=n||1;var i,r,o,s=t.decode(e),a=new Uint32Array(s.length/n);for(i=0,o=s.length/n;i=0;--r)a[i]+=s.charCodeAt(i*n+r)<<(r<<3);return a},t.decompress=function(t,e,n){throw new Error("GZIP/ZLIB compressed TMX Tile Map not supported!")},t.decodeCSV=function(t){for(var e=t.replace("\n","").trim().split(","),n=[],i=0;i(e=Math.floor(e))?t++:e++,this.randrange(t,e)},t.randnum=function(t,e){return this.random()*(e-t)+t},t.shuffle=function(t){return t.sort(this._randomCompare),t},t.choice=function(t){if(!t.hasOwnProperty("length"))throw new Error("无法对此对象执行此操作");var e=Math.floor(this.random()*t.length);return t instanceof String?String(t).charAt(e):t[e]},t.sample=function(t,e){var n=t.length;if(e<=0||n=0;)s=Math.floor(this.random()*n);i.push(t[s]),r.push(s)}return i},t.random=function(){return Math.random()},t.boolean=function(t){return void 0===t&&(t=.5),this.random().5?1:-1},t}();!function(t){var e=function(){function e(){}return e.getSide=function(e,n){switch(n){case t.Edge.top:return e.top;case t.Edge.bottom:return e.bottom;case t.Edge.left:return e.left;case t.Edge.right:return e.right}},e.union=function(e,n){var i=new t.Rectangle(n.x,n.y,0,0),r=new t.Rectangle;return r.x=Math.min(e.x,i.x),r.y=Math.min(e.y,i.y),r.width=Math.max(e.right,i.right)-r.x,r.height=Math.max(e.bottom,i.bottom)-r.y,r},e.getHalfRect=function(e,n){switch(n){case t.Edge.top:return new t.Rectangle(e.x,e.y,e.width,e.height/2);case t.Edge.bottom:return new t.Rectangle(e.x,e.y+e.height/2,e.width,e.height/2);case t.Edge.left:return new t.Rectangle(e.x,e.y,e.width/2,e.height);case t.Edge.right:return new t.Rectangle(e.x+e.width/2,e.y,e.width/2,e.height)}},e.getRectEdgePortion=function(e,n,i){switch(void 0===i&&(i=1),n){case t.Edge.top:return new t.Rectangle(e.x,e.y,e.width,i);case t.Edge.bottom:return new t.Rectangle(e.x,e.y+e.height-i,e.width,i);case t.Edge.left:return new t.Rectangle(e.x,e.y,i,e.height);case t.Edge.right:return new t.Rectangle(e.x+e.width-i,e.y,i,e.height)}},e.expandSide=function(e,n,i){switch(i=Math.abs(i),n){case t.Edge.top:e.y-=i,e.height+=i;break;case t.Edge.bottom:e.height+=i;break;case t.Edge.left:e.x-=i,e.width+=i;break;case t.Edge.right:e.width+=i}},e.contract=function(t,e,n){t.x+=e,t.y+=n,t.width-=2*e,t.height-=2*n},e.boundsFromPolygonVector=function(e){for(var n=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=0;sr&&(r=a.x),a.yo&&(o=a.y)}return this.fromMinMaxVector(new t.Vector2(n,i),new t.Vector2(r,o))},e.fromMinMaxVector=function(e,n){return new t.Rectangle(e.x,e.y,n.x-e.x,n.y-e.y)},e.getSweptBroadphaseBounds=function(e,n,i){var r=t.Rectangle.empty;return r.x=n>0?e.x:e.x+n,r.y=i>0?e.y:e.y+i,r.width=n>0?n+e.width:e.width-n,r.height=i>0?i+e.height:e.height-i,r},e.prototype.collisionCheck=function(t,e,n,i){n.value=i.value=0;var r=e.x-(t.x+t.width),o=e.x+e.width-t.x,s=e.y-(t.y+t.height),a=e.y+e.height-t.y;return!(r>0||o<0||s>0||a<0)&&(n.value=Math.abs(r)=l||Math.abs(u)>=p)return t.Vector2.zero;var f=h>0?l-h:-l-h,d=u>0?p-u:-p-u;return new t.Vector2(f,d)},e}();t.RectangleExt=e}(es||(es={})),function(t){var e=function(){function t(){}return t.premultiplyAlpha=function(t){for(var e=t[0],n=0;nt.MathHelper.Epsilon?e.divide(new t.Vector2(n)):e.x=e.y=0},e.transformA=function(t,e,n,i,r,o){for(var s=0;so?e?-1:1:r0},e.prototype.average=function(t){return this.sum(t)/this.count(t)},e.prototype.cast=function(){return new e(this._elements)},e.prototype.clear=function(){this._elements.length=0},e.prototype.concat=function(t){return new e(this._elements.concat(t.toArray()))},e.prototype.contains=function(t){return this.any(function(e){return e===t})},e.prototype.count=function(t){return t?this.where(t).count():this._elements.length},e.prototype.defaultIfEmpty=function(t){return this.count()?this:new e([t])},e.prototype.distinctBy=function(t){var n=this.groupBy(t);return Object.keys(n).reduce(function(t,e){return t.add(n[e][0]),t},new e)},e.prototype.elementAt=function(t){if(t=0)return this._elements[t];throw new Error("ArgumentOutOfRangeException: index is less than 0 or greater than or equal to the number of elements in source.")},e.prototype.elementAtOrDefault=function(t){return t=0?this._elements[t]:void 0},e.prototype.except=function(t){return this.where(function(e){return!t.contains(e)})},e.prototype.first=function(t){if(this.count())return t?this.where(t).first():this._elements[0];throw new Error("InvalidOperationException: The source sequence is empty.")},e.prototype.firstOrDefault=function(t){return this.count(t)?this.first(t):void 0},e.prototype.forEach=function(t){return this._elements.forEach(t)},e.prototype.groupBy=function(t,e){void 0===e&&(e=function(t){return t});return this.aggregate(function(n,i){var r=t(i),o=n[r],s=e(i);return o?o.push(s):n[r]=[s],n},{})},e.prototype.groupJoin=function(t,e,n,i){return this.select(function(r){return i(r,t.where(function(t){return e(r)===n(t)}))})},e.prototype.indexOf=function(t){return this._elements.indexOf(t)},e.prototype.insert=function(t,e){if(t<0||t>this._elements.length)throw new Error("Index is out of range.");this._elements.splice(t,0,e)},e.prototype.intersect=function(t){return this.where(function(e){return t.contains(e)})},e.prototype.join=function(t,e,n,i){return this.selectMany(function(r){return t.where(function(t){return n(t)===e(r)}).select(function(t){return i(r,t)})})},e.prototype.last=function(t){if(this.count())return t?this.where(t).last():this._elements[this.count()-1];throw Error("InvalidOperationException: The source sequence is empty.")},e.prototype.lastOrDefault=function(t){return this.count(t)?this.last(t):void 0},e.prototype.max=function(t){return Math.max.apply(Math,__spread(this._elements.map(t||function(t){return t})))},e.prototype.min=function(t){return Math.min.apply(Math,__spread(this._elements.map(t||function(t){return t})))},e.prototype.ofType=function(t){var e;switch(t){case Number:e="number";break;case String:e="string";break;case Boolean:e=typeof!0;break;case Function:e="function";break;default:e=null}return null===e?this.where(function(e){return e instanceof t}).cast():this.where(function(t){return typeof t===e}).cast()},e.prototype.orderBy=function(e,i){return void 0===i&&(i=t.keyComparer(e,!1)),new n(this._elements,i)},e.prototype.orderByDescending=function(e,i){return void 0===i&&(i=t.keyComparer(e,!0)),new n(this._elements,i)},e.prototype.thenBy=function(t){return this.orderBy(t)},e.prototype.thenByDescending=function(t){return this.orderByDescending(t)},e.prototype.remove=function(t){return-1!==this.indexOf(t)&&(this.removeAt(this.indexOf(t)),!0)},e.prototype.removeAll=function(e){return this.where(t.negate(e))},e.prototype.removeAt=function(t){this._elements.splice(t,1)},e.prototype.reverse=function(){return new e(this._elements.reverse())},e.prototype.select=function(t){return new e(this._elements.map(t))},e.prototype.selectMany=function(t){var n=this;return this.aggregate(function(e,i,r){return e.addRange(n.select(t).elementAt(r).toArray()),e},new e)},e.prototype.sequenceEqual=function(t){return this.all(function(e){return t.contains(e)})},e.prototype.single=function(t){if(1!==this.count(t))throw new Error("The collection does not contain exactly one element.");return this.first(t)},e.prototype.singleOrDefault=function(t){return this.count(t)?this.single(t):void 0},e.prototype.skip=function(t){return new e(this._elements.slice(Math.max(0,t)))},e.prototype.skipLast=function(t){return new e(this._elements.slice(0,-Math.max(0,t)))},e.prototype.skipWhile=function(t){var e=this;return this.skip(this.aggregate(function(n){return t(e.elementAt(n))?++n:n},0))},e.prototype.sum=function(t){return t?this.select(t).sum():this.aggregate(function(t,e){return t+ +e},0)},e.prototype.take=function(t){return new e(this._elements.slice(0,Math.max(0,t)))},e.prototype.takeLast=function(t){return new e(this._elements.slice(-Math.max(0,t)))},e.prototype.takeWhile=function(t){var e=this;return this.take(this.aggregate(function(n){return t(e.elementAt(n))?++n:n},0))},e.prototype.toArray=function(){return this._elements},e.prototype.toDictionary=function(t,n){var i=this;return this.aggregate(function(e,r,o){return e[i.select(t).elementAt(o).toString()]=n?i.select(n).elementAt(o):r,e.add({Key:i.select(t).elementAt(o),Value:n?i.select(n).elementAt(o):r}),e},new e)},e.prototype.toSet=function(){var t,e,n=new Set;try{for(var i=__values(this._elements),r=i.next();!r.done;r=i.next()){var o=r.value;n.add(o)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return n},e.prototype.toList=function(){return this},e.prototype.toLookup=function(t,e){return this.groupBy(t,e)},e.prototype.where=function(t){return new e(this._elements.filter(t))},e.prototype.zip=function(t,e){var n=this;return t.count()e.angle?1:t.angleMath.PI&&(o-=2*Math.PI),r.p1.begin=o>0,r.p2.begin=!r.p1.begin}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this._isSpotLight&&(this._spotStartAngle=this._segments[0].p2.angle,this._spotEndAngle=this._segments[1].p2.angle)},e._cornerCache=[],e._openSegments=new t.LinkedList,e}();t.VisibilityComputer=e}(es||(es={})),function(t){var e=function(){function e(){this._timeInSeconds=0,this._repeats=!1,this._isDone=!1,this._elapsedTime=0}return e.prototype.getContext=function(){return this.context},e.prototype.reset=function(){this._elapsedTime=0},e.prototype.stop=function(){this._isDone=!0},e.prototype.tick=function(){return!this._isDone&&this._elapsedTime>this._timeInSeconds&&(this._elapsedTime-=this._timeInSeconds,this._onTime(this),this._isDone||this._repeats||(this._isDone=!0)),this._elapsedTime+=t.Time.deltaTime,this._isDone},e.prototype.initialize=function(t,e,n,i){this._timeInSeconds=t,this._repeats=e,this.context=n,this._onTime=i},e.prototype.unload=function(){this.context=null,this._onTime=null},e}();t.Timer=e}(es||(es={})),function(t){var e=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t._timers=[],t}return __extends(n,e),n.prototype.update=function(){for(var t=this._timers.length-1;t>=0;t--)this._timers[t].tick()&&(this._timers[t].unload(),new linq.List(this._timers).removeAt(t))},n.prototype.schedule=function(e,n,i,r){var o=new t.Timer;return o.initialize(e,n,i,r),this._timers.push(o),o},n}(t.GlobalManager);t.TimerManager=e}(es||(es={})); \ No newline at end of file +window.es={};var __read=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s},__spread=this&&this.__spread||function(){for(var t=[],e=0;e=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}};!function(t){var e=function(){return function(t,e){this.func=t,this.context=e}}();t.FuncPack=e;var n=function(){function t(){this._messageTable=new Map}return t.prototype.addObserver=function(t,n,i){var r=this._messageTable.get(t);r||(r=[],this._messageTable.set(t,r)),-1!=r.findIndex(function(t){return t.func==n})&&console.warn("您试图添加相同的观察者两次"),r.push(new e(n,i))},t.prototype.removeObserver=function(t,e){var n=this._messageTable.get(t),i=n.findIndex(function(t){return t.func==e});-1!=i&&new linq.List(n).removeAt(i)},t.prototype.emit=function(t){for(var e,n=[],i=1;i=0;o--)(e=r[o].func).call.apply(e,__spread([r[o].context],n))},t}();t.Emitter=n}(es||(es={})),function(t){var e=function(){function e(){}return e.emitter=new t.Emitter,e}();t.Framework=e}(es||(es={})),function(t){var e=function(){function t(){}return t.debugText=16777215,t.colliderBounds=5033164.5,t.colliderEdge=9109504,t.colliderPosition=16776960,t.colliderCenter=16711680,t.renderableBounds=16776960,t.renderableCenter=10040012,t.verletParticle=14431326,t.verletConstraintEdge=4406838,t}();t.Debug=e}(es||(es={})),function(t){var e=function(){function t(){}return t.fail=function(t){void 0===t&&(t=null);for(var e=[],n=1;n=0;t--){this.transform.getChild(t).entity.destroy()}},n.prototype.detachFromScene=function(){this.scene.entities.remove(this),this.components.deregisterAllComponents();for(var t=0;tr?this.pixelPerfectScale=i.x/n.x:this.pixelPerfectScale=i.y/n.y,0==this.pixelPerfectScale&&(this.pixelPerfectScale=1)),this._resolutionPolicy){case e.none:this._finalRenderDestinationRect.x=this._finalRenderDestinationRect.y=0,this._finalRenderDestinationRect.width=i.x,this._finalRenderDestinationRect.height=i.y,h=!0;break;case e.bestFit:var u=i.x/(n.x-this._designBleedSize.x),l=i.y/(n.y-this._designBleedSize.y),p=Math.max(a,c),f=Math.min(u,l);a=c=Math.min(p,f),o=n.x,s=n.y}if(!h){var d=n.x*a,m=n.y*c;this._finalRenderDestinationRect=new t.Rectangle((i.x-d)/2,(i.y-m)/2,d,m)}var y=o/this._finalRenderDestinationRect.width,g=s/this._finalRenderDestinationRect.height;t.Framework.emitter.emit(t.CoreEvents.resolutionScale,new t.Vector2(y,g)),t.Framework.emitter.emit(t.CoreEvents.resolutionOffset,this._finalRenderDestinationRect.location),null!=this._sceneRenderTarget&&t.Framework.emitter.emit(t.CoreEvents.disposeRenderTarget,this._sceneRenderTarget),t.Framework.emitter.emit(t.CoreEvents.createRenderTarget,this._sceneRenderTarget,o,s),null!=this._destinationRenderTarget&&(t.Framework.emitter.emit(t.CoreEvents.disposeRenderTarget,this._destinationRenderTarget),t.Framework.emitter.emit(t.CoreEvents.createRenderTarget,this._destinationRenderTarget,o,s));for(var _=0;_=0;e--)this._sceneComponents[e].enabled&&this._sceneComponents[e].update();null!=this.entityProcessors&&this.entityProcessors.update(),this.entities.update(),this.renderableComponents.updateList(),null!=this.entityProcessors&&this.entityProcessors.lateUpdate()},n.prototype.render=function(){if(0!=this._renderers.length){this._renderers[0].wantsToRenderToSceneRenderTarget&&(t.Framework.emitter.emit(t.CoreEvents.setRenderTarget,this._sceneRenderTarget),t.Framework.emitter.emit(t.CoreEvents.clearGraphics));for(var e=!1,n=0;ne.x?-1:1,i=t.Vector2.normalize(t.Vector2.subtract(this.position,e));this.rotation=n*Math.acos(t.Vector2.dot(i,t.Vector2.unitY))},n.prototype.setLocalRotation=function(t){return this._localRotation=t,this._localDirty=this._positionDirty=this._localPositionDirty=this._localRotationDirty=this._localScaleDirty=!0,this.setDirty(e.rotationDirty),this},n.prototype.setLocalRotationDegrees=function(e){return this.setLocalRotation(t.MathHelper.toRadians(e))},n.prototype.setScale=function(e){return this._scale=e,this.parent?this.localScale=t.Vector2.divide(e,this.parent._scale):this.localScale=e,this},n.prototype.setLocalScale=function(t){return this._localScale=t,this._localDirty=this._positionDirty=this._localScaleDirty=!0,this.setDirty(e.scaleDirty),this},n.prototype.roundPosition=function(){this.position=t.Vector2Ext.round(this._position)},n.prototype.updateTransform=function(){this.hierarchyDirty!=e.clean&&(null!=this.parent&&this.parent.updateTransform(),this._localDirty&&(this._localPositionDirty&&(this._translationMatrix=t.Matrix2D.createTranslation(this._localPosition.x,this._localPosition.y),this._localPositionDirty=!1),this._localRotationDirty&&(this._rotationMatrix=t.Matrix2D.createRotation(this._localRotation),this._localRotationDirty=!1),this._localScaleDirty&&(this._scaleMatrix=t.Matrix2D.createScale(this._localScale.x,this._localScale.y),this._localScaleDirty=!1),this._localTransform=this._scaleMatrix.multiply(this._rotationMatrix),this._localTransform=this._localTransform.multiply(this._translationMatrix),null==this.parent&&(this._worldTransform=this._localTransform,this._rotation=this._localRotation,this._scale=this._localScale,this._worldInverseDirty=!0),this._localDirty=!1),null!=this.parent&&(this._worldTransform=this._localTransform.multiply(this.parent._worldTransform),this._rotation=this._localRotation+this.parent._rotation,this._scale=t.Vector2.multiply(this.parent._scale,this._localScale),this._worldInverseDirty=!0),this._worldToLocalDirty=!0,this._positionDirty=!0,this.hierarchyDirty=e.clean)},n.prototype.setDirty=function(e){if(0==(this.hierarchyDirty&e)){switch(this.hierarchyDirty|=e,e){case t.DirtyType.positionDirty:this.entity.onTransformChanged(transform.Component.position);break;case t.DirtyType.rotationDirty:this.entity.onTransformChanged(transform.Component.rotation);break;case t.DirtyType.scaleDirty:this.entity.onTransformChanged(transform.Component.scale)}for(var n=0;n0?this._cache.shift():new this._type}catch(t){throw new Error(this._type+t)}},t.prototype.free=function(t){t.reset(),this._cache.push(t)},t}();t.ComponentPool=e}(es||(es={})),function(t){var e=function(){function t(){}return t.prototype.compare=function(t,e){return t.updateOrder-e.updateOrder},t}();t.IUpdatableComparer=e,t.isIUpdatable=function(t){return void 0!==t.update}}(es||(es={})),function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(t.Component);t.PooledComponent=e}(es||(es={})),function(t){var e=function(){function t(){this.updateOrder=0,this._enabled=!0}return Object.defineProperty(t.prototype,"enabled",{get:function(){return this._enabled},set:function(t){this.setEnabled(t)},enumerable:!0,configurable:!0}),t.prototype.onEnabled=function(){},t.prototype.onDisabled=function(){},t.prototype.onRemovedFromScene=function(){},t.prototype.update=function(){},t.prototype.setEnabled=function(t){return this._enabled!=t&&(this._enabled=t,this._enabled?this.onEnabled():this.onDisabled()),this},t.prototype.setUpdateOrder=function(t){return this.updateOrder!=t&&(this.updateOrder=t),this},t.prototype.compare=function(t){return this.updateOrder-t.updateOrder},t}();t.SceneComponent=e}(es||(es={})),function(t){var e=function(e){function n(){var n=e.call(this)||this;return n.shouldUseGravity=!0,n.velocity=new t.Vector2,n._mass=10,n._elasticity=.5,n._friction=.5,n._glue=.01,n._inverseMass=0,n._inverseMass=1/n._mass,n}return __extends(n,e),Object.defineProperty(n.prototype,"mass",{get:function(){return this._mass},set:function(t){this.setMass(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"elasticity",{get:function(){return this._elasticity},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"elasticiy",{set:function(t){this.setElasticity(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"friction",{get:function(){return this._friction},set:function(t){this.setFriction(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"glue",{get:function(){return this._glue},set:function(t){this.setGlue(t)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isImmovable",{get:function(){return this._mass<1e-4},enumerable:!0,configurable:!0}),n.prototype.setMass=function(e){return this._mass=t.MathHelper.clamp(e,0,Number.MAX_VALUE),this._mass>1e-4?this._inverseMass=1/this._mass:this._inverseMass=0,this},n.prototype.setElasticity=function(e){return this._elasticity=t.MathHelper.clamp01(e),this},n.prototype.setFriction=function(e){return this._friction=t.MathHelper.clamp01(e),this},n.prototype.setGlue=function(e){return this._glue=t.MathHelper.clamp(e,0,10),this},n.prototype.addImpulse=function(e){this.isImmovable||(this.velocity=t.Vector2.add(this.velocity,t.Vector2.multiply(e,new t.Vector2(1e5)).multiply(new t.Vector2(this._inverseMass*t.Time.deltaTime))))},n.prototype.onAddedToEntity=function(){this._collider=this.entity.getComponent(t.Collider),null==this._collider&&console.warn("ArcadeRigidbody 没有 Collider。ArcadeRigidbody需要一个Collider!")},n.prototype.update=function(){var e,i;if(this.isImmovable||null==this._collider)this.velocity=t.Vector2.zero;else{this.shouldUseGravity&&(this.velocity=t.Vector2.add(this.velocity,t.Vector2.multiply(t.Physics.gravity,new t.Vector2(t.Time.deltaTime)))),this.entity.transform.position=t.Vector2.add(this.entity.transform.position,t.Vector2.multiply(this.velocity,new t.Vector2(t.Time.deltaTime)));var r=new t.CollisionResult,o=t.Physics.boxcastBroadphaseExcludingSelfNonRect(this._collider,this._collider.collidesWithLayers.value);try{for(var s=__values(o),a=s.next();!a.done;a=s.next()){var c=a.value;if(!c.entity.equals(this.entity)&&this._collider.collidesWithNonMotion(c,r)){var h=c.entity.getComponent(n);if(null!=h)this.processOverlap(h,r.minimumTranslationVector),this.processCollision(h,r.minimumTranslationVector);else{this.entity.transform.position=t.Vector2.subtract(this.entity.transform.position,r.minimumTranslationVector);var u=this.velocity.clone();this.calculateResponseVelocity(u,r.minimumTranslationVector,u),this.velocity=t.Vector2.add(this.velocity,u)}}}}catch(t){e={error:t}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(e)throw e.error}}}},n.prototype.processOverlap=function(e,n){this.isImmovable?e.entity.transform.position=t.Vector2.add(e.entity.transform.position,n):e.isImmovable?this.entity.transform.position=t.Vector2.subtract(this.entity.transform.position,n):(this.entity.transform.position=t.Vector2.subtract(this.entity.transform.position,t.Vector2.multiply(n,t.Vector2Ext.halfVector())),e.entity.transform.position=t.Vector2.add(e.entity.transform.position,t.Vector2.multiply(n,t.Vector2Ext.halfVector())))},n.prototype.processCollision=function(e,n){var i=t.Vector2.subtract(this.velocity,e.velocity);this.calculateResponseVelocity(i,n,i);var r=this._inverseMass+e._inverseMass,o=this._inverseMass/r,s=e._inverseMass/r;this.velocity=t.Vector2.add(this.velocity,new t.Vector2(i.x*o,i.y*o)),e.velocity=t.Vector2.subtract(e.velocity,new t.Vector2(i.x*s,i.y*s))},n.prototype.calculateResponseVelocity=function(e,n,i){void 0===i&&(i=new t.Vector2);var r=t.Vector2.multiply(n,new t.Vector2(-1)),o=t.Vector2.normalize(r),s=t.Vector2.dot(e,o),a=new t.Vector2(o.x*s,o.y*s),c=t.Vector2.subtract(e,a);s>0&&(a=t.Vector2.zero);var h=this._friction;c.lengthSquared()>6;0!=(e&t.LONG_MASK)&&n++,this._bits=new Array(n),this._bits.fill(0)}return t.prototype.and=function(t){for(var e,n=Math.min(this._bits.length,t._bits.length),i=0;i=0;)this._bits[e]&=~t._bits[e]},t.prototype.cardinality=function(){for(var t=0,e=this._bits.length-1;e>=0;e--){var n=this._bits[e];if(0!=n)if(-1!=n){var i=((n=((n=(n>>1&0x5555555555555400)+(0x5555555555555400&n))>>2&0x3333333333333400)+(0x3333333333333400&n))>>32)+n>>>0;t+=((i=((i=(i>>4&252645135)+(252645135&i))>>8&16711935)+(16711935&i))>>16&65535)+(65535&i)}else t+=64}return t},t.prototype.clear=function(t){if(null!=t){var e=t>>6;this.ensure(e),this._bits[e]&=~(1<>6;return!(e>=this._bits.length)&&0!=(this._bits[e]&1<=0;)if(0!=(this._bits[e]&t._bits[e]))return!0;return!1},t.prototype.isEmpty=function(){for(var t=this._bits.length-1;t>=0;t--)if(this._bits[t])return!1;return!0},t.prototype.nextSetBit=function(t){for(var e=t>>6,n=1<>6;this.ensure(n),this._bits[n]|=1<=this._bits.length){var e=this._bits.length;this._bits.length=t+1,this._bits.fill(0,e,t+1)}},t.LONG_MASK=63,t}();t.BitSet=e}(es||(es={})),function(t){var e=function(){function e(t){this._components=[],this._updatableComponents=[],this._componentsToAdd=[],this._componentsToRemove=[],this._tempBufferList=[],this._entity=t}return Object.defineProperty(e.prototype,"count",{get:function(){return this._components.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"buffer",{get:function(){return this._components},enumerable:!0,configurable:!0}),e.prototype.markEntityListUnsorted=function(){this._isComponentListUnsorted=!0},e.prototype.add=function(t){this._componentsToAdd.push(t)},e.prototype.remove=function(t){var e=new linq.List(this._componentsToRemove),n=new linq.List(this._componentsToAdd);e.contains(t)&&console.warn("您正在尝试删除一个您已经删除的组件("+t+")"),n.contains(t)?n.remove(t):e.add(t)},e.prototype.removeAllComponents=function(){for(var t=0;t0){for(var n=0;n0){n=0;for(var i=this._componentsToAdd.length;n0&&(this._entitiesToRemove.toArray().forEach(function(t){e.removeFromTagList(t),new linq.List(e._entities).remove(t),t.onRemovedFromScene(),t.scene=null,e.scene.entityProcessors.onEntityRemoved(t)}),this._entitiesToRemove.clear()),this._entitiesToAdded.getCount()>0&&(this._entitiesToAdded.toArray().forEach(function(t){e._entities.push(t),t.scene=e.scene,e.addToTagList(t),e.scene.entityProcessors.onEntityAdded(t)}),this._entitiesToAdded.toArray().forEach(function(t){t.onAddedToScene()}),this._entitiesToAdded.clear(),this._isEntityListUnsorted=!0),this._isEntityListUnsorted&&(this._entities.sort(t.Entity.entityComparer.compare),this._isEntityListUnsorted=!1),this._unsortedTags.size>0&&(this._unsortedTags.forEach(function(t){return e._entityDict.get(t).sort(function(t,e){return t.compareTo(e)})}),this._unsortedTags.clear())},e.prototype.findEntity=function(t){for(var e=0;e=t)return n}for(e=1|t;ethis.maxPrimeArrayLength&&this.maxPrimeArrayLength>t?this.maxPrimeArrayLength:this.getPrime(e)},t.getHashCode=function(t){var e,n=0;if(0==(e="object"==typeof t?JSON.stringify(t):t.toString()).length)return n;for(var i=0;i=0;e=this.allSet.nextSetBit(e+1))if(!t.get(e))return!1;return!(!this.exclusionSet.isEmpty()&&this.exclusionSet.intersects(t))&&!(!this.oneSet.isEmpty()&&!this.oneSet.intersects(t))},e.prototype.all=function(){for(var e=this,n=[],i=0;i0){for(var t=0,n=this._unsortedRenderLayers.length;t=e)return t;var i=!1;"-"==t.substr(0,1)&&(i=!0,t=t.substr(1));for(var r=e-n,o=0;o1?this.reverse(t.substring(1))+t.substring(0,1):t},t.cutOff=function(t,e,n,i){void 0===i&&(i=!0),e=Math.floor(e),n=Math.floor(n);var r=t.length;e>r&&(e=r);var o,s=e,a=e+n;return i?o=t.substring(0,s)+t.substr(a,r):(a=(s=r-1-e-n)+n,o=t.substring(0,s+1)+t.substr(a+1,r)),o},t.strReplace=function(t,e){for(var n=0,i=e.length;n",">",'"',""","'","'","®","®","©","©","™","™"],t}();!function(t){var e=function(){function t(){}return t.update=function(t){var e=(t-this._lastTime)/1e3;this.totalTime+=e,this.deltaTime=e*this.timeScale,this.unscaledDeltaTime=e,this.timeSinceSceneLoad+=e,this.frameCount++,this._lastTime=t},t.sceneChanged=function(){this.timeSinceSceneLoad=0},t.checkEvery=function(t){return this.timeSinceSceneLoad/t>(this.timeSinceSceneLoad-this.deltaTime)/t},t.totalTime=0,t.unscaledDeltaTime=0,t.deltaTime=0,t.timeScale=1,t.frameCount=0,t.timeSinceSceneLoad=0,t._lastTime=0,t}();t.Time=e}(es||(es={}));var stopwatch,TimeUtils=function(){function t(){}return t.monthId=function(t){void 0===t&&(t=null);var e=(t=t||new Date).getFullYear(),n=t.getMonth()+1;return parseInt(e+(n<10?"0":"")+n)},t.dateId=function(t){void 0===t&&(t=null);var e=(t=t||new Date).getMonth()+1,n=e<10?"0":"",i=t.getDate(),r=i<10?"0":"";return parseInt(t.getFullYear()+n+e+r+i)},t.weekId=function(t,e){void 0===t&&(t=null),void 0===e&&(e=!0),t=t||new Date;var n=new Date;n.setTime(t.getTime()),n.setDate(1),n.setMonth(0);var i=n.getFullYear(),r=n.getDay();0==r&&(r=7);var o=!1;r<=4?(o=r>1,n.setDate(n.getDate()-(r-1))):n.setDate(n.getDate()+7-r+1);var s=this.diffDay(t,n,!1);if(s<0)return n.setDate(1),n.setMonth(0),n.setDate(n.getDate()-1),this.weekId(n,!1);var a=s/7,c=Math.floor(a)+1;if(53==c){n.setTime(t.getTime()),n.setDate(n.getDate()-1);var h=n.getDay();if(0==h&&(h=7),e&&(!o||h<4))return n.setFullYear(n.getFullYear()+1),n.setDate(1),n.setMonth(0),this.weekId(n,!1)}return parseInt(i+"00"+(c>9?"":"0")+c)},t.diffDay=function(t,e,n){void 0===n&&(n=!1);var i=(t.getTime()-e.getTime())/864e5;return n?Math.ceil(i):Math.floor(i)},t.getFirstDayOfWeek=function(t){var e=(t=t||new Date).getDay()||7;return new Date(t.getFullYear(),t.getMonth(),t.getDate()+1-e,0,0,0,0)},t.getFirstOfDay=function(t){return(t=t||new Date).setHours(0,0,0,0),t},t.getNextFirstOfDay=function(t){return new Date(this.getFirstOfDay(t).getTime()+864e5)},t.formatDate=function(t){var e=t.getFullYear(),n=t.getMonth()+1;n=n<10?"0"+n:n;var i=t.getDate();return e+"-"+n+"-"+(i=i<10?"0"+i:i)},t.formatDateTime=function(t){var e=t.getFullYear(),n=t.getMonth()+1;n=n<10?"0"+n:n;var i=t.getDate();i=i<10?"0"+i:i;var r=t.getHours(),o=t.getMinutes();o=o<10?"0"+o:o;var s=t.getSeconds();return e+"-"+n+"-"+i+" "+r+":"+o+":"+(s=s<10?"0"+s:s)},t.parseDate=function(t){var e=Date.parse(t);return isNaN(e)?new Date:new Date(Date.parse(t.replace(/-/g,"/")))},t.secondToTime=function(t,e,n){void 0===t&&(t=0),void 0===e&&(e=":"),void 0===n&&(n=!0);var i=Math.floor(t/3600),r=Math.floor(t%3600/60),o=Math.floor(t%3600%60),s=i.toString(),a=r.toString(),c=o.toString();return i<10&&(s="0"+s),r<10&&(a="0"+a),o<10&&(c="0"+c),n?s+e+a+e+c:a+e+c},t.timeToMillisecond=function(t,e){void 0===e&&(e=":");for(var n=t.split(e),i=0,r=n.length,o=0;o=1?(e.value=1,n=this._points.length-4):(e.value=t.MathHelper.clamp01(e.value)*this._curveCount,n=~~e,e.value-=n,n*=3),n},e.prototype.setControlPoint=function(e,n){if(e%3==0){var i=t.Vector2.subtract(n,this._points[e]);e>0&&this._points[e-1].add(i),e+1n?n:t},e.pointOnCirlce=function(n,i,r){var o=e.toRadians(r);return new t.Vector2(Math.cos(o)*o+n.x,Math.sin(o)*o+n.y)},e.isEven=function(t){return t%2==0},e.clamp01=function(t){return t<0?0:t>1?1:t},e.angleBetweenVectors=function(t,e){return Math.atan2(e.y-t.y,e.x-t.x)},e.angleToVector=function(e,n){return new t.Vector2(Math.cos(e)*n,Math.sin(e)*n)},e.incrementWithWrap=function(t,e){return++t==e?0:t},e.roundToNearest=function(t,e){return Math.round(t/e)*e},e.withinEpsilon=function(t,e){return void 0===e&&(e=this.Epsilon),Math.abs(t)180&&(n-=360),n},e.repeat=function(t,e){return t-Math.floor(t/e)*e},e.Epsilon=1e-5,e.Rad2Deg=57.29578,e.Deg2Rad=.0174532924,e.PiOver2=Math.PI/2,e}();t.MathHelper=e}(es||(es={})),function(t){var e=function(){function t(){}return t.createOrthographicOffCenter=function(e,n,i,r,o,s,a){void 0===a&&(a=new t),a.m11=2/(n-e),a.m12=0,a.m13=0,a.m14=0,a.m21=0,a.m22=2/(r-i),a.m23=0,a.m24=0,a.m31=0,a.m32=0,a.m33=1/(o-s),a.m34=0,a.m41=(e+n)/(e-n),a.m42=(r+i)/(i-r),a.m43=o/(o-s),a.m44=1},t.multiply=function(e,n,i){void 0===i&&(i=new t);var r=e.m11*n.m11+e.m12*n.m21+e.m13*n.m31+e.m14*n.m41,o=e.m11*n.m12+e.m12*n.m22+e.m13*n.m32+e.m14*n.m42,s=e.m11*n.m13+e.m12*n.m23+e.m13*n.m33+e.m14*n.m43,a=e.m11*n.m14+e.m12*n.m24+e.m13*n.m34+e.m14*n.m44,c=e.m21*n.m11+e.m22*n.m21+e.m23*n.m31+e.m24*n.m41,h=e.m21*n.m12+e.m22*n.m22+e.m23*n.m32+e.m24*n.m42,u=e.m21*n.m13+e.m22*n.m23+e.m23*n.m33+e.m24*n.m43,l=e.m21*n.m14+e.m22*n.m24+e.m23*n.m34+e.m24*n.m44,p=e.m31*n.m11+e.m32*n.m21+e.m33*n.m31+e.m34*n.m41,f=e.m31*n.m12+e.m32*n.m22+e.m33*n.m32+e.m34*n.m42,d=e.m31*n.m13+e.m32*n.m23+e.m33*n.m33+e.m34*n.m43,m=e.m31*n.m14+e.m32*n.m24+e.m33*n.m34+e.m34*n.m44,y=e.m41*n.m11+e.m42*n.m21+e.m43*n.m31+e.m44*n.m41,g=e.m41*n.m12+e.m42*n.m22+e.m43*n.m32+e.m44*n.m42,_=e.m41*n.m13+e.m42*n.m23+e.m43*n.m33+e.m44*n.m43,v=e.m41*n.m14+e.m42*n.m24+e.m43*n.m34+e.m44*n.m44;i.m11=r,i.m12=o,i.m13=s,i.m14=a,i.m21=c,i.m22=h,i.m23=u,i.m24=l,i.m31=p,i.m32=f,i.m33=d,i.m34=m,i.m41=y,i.m42=g,i.m43=_,i.m44=v},t}();t.Matrix=e}(es||(es={})),function(t){var e=function(){function e(t,e,n,i,r,o){this.m11=0,this.m12=0,this.m21=0,this.m22=0,this.m31=0,this.m32=0,this.m11=t,this.m12=e,this.m21=n,this.m22=i,this.m31=r,this.m32=o}return Object.defineProperty(e,"identity",{get:function(){return new e(1,0,0,1,0,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"translation",{get:function(){return new t.Vector2(this.m31,this.m32)},set:function(t){this.m31=t.x,this.m32=t.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotation",{get:function(){return Math.atan2(this.m21,this.m11)},set:function(t){var e=Math.cos(t),n=Math.sin(t);this.m11=e,this.m12=n,this.m21=-n,this.m22=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotationDegrees",{get:function(){return t.MathHelper.toDegrees(this.rotation)},set:function(e){this.rotation=t.MathHelper.toRadians(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scale",{get:function(){return new t.Vector2(this.m11,this.m22)},set:function(t){this.m11=t.x,this.m22=t.y},enumerable:!0,configurable:!0}),e.createRotation=function(t){var e=this.identity,n=Math.cos(t),i=Math.sin(t);return e.m11=n,e.m12=i,e.m21=-i,e.m22=n,e},e.createScale=function(t,e){var n=this.identity;return n.m11=t,n.m12=0,n.m21=0,n.m22=e,n.m31=0,n.m32=0,n},e.createTranslation=function(t,e){var n=this.identity;return n.m11=1,n.m12=0,n.m21=0,n.m22=1,n.m31=t,n.m32=e,n},e.invert=function(t){var e=1/t.determinant(),n=this.identity;return n.m11=t.m22*e,n.m12=-t.m12*e,n.m21=-t.m21*e,n.m22=t.m11*e,n.m31=(t.m32*t.m21-t.m31*t.m22)*e,n.m32=-(t.m32*t.m11-t.m31*t.m12)*e,n},e.prototype.add=function(t){return this.m11+=t.m11,this.m12+=t.m12,this.m21+=t.m21,this.m22+=t.m22,this.m31+=t.m31,this.m32+=t.m32,this},e.prototype.substract=function(t){return this.m11-=t.m11,this.m12-=t.m12,this.m21-=t.m21,this.m22-=t.m22,this.m31-=t.m31,this.m32-=t.m32,this},e.prototype.divide=function(t){return this.m11/=t.m11,this.m12/=t.m12,this.m21/=t.m21,this.m22/=t.m22,this.m31/=t.m31,this.m32/=t.m32,this},e.prototype.multiply=function(t){var e=this.m11*t.m11+this.m12*t.m21,n=this.m11*t.m12+this.m12*t.m22,i=this.m21*t.m11+this.m22*t.m21,r=this.m21*t.m12+this.m22*t.m22,o=this.m31*t.m11+this.m32*t.m21+t.m31,s=this.m31*t.m12+this.m32*t.m22+t.m32;return this.m11=e,this.m12=n,this.m21=i,this.m22=r,this.m31=o,this.m32=s,this},e.prototype.determinant=function(){return this.m11*this.m22-this.m12*this.m21},e.lerp=function(t,e,n){return t.m11=t.m11+(e.m11-t.m11)*n,t.m12=t.m12+(e.m12-t.m12)*n,t.m21=t.m21+(e.m21-t.m21)*n,t.m22=t.m22+(e.m22-t.m22)*n,t.m31=t.m31+(e.m31-t.m31)*n,t.m32=t.m32+(e.m32-t.m32)*n,t},e.transpose=function(t){var e=this.identity;return e.m11=t.m11,e.m12=t.m21,e.m21=t.m12,e.m22=t.m22,e.m31=0,e.m32=0,e},e.prototype.mutiplyTranslation=function(n,i){var r=e.createTranslation(n,i);return t.MatrixHelper.mutiply(this,r)},e.prototype.equals=function(t){return this==t},e.toMatrix=function(e){var n=new t.Matrix;return n.m11=e.m11,n.m12=e.m12,n.m13=0,n.m14=0,n.m21=e.m21,n.m22=e.m22,n.m23=0,n.m24=0,n.m31=0,n.m32=0,n.m33=1,n.m34=0,n.m41=e.m31,n.m42=e.m32,n.m43=0,n.m44=1,n},e.prototype.toString=function(){return"{m11:"+this.m11+" m12:"+this.m12+" m21:"+this.m21+" m22:"+this.m22+" m31:"+this.m31+" m32:"+this.m32+"}"},e}();t.Matrix2D=e}(es||(es={})),function(t){var e=function(){function e(){}return e.add=function(e,n){var i=t.Matrix2D.identity;return i.m11=e.m11+n.m11,i.m12=e.m12+n.m12,i.m21=e.m21+n.m21,i.m22=e.m22+n.m22,i.m31=e.m31+n.m31,i.m32=e.m32+n.m32,i},e.divide=function(e,n){var i=t.Matrix2D.identity;return i.m11=e.m11/n.m11,i.m12=e.m12/n.m12,i.m21=e.m21/n.m21,i.m22=e.m22/n.m22,i.m31=e.m31/n.m31,i.m32=e.m32/n.m32,i},e.mutiply=function(e,n){var i=t.Matrix2D.identity;if(n instanceof t.Matrix2D){var r=e.m11*n.m11+e.m12*n.m21,o=n.m11*n.m12+e.m12*n.m22,s=e.m21*n.m11+e.m22*n.m21,a=e.m21*n.m12+e.m22*n.m22,c=e.m31*n.m11+e.m32*n.m21+n.m31,h=e.m31*n.m12+e.m32*n.m22+n.m32;i.m11=r,i.m12=o,i.m21=s,i.m22=a,i.m31=c,i.m32=h}else"number"==typeof n&&(i.m11=e.m11*n,i.m12=e.m12*n,i.m21=e.m21*n,i.m22=e.m22*n,i.m31=e.m31*n,i.m32=e.m32*n);return i},e.subtract=function(e,n){var i=t.Matrix2D.identity;return i.m11=e.m11-n.m11,i.m12=e.m12-n.m12,i.m21=e.m21-n.m21,i.m22=e.m22-n.m22,i.m31=e.m31-n.m31,i.m32=e.m32-n.m32,i},e}();t.MatrixHelper=e}(es||(es={})),function(t){var e=function(){function e(t,e,n,i){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),this.x=0,this.y=0,this.width=0,this.height=0,this.x=t,this.y=e,this.width=n,this.height=i}return Object.defineProperty(e,"empty",{get:function(){return new e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"maxRect",{get:function(){return new e(Number.MIN_VALUE/2,Number.MIN_VALUE/2,Number.MAX_VALUE,Number.MAX_VALUE)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"max",{get:function(){return new t.Vector2(this.right,this.bottom)},enumerable:!0,configurable:!0}),e.prototype.isEmpty=function(){return 0==this.width&&0==this.height&&0==this.x&&0==this.y},Object.defineProperty(e.prototype,"location",{get:function(){return new t.Vector2(this.x,this.y)},set:function(t){this.x=t.x,this.y=t.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return new t.Vector2(this.width,this.height)},set:function(t){this.width=t.x,this.height=t.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"center",{get:function(){return new t.Vector2(this.x+this.width/2,this.y+this.height/2)},enumerable:!0,configurable:!0}),e.fromMinMax=function(t,n,i,r){return new e(t,n,i-t,r-n)},e.rectEncompassingPoints=function(t){for(var e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY,o=0;oi&&(i=s.x),s.yr&&(r=s.y)}return this.fromMinMax(e,n,i,r)},e.prototype.getSide=function(e){switch(e){case t.Edge.top:return this.top;case t.Edge.bottom:return this.bottom;case t.Edge.left:return this.left;case t.Edge.right:return this.right;default:throw new Error("Argument Out Of Range")}},e.prototype.contains=function(t,e){return this.x<=t&&tthis.x+this.width)return!1}else{var i=1/t.direction.x,r=(this.x-t.start.x)*i,o=(this.x+this.width-t.start.x)*i;if(r>o){var s=r;r=o,o=s}if(e.value=Math.max(r,e.value),n=Math.min(o,n),e.value>n)return!1}if(Math.abs(t.direction.y)<1e-6){if(t.start.ythis.y+this.height)return!1}else{var a=1/t.direction.y,c=(this.y-t.start.y)*a,h=(this.y+this.height-t.start.y)*a;if(c>h){var u=c;c=h,h=u}if(e.value=Math.max(c,e.value),n=Math.max(h,n),e.value>n)return!1}return!0},e.prototype.containsRect=function(t){return this.x<=t.x&&t.x0?this.x:this.x+t,i.y=n>0?this.y:this.y+n,i.width=t>0?t+this.width:this.width-t,i.height=n>0?n+this.height:this.height-n,i},e.prototype.collisionCheck=function(t,e,n){e.value=n.value=0;var i=t.x-(this.x+this.width),r=t.x+t.width-this.x,o=t.y-(this.y+this.height),s=t.y+t.height-this.y;return!(i>0||r<0||o>0||s<0)&&(e.value=Math.abs(i)=l||Math.abs(u)>=p)return t.Vector2.zero;var f=h>0?l-h:-l-h,d=u>0?p-u:-p-u;return new t.Vector2(f,d)},e.prototype.equals=function(t){return this===t},e.prototype.getHashCode=function(){return this.x^this.y^this.width^this.height},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e}();t.Rectangle=e}(es||(es={})),function(t){var e=function(){function t(){this.remainder=0}return t.prototype.update=function(t){this.remainder+=t;var e=Math.floor(Math.trunc(this.remainder));return this.remainder-=e,t=e},t.prototype.reset=function(){this.remainder=0},t}();t.SubpixelFloat=e}(es||(es={})),function(t){var e=function(){function e(){this._x=new t.SubpixelFloat,this._y=new t.SubpixelFloat}return e.prototype.update=function(t){t.x=this._x.update(t.x),t.y=this._y.update(t.y)},e.prototype.reset=function(){this._x.reset(),this._y.reset()},e}();t.SubpixelVector2=e}(es||(es={})),function(t){var e=function(){function e(e){this._activeTriggerIntersections=new t.HashSet,this._previousTriggerIntersections=new t.HashSet,this._tempTriggerList=[],this._entity=e}return e.prototype.update=function(){for(var e=this._entity.getComponents(t.Collider),n=0;n1)return!1;var u=(c.x*o.y-c.y*o.x)/a;return!(u<0||u>1)},n.lineToLineIntersection=function(e,n,i,r,o){void 0===o&&(o=new t.Vector2),o.x=0,o.y=0;var s=t.Vector2.subtract(n,e),a=t.Vector2.subtract(r,i),c=s.x*a.y-s.y*a.x;if(0==c)return!1;var h=t.Vector2.subtract(i,e),u=(h.x*a.y-h.y*a.x)/c;if(u<0||u>1)return!1;var l=(h.x*s.y-h.y*s.x)/c;if(l<0||l>1)return!1;var p=t.Vector2.add(e,new t.Vector2(u*s.x,u*s.y));return o.x=p.x,o.y=p.y,!0},n.closestPointOnLine=function(e,n,i){var r=t.Vector2.subtract(n,e),o=t.Vector2.subtract(i,e),s=t.Vector2.dot(o,r)/t.Vector2.dot(r,r);return s=t.MathHelper.clamp(s,0,1),t.Vector2.add(e,new t.Vector2(r.x*s,r.y*s))},n.circleToCircle=function(e,n,i,r){return t.Vector2.distanceSquared(e,i)<(n+r)*(n+r)},n.circleToLine=function(e,n,i,r){return t.Vector2.distanceSquared(e,this.closestPointOnLine(i,r,e))=t&&r.y>=e&&r.x=t+i&&(s|=e.right),o.y=n+r&&(s|=e.bottom),s},n}();t.Collisions=n}(es||(es={})),function(t){var e=function(){function e(e,n,i,r,o){this.fraction=0,this.distance=0,this.point=t.Vector2.zero,this.normal=t.Vector2.zero,this.collider=e,this.fraction=n,this.distance=i,this.point=r,this.centroid=t.Vector2.zero}return e.prototype.setValues=function(t,e,n,i){this.collider=t,this.fraction=e,this.distance=n,this.point=i},e.prototype.setValuesNonCollider=function(t,e,n,i){this.fraction=t,this.distance=e,this.point=n,this.normal=i},e.prototype.reset=function(){this.collider=null,this.fraction=this.distance=0},e.prototype.toString=function(){return"[RaycastHit] fraction: "+this.fraction+", distance: "+this.distance+", normal: "+this.normal+", centroid: "+this.centroid+", point: "+this.point},e}();t.RaycastHit=e}(es||(es={})),function(t){var e=function(){function e(){}return e.reset=function(){this._spatialHash=new t.SpatialHash(this.spatialHashCellSize),this._hitArray[0].reset(),this._colliderArray[0]=null},e.clear=function(){this._spatialHash.clear()},e.overlapCircle=function(t,n,i){return void 0===i&&(i=e.allLayers),this._colliderArray[0]=null,this._spatialHash.overlapCircle(t,n,this._colliderArray,i),this._colliderArray[0]},e.overlapCircleAll=function(t,e,n,i){if(void 0===i&&(i=-1),0!=n.length)return this._spatialHash.overlapCircle(t,e,n,i);console.warn("传入了一个空的结果数组。不会返回任何结果")},e.boxcastBroadphase=function(t,e){return void 0===e&&(e=this.allLayers),this._spatialHash.aabbBroadphase(t,null,e)},e.boxcastBroadphaseExcludingSelf=function(t,e,n){return void 0===n&&(n=this.allLayers),this._spatialHash.aabbBroadphase(e,t,n)},e.boxcastBroadphaseExcludingSelfNonRect=function(t,e){void 0===e&&(e=this.allLayers);var n=t.bounds.clone();return this._spatialHash.aabbBroadphase(n,t,e)},e.boxcastBroadphaseExcludingSelfDelta=function(t,n,i,r){void 0===r&&(r=e.allLayers);var o=t.bounds.clone().getSweptBroadphaseBounds(n,i);return this._spatialHash.aabbBroadphase(o,t,r)},e.addCollider=function(t){e._spatialHash.register(t)},e.removeCollider=function(t){e._spatialHash.remove(t)},e.updateCollider=function(t){this._spatialHash.remove(t),this._spatialHash.register(t)},e.linecast=function(t,n,i){return void 0===i&&(i=e.allLayers),this._hitArray[0].reset(),this.linecastAll(t,n,this._hitArray,i),this._hitArray[0]},e.linecastAll=function(t,n,i,r){return void 0===r&&(r=e.allLayers),0==i.length?(console.warn("传入了一个空的hits数组。没有点击会被返回"),0):this._spatialHash.linecast(t,n,i,r)},e.overlapRectangle=function(t,n){return void 0===n&&(n=e.allLayers),this._colliderArray[0]=null,this._spatialHash.overlapRectangle(t,this._colliderArray,n),this._colliderArray[0]},e.overlapRectangleAll=function(t,n,i){return void 0===i&&(i=e.allLayers),0==n.length?(console.warn("传入了一个空的结果数组。不会返回任何结果"),0):this._spatialHash.overlapRectangle(t,n,i)},e.gravity=new t.Vector2(0,300),e.spatialHashCellSize=100,e.allLayers=-1,e.raycastsHitTriggers=!1,e.raycastsStartInColliders=!1,e._hitArray=[new t.RaycastHit],e._colliderArray=[null],e}();t.Physics=e}(es||(es={})),function(t){var e=function(){return function(e,n){this.start=e,this.end=n,this.direction=t.Vector2.subtract(this.end,this.start)}}();t.Ray2D=e}(es||(es={})),function(t){var e=function(){function e(e){void 0===e&&(e=100),this.gridBounds=new t.Rectangle,this._overlapTestBox=new t.Box(0,0),this._overlapTestCircle=new t.Circle(0),this._cellDict=new n,this._tempHashSet=new Set,this._cellSize=e,this._inverseCellSize=1/this._cellSize,this._raycastParser=new i}return e.prototype.register=function(e){var n=e.bounds.clone();e.registeredPhysicsBounds=n;var i=this.cellCoords(n.x,n.y),r=this.cellCoords(n.right,n.bottom);this.gridBounds.contains(i.x,i.y)||(this.gridBounds=t.RectangleExt.union(this.gridBounds,i)),this.gridBounds.contains(r.x,r.y)||(this.gridBounds=t.RectangleExt.union(this.gridBounds,r));for(var o=i.x;o<=r.x;o++)for(var s=i.y;s<=r.y;s++){this.cellAtPosition(o,s,!0).push(e)}},e.prototype.remove=function(t){for(var e=t.registeredPhysicsBounds.clone(),n=this.cellCoords(e.x,e.y),i=this.cellCoords(e.right,e.bottom),r=n.x;r<=i.x;r++)for(var o=n.y;o<=i.y;o++){var s=this.cellAtPosition(r,o);s?new linq.List(s).remove(t):console.log("从不存在碰撞器的单元格中移除碰撞器: ["+t+"]")}},e.prototype.removeWithBruteForce=function(t){this._cellDict.remove(t)},e.prototype.clear=function(){this._cellDict.clear()},e.prototype.aabbBroadphase=function(e,n,i){this._tempHashSet.clear();for(var r=this.cellCoords(e.x,e.y),o=this.cellCoords(e.right,e.bottom),s=r.x;s<=o.x;s++)for(var a=r.y;a<=o.y;a++){var c=this.cellAtPosition(s,a);if(null!=c)for(var h=0;h>>0},t.prototype.clear=function(){this._store.clear()},t}();t.NumberDictionary=n;var i=function(){function e(){this._tempHit=new t.RaycastHit,this._checkedColliders=[],this._cellHits=[]}return e.prototype.start=function(t,e,n){this._ray=t,this._hits=e,this._layerMask=n,this.hitCounter=0},e.prototype.checkRayIntersection=function(n,i,r){for(var o=new t.Ref(0),s=0;s=this.points.length?this.points[0]:this.points[i+1];var o=t.Vector2Ext.perpendicular(r,e);t.Vector2Ext.normalize(o),this._edgeNormals[i]=o}},n.buildSymmetricalPolygon=function(e,n){for(var i=new Array(e),r=0;rr&&(r=s,i=o)}return e[i]},n.getClosestPointOnPolygonToPoint=function(e,n,i,r){i.value=Number.MAX_VALUE,r.x=0,r.y=0;for(var o=t.Vector2.zero,s=0,a=0;at.y!=this.points[i].y>t.y&&t.x<(this.points[i].x-this.points[n].x)*(t.y-this.points[n].y)/(this.points[i].y-this.points[n].y)+this.points[n].x&&(e=!e);return e},n.prototype.pointCollidesWithShape=function(e,n){return t.ShapeCollisions.pointToPoly(e,this,n)},n}(t.Shape);t.Polygon=e}(es||(es={})),function(t){var e=function(e){function n(t,i){var r=e.call(this,n.buildBox(t,i),!0)||this;return r.width=t,r.height=i,r}return __extends(n,e),n.buildBox=function(e,n){var i=e/2,r=n/2,o=new Array(4);return o[0]=new t.Vector2(-i,-r),o[1]=new t.Vector2(i,-r),o[2]=new t.Vector2(i,r),o[3]=new t.Vector2(-i,r),o},n.prototype.updateBox=function(e,n){this.width=e,this.height=n;var i=e/2,r=n/2;this.points[0]=new t.Vector2(-i,-r),this.points[1]=new t.Vector2(i,-r),this.points[2]=new t.Vector2(i,r),this.points[3]=new t.Vector2(-i,r);for(var o=0;o1)return!1;var a,c=t.Vector2.add(s.start,t.Vector2.multiply(s.direction,new t.Vector2(r.value))),h=0;c.xn.bounds.right&&(h|=1),c.yn.bounds.bottom&&(h|=2);var u=a+h;return 3==u&&console.log("m == 3. corner "+t.Time.frameCount),!0},e.corner=function(e,n){var i=new t.Vector2;return i.x=0==(1&n)?e.right:e.left,i.y=0==(1&n)?e.bottom:e.top,i},e.testCircleBox=function(e,n,i){i=n.bounds.getClosestPointOnRectangleToPoint(e.position);var r=t.Vector2.subtract(i,e.position);return t.Vector2.dot(r,r)<=e.radius*e.radius},e}();t.RealtimeCollisions=e}(es||(es={})),function(t){var e=function(){function e(){}return e.polygonToPolygon=function(e,n,i){for(var r,o=!0,s=e.edgeNormals.slice(),a=n.edgeNormals.slice(),c=Number.POSITIVE_INFINITY,h=new t.Vector2,u=t.Vector2.subtract(e.position,n.position),l=0;l0&&(o=!1),!o)return!1;(y=Math.abs(y))r.value&&(r.value=o)},e.circleToPolygon=function(e,n,i){void 0===i&&(i=new t.CollisionResult);var r,o=t.Vector2.subtract(e.position,n.position),s=new t.Ref(0),a=t.Polygon.getClosestPointOnPolygonToPoint(n.points,o,s,i.normal),c=n.containsPoint(e.position);if(s.value>e.radius*e.radius&&!c)return!1;if(c)r=t.Vector2.multiply(i.normal,new t.Vector2(Math.sqrt(s.value)-e.radius));else if(0==s.value)r=new t.Vector2(i.normal.x*e.radius,i.normal.y*e.radius);else{var h=Math.sqrt(s.value);r=t.Vector2.subtract(new t.Vector2(-1),t.Vector2.subtract(o,a)).multiply(new t.Vector2((e.radius-h)/h))}return i.minimumTranslationVector=r,i.point=t.Vector2.add(a,n.position),!0},e.circleToBox=function(e,n,i){void 0===i&&(i=new t.CollisionResult);var r=n.bounds.getClosestPointOnRectangleBorderToPoint(e.position,i.normal);if(n.containsPoint(e.position)){i.point=r.clone();var o=t.Vector2.add(r,t.Vector2.multiply(i.normal,new t.Vector2(e.radius)));return i.minimumTranslationVector=t.Vector2.subtract(e.position,o),!0}var s=t.Vector2.distanceSquared(r,e.position);if(0==s)i.minimumTranslationVector=t.Vector2.multiply(i.normal,new t.Vector2(e.radius));else if(s<=e.radius*e.radius){i.normal=t.Vector2.subtract(e.position,r);var a=i.normal.length()-e.radius;return i.point=r,t.Vector2Ext.normalize(i.normal),i.minimumTranslationVector=t.Vector2.multiply(new t.Vector2(a),i.normal),!0}return!1},e.pointToCircle=function(e,n,i){var r=t.Vector2.distanceSquared(e,n.position),o=1+n.radius;if(r1)return!1;var l=(h.x*s.y-h.y*s.x)/c;return!(l<0||l>1)&&(t.Vector2.add(e,t.Vector2.multiply(new t.Vector2(u),s)),!0)},e.lineToCircle=function(e,n,i,r){var o=t.Vector2.distance(e,n),s=t.Vector2.divide(t.Vector2.subtract(n,e),new t.Vector2(o)),a=t.Vector2.subtract(e,i.position),c=t.Vector2.dot(a,s),h=t.Vector2.dot(a,a)-i.radius*i.radius;if(h>0&&c>0)return!1;var u=c*c-h;return!(u<0)&&(r.fraction=-c-Math.sqrt(u),r.fraction<0&&(r.fraction=0),r.point=t.Vector2.add(e,t.Vector2.multiply(new t.Vector2(r.fraction),s)),r.distance=t.Vector2.distance(e,r.point),r.normal=t.Vector2.normalize(t.Vector2.subtract(r.point,i.position)),r.fraction=r.distance/o,!0)},e.boxToBoxCast=function(e,n,i,r){var o=this.minkowskiDifference(e,n);if(o.contains(0,0)){var s=o.getClosestPointOnBoundsToOrigin();return!s.equals(t.Vector2.zero)&&(r.normal=new t.Vector2(-s.x),r.normal.normalize(),r.distance=0,r.fraction=0,!0)}var a=new t.Ray2D(t.Vector2.zero,new t.Vector2(-i.x)),c=new t.Ref(0);return!!(o.rayIntersects(a,c)&&c.value<=1)&&(r.fraction=c.value,r.distance=i.length()*c.value,r.normal=new t.Vector2(-i.x,-i.y),r.normal.normalize(),r.centroid=t.Vector2.add(e.bounds.center,t.Vector2.multiply(i,new t.Vector2(c.value))),!0)},e}();t.ShapeCollisions=e}(es||(es={})),function(t){!function(t){t[t.top=0]="top",t[t.bottom=1]="bottom",t[t.left=2]="left",t[t.right=3]="right"}(t.Edge||(t.Edge={}))}(es||(es={})),function(t){var e=function(){function t(){}return t.repeat=function(t,e){for(var n=[];e--;)n.push(t);return n},t}();t.Enumerable=e}(es||(es={})),function(t){var e=function(){function t(){}return t.default=function(){return new t},t.prototype.equals=function(t,e){return"function"==typeof t.equals?t.equals(e):t===e},t.prototype.getHashCode=function(t){var e=this;if("number"==typeof t)return this._getHashCodeForNumber(t);if("string"==typeof t)return this._getHashCodeForString(t);var n=385229220;return this.forOwn(t,function(t){"number"==typeof t?n+=e._getHashCodeForNumber(t):"string"==typeof t?n+=e._getHashCodeForString(t):"object"==typeof t&&e.forOwn(t,function(){n+=e.getHashCode(t)})}),n},t.prototype._getHashCodeForNumber=function(t){return t},t.prototype._getHashCodeForString=function(t){for(var e=385229220,n=0;n>7,n+=n<<3,n^=n>>17,n+=n<<5},t}();t.Hash=e}(es||(es={})),function(t){var e=function(){return function(t){this.value=t}}();t.Ref=e}(es||(es={})),function(t){var e=function(){function e(){}return Object.defineProperty(e,"size",{get:function(){return new t.Vector2(this.width,this.height)},enumerable:!0,configurable:!0}),Object.defineProperty(e,"center",{get:function(){return new t.Vector2(this.width/2,this.height/2)},enumerable:!0,configurable:!0}),e}();t.Screen=e}(es||(es={})),function(t){var e=function(){function t(){}return t.prototype.update=function(t){this.remainder+=t;var e=Math.trunc(this.remainder);return this.remainder-=e,e},t.prototype.reset=function(){this.remainder=0},t}();t.SubpixelNumber=e}(es||(es={})),function(t){var e=function(){function e(){this.triangleIndices=[],this._triPrev=new Array(12),this._triNext=new Array(12)}return e.testPointTriangle=function(e,n,i,r){return!(t.Vector2Ext.cross(t.Vector2.subtract(e,n),t.Vector2.subtract(i,n))<0)&&(!(t.Vector2Ext.cross(t.Vector2.subtract(e,i),t.Vector2.subtract(r,i))<0)&&!(t.Vector2Ext.cross(t.Vector2.subtract(e,r),t.Vector2.subtract(n,r))<0))},e.prototype.triangulate=function(n,i){void 0===i&&(i=!0);var r=n.length;this.initialize(r);for(var o=0,s=0;r>3&&o<500;){o++;var a=!0,c=n[this._triPrev[s]],h=n[s],u=n[this._triNext[s]];if(t.Vector2Ext.isTriangleCCW(c,h,u)){var l=this._triNext[this._triNext[s]];do{if(e.testPointTriangle(n[l],c,h,u)){a=!1;break}l=this._triNext[l]}while(l!=this._triPrev[s])}else a=!1;a?(this.triangleIndices.push(this._triPrev[s]),this.triangleIndices.push(s),this.triangleIndices.push(this._triNext[s]),this._triNext[this._triPrev[s]]=this._triNext[s],this._triPrev[this._triNext[s]]=this._triPrev[s],r--,s=this._triPrev[s]):s=this._triNext[s]}this.triangleIndices.push(this._triPrev[s]),this.triangleIndices.push(s),this.triangleIndices.push(this._triNext[s]),i||this.triangleIndices.reverse()},e.prototype.initialize=function(t){this.triangleIndices.length=0,this._triNext.lengththis._buckets.length){this._buckets=new Array(t.HashHelpers.expandPrime(this._collisions)),this._collisions=0;for(var l=0;l=e?t%e:t},e}();t.FasterDictionary=e;var n=function(){return function(t,e,n){void 0===n&&(n=-1),this.key=t,this.hashcode=e,this.previous=n,this.next=-1}}();t.FastNode=n}(es||(es={})),function(t){var e=function(){return function(t,e){this.element=t,this.next=e}}();function n(t,e){return t===e}t.Node=e,t.defaultEquals=n;var i=function(){function t(t){void 0===t&&(t=n),this.count=0,this.next=void 0,this.equalsFn=t,this.head=null}return t.prototype.push=function(t){var n,i=new e(t);if(null==this.head)this.head=i;else{for(n=this.head;null!=n.next;)n=n.next;n.next=i}this.count++},t.prototype.removeAt=function(t){if(t>=0&&t=0&&t<=this.count){for(var e=this.head,n=0;n=0&&n<=this.count){var i=new e(t);if(0===n)i.next=this.head,this.head=i;else{var r=this.getElementAt(n-1);i.next=r.next,r.next=i}return this.count++,!0}return!1},t.prototype.indexOf=function(t){for(var e=this.head,n=0;n0)for(var e=0;ethis._objectQueue.length;)this._objectQueue.shift()},t.clearCache=function(){this._objectQueue.length=0},t.obtain=function(){return this._objectQueue.length>0?this._objectQueue.shift():[]},t.free=function(t){this._objectQueue.unshift(t),t.length=0},t._objectQueue=[],t}();t.ListPool=e}(es||(es={})),function(t){var e=function(){function e(t,e){this.first=t,this.second=e}return e.prototype.clear=function(){this.first=this.second=null},e.prototype.equals=function(t){return this.first==t.first&&this.second==t.second},e.prototype.getHashCode=function(){return 37*t.EqualityComparer.default().getHashCode(this.first)+t.EqualityComparer.default().getHashCode(this.second)},e}();t.Pair=e}(es||(es={})),function(t){var e=function(){function e(){}return e.warmCache=function(t,e){if((e-=this._objectQueue.length)>0)for(var n=0;nthis._objectQueue.length;)this._objectQueue.shift()},e.clearCache=function(){this._objectQueue.length=0},e.obtain=function(t){return this._objectQueue.length>0?this._objectQueue.shift():new t},e.free=function(e){this._objectQueue.unshift(e),t.isIPoolable(e)&&e.reset()},e._objectQueue=[],e}();t.Pool=e,t.isIPoolable=function(t){return void 0!==t.reset}}(es||(es={})),function(t){var e=function(t){function e(e){return t.call(this,e)||this}return __extends(e,t),e.prototype.getHashCode=function(t){return t.getHashCode()},e.prototype.areEqual=function(t,e){return t.equals(e)},e}(function(){function t(t){var e=this;this.clear(),t&&t.forEach(function(t){e.add(t)})}return t.prototype.add=function(t){var e=this,n=this.getHashCode(t),i=this.buckets[n];if(void 0===i){var r=new Array;return r.push(t),this.buckets[n]=r,this.count=this.count+1,!0}return!i.some(function(n){return e.areEqual(n,t)})&&(i.push(t),this.count=this.count+1,!0)},t.prototype.remove=function(t){var e=this,n=this.getHashCode(t),i=this.buckets[n];if(void 0===i)return!1;var r=!1,o=new Array;return i.forEach(function(n){e.areEqual(n,t)?r=!0:o.push(t)}),this.buckets[n]=o,r&&(this.count=this.count-1),r},t.prototype.contains=function(t){return this.bucketsContains(this.buckets,t)},t.prototype.getCount=function(){return this.count},t.prototype.clear=function(){this.buckets=new Array,this.count=0},t.prototype.toArray=function(){var t=new Array;return this.buckets.forEach(function(e){e.forEach(function(e){t.push(e)})}),t},t.prototype.exceptWith=function(t){var e=this;t&&t.forEach(function(t){e.remove(t)})},t.prototype.intersectWith=function(t){var e=this;if(t){var n=this.buildInternalBuckets(t);this.toArray().forEach(function(t){e.bucketsContains(n.Buckets,t)||e.remove(t)})}else this.clear()},t.prototype.unionWith=function(t){var e=this;t.forEach(function(t){e.add(t)})},t.prototype.isSubsetOf=function(t){var e=this,n=this.buildInternalBuckets(t);return this.toArray().every(function(t){return e.bucketsContains(n.Buckets,t)})},t.prototype.isSupersetOf=function(t){var e=this;return t.every(function(t){return e.contains(t)})},t.prototype.overlaps=function(t){var e=this;return t.some(function(t){return e.contains(t)})},t.prototype.setEquals=function(t){var e=this;return this.buildInternalBuckets(t).Count===this.count&&t.every(function(t){return e.contains(t)})},t.prototype.buildInternalBuckets=function(t){var e=this,n=new Array,i=0;return t.forEach(function(t){var r=e.getHashCode(t),o=n[r];if(void 0===o){var s=new Array;s.push(t),n[r]=s,i+=1}else o.some(function(n){return e.areEqual(n,t)})||(o.push(t),i+=1)}),{Buckets:n,Count:i}},t.prototype.bucketsContains=function(t,e){var n=this,i=t[this.getHashCode(e)];return void 0!==i&&i.some(function(t){return n.areEqual(t,e)})},t}());t.HashSet=e}(es||(es={})),function(t){var e=function(){function t(){}return t.waitForSeconds=function(t){return n.waiter.wait(t)},t}();t.Coroutine=e;var n=function(){function t(){this.waitTime=0}return t.prototype.wait=function(e){return t.waiter.waitTime=e,t.waiter},t.waiter=new t,t}();t.WaitForSeconds=n}(es||(es={})),function(t){var e=function(){function t(){this.waitTimer=0,this.useUnscaledDeltaTime=!1}return t.prototype.stop=function(){this.isDone=!0},t.prototype.setUseUnscaledDeltaTime=function(t){return this.useUnscaledDeltaTime=t,this},t.prototype.prepareForUse=function(){this.isDone=!1},t.prototype.reset=function(){this.isDone=!0,this.waitTimer=0,this.waitForCoroutine=null,this.enumerator=null,this.useUnscaledDeltaTime=!1},t}();t.CoroutineImpl=e;var n=function(n){function i(){var t=null!==n&&n.apply(this,arguments)||this;return t._unblockedCoroutines=[],t._shouldRunNextFrame=[],t}return __extends(i,n),i.prototype.startCoroutine=function(n){var i=t.Pool.obtain(e);return i.prepareForUse(),i.enumerator=n,this.tickCoroutine(i)?(this._isInUpdate?this._shouldRunNextFrame.push(i):this._unblockedCoroutines.push(i),i):null},i.prototype.update=function(){this._isInUpdate=!0;for(var e=0;e0?(n.waitTimer-=n.useUnscaledDeltaTime?t.Time.unscaledDeltaTime:t.Time.deltaTime,this._shouldRunNextFrame.push(n)):this.tickCoroutine(n)&&this._shouldRunNextFrame.push(n)}}var i=new linq.List(this._unblockedCoroutines);i.clear(),i.addRange(this._shouldRunNextFrame),this._shouldRunNextFrame.length=0,this._isInUpdate=!1},i.prototype.tickCoroutine=function(n){var i=n.enumerator.next();return i.done||n.isDone?(t.Pool.free(n),!1):null==i.value||(i.value instanceof t.WaitForSeconds?(n.waitTimer=i.value.waitTime,!0):"number"==typeof i.value?(n.waitTimer=i.value,!0):"string"==typeof i.value?"break"!=i.value||(t.Pool.free(n),!1):!(i.value instanceof e)||(n.waitForCoroutine=i.value,!0))},i}(t.GlobalManager);t.CoroutineManager=n}(es||(es={})),function(t){var e=function(){function e(t,e,n){void 0===n&&(n=!0),this.binWidth=0,this.binHeight=0,this.usedRectangles=[],this.freeRectangles=[],this.init(t,e,n)}return e.prototype.init=function(e,n,i){void 0===i&&(i=!0),this.binWidth=e,this.binHeight=n,this.allowRotations=i;var r=new t.Rectangle;r.x=0,r.y=0,r.width=e,r.height=n,this.usedRectangles.length=0,this.freeRectangles.length=0,this.freeRectangles.push(r)},e.prototype.insert=function(e,n){var i=new t.Rectangle,r=new t.Ref(0),o=new t.Ref(0);if(0==(i=this.findPositionForNewNodeBestAreaFit(e,n,r,o)).height)return i;for(var s=this.freeRectangles.length,a=0;a=e&&this.freeRectangles[s].height>=n){var c=Math.abs(this.freeRectangles[s].width-e),h=Math.abs(this.freeRectangles[s].height-n),u=Math.min(c,h);(a=n&&this.freeRectangles[s].height>=e){c=Math.abs(this.freeRectangles[s].width-n),h=Math.abs(this.freeRectangles[s].height-e),u=Math.min(c,h);(a=t.x+t.width||e.x+e.width<=t.x||e.y>=t.y+t.height||e.y+e.height<=t.y)return!1;if(e.xt.x){if(e.y>t.y&&e.yt.y){var n;if(e.x>t.x&&e.x=e.x&&t.y>=e.y&&t.x+t.width<=e.x+e.width&&t.y+t.height<=e.y+e.height},e}();t.MaxRectsBinPack=e}(es||(es={}));var ArrayUtils=function(){function t(){}return t.bubbleSort=function(t){for(var e=!1,n=0;nn;i--)if(t[i]0&&t[r-1]>i;r--)t[r]=t[r-1];t[r]=i}},t.binarySearch=function(t,e){for(var n=0,i=t.length,r=n+i>>1;n=t[r]&&(n=r+1),r=n+i>>1;return t[n]==e?n:-1},t.findElementIndex=function(t,e){for(var n=t.length,i=0;it[e]&&(e=i);return e},t.getMinElementIndex=function(t){for(var e=0,n=t.length,i=1;i=0;--r)n.unshift(e[r]);return n},t.getDifferAry=function(t,e){t=this.getUniqueAry(t),e=this.getUniqueAry(e);for(var n=t.concat(e),i={},r=[],o=n.length,s=0;s=0;e-=1)t.splice(e,1)},t.cloneList=function(t){return t?t.slice(0,t.length):null},t.equals=function(t,e){if(t==e)return!0;var n=t.length;if(n!=e.length)return!1;for(;n--;)if(t[n]!=e[n])return!1;return!0},t.insert=function(t,e,n){if(!t)return null;var i=t.length;if(e>i&&(e=i),e<0&&(e=0),e==i)t.push(n);else if(0==e)t.unshift(n);else{for(var r=i-1;r>=e;r-=1)t[r+1]=t[r];t[e]=n}return n},t.shuffle=function(t){for(var e=t.length;e>1;){e--;var n=RandomUtils.randint(0,e+1),i=t[n];t[n]=t[e],t[e]=i}},t.addIfNotPresent=function(t,e){return!new linq.List(t).contains(e)&&(t.push(e),!0)},t.lastItem=function(t){return t[t.length-1]},t.randomItem=function(t){return t[RandomUtils.randint(0,t.length-1)]},t.randomItems=function(t,e){for(var n=new Set;n.size!=e;){var i=this.randomItem(t);n.has(i)||n.add(i)}var r=es.ListPool.obtain();return n.forEach(function(t){return r.push(t)}),r},t}();!function(t){var e=function(){function t(){}return Object.defineProperty(t,"nativeBase64",{get:function(){return"function"==typeof window.atob},enumerable:!0,configurable:!0}),t.decode=function(t){if(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,""),this.nativeBase64)return window.atob(t);for(var e,n,i,r,o,s,a=[],c=0;c>4,n=(15&r)<<4|(o=this._keyStr.indexOf(t.charAt(c++)))>>2,i=(3&o)<<6|(s=this._keyStr.indexOf(t.charAt(c++))),a.push(String.fromCharCode(e)),64!==o&&a.push(String.fromCharCode(n)),64!==s&&a.push(String.fromCharCode(i));return a=a.join("")},t.encode=function(t){if(t=t.replace(/\r\n/g,"\n"),!this.nativeBase64){for(var e,n,i,r,o,s,a,c=[],h=0;h>2,o=(3&e)<<4|(n=t.charCodeAt(h++))>>4,s=(15&n)<<2|(i=t.charCodeAt(h++))>>6,a=63&i,isNaN(n)?s=a=64:isNaN(i)&&(a=64),c.push(this._keyStr.charAt(r)),c.push(this._keyStr.charAt(o)),c.push(this._keyStr.charAt(s)),c.push(this._keyStr.charAt(a));return c=c.join("")}window.btoa(t)},t.decodeBase64AsArray=function(e,n){n=n||1;var i,r,o,s=t.decode(e),a=new Uint32Array(s.length/n);for(i=0,o=s.length/n;i=0;--r)a[i]+=s.charCodeAt(i*n+r)<<(r<<3);return a},t.decompress=function(t,e,n){throw new Error("GZIP/ZLIB compressed TMX Tile Map not supported!")},t.decodeCSV=function(t){for(var e=t.replace("\n","").trim().split(","),n=[],i=0;i(e=Math.floor(e))?t++:e++,this.randrange(t,e)},t.randnum=function(t,e){return this.random()*(e-t)+t},t.shuffle=function(t){return t.sort(this._randomCompare),t},t.choice=function(t){if(!t.hasOwnProperty("length"))throw new Error("无法对此对象执行此操作");var e=Math.floor(this.random()*t.length);return t instanceof String?String(t).charAt(e):t[e]},t.sample=function(t,e){var n=t.length;if(e<=0||n=0;)s=Math.floor(this.random()*n);i.push(t[s]),r.push(s)}return i},t.random=function(){return Math.random()},t.boolean=function(t){return void 0===t&&(t=.5),this.random().5?1:-1},t}();!function(t){var e=function(){function e(){}return e.getSide=function(e,n){switch(n){case t.Edge.top:return e.top;case t.Edge.bottom:return e.bottom;case t.Edge.left:return e.left;case t.Edge.right:return e.right}},e.union=function(e,n){var i=new t.Rectangle(n.x,n.y,0,0),r=new t.Rectangle;return r.x=Math.min(e.x,i.x),r.y=Math.min(e.y,i.y),r.width=Math.max(e.right,i.right)-r.x,r.height=Math.max(e.bottom,i.bottom)-r.y,r},e.getHalfRect=function(e,n){switch(n){case t.Edge.top:return new t.Rectangle(e.x,e.y,e.width,e.height/2);case t.Edge.bottom:return new t.Rectangle(e.x,e.y+e.height/2,e.width,e.height/2);case t.Edge.left:return new t.Rectangle(e.x,e.y,e.width/2,e.height);case t.Edge.right:return new t.Rectangle(e.x+e.width/2,e.y,e.width/2,e.height)}},e.getRectEdgePortion=function(e,n,i){switch(void 0===i&&(i=1),n){case t.Edge.top:return new t.Rectangle(e.x,e.y,e.width,i);case t.Edge.bottom:return new t.Rectangle(e.x,e.y+e.height-i,e.width,i);case t.Edge.left:return new t.Rectangle(e.x,e.y,i,e.height);case t.Edge.right:return new t.Rectangle(e.x+e.width-i,e.y,i,e.height)}},e.expandSide=function(e,n,i){switch(i=Math.abs(i),n){case t.Edge.top:e.y-=i,e.height+=i;break;case t.Edge.bottom:e.height+=i;break;case t.Edge.left:e.x-=i,e.width+=i;break;case t.Edge.right:e.width+=i}},e.contract=function(t,e,n){t.x+=e,t.y+=n,t.width-=2*e,t.height-=2*n},e.boundsFromPolygonVector=function(e){for(var n=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=0;sr&&(r=a.x),a.yo&&(o=a.y)}return this.fromMinMaxVector(new t.Vector2(n,i),new t.Vector2(r,o))},e.fromMinMaxVector=function(e,n){return new t.Rectangle(e.x,e.y,n.x-e.x,n.y-e.y)},e.getSweptBroadphaseBounds=function(e,n,i){var r=t.Rectangle.empty;return r.x=n>0?e.x:e.x+n,r.y=i>0?e.y:e.y+i,r.width=n>0?n+e.width:e.width-n,r.height=i>0?i+e.height:e.height-i,r},e.prototype.collisionCheck=function(t,e,n,i){n.value=i.value=0;var r=e.x-(t.x+t.width),o=e.x+e.width-t.x,s=e.y-(t.y+t.height),a=e.y+e.height-t.y;return!(r>0||o<0||s>0||a<0)&&(n.value=Math.abs(r)=l||Math.abs(u)>=p)return t.Vector2.zero;var f=h>0?l-h:-l-h,d=u>0?p-u:-p-u;return new t.Vector2(f,d)},e}();t.RectangleExt=e}(es||(es={})),function(t){var e=function(){function t(){}return t.premultiplyAlpha=function(t){for(var e=t[0],n=0;nt.MathHelper.Epsilon?e.divide(new t.Vector2(n)):e.x=e.y=0},e.transformA=function(t,e,n,i,r,o){for(var s=0;so?e?-1:1:r0},e.prototype.average=function(t){return this.sum(t)/this.count(t)},e.prototype.cast=function(){return new e(this._elements)},e.prototype.clear=function(){this._elements.length=0},e.prototype.concat=function(t){return new e(this._elements.concat(t.toArray()))},e.prototype.contains=function(t){return this.any(function(e){return e===t})},e.prototype.count=function(t){return t?this.where(t).count():this._elements.length},e.prototype.defaultIfEmpty=function(t){return this.count()?this:new e([t])},e.prototype.distinctBy=function(t){var n=this.groupBy(t);return Object.keys(n).reduce(function(t,e){return t.add(n[e][0]),t},new e)},e.prototype.elementAt=function(t){if(t=0)return this._elements[t];throw new Error("ArgumentOutOfRangeException: index is less than 0 or greater than or equal to the number of elements in source.")},e.prototype.elementAtOrDefault=function(t){return t=0?this._elements[t]:void 0},e.prototype.except=function(t){return this.where(function(e){return!t.contains(e)})},e.prototype.first=function(t){if(this.count())return t?this.where(t).first():this._elements[0];throw new Error("InvalidOperationException: The source sequence is empty.")},e.prototype.firstOrDefault=function(t){return this.count(t)?this.first(t):void 0},e.prototype.forEach=function(t){return this._elements.forEach(t)},e.prototype.groupBy=function(t,e){void 0===e&&(e=function(t){return t});return this.aggregate(function(n,i){var r=t(i),o=n[r],s=e(i);return o?o.push(s):n[r]=[s],n},{})},e.prototype.groupJoin=function(t,e,n,i){return this.select(function(r){return i(r,t.where(function(t){return e(r)===n(t)}))})},e.prototype.indexOf=function(t){return this._elements.indexOf(t)},e.prototype.insert=function(t,e){if(t<0||t>this._elements.length)throw new Error("Index is out of range.");this._elements.splice(t,0,e)},e.prototype.intersect=function(t){return this.where(function(e){return t.contains(e)})},e.prototype.join=function(t,e,n,i){return this.selectMany(function(r){return t.where(function(t){return n(t)===e(r)}).select(function(t){return i(r,t)})})},e.prototype.last=function(t){if(this.count())return t?this.where(t).last():this._elements[this.count()-1];throw Error("InvalidOperationException: The source sequence is empty.")},e.prototype.lastOrDefault=function(t){return this.count(t)?this.last(t):void 0},e.prototype.max=function(t){return Math.max.apply(Math,__spread(this._elements.map(t||function(t){return t})))},e.prototype.min=function(t){return Math.min.apply(Math,__spread(this._elements.map(t||function(t){return t})))},e.prototype.ofType=function(t){var e;switch(t){case Number:e="number";break;case String:e="string";break;case Boolean:e=typeof!0;break;case Function:e="function";break;default:e=null}return null===e?this.where(function(e){return e instanceof t}).cast():this.where(function(t){return typeof t===e}).cast()},e.prototype.orderBy=function(e,i){return void 0===i&&(i=t.keyComparer(e,!1)),new n(this._elements,i)},e.prototype.orderByDescending=function(e,i){return void 0===i&&(i=t.keyComparer(e,!0)),new n(this._elements,i)},e.prototype.thenBy=function(t){return this.orderBy(t)},e.prototype.thenByDescending=function(t){return this.orderByDescending(t)},e.prototype.remove=function(t){return-1!==this.indexOf(t)&&(this.removeAt(this.indexOf(t)),!0)},e.prototype.removeAll=function(e){return this.where(t.negate(e))},e.prototype.removeAt=function(t){this._elements.splice(t,1)},e.prototype.reverse=function(){return new e(this._elements.reverse())},e.prototype.select=function(t){return new e(this._elements.map(t))},e.prototype.selectMany=function(t){var n=this;return this.aggregate(function(e,i,r){return e.addRange(n.select(t).elementAt(r).toArray()),e},new e)},e.prototype.sequenceEqual=function(t){return this.all(function(e){return t.contains(e)})},e.prototype.single=function(t){if(1!==this.count(t))throw new Error("The collection does not contain exactly one element.");return this.first(t)},e.prototype.singleOrDefault=function(t){return this.count(t)?this.single(t):void 0},e.prototype.skip=function(t){return new e(this._elements.slice(Math.max(0,t)))},e.prototype.skipLast=function(t){return new e(this._elements.slice(0,-Math.max(0,t)))},e.prototype.skipWhile=function(t){var e=this;return this.skip(this.aggregate(function(n){return t(e.elementAt(n))?++n:n},0))},e.prototype.sum=function(t){return t?this.select(t).sum():this.aggregate(function(t,e){return t+ +e},0)},e.prototype.take=function(t){return new e(this._elements.slice(0,Math.max(0,t)))},e.prototype.takeLast=function(t){return new e(this._elements.slice(-Math.max(0,t)))},e.prototype.takeWhile=function(t){var e=this;return this.take(this.aggregate(function(n){return t(e.elementAt(n))?++n:n},0))},e.prototype.toArray=function(){return this._elements},e.prototype.toDictionary=function(t,n){var i=this;return this.aggregate(function(e,r,o){return e[i.select(t).elementAt(o).toString()]=n?i.select(n).elementAt(o):r,e.add({Key:i.select(t).elementAt(o),Value:n?i.select(n).elementAt(o):r}),e},new e)},e.prototype.toSet=function(){var t,e,n=new Set;try{for(var i=__values(this._elements),r=i.next();!r.done;r=i.next()){var o=r.value;n.add(o)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return n},e.prototype.toList=function(){return this},e.prototype.toLookup=function(t,e){return this.groupBy(t,e)},e.prototype.where=function(t){return new e(this._elements.filter(t))},e.prototype.zip=function(t,e){var n=this;return t.count()e.angle?1:t.angleMath.PI&&(o-=2*Math.PI),r.p1.begin=o>0,r.p2.begin=!r.p1.begin}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this._isSpotLight&&(this._spotStartAngle=this._segments[0].p2.angle,this._spotEndAngle=this._segments[1].p2.angle)},e._cornerCache=[],e._openSegments=new t.LinkedList,e}();t.VisibilityComputer=e}(es||(es={})),function(t){var e=function(){function e(){this._timeInSeconds=0,this._repeats=!1,this._isDone=!1,this._elapsedTime=0}return e.prototype.getContext=function(){return this.context},e.prototype.reset=function(){this._elapsedTime=0},e.prototype.stop=function(){this._isDone=!0},e.prototype.tick=function(){return!this._isDone&&this._elapsedTime>this._timeInSeconds&&(this._elapsedTime-=this._timeInSeconds,this._onTime(this),this._isDone||this._repeats||(this._isDone=!0)),this._elapsedTime+=t.Time.deltaTime,this._isDone},e.prototype.initialize=function(t,e,n,i){this._timeInSeconds=t,this._repeats=e,this.context=n,this._onTime=i},e.prototype.unload=function(){this.context=null,this._onTime=null},e}();t.Timer=e}(es||(es={})),function(t){var e=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t._timers=[],t}return __extends(n,e),n.prototype.update=function(){for(var t=this._timers.length-1;t>=0;t--)this._timers[t].tick()&&(this._timers[t].unload(),new linq.List(this._timers).removeAt(t))},n.prototype.schedule=function(e,n,i,r){var o=new t.Timer;return o.initialize(e,n,i,r),this._timers.push(o),o},n}(t.GlobalManager);t.TimerManager=e}(es||(es={})); \ No newline at end of file diff --git a/source/src/ECS/CoreEvents.ts b/source/src/ECS/CoreEvents.ts index cc9cbd4e..08a8d804 100644 --- a/source/src/ECS/CoreEvents.ts +++ b/source/src/ECS/CoreEvents.ts @@ -23,5 +23,6 @@ module es { resolutionScale, resolutionOffset, createRenderTarget, + createCamera, } } diff --git a/source/src/ECS/Scene.ts b/source/src/ECS/Scene.ts index b5216ff5..e5058cd8 100644 --- a/source/src/ECS/Scene.ts +++ b/source/src/ECS/Scene.ts @@ -1,3 +1,4 @@ +/// module es { export enum SceneResolutionPolicy { /** @@ -52,8 +53,8 @@ module es { /** * 所有场景的默认分辨率大小 */ - private static _defaultDesignResolutionSize: Vector2; - private static _defaultDesignBleedSize: Vector2; + private static _defaultDesignResolutionSize: Vector2 = Vector2.zero; + private static _defaultDesignBleedSize: Vector2 = Vector2.zero; /** * 用于所有场景的默认分辨率策略 */ @@ -65,15 +66,15 @@ module es { /** * 场景使用的设计分辨率大小 */ - private _designResolutionSize: Vector2; - private _designBleedSize: Vector2; + private _designResolutionSize: Vector2 = Vector2.zero; + private _designBleedSize: Vector2 = Vector2.zero; /** * 这将根据分辨率策略进行设置,并用于RenderTarget的最终输出 */ - private _finalRenderDestinationRect: Rectangle; + private _finalRenderDestinationRect: Rectangle = Rectangle.empty; - private _sceneRenderTarget: Ref; - private _destinationRenderTarget: Ref; + private _sceneRenderTarget: Ref = new Ref(null); + private _destinationRenderTarget: Ref = new Ref(null); private _screenshotRequestCallback: (texture) => void; public readonly _sceneComponents: SceneComponent[] = []; @@ -103,6 +104,8 @@ module es { this.renderableComponents = new RenderableComponentList(); this.entityProcessors = new EntityProcessorList(); + Framework.emitter.emit(CoreEvents.createCamera, this); + this._resolutionPolicy = Scene._defaultSceneResolutionPolicy; this._designResolutionSize = Scene._defaultDesignResolutionSize; this._designBleedSize = Scene._defaultDesignBleedSize; diff --git a/source/src/ECS/Transform.ts b/source/src/ECS/Transform.ts index 78e20bac..d0c7d8e6 100644 --- a/source/src/ECS/Transform.ts +++ b/source/src/ECS/Transform.ts @@ -8,10 +8,10 @@ module transform { module es { export enum DirtyType { - clean, - positionDirty, - scaleDirty, - rotationDirty, + clean = 0, + positionDirty = 1, + scaleDirty = 2, + rotationDirty = 4, } export class Transform { diff --git a/source/src/Utils/Emitter.ts b/source/src/Utils/Emitter.ts index f02079bb..1b38451f 100644 --- a/source/src/Utils/Emitter.ts +++ b/source/src/Utils/Emitter.ts @@ -63,7 +63,7 @@ module es { let list: FuncPack[] = this._messageTable.get(eventType); if (list) { for (let i = list.length - 1; i >= 0; i--) - list[i].func.call(list[i].context, data); + list[i].func.call(list[i].context, ...data); } } }