diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 8d608a8a..00000000 --- a/.gitmodules +++ /dev/null @@ -1,12 +0,0 @@ -[submodule "demo/egret_demo"] - path = demo/egret_demo - url = https://github.com/esengine/ecs-egret-demo -[submodule "demo/laya_demo"] - path = demo/laya_demo - url = https://github.com/esengine/ecs-laya-demo.git -[submodule "extensions/ecs-star"] - path = extensions/ecs-star - url = https://github.com/esengine/ecs-astar -[submodule "extensions/behaviourTree-ai"] - path = extensions/behaviourTree-ai - url = https://github.com/esengine/BehaviourTree-ai diff --git a/demo/egret_demo b/demo/egret_demo deleted file mode 160000 index 7fd94600..00000000 --- a/demo/egret_demo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7fd94600535df71004fd24193f51fc9b38616673 diff --git a/demo/laya_demo b/demo/laya_demo deleted file mode 160000 index e4273ff0..00000000 --- a/demo/laya_demo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e4273ff0f50601ebba1fa6345161a358ed074d00 diff --git a/extensions/behaviourTree-ai b/extensions/behaviourTree-ai deleted file mode 160000 index 192de123..00000000 --- a/extensions/behaviourTree-ai +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 192de123d3c4f747733ee004803fe9e10e022f96 diff --git a/extensions/ecs-star b/extensions/ecs-star deleted file mode 160000 index 03806083..00000000 --- a/extensions/ecs-star +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0380608377481a108ce1d79cbda537ce99618231 diff --git a/screenshot/GIF.gif b/screenshot/GIF.gif deleted file mode 100644 index 77ff616e..00000000 Binary files a/screenshot/GIF.gif and /dev/null differ diff --git a/source/bin/framework.d.ts b/source/bin/framework.d.ts index 2ff52d2e..c716ed2a 100644 --- a/source/bin/framework.d.ts +++ b/source/bin/framework.d.ts @@ -199,7 +199,6 @@ declare module es { * @param comp */ onEntityTransformChanged(comp: ComponentTransform): void; - debugRender(batcher: IBatcher): void; /** *当父实体或此组件启用时调用 */ @@ -374,7 +373,6 @@ declare module es { * 每帧进行调用进行更新组件 */ update(): void; - debugRender(batcher: IBatcher): void; /** * 创建组件的新实例。返回实例组件 * @param componentType @@ -654,14 +652,11 @@ declare module es { declare module es { /** 场景 */ class Scene { - camera: ICamera; /** 这个场景中的实体列表 */ readonly entities: EntityList; - readonly renderableComponents: RenderableComponentList; /** 管理所有实体处理器 */ readonly entityProcessors: EntityProcessorList; readonly _sceneComponents: SceneComponent[]; - _renderers: Renderer[]; readonly identifierPool: IdentifierPool; private _didSceneBegin; constructor(); @@ -682,10 +677,6 @@ declare module es { begin(): void; end(): void; update(): void; - render(): void; - addRenderer(renderer: T): T; - getRenderer(type: new (...args: any[]) => T): T; - removeRenderer(renderer: Renderer): void; /** * 向组件列表添加并返回SceneComponent * @param component @@ -1352,7 +1343,6 @@ declare module es { * 存储这个允许我们始终能够安全地从物理系统中移除对撞机,即使它在试图移除它之前已经被移动了。 */ registeredPhysicsBounds: Rectangle; - protected _colliderRequiresAutoSizing: boolean; _localOffsetLength: number; _isPositionDirty: boolean; _isRotationDirty: boolean; @@ -1468,7 +1458,6 @@ declare module es { * @param height */ setHeight(height: number): void; - debugRender(batcher: IBatcher): void; toString(): string; } } @@ -1488,7 +1477,6 @@ declare module es { * @param radius */ setRadius(radius: number): CircleCollider; - debugRender(batcher: IBatcher): void; toString(): string; } } @@ -1504,42 +1492,6 @@ declare module es { constructor(points: Vector2[]); } } -declare module es { - interface IRenderable { - enabled: boolean; - renderLayer: number; - isVisibleFromCamera(camera: ICamera): boolean; - render(batcher: IBatcher, camera: ICamera): void; - debugRender(batcher: IBatcher): void; - } -} -declare module es { - abstract class RenderableComponent extends es.Component implements IRenderable { - getwidth(): number; - getheight(): number; - protected _bounds: es.Rectangle; - getbounds(): es.Rectangle; - readonly bounds: Rectangle; - protected _areBoundsDirty: boolean; - color: Color; - renderLayer: number; - protected _renderLayer: number; - onEntityTransformChanged(comp: ComponentTransform): void; - localOffset: es.Vector2; - setLocalOffset(offset: es.Vector2): this; - isVisible: boolean; - debugRenderEnabled: boolean; - protected _isVisible: boolean; - protected _localOffset: es.Vector2; - abstract render(batcher: IBatcher, camera: ICamera): void; - protected onBecameVisible(): void; - protected onBecameInvisible(): void; - setRenderLayer(renderLayer: number): RenderableComponent; - isVisibleFromCamera(cam: ICamera): boolean; - debugRender(batcher: IBatcher): void; - tweenColorTo(to: Color, duration: number): RenderableColorTween; - } -} declare module es { interface Map { clear(): void; @@ -1898,7 +1850,6 @@ declare module es { onEntityTransformChanged(comp: ComponentTransform): void; onEntityEnabled(): void; onEntityDisabled(): void; - debugRender(batcher: IBatcher): void; } } declare module es { @@ -2097,24 +2048,6 @@ declare module es { one(...types: any[]): this; } } -declare module es { - class RenderableComponentList { - private _components; - private _componentsByRenderLayer; - private _unsortedRenderLayers; - private _componentsNeedSort; - readonly count: number; - get(index: number): IRenderable; - add(component: IRenderable): void; - remove(component: IRenderable): void; - updateRenderableRenderLayer(component: IRenderable, oldRenderLayer: number, newRenderLayer: number): void; - setRenderLayerNeedsComponentSort(renderLayer: number): void; - setNeedsComponentSort(): void; - private addToRenderLayerList; - componentsWithRenderLayer(renderLayer: number): IRenderable[]; - updateLists(): void; - } -} declare module es { class StringUtils { /** @@ -2322,280 +2255,6 @@ declare module es { static workerMessage(worker: Worker): (...message: any[]) => Promise<{}>; } } -declare module es { - class Graphics { - static instance: Graphics; - batcher: IBatcher; - constructor(batcher: IBatcher); - } -} -declare module es { - class Color { - /** - * 红色通道 - */ - r: number; - /** - * 绿色通道 - */ - g: number; - /** - * 蓝色通道 - */ - b: number; - /** - * 透明度通道 (仅0-1之间) - */ - a: number; - /** - * 色调 - */ - h: number; - /** - * 饱和 - */ - s: number; - /** - * 亮度 - */ - l: number; - /** - * 从 r, g, b, a 创建一个新的 Color 实例 - * - * @param r 颜色的红色分量 (0-255) - * @param g 颜色的绿色成分 (0-255) - * @param b 颜色的蓝色分量 (0-255) - * @param a 颜色的 alpha 分量 (0-1.0) - */ - constructor(r: number, g: number, b: number, a?: number); - /** - * 从 r, g, b, a 创建一个新的 Color 实例 - * - * @param r 颜色的红色分量 (0-255) - * @param g 颜色的绿色成分 (0-255) - * @param b 颜色的蓝色分量 (0-255) - * @param a 颜色的 alpha 分量 (0-1.0) - */ - static fromRGB(r: number, g: number, b: number, a?: number): Color; - /** - * 从十六进制字符串创建一个新的 Color 实例 - * - * @param hex #ffffff 形式的 CSS 颜色字符串,alpha 组件是可选的 - */ - static createFromHex(hex: string): Color; - /** - * 从 hsl 值创建一个新的 Color 实例 - * - * @param h 色调表示 [0-1] - * @param s 饱和度表示为 [0-1] - * @param l 亮度表示 [0-1] - * @param a 透明度表示 [0-1] - */ - static fromHSL(h: number, s: number, l: number, a?: number): Color; - /** - * 将当前颜色调亮指定的量 - * - * @param factor - */ - lighten(factor?: number): Color; - /** - * 将当前颜色变暗指定的量 - * - * @param factor - */ - darken(factor?: number): Color; - /** - * 使当前颜色饱和指定的量 - * - * @param factor - */ - saturate(factor?: number): Color; - /** - * 按指定量降低当前颜色的饱和度 - * - * @param factor - */ - desaturate(factor?: number): Color; - /** - * 将一种颜色乘以另一种颜色,得到更深的颜色 - * - * @param color - */ - mulitiply(color: Color): Color; - /** - * 筛选另一种颜色,导致颜色较浅 - * - * @param color - */ - screen(color: Color): Color; - /** - * 反转当前颜色 - */ - invert(): Color; - /** - * 将当前颜色与另一个颜色平均 - * - * @param color - */ - average(color: Color): Color; - /** - * 返回颜色的 CSS 字符串表示形式。 - * - * @param format - */ - toString(format?: 'rgb' | 'hsl' | 'hex'): string; - /** - * 返回颜色分量的十六进制值 - * @param c - * @see https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb - */ - private _componentToHex; - /** - *返回颜色的十六进制表示 - */ - toHex(): string; - /** - * 从十六进制字符串设置颜色 - * - * @param hex #ffffff 形式的 CSS 颜色字符串,alpha 组件是可选的 - */ - fromHex(hex: string): void; - /** - * 返回颜色的 RGBA 表示 - */ - toRGBA(): string; - /** - * 返回颜色的 HSLA 表示 - */ - toHSLA(): string; - /** - * 返回颜色的 CSS 字符串表示形式 - */ - fillStyle(): string; - /** - * 返回当前颜色的克隆 - */ - clone(): Color; - /** - * Black (#000000) - */ - static Black: Color; - /** - * White (#FFFFFF) - */ - static White: Color; - /** - * Gray (#808080) - */ - static Gray: Color; - /** - * Light gray (#D3D3D3) - */ - static LightGray: Color; - /** - * Dark gray (#A9A9A9) - */ - static DarkGray: Color; - /** - * Yellow (#FFFF00) - */ - static Yellow: Color; - /** - * Orange (#FFA500) - */ - static Orange: Color; - /** - * Red (#FF0000) - */ - static Red: Color; - /** - * Vermillion (#FF5B31) - */ - static Vermillion: Color; - /** - * Rose (#FF007F) - */ - static Rose: Color; - /** - * Magenta (#FF00FF) - */ - static Magenta: Color; - /** - * Violet (#7F00FF) - */ - static Violet: Color; - /** - * Blue (#0000FF) - */ - static Blue: Color; - /** - * Azure (#007FFF) - */ - static Azure: Color; - /** - * Cyan (#00FFFF) - */ - static Cyan: Color; - /** - * Viridian (#59978F) - */ - static Viridian: Color; - /** - * Green (#00FF00) - */ - static Green: Color; - /** - * Chartreuse (#7FFF00) - */ - static Chartreuse: Color; - /** - * Transparent (#FFFFFF00) - */ - static Transparent: Color; - } -} -declare module es { - interface IBatcher { - begin(cam: ICamera): any; - end(): any; - drawPoints(points: Vector2[], color: Color, thickness?: number): any; - drawPolygon(poisition: Vector2, points: Vector2[], color: Color, closePoly: boolean, thickness?: number): any; - drawHollowRect(x: number, y: number, width: number, height: number, color: Color, thickness?: number): any; - drawCircle(position: Vector2, raidus: number, color: Color, thickness?: number): any; - drawCircleLow(position: es.Vector2, radius: number, color: Color, thickness?: number, resolution?: number): any; - drawRect(x: number, y: number, width: number, height: number, color: Color): any; - drawLine(start: Vector2, end: Vector2, color: Color, thickness: number): any; - drawPixel(position: Vector2, color: Color, size?: number): any; - } -} -declare module es { - interface ICamera extends Component { - bounds: Rectangle; - } -} -declare module es { - abstract class Renderer { - camera: ICamera; - readonly renderOrder: number; - shouldDebugRender: boolean; - protected renderDirty: boolean; - constructor(renderOrder: number, camera: ICamera); - onAddedToScene(scene: es.Scene): void; - unload(): void; - protected beginRender(cam: ICamera): void; - protected endRender(): void; - protected onRenderChanged(): void; - abstract render(scene: Scene): void; - protected renderAfterStateCheck(renderable: IRenderable, cam: ICamera): void; - protected debugRender(scene: Scene): void; - } -} -declare module es { - class DefaultRenderer extends Renderer { - constructor(renderOrder?: number, camera?: ICamera); - render(scene: Scene): void; - } -} declare module es { /** * 三次方和二次方贝塞尔帮助器(cubic and quadratic bezier helper) @@ -3616,7 +3275,6 @@ declare module es { * 从SpatialHash中移除所有碰撞器 */ static clear(): void; - static debugDraw(secondsToDisplay: any): void; /** * 检查是否有对撞机落在一个圆形区域内。返回遇到的第一个对撞机 * @param center @@ -3764,8 +3422,6 @@ declare module es { */ removeWithBruteForce(obj: Collider): void; clear(): void; - debugDraw(secondsToDisplay: number): void; - private debugDrawCellDetails; /** * 返回边框与单元格相交的所有对象 * @param bounds @@ -4143,149 +3799,6 @@ declare module es { static intervalDistance(minA: number, maxA: number, minB: number, maxB: number): number; } } -declare module es { - class Particle { - position: Vector2; - lastPosition: Vector2; - mass: number; - radius: number; - collidesWithColliders: boolean; - isPinned: boolean; - acceleration: Vector2; - pinnedPosition: Vector2; - constructor(position: { - x: number; - y: number; - }); - applyForce(force: Vector2): void; - pin(): Particle; - pinTo(position: Vector2): Particle; - unpin(): Particle; - } -} -declare module es { - class VerletWorld { - gravity: Vector2; - constraintIterations: number; - maximumStepIterations: number; - simulationBounds: Rectangle; - allowDragging: boolean; - selectionRadiusSquared: number; - _draggedParticle: Particle; - _composites: Composite[]; - static _colliders: Collider[]; - _tempCircle: Circle; - _leftOverTime: number; - _fixedDeltaTime: number; - _iterationSteps: number; - _fixedDeltaTimeSq: number; - onHandleDrag: Function; - constructor(simulationBounds?: Rectangle); - update(): void; - constrainParticleToBounds(p: Particle): void; - handleCollisions(p: Particle, collidesWithLayers: number): void; - updateTiming(): void; - addComposite(composite: T): T; - removeComposite(composite: Composite): void; - handleDragging(): void; - getNearestParticle(position: Vector2): Particle; - debugRender(batcher: IBatcher): void; - } -} -declare module es { - class Composite { - friction: Vector2; - drawParticles: boolean; - drawConstraints: boolean; - collidesWithLayers: number; - particles: Particle[]; - _constraints: Constraint[]; - addParticle(particle: Particle): Particle; - removeParticle(particle: Particle): void; - removeAll(): void; - addConstraint(constraint: T): T; - removeConstraint(constraint: Constraint): void; - applyForce(force: Vector2): void; - solveConstraints(): void; - updateParticles(deltaTimeSquared: number, gravity: Vector2): void; - handleConstraintCollisions(): void; - debugRender(batcher: IBatcher): void; - } -} -declare module es { - class Ball extends Composite { - constructor(position: Vector2, radius?: number); - } -} -declare module es { - class VerletBox extends es.Composite { - constructor(center: es.Vector2, width: number, height: number, borderStiffness?: number, diagonalStiffness?: number); - } -} -declare module es { - class Cloth extends Composite { - constructor(topLeftPosition: Vector2, width: number, height: number, segments?: number, stiffness?: number, tearSensitivity?: number, connectHorizontalParticles?: boolean); - } -} -declare module es { - class LineSegments extends Composite { - constructor(vertices: Vector2[], stiffness: number); - pinParticleAtIndex(index: number): LineSegments; - } -} -declare module es { - class Ragdoll extends Composite { - constructor(x: number, y: number, bodyHeight: number); - } -} -declare module es { - class Tire extends Composite { - constructor(origin: Vector2, radius: number, segments: number, spokeStiffness?: number, treadStiffness?: number); - } -} -declare module es { - abstract class Constraint { - composite: Composite; - collidesWithColliders: boolean; - abstract solve(): void; - handleCollisions(collidesWithLayers: number): void; - debugRender(batcher: IBatcher): void; - } -} -declare module es { - class AngleConstraint extends Constraint { - stiffness: number; - angleInRadius: number; - _particleA: Particle; - _centerParticle: Particle; - _particleC: Particle; - constructor(a: Particle, center: Particle, c: Particle, stiffness: number); - angleBetweenParticles(): number; - solve(): void; - } -} -declare module es { - class DistanceConstraint extends Constraint { - stiffness: number; - restingDistance: number; - tearSensitivity: number; - shouldApproximateCollisionsWithPoints: boolean; - totalPointsToApproximateCollisionsWith: number; - _particleOne: Particle; - _particleTwo: Particle; - static _polygon: Polygon; - constructor(first: Particle, second: Particle, stiffness: number, distance?: number); - static create(a: Particle, center: Particle, c: Particle, stiffness: number, angleInDegrees: number): DistanceConstraint; - setTearSensitivity(tearSensitivity: number): this; - setCollidesWithColliders(collidesWithColliders: boolean): this; - setShouldApproximateCollisionsWithPoints(shouldApproximateCollisionsWithPoints: boolean): this; - solve(): void; - handleCollisions(collidesWithLayers: number): void; - approximateCollisionsWithPoints(collidesWithLayers: number): void; - preparePolygonForCollisionChecks(midPoint: Vector2): void; - debugRender(batcher: IBatcher): void; - } -} declare module es { /** * AbstractTweenable作为你可能想做的任何可以执行的自定义类的基础。 @@ -4315,6 +3828,38 @@ declare module es { 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; + /** + * 值越低,阻尼越小,值越高,阻尼越大,导致弹簧度越小,应在0.01-1之间,以避免系统不稳定 + */ + dampingRatio: number; + /** + * 角频率为2pi(弧度/秒)意味着振荡在一秒钟内完成一个完整的周期,即1Hz.应小于35左右才能保持稳定角频率 + */ + angularFrequency: number; + constructor(transform: Transform, targetType: TransformTargetType, targetValue: Vector2); + /** + * 你可以在任何时候调用setTargetValue来重置目标值到一个新的Vector2。 + * 如果你没有调用start来添加spring tween,它会为你调用 + * @param targetValue + */ + setTargetValue(targetValue: Vector2): void; + /** + * lambda应该是振荡幅度减少50%时的理想持续时间 + * @param lambda + */ + updateDampingRatioWithHalfLife(lambda: number): void; + tick(): boolean; + private setTweenedValue; + private getCurrentValueOfTweenedTargetType; + } +} declare module es { enum LoopType { none = 0, @@ -4419,55 +3964,6 @@ declare module es { protected updateValue(): void; recycleSelf(): void; } - class ColorTween extends Tween { - static create(): ColorTween; - constructor(target?: ITweenTarget, to?: Color, duration?: number); - setIsRelative(): this; - protected updateValue(): void; - } -} -declare module es { - class RenderableColorTween extends ColorTween implements ITweenTarget { - _renderable: RenderableComponent; - setTweenedValue(value: Color): void; - getTweenedValue(): Color; - getTargetObject(): RenderableComponent; - updateValue(): void; - setTarget(renderable: RenderableComponent): void; - recycleSelf(): void; - } -} -declare module es { - class TransformSpringTween extends AbstractTweenable { - readonly targetType: TransformTargetType; - private _transform; - private _targetType; - private _targetValue; - private _velocity; - /** - * 值越低,阻尼越小,值越高,阻尼越大,导致弹簧度越小,应在0.01-1之间,以避免系统不稳定 - */ - dampingRatio: number; - /** - * 角频率为2pi(弧度/秒)意味着振荡在一秒钟内完成一个完整的周期,即1Hz.应小于35左右才能保持稳定角频率 - */ - angularFrequency: number; - constructor(transform: Transform, targetType: TransformTargetType, targetValue: Vector2); - /** - * 你可以在任何时候调用setTargetValue来重置目标值到一个新的Vector2。 - * 如果你没有调用start来添加spring tween,它会为你调用 - * @param targetValue - */ - setTargetValue(targetValue: Vector2): void; - /** - * lambda应该是振荡幅度减少50%时的理想持续时间 - * @param lambda - */ - updateDampingRatioWithHalfLife(lambda: number): void; - tick(): boolean; - private setTweenedValue; - private getCurrentValueOfTweenedTargetType; - } } declare module es { /** @@ -4715,7 +4211,6 @@ declare module es { * 一系列静态方法来处理所有常见的tween类型结构,以及它们的unclamped lerps.unclamped lerps对于超过0-1范围的bounce、elastic或其他tweens是必需的 */ class Lerps { - static lerp(from: Color, to: Color, t: number): any; static lerp(from: number, to: number, t: number): any; static lerp(from: Rectangle, to: Rectangle, t: number): any; static lerp(from: Vector2, to: Vector2, t: number): any; @@ -4723,7 +4218,6 @@ declare module es { static ease(easeType: EaseType, from: Rectangle, to: Rectangle, t: number, duration: number): any; static ease(easeType: EaseType, from: Vector2, to: Vector2, t: number, duration: number): any; static ease(easeType: EaseType, from: number, to: number, t: number, duration: number): any; - static ease(easeType: EaseType, from: Color, to: Color, t: number, duration: number): any; static easeAngle(easeType: EaseType, from: Vector2, to: Vector2, t: number, duration: number): Vector2; /** * 使用半隐式欧拉方法。速度较慢,但总是很稳定。见 diff --git a/source/bin/framework.js b/source/bin/framework.js index 3c8b6510..038a98b9 100644 --- a/source/bin/framework.js +++ b/source/bin/framework.js @@ -522,7 +522,6 @@ var es; */ Component.prototype.onEntityTransformChanged = function (comp) { }; - Component.prototype.debugRender = function (batcher) { }; /** *当父实体或此组件启用时调用 */ @@ -981,11 +980,6 @@ var es; Entity.prototype.update = function () { this.components.update(); }; - Entity.prototype.debugRender = function (batcher) { - if (!batcher) - return; - this.components.debugRender(batcher); - }; /** * 创建组件的新实例。返回实例组件 * @param componentType @@ -1551,9 +1545,7 @@ var es; var Scene = /** @class */ (function () { function Scene() { this._sceneComponents = []; - this._renderers = []; this.entities = new es.EntityList(this); - this.renderableComponents = new es.RenderableComponentList(); this.entityProcessors = new es.EntityProcessorList(); this.identifierPool = new es.IdentifierPool(); this.initialize(); @@ -1576,9 +1568,6 @@ var es; Scene.prototype.unload = function () { }; Scene.prototype.begin = function () { - if (this._renderers.length == 0) { - this.addRenderer(new es.DefaultRenderer()); - } es.Physics.reset(); if (this.entityProcessors != null) this.entityProcessors.begin(); @@ -1587,14 +1576,11 @@ var es; }; Scene.prototype.end = function () { this._didSceneBegin = false; - for (var i = 0; i < this._renderers.length; i++) - this._renderers[i].unload(); this.entities.removeAllEntities(); for (var i = 0; i < this._sceneComponents.length; i++) { this._sceneComponents[i].onRemovedFromScene(); } this._sceneComponents.length = 0; - this.camera = null; es.Physics.clear(); if (this.entityProcessors) this.entityProcessors.end(); @@ -1614,30 +1600,6 @@ var es; this.entities.update(); if (this.entityProcessors != null) this.entityProcessors.lateUpdate(); - this.renderableComponents.updateLists(); - this.render(); - }; - Scene.prototype.render = function () { - for (var i = 0; i < this._renderers.length; i++) { - this._renderers[i].render(this); - } - }; - Scene.prototype.addRenderer = function (renderer) { - this._renderers.push(renderer); - this._renderers.sort(function (self, other) { return self.renderOrder - other.renderOrder; }); - renderer.onAddedToScene(this); - return renderer; - }; - Scene.prototype.getRenderer = function (type) { - for (var i = 0; i < this._renderers.length; i++) { - if (this._renderers[i] instanceof type) - return this._renderers[i]; - } - return null; - }; - Scene.prototype.removeRenderer = function (renderer) { - new es.List(this._renderers).remove(renderer); - renderer.unload(); }; /** * 向组件列表添加并返回SceneComponent @@ -3352,30 +3314,6 @@ var es; return this; }; Collider.prototype.onAddedToEntity = function () { - if (this._colliderRequiresAutoSizing) { - var renderable = null; - for (var i = 0; i < this.entity.components.buffer.length; i++) { - var component = this.entity.components.buffer[i]; - if (component instanceof es.RenderableComponent) { - renderable = component; - break; - } - } - if (renderable != null) { - var renderableBounds = renderable.bounds.clone(); - var width = renderableBounds.width / this.entity.transform.scale.x; - var height = renderableBounds.height / this.entity.transform.scale.y; - if (this instanceof es.CircleCollider) { - this.radius = Math.max(width, height) * 0.5; - this.localOffset = renderableBounds.center.sub(this.entity.transform.position); - } - else if (this instanceof es.BoxCollider) { - this.width = width; - this.height = height; - this.localOffset = renderableBounds.center.sub(this.entity.transform.position); - } - } - } this._isParentEntityAddedToScene = true; this.registerColliderWithPhysicsSystem(); }; @@ -3554,12 +3492,7 @@ var es; if (width === void 0) { width = 1; } if (height === void 0) { height = 1; } var _this = _super.call(this) || this; - if (width == 1 && height == 1) { - _this._colliderRequiresAutoSizing = true; - } - else { - _this._localOffset = new es.Vector2(x + width / 2, y + height / 2); - } + _this._localOffset = new es.Vector2(x + width / 2, y + height / 2); _this.shape = new es.Box(width, height); return _this; } @@ -3589,7 +3522,6 @@ var es; * @param height */ BoxCollider.prototype.setSize = function (width, height) { - this._colliderRequiresAutoSizing = false; var box = this.shape; if (width != box.width || height != box.height) { // 更新框,改变边界,如果我们需要更新物理系统中的边界 @@ -3605,7 +3537,6 @@ var es; * @param width */ BoxCollider.prototype.setWidth = function (width) { - this._colliderRequiresAutoSizing = false; var box = this.shape; if (width != box.width) { // 更新框,改变边界,如果我们需要更新物理系统中的边界 @@ -3621,7 +3552,6 @@ var es; * @param height */ BoxCollider.prototype.setHeight = function (height) { - this._colliderRequiresAutoSizing = false; var box = this.shape; if (height != box.height) { // 更新框,改变边界,如果我们需要更新物理系统中的边界 @@ -3631,17 +3561,6 @@ var es; es.Physics.updateCollider(this); } }; - BoxCollider.prototype.debugRender = function (batcher) { - var poly = this.shape; - batcher.drawHollowRect(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, new es.Color(76, 76, 76, 76), 2); - batcher.end(); - batcher.drawPolygon(this.shape.position, poly.points, new es.Color(139, 0, 0, 255), true, 2); - batcher.end(); - batcher.drawPixel(this.entity.position, new es.Color(255, 255, 0), 4); - batcher.end(); - batcher.drawPixel(es.Vector2.add(this.transform.position, this.shape.center), new es.Color(255, 0, 0), 2); - batcher.end(); - }; BoxCollider.prototype.toString = function () { return "[BoxCollider: bounds: " + this.bounds + "]"; }; @@ -3664,9 +3583,6 @@ var es; if (radius === void 0) { radius = 1; } var _this = _super.call(this) || this; _this.shape = new es.Circle(radius); - if (radius == 1) { - _this._colliderRequiresAutoSizing = true; - } return _this; } Object.defineProperty(CircleCollider.prototype, "radius", { @@ -3684,7 +3600,6 @@ var es; * @param radius */ CircleCollider.prototype.setRadius = function (radius) { - this._colliderRequiresAutoSizing = false; var circle = this.shape; if (radius != circle.radius) { circle.radius = radius; @@ -3695,16 +3610,6 @@ var es; } return this; }; - CircleCollider.prototype.debugRender = function (batcher) { - batcher.drawHollowRect(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, new es.Color(76, 76, 76, 76), 2); - batcher.end(); - batcher.drawCircle(this.shape.position, this.radius, new es.Color(139, 0, 0), 2); - batcher.end(); - batcher.drawPixel(this.entity.transform.position, new es.Color(255, 255, 0), 4); - batcher.end(); - batcher.drawPixel(this.shape.position, new es.Color(255, 0, 0), 2); - batcher.end(); - }; CircleCollider.prototype.toString = function () { return "[CircleCollider: bounds: " + this.bounds + ", radius: " + this.shape.radius + "]"; }; @@ -3741,134 +3646,6 @@ var es; es.PolygonCollider = PolygonCollider; })(es || (es = {})); var es; -(function (es) { - var RenderableComponent = /** @class */ (function (_super) { - __extends(RenderableComponent, _super); - function RenderableComponent() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._bounds = new es.Rectangle(); - _this._areBoundsDirty = true; - _this.color = es.Color.White; - _this._renderLayer = 0; - _this.debugRenderEnabled = true; - _this._isVisible = false; - _this._localOffset = new es.Vector2(); - return _this; - } - RenderableComponent.prototype.getwidth = function () { - return this.bounds.width; - }; - RenderableComponent.prototype.getheight = function () { - return this.bounds.height; - }; - RenderableComponent.prototype.getbounds = function () { - if (this._areBoundsDirty) { - this._bounds.calculateBounds(this.entity.transform.position, this._localOffset, new es.Vector2(this.getwidth() / 2, this.getheight() / 2), this.entity.transform.scale, this.entity.transform.rotation, this.getwidth(), this.getheight()); - this._areBoundsDirty = false; - } - return this._bounds; - }; - Object.defineProperty(RenderableComponent.prototype, "bounds", { - get: function () { - return this.getbounds(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RenderableComponent.prototype, "renderLayer", { - get: function () { - return this._renderLayer; - }, - set: function (value) { - this.setRenderLayer(value); - }, - enumerable: true, - configurable: true - }); - RenderableComponent.prototype.onEntityTransformChanged = function (comp) { - this._areBoundsDirty = true; - }; - Object.defineProperty(RenderableComponent.prototype, "localOffset", { - get: function () { - return this._localOffset; - }, - set: function (value) { - this.setLocalOffset(value); - }, - enumerable: true, - configurable: true - }); - RenderableComponent.prototype.setLocalOffset = function (offset) { - if (!this._localOffset.equals(offset)) { - this._localOffset = offset; - this._areBoundsDirty = true; - } - return this; - }; - Object.defineProperty(RenderableComponent.prototype, "isVisible", { - get: function () { - return this._isVisible; - }, - set: function (value) { - if (this._isVisible != value) { - this._isVisible = value; - if (this._isVisible) { - this.onBecameVisible(); - } - else { - this.onBecameInvisible(); - } - } - }, - enumerable: true, - configurable: true - }); - RenderableComponent.prototype.onBecameVisible = function () { - }; - RenderableComponent.prototype.onBecameInvisible = function () { - }; - RenderableComponent.prototype.setRenderLayer = function (renderLayer) { - if (renderLayer != this._renderLayer) { - var oldRenderLayer = this._renderLayer; - this._renderLayer = renderLayer; - if (this.entity != null && this.entity.scene != null) - es.Core.scene.renderableComponents.updateRenderableRenderLayer(this, oldRenderLayer, this._renderLayer); - } - return this; - }; - RenderableComponent.prototype.isVisibleFromCamera = function (cam) { - this.isVisible = cam.bounds.intersects(this.bounds); - return this.isVisible; - }; - RenderableComponent.prototype.debugRender = function (batcher) { - if (!this.debugRenderEnabled) - return; - var collider = null; - for (var i = 0; i < this.entity.components.buffer.length; i++) { - var component = this.entity.components.buffer[i]; - if (component instanceof es.Collider) { - collider = component; - break; - } - } - if (collider == null) { - batcher.drawHollowRect(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, new es.Color(255, 255, 0)); - batcher.end(); - } - batcher.drawPixel(es.Vector2.add(this.entity.transform.position, this._localOffset), new es.Color(153, 50, 204), 4); - batcher.end(); - }; - RenderableComponent.prototype.tweenColorTo = function (to, duration) { - var tween = es.Pool.obtain(es.RenderableColorTween); - tween.setTarget(this); - tween.initialize(tween, to, duration); - return tween; - }; - return RenderableComponent; - }(es.Component)); - es.RenderableComponent = RenderableComponent; -})(es || (es = {})); -var es; (function (es) { function decode(key) { switch (typeof key) { @@ -4536,8 +4313,6 @@ var es; var component = this._components[i]; if (!component) continue; - if (component instanceof es.RenderableComponent) - this._entity.scene.renderableComponents.remove(component); // 处理IUpdatable if (es.isIUpdatable(component)) new es.List(this._updatableComponents).remove(component); @@ -4550,8 +4325,6 @@ var es; if (this._components.length > 0) { for (var i = 0, s = this._components.length; i < s; ++i) { var component = this._components[i]; - if (component instanceof es.RenderableComponent) - this._entity.scene.renderableComponents.add(component); if (es.isIUpdatable(component)) this._updatableComponents.push(component); this.addBits(component); @@ -4592,8 +4365,6 @@ var es; if (this._componentsToAddList.length > 0) { for (var i = 0, l = this._componentsToAddList.length; i < l; ++i) { var component = this._componentsToAddList[i]; - if (component instanceof es.RenderableComponent) - this._entity.scene.renderableComponents.add(component); if (es.isIUpdatable(component)) this._updatableComponents.push(component); this.addBits(component); @@ -4622,8 +4393,6 @@ var es; } }; ComponentList.prototype.handleRemove = function (component) { - if (component instanceof es.RenderableComponent) - this._entity.scene.renderableComponents.remove(component); if (es.isIUpdatable(component) && this._updatableComponents.length > 0) { var index = this._updatableComponents.findIndex(function (c) { return c.id == component.id; }); if (index != -1) @@ -4735,15 +4504,6 @@ var es; this._components[i].onDisabled(); } }; - ComponentList.prototype.debugRender = function (batcher) { - if (!batcher) - return; - for (var i = 0; i < this._components.length; i++) { - if (this._components[i].enabled) { - this._components[i].debugRender(batcher); - } - } - }; /** * 组件列表的全局updateOrder排序 */ @@ -5449,82 +5209,6 @@ var es; es.Matcher = Matcher; })(es || (es = {})); var es; -(function (es) { - var RenderableComponentList = /** @class */ (function () { - function RenderableComponentList() { - this._components = []; - this._componentsByRenderLayer = new Map(); - this._unsortedRenderLayers = []; - this._componentsNeedSort = true; - } - Object.defineProperty(RenderableComponentList.prototype, "count", { - get: function () { - return this._components.length; - }, - enumerable: true, - configurable: true - }); - RenderableComponentList.prototype.get = function (index) { - return this._components[index]; - }; - RenderableComponentList.prototype.add = function (component) { - this._components.push(component); - this.addToRenderLayerList(component, component.renderLayer); - }; - RenderableComponentList.prototype.remove = function (component) { - new es.List(this._components).remove(component); - new es.List(this._componentsByRenderLayer.get(component.renderLayer)).remove(component); - }; - RenderableComponentList.prototype.updateRenderableRenderLayer = function (component, oldRenderLayer, newRenderLayer) { - if (this._componentsByRenderLayer.has(oldRenderLayer) && new es.List(this._componentsByRenderLayer.get(oldRenderLayer)).contains(component)) { - new es.List(this._componentsByRenderLayer.get(oldRenderLayer)).remove(component); - this.addToRenderLayerList(component, newRenderLayer); - } - }; - RenderableComponentList.prototype.setRenderLayerNeedsComponentSort = function (renderLayer) { - var unsortedRenderLayersList = new es.List(this._unsortedRenderLayers); - if (!unsortedRenderLayersList.contains(renderLayer)) - unsortedRenderLayersList.add(renderLayer); - this._componentsNeedSort = true; - }; - RenderableComponentList.prototype.setNeedsComponentSort = function () { - this._componentsNeedSort = true; - }; - RenderableComponentList.prototype.addToRenderLayerList = function (component, renderLayer) { - var list = this.componentsWithRenderLayer(renderLayer); - es.Insist.isFalse(!!list.find(function (c) { return c == component; }), "组件renderLayer列表已包含此组件"); - list.push(component); - var unsortedRenderLayersList = new es.List(this._unsortedRenderLayers); - if (!unsortedRenderLayersList.contains(renderLayer)) - unsortedRenderLayersList.add(renderLayer); - this._componentsNeedSort = true; - }; - RenderableComponentList.prototype.componentsWithRenderLayer = function (renderLayer) { - if (!this._componentsByRenderLayer.get(renderLayer)) { - this._componentsByRenderLayer.set(renderLayer, []); - } - return this._componentsByRenderLayer.get(renderLayer); - }; - RenderableComponentList.prototype.updateLists = function () { - if (this._componentsNeedSort) { - this._components.sort(function (self, other) { return other.renderLayer - self.renderLayer; }); - this._componentsNeedSort = false; - } - if (this._unsortedRenderLayers.length > 0) { - for (var i = 0, count = this._unsortedRenderLayers.length; i < count; i++) { - var renderLayerComponents = this._componentsByRenderLayer.get(this._unsortedRenderLayers[i]); - if (renderLayerComponents) { - renderLayerComponents.sort(function (self, other) { return other.renderLayer - self.renderLayer; }); - } - this._unsortedRenderLayers.length = 0; - } - } - }; - return RenderableComponentList; - }()); - es.RenderableComponentList = RenderableComponentList; -})(es || (es = {})); -var es; (function (es) { var StringUtils = /** @class */ (function () { function StringUtils() { @@ -6076,490 +5760,6 @@ var es; es.WorkerUtils = WorkerUtils; })(es || (es = {})); var es; -(function (es) { - var Graphics = /** @class */ (function () { - function Graphics(batcher) { - this.batcher = batcher; - } - return Graphics; - }()); - es.Graphics = Graphics; -})(es || (es = {})); -var es; -(function (es) { - var Color = /** @class */ (function () { - /** - * 从 r, g, b, a 创建一个新的 Color 实例 - * - * @param r 颜色的红色分量 (0-255) - * @param g 颜色的绿色成分 (0-255) - * @param b 颜色的蓝色分量 (0-255) - * @param a 颜色的 alpha 分量 (0-1.0) - */ - function Color(r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a != null ? a : 1; - } - /** - * 从 r, g, b, a 创建一个新的 Color 实例 - * - * @param r 颜色的红色分量 (0-255) - * @param g 颜色的绿色成分 (0-255) - * @param b 颜色的蓝色分量 (0-255) - * @param a 颜色的 alpha 分量 (0-1.0) - */ - Color.fromRGB = function (r, g, b, a) { - return new Color(r, g, b, a); - }; - /** - * 从十六进制字符串创建一个新的 Color 实例 - * - * @param hex #ffffff 形式的 CSS 颜色字符串,alpha 组件是可选的 - */ - Color.createFromHex = function (hex) { - var color = new Color(1, 1, 1); - color.fromHex(hex); - return color; - }; - /** - * 从 hsl 值创建一个新的 Color 实例 - * - * @param h 色调表示 [0-1] - * @param s 饱和度表示为 [0-1] - * @param l 亮度表示 [0-1] - * @param a 透明度表示 [0-1] - */ - Color.fromHSL = function (h, s, l, a) { - if (a === void 0) { a = 1.0; } - var temp = new HSLColor(h, s, l, a); - return temp.toRGBA(); - }; - /** - * 将当前颜色调亮指定的量 - * - * @param factor - */ - Color.prototype.lighten = function (factor) { - if (factor === void 0) { factor = 0.1; } - var temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.l += temp.l * factor; - return temp.toRGBA(); - }; - /** - * 将当前颜色变暗指定的量 - * - * @param factor - */ - Color.prototype.darken = function (factor) { - if (factor === void 0) { factor = 0.1; } - var temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.l -= temp.l * factor; - return temp.toRGBA(); - }; - /** - * 使当前颜色饱和指定的量 - * - * @param factor - */ - Color.prototype.saturate = function (factor) { - if (factor === void 0) { factor = 0.1; } - var temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.s += temp.s * factor; - return temp.toRGBA(); - }; - /** - * 按指定量降低当前颜色的饱和度 - * - * @param factor - */ - Color.prototype.desaturate = function (factor) { - if (factor === void 0) { factor = 0.1; } - var temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.s -= temp.s * factor; - return temp.toRGBA(); - }; - /** - * 将一种颜色乘以另一种颜色,得到更深的颜色 - * - * @param color - */ - Color.prototype.mulitiply = function (color) { - var newR = (((color.r / 255) * this.r) / 255) * 255; - var newG = (((color.g / 255) * this.g) / 255) * 255; - var newB = (((color.b / 255) * this.b) / 255) * 255; - var newA = color.a * this.a; - return new Color(newR, newG, newB, newA); - }; - /** - * 筛选另一种颜色,导致颜色较浅 - * - * @param color - */ - Color.prototype.screen = function (color) { - var color1 = color.invert(); - var color2 = color.invert(); - return color1.mulitiply(color2).invert(); - }; - /** - * 反转当前颜色 - */ - Color.prototype.invert = function () { - return new Color(255 - this.r, 255 - this.g, 255 - this.b, 1.0 - this.a); - }; - /** - * 将当前颜色与另一个颜色平均 - * - * @param color - */ - Color.prototype.average = function (color) { - var newR = (color.r + this.r) / 2; - var newG = (color.g + this.g) / 2; - var newB = (color.b + this.b) / 2; - var newA = (color.a + this.a) / 2; - return new Color(newR, newG, newB, newA); - }; - /** - * 返回颜色的 CSS 字符串表示形式。 - * - * @param format - */ - Color.prototype.toString = function (format) { - if (format === void 0) { format = 'rgb'; } - switch (format) { - case 'rgb': - return this.toRGBA(); - case 'hsl': - return this.toHSLA(); - case 'hex': - return this.toHex(); - default: - throw new Error('Invalid Color format'); - } - }; - /** - * 返回颜色分量的十六进制值 - * @param c - * @see https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb - */ - Color.prototype._componentToHex = function (c) { - var hex = c.toString(16); - return hex.length === 1 ? '0' + hex : hex; - }; - /** - *返回颜色的十六进制表示 - */ - Color.prototype.toHex = function () { - return ('#' + - this._componentToHex(this.r) + - this._componentToHex(this.g) + - this._componentToHex(this.b) + - this._componentToHex(this.a)); - }; - /** - * 从十六进制字符串设置颜色 - * - * @param hex #ffffff 形式的 CSS 颜色字符串,alpha 组件是可选的 - */ - Color.prototype.fromHex = function (hex) { - var hexRegEx = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i; - var match = hex.match(hexRegEx); - if (match) { - var r = parseInt(match[1], 16); - var g = parseInt(match[2], 16); - var b = parseInt(match[3], 16); - var a = 1; - if (match[4]) { - a = parseInt(match[4], 16) / 255; - } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - else { - throw new Error('Invalid hex string: ' + hex); - } - }; - /** - * 返回颜色的 RGBA 表示 - */ - Color.prototype.toRGBA = function () { - var result = String(this.r.toFixed(0)) + - ', ' + - String(this.g.toFixed(0)) + - ', ' + - String(this.b.toFixed(0)); - if (this.a !== undefined || this.a != null) { - return 'rgba(' + result + ', ' + String(this.a) + ')'; - } - return 'rgb(' + result + ')'; - }; - /** - * 返回颜色的 HSLA 表示 - */ - Color.prototype.toHSLA = function () { - return HSLColor.fromRGBA(this.r, this.g, this.b, this.a).toString(); - }; - /** - * 返回颜色的 CSS 字符串表示形式 - */ - Color.prototype.fillStyle = function () { - return this.toString(); - }; - /** - * 返回当前颜色的克隆 - */ - Color.prototype.clone = function () { - return new Color(this.r, this.g, this.b, this.a); - }; - /** - * Black (#000000) - */ - Color.Black = Color.createFromHex('#000000'); - /** - * White (#FFFFFF) - */ - Color.White = Color.createFromHex('#FFFFFF'); - /** - * Gray (#808080) - */ - Color.Gray = Color.createFromHex('#808080'); - /** - * Light gray (#D3D3D3) - */ - Color.LightGray = Color.createFromHex('#D3D3D3'); - /** - * Dark gray (#A9A9A9) - */ - Color.DarkGray = Color.createFromHex('#A9A9A9'); - /** - * Yellow (#FFFF00) - */ - Color.Yellow = Color.createFromHex('#FFFF00'); - /** - * Orange (#FFA500) - */ - Color.Orange = Color.createFromHex('#FFA500'); - /** - * Red (#FF0000) - */ - Color.Red = Color.createFromHex('#FF0000'); - /** - * Vermillion (#FF5B31) - */ - Color.Vermillion = Color.createFromHex('#FF5B31'); - /** - * Rose (#FF007F) - */ - Color.Rose = Color.createFromHex('#FF007F'); - /** - * Magenta (#FF00FF) - */ - Color.Magenta = Color.createFromHex('#FF00FF'); - /** - * Violet (#7F00FF) - */ - Color.Violet = Color.createFromHex('#7F00FF'); - /** - * Blue (#0000FF) - */ - Color.Blue = Color.createFromHex('#0000FF'); - /** - * Azure (#007FFF) - */ - Color.Azure = Color.createFromHex('#007FFF'); - /** - * Cyan (#00FFFF) - */ - Color.Cyan = Color.createFromHex('#00FFFF'); - /** - * Viridian (#59978F) - */ - Color.Viridian = Color.createFromHex('#59978F'); - /** - * Green (#00FF00) - */ - Color.Green = Color.createFromHex('#00FF00'); - /** - * Chartreuse (#7FFF00) - */ - Color.Chartreuse = Color.createFromHex('#7FFF00'); - /** - * Transparent (#FFFFFF00) - */ - Color.Transparent = Color.createFromHex('#FFFFFF00'); - return Color; - }()); - es.Color = Color; - /** - * 内部 HSL 颜色表示 - * - * http://en.wikipedia.org/wiki/HSL_and_HSV - * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c - */ - var HSLColor = /** @class */ (function () { - function HSLColor(h, s, l, a) { - this.h = h; - this.s = s; - this.l = l; - this.a = a; - } - HSLColor.hue2rgb = function (p, q, t) { - if (t < 0) { - t += 1; - } - if (t > 1) { - t -= 1; - } - if (t < 1 / 6) { - return p + (q - p) * 6 * t; - } - if (t < 1 / 2) { - return q; - } - if (t < 2 / 3) { - return p + (q - p) * (2 / 3 - t) * 6; - } - return p; - }; - HSLColor.fromRGBA = function (r, g, b, a) { - r /= 255; - g /= 255; - b /= 255; - var max = Math.max(r, g, b); - var min = Math.min(r, g, b); - var h = (max + min) / 2; - var s = h; - var l = h; - if (max === min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - return new HSLColor(h, s, l, a); - }; - HSLColor.prototype.toRGBA = function () { - var r; - var g; - var b; - if (this.s === 0) { - r = g = b = this.l; // achromatic - } - else { - var q = this.l < 0.5 - ? this.l * (1 + this.s) - : this.l + this.s - this.l * this.s; - var p = 2 * this.l - q; - r = HSLColor.hue2rgb(p, q, this.h + 1 / 3); - g = HSLColor.hue2rgb(p, q, this.h); - b = HSLColor.hue2rgb(p, q, this.h - 1 / 3); - } - return new Color(r * 255, g * 255, b * 255, this.a); - }; - HSLColor.prototype.toString = function () { - var h = this.h.toFixed(0); - var s = this.s.toFixed(0); - var l = this.l.toFixed(0); - var a = this.a.toFixed(0); - return "hsla(" + h + ", " + s + ", " + l + ", " + a + ")"; - }; - return HSLColor; - }()); -})(es || (es = {})); -var es; -(function (es) { - var Renderer = /** @class */ (function () { - function Renderer(renderOrder, camera) { - this.renderOrder = 0; - this.shouldDebugRender = true; - this.renderDirty = true; - this.renderOrder = renderOrder; - this.camera = camera; - es.Core.emitter.addObserver(es.CoreEvents.renderChanged, this.onRenderChanged, this); - } - Renderer.prototype.onAddedToScene = function (scene) { }; - Renderer.prototype.unload = function () { }; - Renderer.prototype.beginRender = function (cam) { - if (!es.Graphics.instance) - return; - es.Graphics.instance.batcher.begin(cam); - }; - Renderer.prototype.endRender = function () { - if (!es.Graphics.instance) - return; - es.Graphics.instance.batcher.end(); - }; - Renderer.prototype.onRenderChanged = function () { - this.renderDirty = true; - }; - Renderer.prototype.renderAfterStateCheck = function (renderable, cam) { - if (!es.Graphics.instance) - return; - renderable.render(es.Graphics.instance.batcher, cam); - }; - Renderer.prototype.debugRender = function (scene) { - if (!es.Graphics.instance) - return; - es.Physics.debugDraw(2); - for (var i = 0; i < scene.entities.count; i++) { - var entity = scene.entities.buffer[i]; - if (entity.enabled) { - entity.debugRender(es.Graphics.instance.batcher); - } - } - }; - return Renderer; - }()); - es.Renderer = Renderer; -})(es || (es = {})); -/// -var es; -/// -(function (es) { - var DefaultRenderer = /** @class */ (function (_super) { - __extends(DefaultRenderer, _super); - function DefaultRenderer(renderOrder, camera) { - if (renderOrder === void 0) { renderOrder = 0; } - if (camera === void 0) { camera = null; } - return _super.call(this, renderOrder, camera) || this; - } - DefaultRenderer.prototype.render = function (scene) { - if (!this.renderDirty) - return; - this.renderDirty = false; - var cam = this.camera ? this.camera : scene.camera; - this.beginRender(cam); - for (var i = 0; i < scene.renderableComponents.count; i++) { - var renderable = scene.renderableComponents.get(i); - if (renderable.enabled && renderable.isVisibleFromCamera(scene.camera)) - this.renderAfterStateCheck(renderable, cam); - } - if (this.shouldDebugRender && es.Core.debugRenderEndabled) { - this.debugRender(scene); - } - this.endRender(); - }; - return DefaultRenderer; - }(es.Renderer)); - es.DefaultRenderer = DefaultRenderer; -})(es || (es = {})); -var es; (function (es) { /** * 三次方和二次方贝塞尔帮助器(cubic and quadratic bezier helper) @@ -8944,10 +8144,6 @@ var es; Physics.clear = function () { this._spatialHash.clear(); }; - Physics.debugDraw = function (secondsToDisplay) { - if (this.debugRender) - this._spatialHash.debugDraw(secondsToDisplay); - }; /** * 检查是否有对撞机落在一个圆形区域内。返回遇到的第一个对撞机 * @param center @@ -9233,20 +8429,6 @@ var es; SpatialHash.prototype.clear = function () { this._cellDict.clear(); }; - SpatialHash.prototype.debugDraw = function (secondsToDisplay) { - for (var x = this.gridBounds.x; x <= this.gridBounds.right; x++) { - for (var y = this.gridBounds.y; y <= this.gridBounds.bottom; y++) { - var cell = this.cellAtPosition(x, y); - if (cell != null && cell.length > 0) - this.debugDrawCellDetails(x, y, secondsToDisplay); - } - } - }; - SpatialHash.prototype.debugDrawCellDetails = function (x, y, secondsToDisplay) { - if (secondsToDisplay === void 0) { secondsToDisplay = 0.5; } - es.Graphics.instance.batcher.drawHollowRect(x * this._cellSize, y * this._cellSize, this._cellSize, this._cellSize, new es.Color(255, 0, 0), secondsToDisplay); - es.Graphics.instance.batcher.end(); - }; /** * 返回边框与单元格相交的所有对象 * @param bounds @@ -10562,600 +9744,6 @@ var es; es.ShapeCollisionsPolygon = ShapeCollisionsPolygon; })(es || (es = {})); var es; -(function (es) { - var Particle = /** @class */ (function () { - function Particle(position) { - this.position = es.Vector2.zero; - this.lastPosition = es.Vector2.zero; - this.mass = 1; - this.radius = 0; - this.collidesWithColliders = true; - this.isPinned = false; - this.acceleration = es.Vector2.zero; - this.pinnedPosition = es.Vector2.zero; - this.position = new es.Vector2(position.x, position.y); - this.lastPosition = new es.Vector2(position.x, position.y); - } - Particle.prototype.applyForce = function (force) { - this.acceleration = this.acceleration.add(force.divideScaler(this.mass)); - }; - Particle.prototype.pin = function () { - this.isPinned = true; - this.pinnedPosition = this.position; - return this; - }; - Particle.prototype.pinTo = function (position) { - this.isPinned = true; - this.pinnedPosition = position; - this.position = this.pinnedPosition; - return this; - }; - Particle.prototype.unpin = function () { - this.isPinned = false; - return this; - }; - return Particle; - }()); - es.Particle = Particle; -})(es || (es = {})); -var es; -(function (es) { - var VerletWorld = /** @class */ (function () { - function VerletWorld(simulationBounds) { - if (simulationBounds === void 0) { simulationBounds = null; } - this.gravity = new es.Vector2(0, -980); - this.constraintIterations = 3; - this.maximumStepIterations = 5; - this.allowDragging = true; - this.selectionRadiusSquared = 20 * 20; - this._composites = []; - this._tempCircle = new es.Circle(1); - this._leftOverTime = 0; - this._fixedDeltaTime = 1 / 60; - this._iterationSteps = 0; - this._fixedDeltaTimeSq = 0; - this.simulationBounds = simulationBounds; - this._fixedDeltaTimeSq = Math.pow(this._fixedDeltaTime, 2); - } - VerletWorld.prototype.update = function () { - this.updateTiming(); - if (this.allowDragging) - this.handleDragging(); - for (var iteration = 1; iteration <= this._iterationSteps; iteration++) { - for (var i = this._composites.length - 1; i >= 0; i--) { - var composite = this._composites[i]; - for (var s = 0; s < this.constraintIterations; s++) - composite.solveConstraints(); - composite.updateParticles(this._fixedDeltaTimeSq, this.gravity); - composite.handleConstraintCollisions(); - for (var j = 0; j < composite.particles.length; j++) { - var p = composite.particles[j]; - if (this.simulationBounds) { - this.constrainParticleToBounds(p); - } - if (p.collidesWithColliders) - this.handleCollisions(p, composite.collidesWithLayers); - } - } - } - }; - VerletWorld.prototype.constrainParticleToBounds = function (p) { - var tempPos = p.position; - var bounds = this.simulationBounds; - if (p.radius == 0) { - if (tempPos.y > bounds.height) - tempPos.y = bounds.height; - else if (tempPos.y < bounds.y) - tempPos.y = bounds.y; - if (tempPos.x < bounds.x) - tempPos.x = bounds.x; - else if (tempPos.x > bounds.width) - tempPos.x = bounds.width; - } - else { - if (tempPos.y < bounds.y + p.radius) - tempPos.y = 2 * (bounds.y + p.radius) - tempPos.y; - if (tempPos.y > bounds.height - p.radius) - tempPos.y = 2 * (bounds.height - p.radius) - tempPos.y; - if (tempPos.x > bounds.width - p.radius) - tempPos.x = 2 * (bounds.width - p.radius) - tempPos.x; - if (tempPos.x < bounds.x + p.radius) - tempPos.x = 2 * (bounds.x + p.radius) - tempPos.x; - } - p.position = tempPos; - }; - VerletWorld.prototype.handleCollisions = function (p, collidesWithLayers) { - var collidedCount = es.Physics.overlapCircleAll(p.position, p.radius, VerletWorld._colliders, collidesWithLayers); - for (var i = 0; i < collidedCount; i++) { - var collider = VerletWorld._colliders[i]; - if (collider.isTrigger) - continue; - var collisionResult = new es.CollisionResult(); - if (p.radius < 2) { - if (collider.shape.pointCollidesWithShape(p.position, collisionResult)) { - p.position = p.position.sub(collisionResult.minimumTranslationVector); - } - } - else { - this._tempCircle.radius = p.radius; - this._tempCircle.position = p.position; - if (this._tempCircle.collidesWithShape(collider.shape, collisionResult)) { - p.position = p.position.sub(collisionResult.minimumTranslationVector); - } - } - } - }; - VerletWorld.prototype.updateTiming = function () { - this._leftOverTime += es.Time.deltaTime; - this._iterationSteps = Math.trunc(this._leftOverTime / this._fixedDeltaTime); - this._leftOverTime -= this._iterationSteps * this._fixedDeltaTime; - this._iterationSteps = Math.min(this._iterationSteps, this.maximumStepIterations); - }; - VerletWorld.prototype.addComposite = function (composite) { - this._composites.push(composite); - return composite; - }; - VerletWorld.prototype.removeComposite = function (composite) { - var index = this._composites.indexOf(composite); - this._composites.splice(index, 1); - }; - VerletWorld.prototype.handleDragging = function () { - if (this.onHandleDrag) - this.onHandleDrag(); - }; - VerletWorld.prototype.getNearestParticle = function (position) { - var nearestSquaredDistance = this.selectionRadiusSquared; - var particle = null; - for (var j = 0; j < this._composites.length; j++) { - var particles = this._composites[j].particles; - for (var i = 0; i < particles.length; i++) { - var p = particles[i]; - var squaredDistanceToParticle = es.Vector2.sqrDistance(p.position, position); - if (squaredDistanceToParticle <= this.selectionRadiusSquared && - (particle == null || squaredDistanceToParticle < nearestSquaredDistance)) { - particle = p; - nearestSquaredDistance = squaredDistanceToParticle; - } - } - } - return particle; - }; - VerletWorld.prototype.debugRender = function (batcher) { - for (var i = 0; i < this._composites.length; i++) { - this._composites[i].debugRender(batcher); - } - if (this.allowDragging) { - if (this._draggedParticle != null) { - batcher.drawCircle(this._draggedParticle.position, 8, es.Color.White); - } - } - }; - VerletWorld._colliders = []; - return VerletWorld; - }()); - es.VerletWorld = VerletWorld; -})(es || (es = {})); -var es; -(function (es) { - var Composite = /** @class */ (function () { - function Composite() { - this.friction = new es.Vector2(0.98, 1); - this.drawParticles = true; - this.drawConstraints = true; - this.collidesWithLayers = es.Physics.allLayers; - this.particles = []; - this._constraints = []; - } - Composite.prototype.addParticle = function (particle) { - this.particles.push(particle); - return particle; - }; - Composite.prototype.removeParticle = function (particle) { - var index = this.particles.indexOf(particle); - this.particles.splice(index, 1); - }; - Composite.prototype.removeAll = function () { - this.particles.length = 0; - this._constraints.length = 0; - }; - Composite.prototype.addConstraint = function (constraint) { - this._constraints.push(constraint); - constraint.composite = this; - return constraint; - }; - Composite.prototype.removeConstraint = function (constraint) { - var index = this._constraints.indexOf(constraint); - this._constraints.splice(index, 1); - }; - Composite.prototype.applyForce = function (force) { - for (var j = 0; j < this.particles.length; j++) - this.particles[j].applyForce(force); - }; - Composite.prototype.solveConstraints = function () { - for (var i = this._constraints.length - 1; i >= 0; i--) - this._constraints[i].solve(); - }; - Composite.prototype.updateParticles = function (deltaTimeSquared, gravity) { - for (var j = 0; j < this.particles.length; j++) { - var p = this.particles[j]; - if (p.isPinned) { - p.position = p.pinnedPosition; - continue; - } - p.applyForce(gravity.scale(p.mass)); - var vel = p.position.sub(p.lastPosition).multiply(this.friction); - var nextPos = p.position.add(vel).add(p.acceleration.scale(0.5 * deltaTimeSquared)); - p.lastPosition = p.position; - p.position = nextPos; - p.acceleration.x = p.acceleration.y = 0; - } - }; - Composite.prototype.handleConstraintCollisions = function () { - for (var i = this._constraints.length - 1; i >= 0; i--) { - if (this._constraints[i].collidesWithColliders) - this._constraints[i].handleCollisions(this.collidesWithLayers); - } - }; - Composite.prototype.debugRender = function (batcher) { - if (this.drawConstraints) { - for (var i = 0; i < this._constraints.length; i++) - this._constraints[i].debugRender(batcher); - } - if (this.drawParticles) { - for (var i = 0; i < this.particles.length; i++) { - if (this.particles[i].radius == 0) - batcher.drawPixel(this.particles[i].position, new es.Color(220, 52, 94), 4); - else - batcher.drawCircleLow(this.particles[i].position, this.particles[i].radius, new es.Color(220, 52, 94), 1, 4); - } - } - }; - return Composite; - }()); - es.Composite = Composite; -})(es || (es = {})); -/// -var es; -/// -(function (es) { - var Ball = /** @class */ (function (_super) { - __extends(Ball, _super); - function Ball(position, radius) { - if (radius === void 0) { radius = 10; } - var _this = _super.call(this) || this; - _this.addParticle(new es.Particle(position)).radius = radius; - return _this; - } - return Ball; - }(es.Composite)); - es.Ball = Ball; -})(es || (es = {})); -/// -var es; -/// -(function (es) { - var VerletBox = /** @class */ (function (_super) { - __extends(VerletBox, _super); - function VerletBox(center, width, height, borderStiffness, diagonalStiffness) { - if (borderStiffness === void 0) { borderStiffness = 0.2; } - if (diagonalStiffness === void 0) { diagonalStiffness = 0.5; } - var _this = _super.call(this) || this; - var tl = _this.addParticle(new es.Particle(center.add(new es.Vector2(-width / 2, -height / 2)))); - var tr = _this.addParticle(new es.Particle(center.add(new es.Vector2(width / 2, -height / 2)))); - var br = _this.addParticle(new es.Particle(center.add(new es.Vector2(width / 2, height / 2)))); - var bl = _this.addParticle(new es.Particle(center.add(new es.Vector2(-width / 2, height / 2)))); - _this.addConstraint(new es.DistanceConstraint(tl, tr, borderStiffness)); - _this.addConstraint(new es.DistanceConstraint(tr, br, borderStiffness)); - _this.addConstraint(new es.DistanceConstraint(br, bl, borderStiffness)); - _this.addConstraint(new es.DistanceConstraint(bl, tl, borderStiffness)); - _this.addConstraint(new es.DistanceConstraint(tl, br, diagonalStiffness)) - .setCollidesWithColliders(false); - _this.addConstraint(new es.DistanceConstraint(bl, tr, diagonalStiffness)) - .setCollidesWithColliders(false); - return _this; - } - return VerletBox; - }(es.Composite)); - es.VerletBox = VerletBox; -})(es || (es = {})); -var es; -(function (es) { - var Cloth = /** @class */ (function (_super) { - __extends(Cloth, _super); - function Cloth(topLeftPosition, width, height, segments, stiffness, tearSensitivity, connectHorizontalParticles) { - if (segments === void 0) { segments = 20; } - if (stiffness === void 0) { stiffness = 0.25; } - if (tearSensitivity === void 0) { tearSensitivity = 5; } - if (connectHorizontalParticles === void 0) { connectHorizontalParticles = true; } - var _this = _super.call(this) || this; - var xStride = width / segments; - var yStride = height / segments; - for (var y = 0; y < segments; y++) { - for (var x = 0; x < segments; x++) { - var px = topLeftPosition.x + x * xStride; - var py = topLeftPosition.y + y + yStride; - var particle = _this.addParticle(new es.Particle(new es.Vector2(px, py))); - if (connectHorizontalParticles && x > 0) - _this.addConstraint(new es.DistanceConstraint(_this.particles[y * segments + x], _this.particles[y * segments + x - 1], stiffness)) - .setTearSensitivity(tearSensitivity) - .setCollidesWithColliders(false); - if (y > 0) - _this.addConstraint(new es.DistanceConstraint(_this.particles[y * segments + x], _this.particles[(y - 1) * segments + x], stiffness)) - .setTearSensitivity(tearSensitivity) - .setCollidesWithColliders(false); - if (y == 0) - particle.pin(); - } - } - return _this; - } - return Cloth; - }(es.Composite)); - es.Cloth = Cloth; -})(es || (es = {})); -var es; -(function (es) { - var LineSegments = /** @class */ (function (_super) { - __extends(LineSegments, _super); - function LineSegments(vertices, stiffness) { - var _this = _super.call(this) || this; - for (var i = 0; i < vertices.length; i++) { - var p = new es.Particle(vertices[i]); - _this.addParticle(p); - if (i > 0) - _this.addConstraint(new es.DistanceConstraint(_this.particles[i], _this.particles[i - 1], stiffness)); - } - return _this; - } - LineSegments.prototype.pinParticleAtIndex = function (index) { - this.particles[index].pin(); - return this; - }; - return LineSegments; - }(es.Composite)); - es.LineSegments = LineSegments; -})(es || (es = {})); -var es; -(function (es) { - var Ragdoll = /** @class */ (function (_super) { - __extends(Ragdoll, _super); - function Ragdoll(x, y, bodyHeight) { - var _this = _super.call(this) || this; - var headLength = bodyHeight / 7.5; - var head = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - head.radius = headLength * 0.75; - head.mass = 4; - var shoulder = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - shoulder.mass = 26; - _this.addConstraint(new es.DistanceConstraint(head, shoulder, 1, 5 / 4 * headLength)); - var elbowLeft = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - var elbowRight = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - elbowLeft.mass = 2; - elbowRight.mass = 2; - _this.addConstraint(new es.DistanceConstraint(elbowLeft, shoulder, 1, headLength * 3 / 2)); - _this.addConstraint(new es.DistanceConstraint(elbowRight, shoulder, 1, headLength * 3 / 2)); - var handLeft = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - var handRight = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - handLeft.mass = 2; - handRight.mass = 2; - _this.addConstraint(new es.DistanceConstraint(handLeft, elbowLeft, 1, headLength * 2)); - _this.addConstraint(new es.DistanceConstraint(handRight, elbowRight, 1, headLength * 2)); - var pelvis = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - pelvis.mass = 15; - _this.addConstraint(new es.DistanceConstraint(pelvis, shoulder, 0.8, headLength * 3.5)); - _this.addConstraint(new es.DistanceConstraint(pelvis, head, 0.02, bodyHeight * 2)) - .setCollidesWithColliders(false); - var kneeLeft = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - var kneeRight = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - kneeLeft.mass = 10; - kneeRight.mass = 10; - _this.addConstraint(new es.DistanceConstraint(kneeLeft, pelvis, 1, headLength * 2)); - _this.addConstraint(new es.DistanceConstraint(kneeRight, pelvis, 1, headLength * 2)); - var footLeft = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - var footRight = _this.addParticle(new es.Particle({ x: x + es.RandomUtils.randint(-5, 5), y: y + es.RandomUtils.randint(-5, 5) })); - footLeft.mass = 5; - footRight.mass = 5; - _this.addConstraint(new es.DistanceConstraint(footLeft, kneeLeft, 1, headLength * 2)); - _this.addConstraint(new es.DistanceConstraint(footRight, kneeRight, 1, headLength * 2)); - _this.addConstraint(new es.DistanceConstraint(footLeft, shoulder, 0.001, bodyHeight * 2)) - .setCollidesWithColliders(false); - _this.addConstraint(new es.DistanceConstraint(footLeft, shoulder, 0.001, bodyHeight * 2)) - .setCollidesWithColliders(false); - return _this; - } - return Ragdoll; - }(es.Composite)); - es.Ragdoll = Ragdoll; -})(es || (es = {})); -var es; -(function (es) { - var Tire = /** @class */ (function (_super) { - __extends(Tire, _super); - function Tire(origin, radius, segments, spokeStiffness, treadStiffness) { - if (spokeStiffness === void 0) { spokeStiffness = 1; } - if (treadStiffness === void 0) { treadStiffness = 1; } - var _this = _super.call(this) || this; - var stride = 2 * Math.PI / segments; - for (var i = 0; i < segments; i++) { - var theta = i * stride; - _this.addParticle(new es.Particle(new es.Vector2(origin.x + Math.cos(theta) * radius, origin.y + Math.sin(theta) * radius))); - } - var centerParticle = _this.addParticle(new es.Particle(origin)); - for (var i = 0; i < segments; i++) { - _this.addConstraint(new es.DistanceConstraint(_this.particles[i], _this.particles[(i + 1) % segments], treadStiffness)); - _this.addConstraint(new es.DistanceConstraint(_this.particles[i], centerParticle, spokeStiffness)) - .setCollidesWithColliders(false); - _this.addConstraint(new es.DistanceConstraint(_this.particles[i], _this.particles[(i + 5) % segments], treadStiffness)); - } - return _this; - } - return Tire; - }(es.Composite)); - es.Tire = Tire; -})(es || (es = {})); -var es; -(function (es) { - var Constraint = /** @class */ (function () { - function Constraint() { - this.collidesWithColliders = true; - } - Constraint.prototype.handleCollisions = function (collidesWithLayers) { - }; - Constraint.prototype.debugRender = function (batcher) { - }; - return Constraint; - }()); - es.Constraint = Constraint; -})(es || (es = {})); -/// -var es; -/// -(function (es) { - var AngleConstraint = /** @class */ (function (_super) { - __extends(AngleConstraint, _super); - function AngleConstraint(a, center, c, stiffness) { - var _this = _super.call(this) || this; - _this.stiffness = 0; - _this.angleInRadius = 0; - _this._particleA = a; - _this._centerParticle = center; - _this._particleC = c; - _this.stiffness = stiffness; - _this.collidesWithColliders = false; - _this.angleInRadius = _this.angleBetweenParticles(); - return _this; - } - AngleConstraint.prototype.angleBetweenParticles = function () { - var first = this._particleA.position.sub(this._centerParticle.position); - var second = this._particleC.position.sub(this._centerParticle.position); - return Math.atan2(first.x * second.y - first.y * second.x, first.x * second.x + first.y * second.y); - }; - AngleConstraint.prototype.solve = function () { - var angleBetween = this.angleBetweenParticles(); - var diff = angleBetween - this.angleInRadius; - if (diff <= -Math.PI) - diff += 2 * Math.PI; - else if (diff >= Math.PI) - diff -= 2 * Math.PI; - diff *= this.stiffness; - this._particleA.position = es.MathHelper.rotateAround2(this._particleA.position, this._centerParticle.position, diff); - this._particleC.position = es.MathHelper.rotateAround2(this._particleC.position, this._centerParticle.position, -diff); - this._centerParticle.position = es.MathHelper.rotateAround2(this._centerParticle.position, this._particleA.position, diff); - this._centerParticle.position = es.MathHelper.rotateAround2(this._centerParticle.position, this._particleC.position, -diff); - }; - return AngleConstraint; - }(es.Constraint)); - es.AngleConstraint = AngleConstraint; -})(es || (es = {})); -var es; -(function (es) { - var DistanceConstraint = /** @class */ (function (_super) { - __extends(DistanceConstraint, _super); - function DistanceConstraint(first, second, stiffness, distance) { - if (distance === void 0) { distance = -1; } - var _this = _super.call(this) || this; - _this.stiffness = 0; - _this.restingDistance = 0; - _this.tearSensitivity = Number.POSITIVE_INFINITY; - _this.shouldApproximateCollisionsWithPoints = false; - _this.totalPointsToApproximateCollisionsWith = 5; - DistanceConstraint._polygon.create(2, 1); - _this._particleOne = first; - _this._particleTwo = second; - _this.stiffness = stiffness; - if (distance > -1) - _this.restingDistance = distance; - else - _this.restingDistance = first.position.distance(second.position); - return _this; - } - DistanceConstraint.create = function (a, center, c, stiffness, angleInDegrees) { - var aToCenter = a.position.distance(center.position); - var cToCenter = c.position.distance(center.position); - var distance = Math.sqrt(aToCenter * aToCenter + cToCenter * cToCenter - (2 * aToCenter * cToCenter * Math.cos(angleInDegrees * es.MathHelper.Deg2Rad))); - return new DistanceConstraint(a, c, stiffness, distance); - }; - DistanceConstraint.prototype.setTearSensitivity = function (tearSensitivity) { - this.tearSensitivity = tearSensitivity; - return this; - }; - DistanceConstraint.prototype.setCollidesWithColliders = function (collidesWithColliders) { - this.collidesWithColliders = collidesWithColliders; - return this; - }; - DistanceConstraint.prototype.setShouldApproximateCollisionsWithPoints = function (shouldApproximateCollisionsWithPoints) { - this.shouldApproximateCollisionsWithPoints = shouldApproximateCollisionsWithPoints; - return this; - }; - DistanceConstraint.prototype.solve = function () { - var diff = this._particleOne.position.sub(this._particleTwo.position); - var d = diff.distance(); - var difference = (this.restingDistance - d) / d; - if (d / this.restingDistance > this.tearSensitivity) { - this.composite.removeConstraint(this); - return; - } - var im1 = 1 / this._particleOne.mass; - var im2 = 1 / this._particleTwo.mass; - var scalarP1 = (im1 / (im1 + im2)) * this.stiffness; - var scalarP2 = this.stiffness - scalarP1; - this._particleOne.position = this._particleOne.position.add(diff.scale(scalarP1 * difference)); - this._particleTwo.position = this._particleTwo.position.sub(diff.scale(scalarP2 * difference)); - }; - DistanceConstraint.prototype.handleCollisions = function (collidesWithLayers) { - if (this.shouldApproximateCollisionsWithPoints) { - this.approximateCollisionsWithPoints(collidesWithLayers); - return; - } - var minX = Math.min(this._particleOne.position.x, this._particleTwo.position.x); - var maxX = Math.max(this._particleOne.position.x, this._particleTwo.position.x); - var minY = Math.min(this._particleOne.position.y, this._particleTwo.position.y); - var maxY = Math.max(this._particleOne.position.y, this._particleTwo.position.y); - DistanceConstraint._polygon.bounds = es.Rectangle.fromMinMax(minX, minY, maxX, maxY); - var midPoint = es.Vector2.zero; - this.preparePolygonForCollisionChecks(midPoint); - var colliders = es.Physics.boxcastBroadphase(DistanceConstraint._polygon.bounds, collidesWithLayers); - for (var i = 0; i < colliders.length; i++) { - var collider = colliders[i]; - var result = new es.CollisionResult(); - if (DistanceConstraint._polygon.collidesWithShape(collider.shape, result)) { - this._particleOne.position = this._particleOne.position.sub(result.minimumTranslationVector); - this._particleTwo.position = this._particleTwo.position.sub(result.minimumTranslationVector); - } - } - }; - DistanceConstraint.prototype.approximateCollisionsWithPoints = function (collidesWithLayers) { - var pt; - for (var j = 0; j < this.totalPointsToApproximateCollisionsWith - 1; j++) { - pt = es.Vector2.lerp(this._particleOne.position, this._particleTwo.position, (j + 1) / this.totalPointsToApproximateCollisionsWith); - var collidedCount = es.Physics.overlapCircleAll(pt, 3, es.VerletWorld._colliders, collidesWithLayers); - for (var i = 0; i < collidedCount; i++) { - var collider = es.VerletWorld._colliders[i]; - var collisionResult = new es.CollisionResult(); - if (collider.shape.pointCollidesWithShape(pt, collisionResult)) { - this._particleOne.position = this._particleOne.position.sub(collisionResult.minimumTranslationVector); - this._particleTwo.position = this._particleTwo.position.sub(collisionResult.minimumTranslationVector); - } - } - } - }; - DistanceConstraint.prototype.preparePolygonForCollisionChecks = function (midPoint) { - var tempMidPoint = es.Vector2.lerp(this._particleOne.position, this._particleTwo.position, 0.5); - midPoint.setTo(tempMidPoint.x, tempMidPoint.y); - DistanceConstraint._polygon.position = midPoint; - DistanceConstraint._polygon.points[0] = this._particleOne.position.sub(DistanceConstraint._polygon.position); - DistanceConstraint._polygon.points[1] = this._particleTwo.position.sub(DistanceConstraint._polygon.position); - DistanceConstraint._polygon.recalculateCenterAndEdgeNormals(); - }; - DistanceConstraint.prototype.debugRender = function (batcher) { - batcher.drawLine(this._particleOne.position, this._particleTwo.position, new es.Color(67, 62, 54), 1); - }; - DistanceConstraint._polygon = new es.Polygon([]); - return DistanceConstraint; - }(es.Constraint)); - es.DistanceConstraint = DistanceConstraint; -})(es || (es = {})); -var es; (function (es) { /** * AbstractTweenable作为你可能想做的任何可以执行的自定义类的基础。 @@ -11237,6 +9825,99 @@ var es; es.PropertyTweens = PropertyTweens; })(es || (es = {})); var es; +(function (es) { + var TransformSpringTween = /** @class */ (function (_super) { + __extends(TransformSpringTween, _super); + function TransformSpringTween(transform, targetType, targetValue) { + var _this = _super.call(this) || this; + // 阻尼比(dampingRatio)和角频率(angularFrequency)的配置是公开的,以便于在设计时进行调整 + /** + * 值越低,阻尼越小,值越高,阻尼越大,导致弹簧度越小,应在0.01-1之间,以避免系统不稳定 + */ + _this.dampingRatio = 0.23; + /** + * 角频率为2pi(弧度/秒)意味着振荡在一秒钟内完成一个完整的周期,即1Hz.应小于35左右才能保持稳定角频率 + */ + _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 + }); + /** + * 你可以在任何时候调用setTargetValue来重置目标值到一个新的Vector2。 + * 如果你没有调用start来添加spring tween,它会为你调用 + * @param targetValue + */ + TransformSpringTween.prototype.setTargetValue = function (targetValue) { + this._velocity = es.Vector2.zero; + this._targetValue = targetValue; + if (!this._isCurrentlyManagedByTweenManager) + this.start(); + }; + /** + * lambda应该是振荡幅度减少50%时的理想持续时间 + * @param lambda + */ + 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) { @@ -11581,161 +10262,6 @@ var es; return RectangleTween; }(es.Tween)); es.RectangleTween = RectangleTween; - var ColorTween = /** @class */ (function (_super) { - __extends(ColorTween, _super); - function ColorTween(target, to, duration) { - var _this = _super.call(this) || this; - _this.initialize(target, to, duration); - return _this; - } - ColorTween.create = function () { - return es.TweenManager.cacheColorTweens ? es.Pool.obtain(ColorTween) : new ColorTween(); - }; - ColorTween.prototype.setIsRelative = function () { - this._isRelative = true; - this._toValue.r += this._fromValue.r; - this._toValue.g += this._fromValue.g; - this._toValue.b += this._fromValue.b; - this._toValue.a += this._fromValue.a; - return this; - }; - ColorTween.prototype.updateValue = function () { - this._target.setTweenedValue(es.Lerps.ease(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); - }; - return ColorTween; - }(es.Tween)); - es.ColorTween = ColorTween; -})(es || (es = {})); -/// -var es; -/// -(function (es) { - var RenderableColorTween = /** @class */ (function (_super) { - __extends(RenderableColorTween, _super); - function RenderableColorTween() { - return _super !== null && _super.apply(this, arguments) || this; - } - RenderableColorTween.prototype.setTweenedValue = function (value) { - this._renderable.color = value; - }; - RenderableColorTween.prototype.getTweenedValue = function () { - return this._renderable.color; - }; - RenderableColorTween.prototype.getTargetObject = function () { - return this._renderable; - }; - RenderableColorTween.prototype.updateValue = function () { - this.setTweenedValue(es.Lerps.ease(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); - }; - RenderableColorTween.prototype.setTarget = function (renderable) { - this._renderable = renderable; - }; - RenderableColorTween.prototype.recycleSelf = function () { - if (this._shouldRecycleTween) { - this._renderable = null; - this._target = null; - this._nextTween = null; - } - if (this._shouldRecycleTween && es.TweenManager.cacheColorTweens) { - es.Pool.free(es.ColorTween, this); - } - }; - return RenderableColorTween; - }(es.ColorTween)); - es.RenderableColorTween = RenderableColorTween; -})(es || (es = {})); -var es; -(function (es) { - var TransformSpringTween = /** @class */ (function (_super) { - __extends(TransformSpringTween, _super); - function TransformSpringTween(transform, targetType, targetValue) { - var _this = _super.call(this) || this; - // 阻尼比(dampingRatio)和角频率(angularFrequency)的配置是公开的,以便于在设计时进行调整 - /** - * 值越低,阻尼越小,值越高,阻尼越大,导致弹簧度越小,应在0.01-1之间,以避免系统不稳定 - */ - _this.dampingRatio = 0.23; - /** - * 角频率为2pi(弧度/秒)意味着振荡在一秒钟内完成一个完整的周期,即1Hz.应小于35左右才能保持稳定角频率 - */ - _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 - }); - /** - * 你可以在任何时候调用setTargetValue来重置目标值到一个新的Vector2。 - * 如果你没有调用start来添加spring tween,它会为你调用 - * @param targetValue - */ - TransformSpringTween.prototype.setTargetValue = function (targetValue) { - this._velocity = es.Vector2.zero; - this._targetValue = targetValue; - if (!this._isCurrentlyManagedByTweenManager) - this.start(); - }; - /** - * lambda应该是振荡幅度减少50%时的理想持续时间 - * @param lambda - */ - 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; @@ -12442,10 +10968,6 @@ var es; if (typeof (from) == "number" && typeof (to) == "number") { return from + (to - from) * t; } - if (from instanceof es.Color && to instanceof es.Color) { - var t255 = t * 255; - return new es.Color(from.r + (to.r - from.r) * t255 / 255, from.g + (to.g - from.g) * t255 / 255, from.b + (to.b - from.b) * t255 / 255, from.a + (to.a - from.a) * t255 / 255); - } if (from instanceof es.Rectangle && to instanceof es.Rectangle) { 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)); } @@ -12468,9 +10990,6 @@ var es; if (from instanceof es.Rectangle && to instanceof es.Rectangle) { return this.lerp(from, to, es.EaseHelper.ease(easeType, t, duration)); } - if (from instanceof es.Color && to instanceof es.Color) { - return this.lerp(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)); diff --git a/source/bin/framework.min.js b/source/bin/framework.min.js index 41d106d3..4d0a5a7e 100644 --- a/source/bin/framework.min.js +++ b/source/bin/framework.min.js @@ -1 +1 @@ -window.es={};var __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(r,o){function s(t){try{c(i.next(t))}catch(t){o(t)}}function a(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){t.done?r(t.value):new n(function(e){e(t.value)}).then(s,a)}c((i=i.apply(t,e||[])).next())})},__generator=this&&this.__generator||function(t,e){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,i&&(r=2&o[0]?i.return:o[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,o[1])).done)return r;switch(i=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,i=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=(r=s.trys).length>0&&r[r.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]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(){function e(n,i){void 0===n&&(n=!0),void 0===i&&(i=!0),this._globalManagers=[],this._coroutineManager=new t.CoroutineManager,this._timerManager=new t.TimerManager,this._frameCounterElapsedTime=0,this._frameCounter=0,this._totalMemory=0,e._instance=this,e.emitter=new t.Emitter,e.emitter.addObserver(t.CoreEvents.frameUpdated,this.update,this),e.registerGlobalManager(this._coroutineManager),e.registerGlobalManager(new t.TweenManager),e.registerGlobalManager(this._timerManager),e.entitySystemsEnabled=i,this.debug=n,this.initialize()}return Object.defineProperty(e,"Instance",{get:function(){return this._instance},enumerable:!0,configurable:!0}),Object.defineProperty(e,"scene",{get:function(){return this._instance?this._instance._scene:null},set:function(e){t.Insist.isNotNull(e,"场景不能为空"),null==this._instance._scene?(this._instance._scene=e,this._instance.onSceneChanged(),this._instance._scene.begin()):this._instance._nextScene=e},enumerable:!0,configurable:!0}),e.create=function(e){return void 0===e&&(e=!0),null==this._instance&&(this._instance=new t.Core(e)),this._instance},e.registerGlobalManager=function(t){this._instance._globalManagers.push(t),t.enabled=!0},e.unregisterGlobalManager=function(e){new t.List(this._instance._globalManagers).remove(e),e.enabled=!1},e.getGlobalManager=function(t){for(var n=0,i=e._instance._globalManagers.length;n=1)){var e=window.performance.memory;null!=e&&(this._totalMemory=Number((e.totalJSHeapSize/1048576).toFixed(2))),this._titleMemory&&this._titleMemory(this._totalMemory,this._frameCounter),this._frameCounter=0,this._frameCounterElapsedTime-=1}},e.prototype.onSceneChanged=function(){t.Time.sceneChanged()},e.prototype.initialize=function(){},e.prototype.update=function(n){return void 0===n&&(n=-1),__awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(r){if(e.paused)return[2];if(t.Time.update(n,-1!=n),null!=this._scene){for(i=this._globalManagers.length-1;i>=0;i--)this._globalManagers[i].enabled&&this._globalManagers[i].update();this._scene.update(),null!=this._nextScene&&(this._scene.end(),this._scene=this._nextScene,this._nextScene=null,this.onSceneChanged(),this._scene.begin())}return this.startDebugDraw(),[2]})})},e.paused=!1,e.debugRenderEndabled=!1,e}();t.Core=e}(es||(es={})),function(t){var e;!function(t){t[t.error=0]="error",t[t.warn=1]="warn",t[t.log=2]="log",t[t.info=3]="info",t[t.trace=4]="trace"}(e=t.LogType||(t.LogType={}));var n=function(){function n(){}return n.warnIf=function(t,n){for(var i=[],r=2;r=0;t--){this.transform.getChild(t).entity.destroy()}},n.prototype.detachFromScene=function(){this.scene.entities.remove(this),this.components.deregisterAllComponents();for(var t=0;t0?new e(this.x/t,this.y/t):new e(0,1)},e.prototype.normalizeEqual=function(){var t=this.distance();return t>0?(this.setTo(this.x/t,this.y/t),this):(this.setTo(0,1),this)},e.prototype.magnitude=function(){return this.distance()},e.prototype.distance=function(t){return t||(t=e.zero),Math.sqrt(Math.pow(this.x-t.x,2)+Math.pow(this.y-t.y,2))},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(e,n){var i=e.sub(this),r=n.sub(this);return t.Vector2Ext.angle(i,r)},e.prototype.equals=function(t,e){return void 0===e&&(e=.001),Math.abs(this.x-t.x)<=e&&Math.abs(this.y-t.y)<=e},e.prototype.isValid=function(){return t.MathHelper.isValid(this.x)&&t.MathHelper.isValid(this.y)},e.min=function(t,n){return new e(t.xn.x?t.x:n.x,t.y>n.y?t.y:n.y)},e.hermite=function(n,i,r,o,s){return new e(t.MathHelper.hermite(n.x,i.x,r.x,o.x,s),t.MathHelper.hermite(n.y,i.y,r.y,o.y,s))},e.unsignedAngle=function(e,n,i){void 0===i&&(i=!0),e.normalizeEqual(),n.normalizeEqual();var r=Math.acos(t.MathHelper.clamp(e.dot(n),-1,1))*t.MathHelper.Rad2Deg;return i?Math.round(r):r},e.prototype.clone=function(){return new e(this.x,this.y)},e}();t.Vector2=e}(es||(es={})),function(t){var e=function(){function e(){this._sceneComponents=[],this._renderers=[],this.entities=new t.EntityList(this),this.renderableComponents=new t.RenderableComponentList,this.entityProcessors=new t.EntityProcessorList,this.identifierPool=new t.IdentifierPool,this.initialize()}return e.prototype.initialize=function(){},e.prototype.onStart=function(){},e.prototype.unload=function(){},e.prototype.begin=function(){0==this._renderers.length&&this.addRenderer(new t.DefaultRenderer),t.Physics.reset(),null!=this.entityProcessors&&this.entityProcessors.begin(),this._didSceneBegin=!0,this.onStart()},e.prototype.end=function(){this._didSceneBegin=!1;for(var e=0;e=0;t--)this._sceneComponents[t].enabled&&this._sceneComponents[t].update();null!=this.entityProcessors&&this.entityProcessors.update(),this.entities.update(),null!=this.entityProcessors&&this.entityProcessors.lateUpdate(),this.renderableComponents.updateLists(),this.render()},e.prototype.render=function(){for(var t=0;te.x?-1:1,i=this.position.sub(e).normalize();this.rotation=n*Math.acos(i.dot(t.Vector2.unitY))},i.prototype.setLocalRotation=function(t){return this._localRotation=t,this._localDirty=this._positionDirty=this._localPositionDirty=this._localRotationDirty=this._localScaleDirty=!0,this.setDirty(n.rotationDirty),this},i.prototype.setLocalRotationDegrees=function(e){return this.setLocalRotation(t.MathHelper.toRadians(e))},i.prototype.setScale=function(e){return this._scale=e,null!=this.parent?this.localScale=t.Vector2.divide(e,this.parent._scale):this.localScale=e,this},i.prototype.setLocalScale=function(t){return this._localScale=t,this._localDirty=this._positionDirty=this._localScaleDirty=!0,this.setDirty(n.scaleDirty),this},i.prototype.roundPosition=function(){this.position=t.Vector2Ext.round(this._position)},i.prototype.updateTransform=function(){this.hierarchyDirty!=n.clean&&(null!=this.parent&&this.parent.updateTransform(),this._localDirty&&(this._localPositionDirty&&(t.Matrix2D.createTranslation(this._localPosition.x,this._localPosition.y,this._translationMatrix),this._localPositionDirty=!1),this._localRotationDirty&&(t.Matrix2D.createRotation(this._localRotation,this._rotationMatrix),this._localRotationDirty=!1),this._localScaleDirty&&(t.Matrix2D.createScale(this._localScale.x,this._localScale.y,this._scaleMatrix),this._localScaleDirty=!1),t.Matrix2D.multiply(this._scaleMatrix,this._rotationMatrix,this._localTransform),t.Matrix2D.multiply(this._localTransform,this._translationMatrix,this._localTransform),null==this.parent&&(this._worldTransform=this._localTransform,this._rotation=this._localRotation,this._scale=this._localScale,this._worldInverseDirty=!0),this._localDirty=!1),null!=this.parent&&(t.Matrix2D.multiply(this._localTransform,this.parent._worldTransform,this._worldTransform),this._rotation=this._localRotation+this.parent._rotation,this._scale=this.parent._scale.multiply(this._localScale),this._worldInverseDirty=!0),this._worldToLocalDirty=!0,this._positionDirty=!0,this.hierarchyDirty=n.clean)},i.prototype.setDirty=function(t){if(0==(this.hierarchyDirty&t)){switch(this.hierarchyDirty|=t,t){case n.positionDirty:this.entity.onTransformChanged(e.position);break;case n.rotationDirty:this.entity.onTransformChanged(e.rotation);break;case n.scaleDirty:this.entity.onTransformChanged(e.scale)}for(var i=0;i1e-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.setVelocity=function(t){return this.velocity=t,this},n.prototype.addImpulse=function(e){this.isImmovable||this.velocity.addEqual(e.scale(this._inverseMass*(t.Time.deltaTime*t.Time.deltaTime)*1e5))},n.prototype.onAddedToEntity=function(){this._collider=null;for(var e=0;e0&&(o=t.Vector2.zero);var a=this._friction;return s.lengthSquared()0&&this.collisionState.wasGroundedLastFrame&&(t=this.handleVerticalSlope(t)),0!==t.x&&(t=this.moveHorizontally(t)),0!==t.y&&(t=this.moveVertically(t)),this._player.setPosition(this._player.position.x+t.x,this._player.position.y+t.y),e>0&&(this.velocity.x=t.x/e,this.velocity.y=t.y/e),!this.collisionState.wasGroundedLastFrame&&this.collisionState.below&&(this.collisionState.becameGroundedThisFrame=!0),this._isGoingUpSlope&&(this.velocity.y=0),this._isWarpingToGround||this._triggerHelper.update();for(var n=0;n0&&(this.ignoreOneWayPlatformsTime-=e)},i.prototype.warpToGrounded=function(e){void 0===e&&(e=1e3),this.ignoreOneWayPlatformsTime=0,this._isWarpingToGround=!0;var n=0;do{if(n+=1,this.move(new t.Vector2(0,1),.02),n>e)break}while(!this.isGrounded);this._isWarpingToGround=!1},i.prototype.recalculateDistanceBetweenRays=function(){var t=this._collider.height*Math.abs(this._player.scale.y)-2*this._skinWidth;this._verticalDistanceBetweenRays=t/(this.totalHorizontalRays-1);var e=this._collider.width*Math.abs(this._player.scale.x)-2*this._skinWidth;this._horizontalDistanceBetweenRays=e/(this.totalVerticalRays-1)},i.prototype.primeRaycastOrigins=function(){var e=this._collider.bounds;this._raycastOrigins.topLeft=new t.Vector2(e.x+this._skinWidth,e.y+this._skinWidth),this._raycastOrigins.bottomRight=new t.Vector2(e.right-this._skinWidth,e.bottom-this._skinWidth),this._raycastOrigins.bottomLeft=new t.Vector2(e.x+this._skinWidth,e.bottom-this._skinWidth)},i.prototype.moveHorizontally=function(e){for(var n=e.x>0,i=Math.abs(e.x)+this._skinWidth*this.rayOriginSkinMutiplier,r=n?t.Vector2.right:t.Vector2.left,o=this._raycastOrigins.bottomLeft.y,s=n?this._raycastOrigins.bottomRight.x-this._skinWidth*(this.rayOriginSkinMutiplier-1):this._raycastOrigins.bottomLeft.x+this._skinWidth*(this.rayOriginSkinMutiplier-1),a=0;a0)&&(a&=~this.oneWayPlatformMask);for(var c=0;cthis.jumpingThreshold){var i=this.slopeSpeedMultiplier?this.slopeSpeedMultiplier.lerp(n):1;e.x*=i,e.y=Math.abs(Math.tan(n*t.MathHelper.Deg2Rad)*e.x);var r=e.x>0,o=r?this._raycastOrigins.bottomRight:this._raycastOrigins.bottomLeft,s=null;(s=this.supportSlopedOneWayPlatforms&&this.collisionState.wasGroundedLastFrame?t.Physics.linecast(o,o.add(e),this.platformMask,this.ignoredColliders):t.Physics.linecast(o,o.add(e),this.platformMask&~this.oneWayPlatformMask,this.ignoredColliders)).collider&&(e.x=s.point.x-o.x,e.y=s.point.y-o.y,r?e.x-=this._skinWidth:e.x+=this._skinWidth),this._isGoingUpSlope=!0,this.collisionState.below=!0}}else e.x=0;return!0},i}();t.CharacterController=i}(es||(es={})),function(t){var e=function(){function e(){}return e.getITriggerListener=function(e,n){var i,r;try{for(var o=__values(e.components._components),s=o.next();!s.done;s=o.next()){var a=s.value;t.isITriggerListener(a)&&n.push(a)}}catch(t){i={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}for(var c in e.components._componentsToAdd){a=e.components._componentsToAdd[c];t.isITriggerListener(a)&&n.push(a)}return n},e}();t.TriggerListenerHelper=e,t.isITriggerListener=function(t){return void 0!==t.onTriggerEnter}}(es||(es={})),function(t){var e=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return __extends(n,e),n.prototype.onAddedToEntity=function(){this._triggerHelper=new t.ColliderTriggerHelper(this.entity)},n.prototype.calculateMovement=function(e,n){for(var i,r,o=null,s=0;s0)for(var r=0;rn;n++){var i=t[n];this.processDelta(i,this.acc);var r=this.getRemainingDelay(i);r<=0?this.processExpired(i):this.offerDelay(r)}this.acc=0}else this.stop()},n.prototype.checkProcessing=function(){return!!this.running&&(this.acc+=t.Time.deltaTime,this.acc>=this.delay)},n.prototype.offerDelay=function(t){this.running?this.delay=Math.min(this.delay,t):(this.running=!0,this.delay=t)},n.prototype.getInitialTimeDelay=function(){return this.delay},n.prototype.getRemainingTimeUntilProcessing=function(){return this.running?this.delay-this.acc:0},n.prototype.isRunning=function(){return this.running},n.prototype.stop=function(){this.running=!1,this.acc=0},n}(t.EntitySystem);t.DelayedIteratingSystem=e}(es||(es={})),function(t){var e=function(t){function e(e){return t.call(this,e)||this}return __extends(e,t),e.prototype.lateProcessEntity=function(t){},e.prototype.process=function(t){if(0!=t.length)for(var e=0,n=t.length;e=this.interval&&(this.acc-=this.interval,this.intervalDelta=this.acc-this.intervalDelta,!0)},n.prototype.getIntervalDelta=function(){return this.interval+this.intervalDelta},n}(t.EntitySystem);t.IntervalSystem=e}(es||(es={})),function(t){var e=function(t){function e(e,n){return t.call(this,e,n)||this}return __extends(e,t),e.prototype.process=function(t){var e=this;t.forEach(function(t){return e.processEntity(t)})},e}(t.IntervalSystem);t.IntervalIteratingSystem=e}(es||(es={})),function(es){var JobSystem=function(_super){function JobSystem(t,e){var n=_super.call(this,t)||this;n._threads=e,n._jobs=new Array(e);for(var i=0;it.length&&(s=t.length);var a=o._jobs[n];if(a.set(t,r,s,o._executeStr,o),r!=s){var c=es.WorkerUtils.makeWorker(o.queueOnThread);es.WorkerUtils.workerMessage(c)(a).then(function(t){var n=t;e.resetJob(n),c.terminate()}).catch(function(t){a.err=t,c.terminate()})}},o=this,s=0;s-1?eval("(function(){return "+v+" })()"):v}),i=job.from;i0)for(var t=0,e=this._components.length;t0)for(var e=0,n=this._components.length;e0)for(var e=0,n=this._components.length;e0){for(var e=function(t,e){var i=n._componentsToRemoveList[t];n.handleRemove(i);var r=n._components.findIndex(function(t){return t.id==i.id});-1!=r&&n._components.splice(r,1),n.removeComponentsByType(i)},n=this,i=0,r=this._componentsToRemoveList.length;i0){for(i=0,r=this._componentsToAddList.length;i0){for(i=0,r=this._tempBufferList.length;i0){var n=this._updatableComponents.findIndex(function(t){return t.id==e.id});-1!=n&&this._updatableComponents.splice(n,1)}this.decreaseBits(e),this._entity.scene.entityProcessors.onComponentRemoved(this._entity),e.onRemovedFromEntity(),e.entity=null},e.prototype.removeComponentsByType=function(e){var n=this.componentsByType.get(t.TypeUtils.getType(e)),i=n.findIndex(function(t){return t.id==e.id});-1!=i&&n.splice(i,1)},e.prototype.addComponentsByType=function(e){var n=this.componentsByType.get(t.TypeUtils.getType(e));n||(n=[]),n.push(e),this.componentsByType.set(t.TypeUtils.getType(e),n)},e.prototype.removeComponentsToAddByType=function(e){var n=this.componentsToAddByType.get(t.TypeUtils.getType(e)),i=n.findIndex(function(t){return t.id==e.id});-1!=i&&n.splice(i,1)},e.prototype.addComponentsToAddByType=function(e){var n=this.componentsToAddByType.get(t.TypeUtils.getType(e));n||(n=[]),n.push(e),this.componentsToAddByType.set(t.TypeUtils.getType(e),n)},e.prototype.getComponent=function(t,e){var n=this.componentsByType.get(t);if(n&&n.length>0)return n[0];if(!e){var i=this.componentsToAddByType.get(t);if(i&&i.length>0)return i[0]}return null},e.prototype.getComponents=function(t,e){e||(e=[]);var n=this.componentsByType.get(t);n&&(e=e.concat(n));var i=this.componentsToAddByType.get(t);return i&&(e=e.concat(i)),e},e.prototype.update=function(){if(this.updateLists(),this._updatableComponents.length>0)for(var t=0,e=this._updatableComponents.length;t0)for(var e=0,n=this._components.length;e0)for(e=0,n=this._componentsToAddList.length;e0)for(var t=0,e=this._components.length;t0)for(var t=0,e=this._components.length;t0){for(var t=function(t,n){var i=e._entitiesToRemoveList[t];e.removeFromTagList(i);var r=e._entities.findIndex(function(t){return t.id==i.id});-1!=r&&e._entities.splice(r,1),i.onRemovedFromScene(),i.scene=null,e.scene.entityProcessors.onEntityRemoved(i)},e=this,n=0,i=this._entitiesToRemoveList.length;n0){for(n=0,i=this._entitiesToAddedList.length;n0)for(var e=0,n=this._entities.length;e0)for(e=0,n=this._entitiesToAddedList.length;e0)for(var e=0,n=this._entities.length;e0)try{for(var s=__values(r),a=s.next();!a.done;a=s.next()){var c=a.value;o.push(c)}}catch(t){n={error:t}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(n)throw n.error}}return o},e.prototype.entityWithTag=function(t){var e,n,i=this.getTagList(t);if(i.size>0)try{for(var r=__values(i),o=r.next();!o.done;o=r.next()){return o.value}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},e.prototype.findComponentOfType=function(t){if(this._entities.length>0)for(var e=0,n=this._entities.length;e0)for(e=0;e0)for(var i=0,r=this._entities.length;i0)for(i=0,r=this._entitiesToAddedList.length;i0)for(var i=0,r=this._entities.length;i0)for(var s=0,a=t.length;s0)for(i=0,r=this._entitiesToAddedList.length;i0)for(s=0,a=t.length;s=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;i0?this.ids.removeLast():this.nextAvailableId_++},e.prototype.checkIn=function(t){this.ids.add(t)},e}();t.IdentifierPool=e}(es||(es={})),function(t){var e=function(){function e(){this.allSet=[],this.exclusionSet=[],this.oneSet=[]}return e.empty=function(){return new e},e.prototype.getAllSet=function(){return this.allSet},e.prototype.getExclusionSet=function(){return this.exclusionSet},e.prototype.getOneSet=function(){return this.oneSet},e.prototype.isInterestedEntity=function(t){return this.isInterested(t.componentBits)},e.prototype.isInterested=function(e){if(0!=this.allSet.length)for(var n=0,i=this.allSet.length;n0)for(var t=0,e=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}();t.StringUtils=e}(es||(es={})),function(t){var e=function(){function t(){}return t.update=function(t,e){var n=0;e?n=t:(-1==t&&(t=Date.now()),-1==this._lastTime&&(this._lastTime=t),n=(t-this._lastTime)/1e3),n>this.maxDeltaTime&&(n=this.maxDeltaTime),this.totalTime+=n,this.deltaTime=n*this.timeScale,this.unscaledDeltaTime=n,this.timeSinceSceneLoad+=n,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.maxDeltaTime=Number.MAX_VALUE,t.frameCount=0,t.timeSinceSceneLoad=0,t._lastTime=-1,t}();t.Time=e}(es||(es={}));var 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;o1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t},t.fromRGBA=function(e,n,i,r){e/=255,n/=255,i/=255;var o=Math.max(e,n,i),s=Math.min(e,n,i),a=(o+s)/2,c=a,h=a;if(o===s)a=c=0;else{var u=o-s;switch(c=h>.5?u/(2-o-s):u/(o+s),o){case e:a=(n-i)/u+(n=1?(e=1,n.range=this._points.length-4):(e=t.MathHelper.clamp01(e)*this._curveCount,n.range=Math.floor(e),e-=n.range,n.range*=3),n.time=e,n},e.prototype.setControlPoint=function(t,e){if(t%3==0){var n=e.sub(this._points[t]);t>0&&this._points[t-1].addEqual(n),t+1-Math.PI&&t<=Math.PI?t:(t%=2*Math.PI)<=-Math.PI?t+2*Math.PI:t>Math.PI?t-2*Math.PI:t},e.isPowerOfTwo=function(t){return t>0&&t%(t-1)==0},e.lerp=function(t,e,n){return t+(e-t)*this.clamp01(n)},e.betterLerp=function(t,n,i,r){return Math.abs(t-n)180&&(i-=360),t+i*this.clamp01(n)},e.lerpAngleRadians=function(t,e,n){var i=this.repeat(e-t,2*Math.PI);return i>Math.PI&&(i-=2*Math.PI),t+i*this.clamp01(n)},e.pingPong=function(t,e){return t=this.repeat(t,2*e),e-Math.abs(t-e)},e.signThreshold=function(t,e){return Math.abs(t)>=e?Math.sign(t):0},e.inverseLerp=function(t,e,n){if(te)return 1}else{if(nt)return 0}return(n-t)/(e-t)},e.lerpPrecise=function(t,e,n){return(1-n)*t+e*n},e.clamp=function(t,e,n){return tn?n:t},e.snap=function(t,e){return Math.round(t/e)*e},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.isOdd=function(t){return t%2!=0},e.roundWithRoundedAmount=function(t,e){var n=Math.round(t);return e.value=t-n*Math.round(t/n),n},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.decrementWithWrap=function(t,e){return--t<0?e-1:t},e.hypotenuse=function(t,e){return Math.sqrt(t*t+e*e)},e.closestPowerOfTwoGreaterThan=function(t){return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,(t|=t>>16)+1},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.between=function(t,e,n){return t>=e&&t<=n},e.deltaAngleRadians=function(t,e){var n=this.repeat(e-t,2*Math.PI);return n>Math.PI&&(n-=2*Math.PI),n},e.repeat=function(t,e){return t-Math.floor(t/e)*e},e.floorToInt=function(t){return Math.trunc(Math.floor(t))},e.rotateAround=function(e,n){var i=t.Time.totalTime*n,r=Math.cos(i),o=Math.sin(i);return new t.Vector2(e.x+r,e.y+o)},e.rotateAround2=function(e,n,i){i=this.toRadians(i);var r=Math.cos(i),o=Math.sin(i),s=r*(e.x-n.x)-o*(e.y-n.y)+n.x,a=o*(e.x-n.x)+r*(e.y-n.y)+n.y;return new t.Vector2(s,a)},e.pointOnCircle=function(e,n,i){var r=this.toRadians(i);return new t.Vector2(Math.cos(r)*n+e.x,Math.sin(r)*n+e.y)},e.pointOnCircleRadians=function(e,n,i){return new t.Vector2(Math.cos(i)*n+e.x,Math.sin(i)*n+e.y)},e.lissajou=function(e,n,i,r,o){void 0===e&&(e=2),void 0===n&&(n=3),void 0===i&&(i=1),void 0===r&&(r=1),void 0===o&&(o=0);var s=Math.sin(t.Time.totalTime*e+o)*i,a=Math.cos(t.Time.totalTime*n)*r;return new t.Vector2(s,a)},e.lissajouDamped=function(e,n,i,r,o,s,a){void 0===e&&(e=2),void 0===n&&(n=3),void 0===i&&(i=1),void 0===r&&(r=1),void 0===o&&(o=.5),void 0===s&&(s=0),void 0===a&&(a=5);var c=this.pingPong(t.Time.totalTime,a),h=Math.pow(Math.E,-s*c),u=h*Math.sin(t.Time.totalTime*e+o)*i,l=h*Math.cos(t.Time.totalTime*n)*r;return new t.Vector2(u,l)},e.hermite=function(t,e,n,i,r){return 0==r?t:1==r?n:(2*t-2*n+i+e)*(r*r*r)+(3*n-3*t-2*e-i)*(r*r)+e*r+t},e.isValid=function(t){return!Number.isNaN(t)&&t!==1/0},e.smoothDamp=function(t,e,n,i,r,o){var s=2/(i=Math.max(1e-4,i)),a=s*o,c=1/(1+(a+(a*a*.48+a*(a*a)*.235))),h=t-e,u=e,l=r*i,p=(n+s*(h=this.clamp(h,-1*l,l)))*o;n=(n-s*p)*c;var f=(e=t-h)+(h+p)*c;return u-t>0==f>u&&(n=((f=u)-u)/o),{value:f,currentVelocity:n}},e.smoothDampVector=function(e,n,i,r,o,s){var a=t.Vector2.zero,c=this.smoothDamp(e.x,n.x,i.x,r,o,s);a.x=c.value,i.x=c.currentVelocity;var h=this.smoothDamp(e.y,n.y,i.y,r,o,s);return a.y=h.value,i.y=h.currentVelocity,a},e.mapMinMax=function(t,n,i,r,o){return r+(e.clamp(t,n,i)-n)*(o-r)/(i-n)},e.fromAngle=function(e){return new t.Vector2(Math.cos(e),Math.sin(e)).normalizeEqual()},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(t,e,n,i,r,o,s,a,c,h,u,l,p,f,d,m){this.m11=t,this.m12=e,this.m13=n,this.m14=i,this.m21=r,this.m22=o,this.m23=s,this.m24=a,this.m31=c,this.m32=h,this.m33=u,this.m34=l,this.m41=p,this.m42=f,this.m43=d,this.m44=m}return Object.defineProperty(t,"Identity",{get:function(){return this.identity},enumerable:!0,configurable:!0}),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.createTranslation=function(t,e){e.m11=1,e.m12=0,e.m13=0,e.m14=0,e.m21=0,e.m22=1,e.m23=0,e.m24=0,e.m31=0,e.m32=0,e.m33=1,e.m34=0,e.m41=t.x,e.m42=t.y,e.m43=0,e.m44=1},t.createRotationZ=function(e,n){n=t.Identity;var i=Math.cos(e),r=Math.sin(e);n.m11=i,n.m12=r,n.m21=-r,n.m22=i},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.identity=new t(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),t}();t.Matrix=e}(es||(es={})),function(t){var e=function(){function e(){this.m11=0,this.m12=0,this.m21=0,this.m22=0,this.m31=0,this.m32=0}return Object.defineProperty(e,"identity",{get:function(){return(new e).setIdentity()},enumerable:!0,configurable:!0}),e.prototype.setIdentity=function(){return this.setValues(1,0,0,1,0,0)},e.prototype.setValues=function(t,e,n,i,r,o){return this.m11=t,this.m12=e,this.m21=n,this.m22=i,this.m31=r,this.m32=o,this},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,e){e.setIdentity();var n=Math.cos(t),i=Math.sin(t);e.m11=n,e.m12=i,e.m21=-1*i,e.m22=n},e.createRotationOut=function(t,e){var n=Math.cos(t),i=Math.sin(t);e.m11=n,e.m12=i,e.m21=-i,e.m22=n},e.createScale=function(t,e,n){n.m11=t,n.m12=0,n.m21=0,n.m22=e,n.m31=0,n.m32=0},e.createScaleOut=function(t,e,n){n.m11=t,n.m12=0,n.m21=0,n.m22=e,n.m31=0,n.m32=0},e.createTranslation=function(t,e,n){return n.m11=1,n.m12=0,n.m21=0,n.m22=1,n.m31=t,n.m32=e,n},e.createTranslationOut=function(t,e){e.m11=1,e.m12=0,e.m21=0,e.m22=1,e.m31=t.x,e.m32=t.y},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.multiply=function(t,e,n){var i=t.m11*e.m11+t.m12*e.m21,r=t.m11*e.m12+t.m12*e.m22,o=t.m21*e.m11+t.m22*e.m21,s=t.m21*e.m12+t.m22*e.m22,a=t.m31*e.m11+t.m32*e.m21+e.m31,c=t.m31*e.m12+t.m32*e.m22+e.m32;n.m11=i,n.m12=r,n.m21=o,n.m22=s,n.m31=a,n.m32=c},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=new e;return e.createTranslation(n,i,r),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(e,n,i,r){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),void 0===r&&(r=0),this.x=0,this.y=0,this.width=0,this.height=0,this._tempMat=new t.Matrix2D,this._transformMat=new t.Matrix2D,this.x=e,this.y=n,this.width=i,this.height=r}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 e}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.distance=Math.max(r,e.distance),n=Math.min(o,n),e.distance>n)return e}if(Math.abs(t.direction.y)<1e-6){if(t.start.ythis.y+this.height)return e}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.distance=Math.max(c,e.distance),n=Math.max(h,n),e.distance>n)return e}return e.intersected=!0,e},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 Math.trunc(this.x)^Math.trunc(this.y)^Math.trunc(this.width)^Math.trunc(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.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.PairSet,this._previousTriggerIntersections=new t.PairSet,this._tempTriggerList=[],this._entity=e}return e.prototype.update=function(){for(var e,n,i=[],r=this.getColliders(),o=0;o=t.Collider.lateSortOrder?i.push(u):this.notifyTriggerListeners(u,!0)),this._activeTriggerIntersections.add(u)}}try{for(var l=__values(i),p=l.next();!p.done;p=l.next()){u=p.value;this.notifyTriggerListeners(u,!0)}}catch(t){e={error:t}}finally{try{p&&!p.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}this.checkForExitedColliders()},e.prototype.getColliders=function(){for(var e=[],n=0;n1)return!1;var h=(a.x*r.y-a.y*r.x)/s;return!(h<0||h>1)},n.lineToLineIntersection=function(e,n,i,r,o){void 0===o&&(o=t.Vector2.zero),o.x=0,o.y=0;var s=n.sub(e),a=r.sub(i),c=s.x*a.y-s.y*a.x;if(0==c)return!1;var h=i.sub(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=e.add(s.scale(u));return o.x=p.x,o.y=p.y,!0},n.closestPointOnLine=function(e,n,i){var r=n.sub(e),o=i.sub(e).dot(r)/r.dot(r);return o=t.MathHelper.clamp(o,0,1),e.add(r.scale(o))},n.circleToCircle=function(e,n,i,r){return t.Vector2.sqrDistance(e,i)<(n+r)*(n+r)},n.circleToLine=function(e,n,i,r){return t.Vector2.sqrDistance(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.setAllValues=function(t,e,n,i,r){this.collider=t,this.fraction=e,this.distance=n,this.point=i,this.normal=r},e.prototype.setValues=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.clone=function(){var t=new e;return t.setAllValues(this.collider,this.fraction,this.distance,this.point,this.normal),t},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.debugDraw=function(t){this.debugRender&&this._spatialHash.debugDraw(t)},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){return void 0===i&&(i=this.allLayers),this._spatialHash.overlapCircle(t,e,n,i)},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;return this._spatialHash.aabbBroadphase(n,t,e)},e.boxcastBroadphaseExcludingSelfDelta=function(t,n,i,r){void 0===r&&(r=e.allLayers);var o=t.bounds.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,r){return void 0===i&&(i=this.allLayers),void 0===r&&(r=null),this._hitArray[0].reset(),this.linecastAll(t,n,this._hitArray,i),this._hitArray[0].reset(),e.linecastAll(t,n,this._hitArray,i,r),this._hitArray[0].clone()},e.linecastAll=function(t,e,n,i,r){return void 0===i&&(i=this.allLayers),void 0===r&&(r=null),this._spatialHash.linecast(t,e,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.debugRender=!1,e._hitArray=[new t.RaycastHit],e._colliderArray=[null],e}();t.Physics=e}(es||(es={})),function(t){var e=function(){function t(t,e){this._start=t.clone(),this._end=e.clone(),this._direction=this._end.sub(this._start)}return Object.defineProperty(t.prototype,"start",{get:function(){return this._start},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"direction",{get:function(){return this._direction},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"end",{get:function(){return this._end},enumerable:!0,configurable:!0}),t}();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(e){for(var n=e.registeredPhysicsBounds.clone(),i=this.cellCoords(n.x,n.y),r=this.cellCoords(n.right,n.bottom),o=i.x;o<=r.x;o++)for(var s=i.y;s<=r.y;s++){var a=this.cellAtPosition(o,s);t.Insist.isNotNull(a,"从不存在碰撞器的单元格中移除碰撞器: ["+e+"]"),null!=a&&new t.List(a).remove(e)}},e.prototype.removeWithBruteForce=function(t){this._cellDict.remove(t)},e.prototype.clear=function(){this._cellDict.clear()},e.prototype.debugDraw=function(t){for(var e=this.gridBounds.x;e<=this.gridBounds.right;e++)for(var n=this.gridBounds.y;n<=this.gridBounds.bottom;n++){var i=this.cellAtPosition(e,n);null!=i&&i.length>0&&this.debugDrawCellDetails(e,n,t)}},e.prototype.debugDrawCellDetails=function(e,n,i){void 0===i&&(i=.5),t.Graphics.instance.batcher.drawHollowRect(e*this._cellSize,n*this._cellSize,this._cellSize,this._cellSize,new t.Color(255,0,0),i),t.Graphics.instance.batcher.end()},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(c)for(var h=0;h=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;ri&&(i=o,n=r)}return t[n]},n.getClosestPointOnPolygonToPoint=function(e,n){for(var i={distanceSquared:Number.MAX_VALUE,edgeNormal:t.Vector2.zero,closestPoint:t.Vector2.zero},r=0,o=0;ot.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.ShapeCollisionsPoint.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 c,h=s.start.add(s.direction.scale(r)),u=0;h.xn.bounds.right&&(u|=1),h.yn.bounds.bottom&&(u|=2);var l=c+u;return 3==l&&console.log("m == 3. corner "+t.Time.frameCount),!0},e.corner=function(e,n){var i=t.Vector2.zero;return i.x=0==(1&n)?e.right:e.left,i.y=0==(1&n)?e.bottom:e.top,i},e.testCircleBox=function(t,e,n){var i=e.bounds.getClosestPointOnRectangleToPoint(t.position).sub(t.position);return i.dot(i)<=t.radius*t.radius},e}();t.RealtimeCollisions=e}(es||(es={})),function(t){var e=function(){function e(){}return e.boxToBox=function(e,n,i){var r=this.minkowskiDifference(e,n);return!!r.contains(0,0)&&(i.minimumTranslationVector=r.getClosestPointOnBoundsToOrigin(),!i.minimumTranslationVector.equals(t.Vector2.zero)&&(i.normal=i.minimumTranslationVector.scale(-1),i.normal=i.normal.normalize(),!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,-s.y),r.normal=r.normal.normalize(),r.distance=0,r.fraction=0,!0)}var a=new t.Ray2D(t.Vector2.zero,i.scale(-1)),c=o.rayIntersects(a);return!!(c.intersected&&c.distance<=1)&&(r.fraction=c.distance,r.distance=i.magnitude()*c.distance,r.normal=i.scale(-1),r.normal=r.normal.normalize(),r.centroid=e.bounds.center.add(i.scale(c.distance)),!0)},e.minkowskiDifference=function(e,n){var i=e.position.sub(e.bounds.center),r=e.bounds.location.add(i.sub(n.bounds.max)),o=e.bounds.size.add(n.bounds.size);return new t.Rectangle(r.x,r.y,o.x,o.y)},e}();t.ShapeCollisionsBox=e}(es||(es={})),function(t){var e=function(){function e(){}return e.circleToCircleCast=function(e,n,i,r){var o=e.position.add(i),s=this.closestPointOnLine(e.position,o,n.position),a=t.Vector2.sqrDistance(n.position,s),c=(e.radius+n.radius)*(e.radius+n.radius);if(a<=c){var h=i.normalize();s===o&&(o=e.position.add(i.add(h.scale(n.radius))),s=this.closestPointOnLine(e.position,o,n.position),a=t.Vector2.sqrDistance(n.position,s));var u=Math.sqrt(c-a);return r.centroid=s.sub(h.scale(u)),r.normal=r.centroid.sub(n.position).normalize(),r.fraction=(r.centroid.x-e.position.x)/i.x,r.distance=t.Vector2.distance(e.position,r.centroid),r.point=n.position.add(r.normal.scale(n.radius)),!0}return!1},e.circleToCircle=function(e,n,i){void 0===i&&(i=new t.CollisionResult);var r=t.Vector2.sqrDistance(e.position,n.position),o=e.radius+n.radius;if(re.radius*e.radius&&!a)return!1;if(a)s=i.normal.scale(Math.sqrt(o.distanceSquared)-e.radius);else if(0===o.distanceSquared)s=i.normal.scale(e.radius);else{var c=Math.sqrt(o.distanceSquared);s=r.sub(o.closestPoint).scale((e.radius-c)/c*-1)}return i.minimumTranslationVector=s,i.point=o.closestPoint.add(n.position),!0},e.closestPointOnLine=function(e,n,i){var r=n.sub(e),o=i.sub(e).dot(r)/r.dot(r);return o=t.MathHelper.clamp(o,0,1),e.add(r.scaleEqual(o))},e}();t.ShapeCollisionsCircle=e}(es||(es={})),function(t){var e=function(){function e(){}return e.lineToPoly=function(n,i,r,o){void 0===o&&(o=new t.RaycastHit);for(var s=t.Vector2.zero,a=t.Vector2.zero,c=Number.MAX_VALUE,h=!1,u=r.points.length-1,l=0;l1)return!1;var u=(c.x*o.y-c.y*o.x)/a;if(u<0||u>1)return!1;var l=t.add(o.scale(h));return r.x=l.x,r.y=l.y,!0},e.lineToCircle=function(e,n,i,r){var o=t.Vector2.distance(e,n),s=t.Vector2.divideScaler(n.sub(e),o),a=e.sub(i.position),c=a.dot(s),h=a.dot(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=e.add(s.scale(r.fraction)),r.distance=t.Vector2.distance(e,r.point),r.normal=r.point.sub(i.position).normalize(),r.fraction=r.distance/o,!0)},e}();t.ShapeCollisionsLine=e}(es||(es={})),function(t){var e=function(){function e(){}return e.pointToCircle=function(e,n,i){var r=t.Vector2.sqrDistance(e,n.position),o=1+n.radius;if(r0&&(o=!1),!o)return!1;(p=Math.abs(p))i.max&&(i.max=n);return i},e.intervalDistance=function(t,e,n,i){return t=0;e--){for(var n=this._composites[e],i=0;in.height?e.y=n.height:e.yn.width&&(e.x=n.width)):(e.yn.height-t.radius&&(e.y=2*(n.height-t.radius)-e.y),e.x>n.width-t.radius&&(e.x=2*(n.width-t.radius)-e.x),e.x=0;t--)this._constraints[t].solve()},e.prototype.updateParticles=function(t,e){for(var n=0;n=0;t--)this._constraints[t].collidesWithColliders&&this._constraints[t].handleCollisions(this.collidesWithLayers)},e.prototype.debugRender=function(e){if(this.drawConstraints)for(var n=0;n0&&h.addConstraint(new t.DistanceConstraint(h.particles[p*o+f],h.particles[p*o+f-1],s)).setTearSensitivity(a).setCollidesWithColliders(!1),p>0&&h.addConstraint(new t.DistanceConstraint(h.particles[p*o+f],h.particles[(p-1)*o+f],s)).setTearSensitivity(a).setCollidesWithColliders(!1),0==p&&y.pin()}return h}return __extends(n,e),n}(t.Composite);t.Cloth=e}(es||(es={})),function(t){var e=function(e){function n(n,i){for(var r=e.call(this)||this,o=0;o0&&r.addConstraint(new t.DistanceConstraint(r.particles[o],r.particles[o-1],i))}return r}return __extends(n,e),n.prototype.pinParticleAtIndex=function(t){return this.particles[t].pin(),this},n}(t.Composite);t.LineSegments=e}(es||(es={})),function(t){var e=function(e){function n(n,i,r){var o=e.call(this)||this,s=r/7.5,a=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));a.radius=.75*s,a.mass=4;var c=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));c.mass=26,o.addConstraint(new t.DistanceConstraint(a,c,1,5/4*s));var h=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)})),u=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));h.mass=2,u.mass=2,o.addConstraint(new t.DistanceConstraint(h,c,1,3*s/2)),o.addConstraint(new t.DistanceConstraint(u,c,1,3*s/2));var l=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)})),p=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));l.mass=2,p.mass=2,o.addConstraint(new t.DistanceConstraint(l,h,1,2*s)),o.addConstraint(new t.DistanceConstraint(p,u,1,2*s));var f=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));f.mass=15,o.addConstraint(new t.DistanceConstraint(f,c,.8,3.5*s)),o.addConstraint(new t.DistanceConstraint(f,a,.02,2*r)).setCollidesWithColliders(!1);var d=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)})),m=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));d.mass=10,m.mass=10,o.addConstraint(new t.DistanceConstraint(d,f,1,2*s)),o.addConstraint(new t.DistanceConstraint(m,f,1,2*s));var y=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)})),g=o.addParticle(new t.Particle({x:n+t.RandomUtils.randint(-5,5),y:i+t.RandomUtils.randint(-5,5)}));return y.mass=5,g.mass=5,o.addConstraint(new t.DistanceConstraint(y,d,1,2*s)),o.addConstraint(new t.DistanceConstraint(g,m,1,2*s)),o.addConstraint(new t.DistanceConstraint(y,c,.001,2*r)).setCollidesWithColliders(!1),o.addConstraint(new t.DistanceConstraint(y,c,.001,2*r)).setCollidesWithColliders(!1),o}return __extends(n,e),n}(t.Composite);t.Ragdoll=e}(es||(es={})),function(t){var e=function(e){function n(n,i,r,o,s){void 0===o&&(o=1),void 0===s&&(s=1);for(var a=e.call(this)||this,c=2*Math.PI/r,h=0;h=Math.PI&&(e-=2*Math.PI),e*=this.stiffness,this._particleA.position=t.MathHelper.rotateAround2(this._particleA.position,this._centerParticle.position,e),this._particleC.position=t.MathHelper.rotateAround2(this._particleC.position,this._centerParticle.position,-e),this._centerParticle.position=t.MathHelper.rotateAround2(this._centerParticle.position,this._particleA.position,e),this._centerParticle.position=t.MathHelper.rotateAround2(this._centerParticle.position,this._particleC.position,-e)},n}(t.Constraint);t.AngleConstraint=e}(es||(es={})),function(t){var e=function(e){function n(t,i,r,o){void 0===o&&(o=-1);var s=e.call(this)||this;return s.stiffness=0,s.restingDistance=0,s.tearSensitivity=Number.POSITIVE_INFINITY,s.shouldApproximateCollisionsWithPoints=!1,s.totalPointsToApproximateCollisionsWith=5,n._polygon.create(2,1),s._particleOne=t,s._particleTwo=i,s.stiffness=r,s.restingDistance=o>-1?o:t.position.distance(i.position),s}return __extends(n,e),n.create=function(e,i,r,o,s){var a=e.position.distance(i.position),c=r.position.distance(i.position);return new n(e,r,o,Math.sqrt(a*a+c*c-2*a*c*Math.cos(s*t.MathHelper.Deg2Rad)))},n.prototype.setTearSensitivity=function(t){return this.tearSensitivity=t,this},n.prototype.setCollidesWithColliders=function(t){return this.collidesWithColliders=t,this},n.prototype.setShouldApproximateCollisionsWithPoints=function(t){return this.shouldApproximateCollisionsWithPoints=t,this},n.prototype.solve=function(){var t=this._particleOne.position.sub(this._particleTwo.position),e=t.distance(),n=(this.restingDistance-e)/e;if(e/this.restingDistance>this.tearSensitivity)this.composite.removeConstraint(this);else{var i=1/this._particleOne.mass,r=i/(i+1/this._particleTwo.mass)*this.stiffness,o=this.stiffness-r;this._particleOne.position=this._particleOne.position.add(t.scale(r*n)),this._particleTwo.position=this._particleTwo.position.sub(t.scale(o*n))}},n.prototype.handleCollisions=function(e){if(this.shouldApproximateCollisionsWithPoints)this.approximateCollisionsWithPoints(e);else{var i=Math.min(this._particleOne.position.x,this._particleTwo.position.x),r=Math.max(this._particleOne.position.x,this._particleTwo.position.x),o=Math.min(this._particleOne.position.y,this._particleTwo.position.y),s=Math.max(this._particleOne.position.y,this._particleTwo.position.y);n._polygon.bounds=t.Rectangle.fromMinMax(i,o,r,s);var a=t.Vector2.zero;this.preparePolygonForCollisionChecks(a);for(var c=t.Physics.boxcastBroadphase(n._polygon.bounds,e),h=0;h=this._duration?(i=this._elapsedTime-this._duration,this._elapsedTime=this._duration,this._tweenState=n.complete):this._isRunningInReverse&&this._elapsedTime<=0&&(i=0-this._elapsedTime,this._elapsedTime=0,this._tweenState=n.complete),this._elapsedTime>=0&&this._elapsedTime<=this._duration&&this.updateValue(),this._loopType!=e.none&&this._tweenState==n.complete&&0!=this._loops&&this.handleLooping(i);var r=this._isTimeScaleIndependent?t.Time.unscaledDeltaTime:t.Time.deltaTime;return r*=this._timeScale,this._isRunningInReverse?this._elapsedTime-=r:this._elapsedTime+=r,this._tweenState==n.complete&&(this._completionHandler&&this._completionHandler(this),null!=this._nextTween&&(this._nextTween.start(),this._nextTween=null),!0)},i.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._target=null,this._nextTween=null)},i.prototype.isRunning=function(){return this._tweenState==n.running},i.prototype.start=function(){this._isFromValueOverridden||(this._fromValue=this._target.getTweenedValue()),this._tweenState==n.complete&&(this._tweenState=n.running,t.TweenManager.addTween(this))},i.prototype.pause=function(){this._tweenState=n.paused},i.prototype.resume=function(){this._tweenState=n.running},i.prototype.stop=function(i){void 0===i&&(i=!1),this._tweenState=n.complete,i?(this._elapsedTime=this._isRunningInReverse?0:this._duration,this._loopType=e.none,this._loops=0):t.TweenManager.removeTween(this)},i.prototype.jumpToElapsedTime=function(e){this._elapsedTime=t.MathHelper.clamp(e,0,this._duration),this.updateValue()},i.prototype.reverseTween=function(){this._isRunningInReverse=!this._isRunningInReverse},i.prototype.waitForCompletion=function(){return __generator(this,function(t){switch(t.label){case 0:return this._tweenState==n.complete?[3,2]:[4,null];case 1:return t.sent(),[3,0];case 2:return[2]}})},i.prototype.getTargetObject=function(){return this._target.getTargetObject()},i.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=t.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=e.none,this._delayBetweenLoops=0,this._loops=0,this._isRunningInReverse=!1},i.prototype.initialize=function(t,e,n){this.resetState(),this._target=t,this._toValue=e,this._duration=n},i.prototype.handleLooping=function(t){this._loops--,this._loopType==e.pingpong&&this.reverseTween(),this._loopType!=e.restartFromBeginning&&this._loops%2!=0||this._loopCompleteHandler&&this._completionHandler(this),0!=this._loops&&(this._tweenState=n.running,this._loopType==e.restartFromBeginning?this._elapsedTime=t-this._delayBetweenLoops:this._isRunningInReverse?this._elapsedTime+=this._delayBetweenLoops-t:this._elapsedTime=t-this._delayBetweenLoops,0==this._delayBetweenLoops&&t>0&&this.updateValue())},i}();t.Tween=i}(es||(es={})),function(t){var e=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheNumberTweens?t.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(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){e.prototype.recycleSelf.call(this),this._shouldRecycleTween&&t.TweenManager.cacheNumberTweens&&t.Pool.free(n,this)},n}(t.Tween);t.NumberTween=e;var n=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheVector2Tweens?t.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(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){e.prototype.recycleSelf.call(this),this._shouldRecycleTween&&t.TweenManager.cacheVector2Tweens&&t.Pool.free(n,this)},n}(t.Tween);t.Vector2Tween=n;var i=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheRectTweens?t.Pool.obtain(n):new n},n.prototype.setIsRelative=function(){return this._isRelative=!0,this._toValue=new t.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(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){e.prototype.recycleSelf.call(this),this._shouldRecycleTween&&t.TweenManager.cacheRectTweens&&t.Pool.free(n,this)},n}(t.Tween);t.RectangleTween=i;var r=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheColorTweens?t.Pool.obtain(n):new n},n.prototype.setIsRelative=function(){return this._isRelative=!0,this._toValue.r+=this._fromValue.r,this._toValue.g+=this._fromValue.g,this._toValue.b+=this._fromValue.b,this._toValue.a+=this._fromValue.a,this},n.prototype.updateValue=function(){this._target.setTweenedValue(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n}(t.Tween);t.ColorTween=r}(es||(es={})),function(t){var e=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return __extends(n,e),n.prototype.setTweenedValue=function(t){this._renderable.color=t},n.prototype.getTweenedValue=function(){return this._renderable.color},n.prototype.getTargetObject=function(){return this._renderable},n.prototype.updateValue=function(){this.setTweenedValue(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.setTarget=function(t){this._renderable=t},n.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._renderable=null,this._target=null,this._nextTween=null),this._shouldRecycleTween&&t.TweenManager.cacheColorTweens&&t.Pool.free(t.ColorTween,this)},n}(t.ColorTween);t.RenderableColorTween=e}(es||(es={})),function(t){var e=function(e){function n(t,n,i){var r=e.call(this)||this;return r.dampingRatio=.23,r.angularFrequency=25,r._transform=t,r._targetType=n,r.setTargetValue(i),r}return __extends(n,e),Object.defineProperty(n.prototype,"targetType",{get:function(){return this._targetType},enumerable:!0,configurable:!0}),n.prototype.setTargetValue=function(e){this._velocity=t.Vector2.zero,this._targetValue=e,this._isCurrentlyManagedByTweenManager||this.start()},n.prototype.updateDampingRatioWithHalfLife=function(t){this.dampingRatio=-t/this.angularFrequency*Math.log(.5)},n.prototype.tick=function(){return this._isPaused||this.setTweenedValue(t.Lerps.fastSpring(this.getCurrentValueOfTweenedTargetType(),this._targetValue,this._velocity,this.dampingRatio,this.angularFrequency)),!1},n.prototype.setTweenedValue=function(e){switch(this._targetType){case t.TransformTargetType.position:this._transform.position=e;break;case t.TransformTargetType.localPosition:this._transform.localPosition=e;break;case t.TransformTargetType.scale:this._transform.scale=e;break;case t.TransformTargetType.localScale:this._transform.localScale=e;break;case t.TransformTargetType.rotationDegrees:this._transform.rotationDegrees=e.x;case t.TransformTargetType.localRotationDegrees:this._transform.localRotationDegrees=e.x}},n.prototype.getCurrentValueOfTweenedTargetType=function(){switch(this._targetType){case t.TransformTargetType.position:return this._transform.position;case t.TransformTargetType.localPosition:return this._transform.localPosition;case t.TransformTargetType.scale:return this._transform.scale;case t.TransformTargetType.localScale:return this._transform.localScale;case t.TransformTargetType.rotationDegrees:return new t.Vector2(this._transform.rotationDegrees);case t.TransformTargetType.localRotationDegrees:return new t.Vector2(this._transform.localRotationDegrees,0);default:return t.Vector2.zero}},n}(t.AbstractTweenable);t.TransformSpringTween=e}(es||(es={})),function(t){var e;!function(t){t[t.position=0]="position",t[t.localPosition=1]="localPosition",t[t.scale=2]="scale",t[t.localScale=3]="localScale",t[t.rotationDegrees=4]="rotationDegrees",t[t.localRotationDegrees=5]="localRotationDegrees"}(e=t.TransformTargetType||(t.TransformTargetType={}));var n=function(n){function i(){return null!==n&&n.apply(this,arguments)||this}return __extends(i,n),i.prototype.setTweenedValue=function(t){switch(this._targetType){case e.position:this._transform.position=t;break;case e.localPosition:this._transform.localPosition=t;break;case e.scale:this._transform.scale=t;break;case e.localScale:this._transform.localScale=t;break;case e.rotationDegrees:this._transform.rotationDegrees=t.x;case e.localRotationDegrees:this._transform.localRotationDegrees=t.x}},i.prototype.getTweenedValue=function(){switch(this._targetType){case e.position:return this._transform.position;case e.localPosition:return this._transform.localPosition;case e.scale:return this._transform.scale;case e.localScale:return this._transform.localScale;case e.rotationDegrees:return new t.Vector2(this._transform.rotationDegrees,this._transform.rotationDegrees);case e.localRotationDegrees:return new t.Vector2(this._transform.localRotationDegrees,0)}},i.prototype.getTargetObject=function(){return this._transform},i.prototype.setTargetAndType=function(t,e){this._transform=t,this._targetType=e},i.prototype.updateValue=function(){this._targetType!=e.rotationDegrees&&this._targetType!=e.localRotationDegrees||this._isRelative?this.setTweenedValue(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration)):this.setTweenedValue(t.Lerps.easeAngle(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},i.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._target=null,this._nextTween=null,this._transform=null,t.Pool.free(t.Vector2Tween,this))},i}(t.Vector2Tween);t.TransformVector2Tween=n}(es||(es={})),function(t){var e;!function(t){t[t.linear=0]="linear",t[t.sineIn=1]="sineIn",t[t.sineOut=2]="sineOut",t[t.sineInOut=3]="sineInOut",t[t.quadIn=4]="quadIn",t[t.quadOut=5]="quadOut",t[t.quadInOut=6]="quadInOut",t[t.quintIn=7]="quintIn",t[t.quintOut=8]="quintOut",t[t.quintInOut=9]="quintInOut",t[t.cubicIn=10]="cubicIn",t[t.cubicOut=11]="cubicOut",t[t.cubicInOut=12]="cubicInOut",t[t.quartIn=13]="quartIn",t[t.quartOut=14]="quartOut",t[t.quartInOut=15]="quartInOut",t[t.expoIn=16]="expoIn",t[t.expoOut=17]="expoOut",t[t.expoInOut=18]="expoInOut",t[t.circleIn=19]="circleIn",t[t.circleOut=20]="circleOut",t[t.circleInOut=21]="circleInOut",t[t.elasticIn=22]="elasticIn",t[t.elasticOut=23]="elasticOut",t[t.elasticInOut=24]="elasticInOut",t[t.punch=25]="punch",t[t.backIn=26]="backIn",t[t.backOut=27]="backOut",t[t.backInOut=28]="backInOut",t[t.bounceIn=29]="bounceIn",t[t.bounceOut=30]="bounceOut",t[t.bounceInOut=31]="bounceInOut"}(e=t.EaseType||(t.EaseType={}));var n=function(){function n(){}return n.oppositeEaseType=function(t){switch(t){case e.linear:return t;case e.backIn:return e.backOut;case e.backOut:return e.backIn;case e.backInOut:return t;case e.bounceIn:return e.bounceOut;case e.bounceOut:return e.bounceIn;case e.bounceInOut:return t;case e.circleIn:return e.circleOut;case e.circleOut:return e.circleIn;case e.circleInOut:return t;case e.cubicIn:return e.cubicOut;case e.cubicOut:return e.cubicIn;case e.circleInOut:case e.punch:return t;case e.expoIn:return e.expoOut;case e.expoOut:return e.expoIn;case e.expoInOut:return t;case e.quadIn:return e.quadOut;case e.quadOut:return e.quadIn;case e.quadInOut:return t;case e.quartIn:return e.quadOut;case e.quartOut:return e.quartIn;case e.quadInOut:return t;case e.sineIn:return e.sineOut;case e.sineOut:return e.sineIn;case e.sineInOut:default:return t}},n.ease=function(n,i,r){switch(n){case e.linear:return t.Easing.Linear.easeNone(i,r);case e.backIn:return t.Easing.Back.easeIn(i,r);case e.backOut:return t.Easing.Back.easeOut(i,r);case e.backInOut:return t.Easing.Back.easeInOut(i,r);case e.bounceIn:return t.Easing.Bounce.easeIn(i,r);case e.bounceOut:return t.Easing.Bounce.easeOut(i,r);case e.bounceInOut:return t.Easing.Bounce.easeInOut(i,r);case e.circleIn:return t.Easing.Circular.easeIn(i,r);case e.circleOut:return t.Easing.Circular.easeOut(i,r);case e.circleInOut:return t.Easing.Circular.easeInOut(i,r);case e.cubicIn:return t.Easing.Cubic.easeIn(i,r);case e.cubicOut:return t.Easing.Cubic.easeOut(i,r);case e.cubicInOut:return t.Easing.Cubic.easeInOut(i,r);case e.elasticIn:return t.Easing.Elastic.easeIn(i,r);case e.elasticOut:return t.Easing.Elastic.easeOut(i,r);case e.elasticInOut:return t.Easing.Elastic.easeInOut(i,r);case e.punch:return t.Easing.Elastic.punch(i,r);case e.expoIn:return t.Easing.Exponential.easeIn(i,r);case e.expoOut:return t.Easing.Exponential.easeOut(i,r);case e.expoInOut:return t.Easing.Exponential.easeInOut(i,r);case e.quadIn:return t.Easing.Quadratic.easeIn(i,r);case e.quadOut:return t.Easing.Quadratic.easeOut(i,r);case e.quadInOut:return t.Easing.Quadratic.easeInOut(i,r);case e.quintIn:return t.Easing.Quintic.easeIn(i,r);case e.quintOut:return t.Easing.Quintic.easeOut(i,r);case e.quintInOut:return t.Easing.Quintic.easeInOut(i,r);case e.sineIn:return t.Easing.Sinusoidal.easeIn(i,r);case e.sineOut:return t.Easing.Sinusoidal.easeOut(i,r);case e.sineInOut:return t.Easing.Sinusoidal.easeInOut(i,r);default:return t.Easing.Linear.easeNone(i,r)}},n}();t.EaseHelper=n}(es||(es={})),function(t){var e=function(){function t(){}return Object.defineProperty(t.prototype,"enabled",{get:function(){return this._enabled},set:function(t){this.setEnabled(t)},enumerable:!0,configurable:!0}),t.prototype.setEnabled=function(t){this._enabled!=t&&(this._enabled=t,this._enabled?this.onEnabled():this.onDisabled())},t.prototype.onEnabled=function(){},t.prototype.onDisabled=function(){},t.prototype.update=function(){},t}();t.GlobalManager=e}(es||(es={})),function(t){var e=function(e){function n(){var t=e.call(this)||this;return t._activeTweens=[],t._tempTweens=[],n._instance=t,t}return __extends(n,e),n.prototype.update=function(){this._isUpdating=!0;for(var e=this._activeTweens.length-1;e>=0;--e){var n=this._activeTweens[e];n.tick()&&this._tempTweens.push(n)}this._isUpdating=!1;for(e=0;e=0;--e)n._instance._activeTweens[e].stop(t)},n.allTweensWithContext=function(t){for(var e=[],i=0;i=0;--i)n._instance._activeTweens[i].context==t&&n._instance._activeTweens[i].stop(e)},n.allTweenWithTarget=function(t){for(var e=[],i=0;i=0;--i)if(n._instance._activeTweens[i]){var r=n._instance._activeTweens[i];r.getTargetObject()==t&&r.stop(e)}},n.defaultEaseType=t.EaseType.quartIn,n.removeAllTweensOnLevelLoad=!1,n.cacheNumberTweens=!0,n.cacheVector2Tweens=!0,n.cacheColorTweens=!0,n.cacheRectTweens=!1,n}(t.GlobalManager);t.TweenManager=e}(es||(es={})),function(t){!function(t){var e=function(){function t(){}return t.easeNone=function(t,e){return t/e},t}();t.Linear=e;var n=function(){function t(){}return t.easeIn=function(t,e){return(t/=e)*t},t.easeOut=function(t,e){return-1*(t/=e)*(t-2)},t.easeInOut=function(t,e){return(t/=e/2)<1?.5*t*t:-.5*(--t*(t-2)-1)},t}();t.Quadratic=n;var i=function(){function t(){}return t.easeIn=function(t,e){return(t/=e)*t*(2.70158*t-1.70158)},t.easeOut=function(t,e){return(t=t/e-1)*t*(2.70158*t+1.70158)+1},t.easeInOut=function(t,e){var n=1.70158;return(t/=e/2)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},t}();t.Back=i;var r=function(){function t(){}return t.easeOut=function(t,e){return(t/=e)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},t.easeIn=function(t,e){return 1-this.easeOut(e-t,e)},t.easeInOut=function(t,e){return t= 2");if(t.sort(function(t,e){return t.t-e.t}),0!==t[0].t)throw new Error("curve must start with 0");if(1!==t[t.length-1].t)throw new Error("curve must end with 1");this._points=t}return Object.defineProperty(e.prototype,"points",{get:function(){return this._points},enumerable:!0,configurable:!0}),e.prototype.lerp=function(e){for(var n=1;n=0;o--)(e=r[o].func).call.apply(e,__spread([r[o].context],n))},n}();t.Emitter=n}(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.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(){function t(){this._listeners=[]}return t.prototype.addListener=function(t,e){-1===this._listeners.findIndex(function(n){return n.callback===e&&n.caller===t})&&this._listeners.push({caller:t,callback:e})},t.prototype.removeListener=function(t,e){var n=this._listeners.findIndex(function(n){return n.callback===e&&n.caller===t});n>=0&&this._listeners.splice(n,1)},t.prototype.clearListener=function(){this._listeners=[]},t.prototype.clearListenerWithCaller=function(t){for(var e=this._listeners.length-1;e>=0;e--){this._listeners[e].caller===t&&this._listeners.splice(e,1)}},t.prototype.notify=function(){for(var t,e=[],n=0;n=0;i--){var r=this._listeners[i];r.caller?(t=r.callback).call.apply(t,__spread([r.caller],e)):r.callback.apply(r,__spread(e))}},t}();t.Observable=e;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.addListener=function(e,n){t.prototype.addListener.call(this,e,n)},e.prototype.removeListener=function(e,n){t.prototype.removeListener.call(this,e,n)},e.prototype.notify=function(e){t.prototype.notify.call(this,e)},e}(e);t.ObservableT=n;var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.addListener=function(e,n){t.prototype.addListener.call(this,e,n)},e.prototype.removeListener=function(e,n){t.prototype.removeListener.call(this,e,n)},e.prototype.notify=function(e,n){t.prototype.notify.call(this,e,n)},e}(e);t.ObservableTT=i;var r=function(){function t(t,n){this.bindAction(t,n),this._onExec=new e}return t.prototype.bindAction=function(t,e){this._caller=t,this._action=e},t.prototype.dispatch=function(){for(var t,e=[],n=0;n3&&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.length>8&255]+e[t>>16&255]+e[t>>24&255]+"-"+e[255&n]+e[n>>8&255]+"-"+e[n>>16&15|64]+e[n>>24&255]+"-"+e[63&i|128]+e[i>>8&255]+"-"+e[i>>16&255]+e[i>>24&255]+e[255&r]+e[r>>8&255]+e[r>>16&255]+e[r>>24&255]},t}();t.UUID=n}(es||(es={})),function(t){t.getClassName=function(t){return t.className||t.name}}(es||(es={})),function(t){var e,n=function(){function t(t){void 0===t&&(t=i),this.getSystemTime=t,this._stopDuration=0,this._completeSlices=[]}return t.prototype.getState=function(){return void 0===this._startSystemTime?e.IDLE:void 0===this._stopSystemTime?e.RUNNING:e.STOPPED},t.prototype.isIdle=function(){return this.getState()===e.IDLE},t.prototype.isRunning=function(){return this.getState()===e.RUNNING},t.prototype.isStopped=function(){return this.getState()===e.STOPPED},t.prototype.slice=function(){return this.recordPendingSlice()},t.prototype.getCompletedSlices=function(){return Array.from(this._completeSlices)},t.prototype.getCompletedAndPendingSlices=function(){return __spread(this._completeSlices,[this.getPendingSlice()])},t.prototype.getPendingSlice=function(){return this.calculatePendingSlice()},t.prototype.getTime=function(){return this.caculateStopwatchTime()},t.prototype.reset=function(){this._startSystemTime=this._pendingSliceStartStopwatchTime=this._stopSystemTime=void 0,this._stopDuration=0,this._completeSlices=[]},t.prototype.start=function(t){if(void 0===t&&(t=!1),t&&this.reset(),void 0!==this._stopSystemTime){var e=(n=this.getSystemTime())-this._stopSystemTime;this._stopDuration+=e,this._stopSystemTime=void 0}else if(void 0===this._startSystemTime){var n=this.getSystemTime();this._startSystemTime=n,this._pendingSliceStartStopwatchTime=0}},t.prototype.stop=function(t){if(void 0===t&&(t=!1),void 0===this._startSystemTime)return 0;var e=this.getSystemTimeOfCurrentStopwatchTime();return t&&this.recordPendingSlice(this.caculateStopwatchTime(e)),this._stopSystemTime=e,this.getTime()},t.prototype.calculatePendingSlice=function(t){return void 0===this._pendingSliceStartStopwatchTime?Object.freeze({startTime:0,endTime:0,duration:0}):(void 0===t&&(t=this.getTime()),Object.freeze({startTime:this._pendingSliceStartStopwatchTime,endTime:t,duration:t-this._pendingSliceStartStopwatchTime}))},t.prototype.caculateStopwatchTime=function(t){return void 0===this._startSystemTime?0:(void 0===t&&(t=this.getSystemTimeOfCurrentStopwatchTime()),t-this._startSystemTime-this._stopDuration)},t.prototype.getSystemTimeOfCurrentStopwatchTime=function(){return void 0===this._stopSystemTime?this.getSystemTime():this._stopSystemTime},t.prototype.recordPendingSlice=function(t){if(void 0!==this._pendingSliceStartStopwatchTime){void 0===t&&(t=this.getTime());var e=this.calculatePendingSlice(t);return this._pendingSliceStartStopwatchTime=e.endTime,this._completeSlices.push(e),e}return this.calculatePendingSlice()},t}();t.Stopwatch=n,function(t){t.IDLE="IDLE",t.RUNNING="RUNNING",t.STOPPED="STOPPED"}(e||(e={})),t.setDefaultSystemTimeGetter=function(t){void 0===t&&(t=Date.now),i=t};var i=Date.now}(es||(es={})),function(t){var e=function(){function t(t){void 0===t&&(t=64),this.size_=0,this.length=0,this.array=[],this.length=t}return t.prototype.removeAt=function(t){var e=this.array[t];return this.array[t]=this.array[--this.size_],this.array[this.size_]=null,e},t.prototype.remove=function(t){var e,n=this.size_;for(e=0;e0){var t=this.array[--this.size_];return this.array[this.size_]=null,t}return null},t.prototype.contains=function(t){var e,n;for(e=0,n=this.size_;n>e;e++)if(t===this.array[e])return!0;return!1},t.prototype.removeAll=function(t){var e,n,i,r,o=!1;for(e=0,i=t.size();e=this.length)throw new Error("ArrayIndexOutOfBoundsException");return this.array[t]},t.prototype.safeGet=function(t){return t>=this.length&&this.grow(7*t/4+1),this.array[t]},t.prototype.size=function(){return this.size_},t.prototype.getCapacity=function(){return this.length},t.prototype.isIndexWithinBounds=function(t){return t=this.length&&this.grow(2*t),this.size_=t+1,this.array[t]=e},t.prototype.grow=function(t){void 0===t&&(t=1+~~(3*this.length/2)),this.length=~~t},t.prototype.ensureCapacity=function(t){t>=this.length&&this.grow(2*t)},t.prototype.clear=function(){var t,e;for(t=0,e=this.size_;te;e++)this.add(t.get(e))},t}();t.Bag=e}(es||(es={})),function(t){var e=function(){function e(e){void 0===e&&(e=1),this._freeValueCellIndex=0,this._collisions=0,this._valuesInfo=new Array(e),this._values=new Array(e),this._buckets=new Array(t.HashHelpers.getPrime(e))}return e.prototype.getValuesArray=function(t){return t.value=this._freeValueCellIndex,this._values},Object.defineProperty(e.prototype,"valuesArray",{get:function(){return this._values},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"count",{get:function(){return this._freeValueCellIndex},enumerable:!0,configurable:!0}),e.prototype.add=function(t,e){if(!this.addValue(t,e,{value:0}))throw new Error("key 已经存在")},e.prototype.addValue=function(i,r,o){var s=t.HashHelpers.getHashCode(i),a=e.reduce(s,this._buckets.length);if(this._freeValueCellIndex==this._values.length){var c=t.HashHelpers.expandPrime(this._freeValueCellIndex);this._values.length=c,this._valuesInfo.length=c}var h=t.NumberExtension.toNumber(this._buckets[a])-1;if(-1==h)this._valuesInfo[this._freeValueCellIndex]=new n(i,s);else{var u=h;do{if(this._valuesInfo[u].hashcode==s&&this._valuesInfo[u].key==i)return this._values[u]=r,o.value=u,!1;u=this._valuesInfo[u].previous}while(-1!=u);this._collisions++,this._valuesInfo[this._freeValueCellIndex]=new n(i,s,h),this._valuesInfo[h].next=this._freeValueCellIndex}if(this._buckets[a]=this._freeValueCellIndex+1,this._values[this._freeValueCellIndex]=r,o.value=this._freeValueCellIndex,this._freeValueCellIndex++,this._collisions>this._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 n=0;nthis._objectQueue.get(t).length;)this._objectQueue.get(t).shift()},t.clearCache=function(t){this.checkCreate(t),this._objectQueue.get(t).length=0},t.obtain=function(t){return this.checkCreate(t),this._objectQueue.get(t).length>0?this._objectQueue.get(t).shift():[]},t.free=function(t,e){this.checkCreate(t),this._objectQueue.get(t).unshift(e),e.length=0},t.checkCreate=function(t){this._objectQueue.get(t)||this._objectQueue.set(t,[])},t._objectQueue=new Map,t}();t.ListPool=e}(es||(es={})),function(t){var e=function(){function t(t,e){this.first=t,this.second=e}return t.prototype.clear=function(){this.first=this.second=null},t.prototype.equals=function(t){return this.first===t.first&&this.second===t.second},t}();t.Pair=e}(es||(es={})),function(t){var e=function(){function t(){this._all=new Array}return Object.defineProperty(t.prototype,"all",{get:function(){return this._all},enumerable:!0,configurable:!0}),t.prototype.has=function(t){return this._all.findIndex(function(e){return e.equals(t)})>-1},t.prototype.add=function(t){this.has(t)||this._all.push(t)},t.prototype.remove=function(t){var e=this._all.findIndex(function(e){return e.equals(t)});if(e>-1){var n=this._all[e];this._all[e]=this._all[this._all.length-1],this._all[this._all.length-1]=n,this._all=this._all.slice(0,this._all.length-1)}},t.prototype.clear=function(){this._all=[]},t.prototype.union=function(t){var e,n,i=t.all;try{for(var r=__values(i),o=r.next();!o.done;o=r.next()){var s=o.value;this.add(s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}},t.prototype.except=function(t){var e,n,i=t.all;try{for(var r=__values(i),o=r.next();!o.done;o=r.next()){var s=o.value;this.remove(s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}},t}();t.PairSet=e}(es||(es={})),function(t){var e=function(){function e(){}return e.warmCache=function(t,e){if(this.checkCreate(t),(e-=this._objectQueue.get(t).length)>0)for(var n=0;nthis._objectQueue.get(t).length;)this._objectQueue.get(t).shift()},e.clearCache=function(t){this.checkCreate(t),this._objectQueue.get(t).length=0},e.obtain=function(t){return this.checkCreate(t),this._objectQueue.get(t).length>0?this._objectQueue.get(t).shift():new t},e.free=function(e,n){this.checkCreate(e),this._objectQueue.get(e).unshift(n),t.isIPoolable(n)&&n.reset()},e.checkCreate=function(t){this._objectQueue.get(t)||this._objectQueue.set(t,[])},e._objectQueue=new Map,e}();t.Pool=e,t.isIPoolable=function(t){return void 0!==t.reset}}(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 n=0;n0?(i.waitTimer-=i.useUnscaledDeltaTime?t.Time.unscaledDeltaTime:t.Time.deltaTime,this._shouldRunNextFrame.push(i)):this.tickCoroutine(i)&&this._shouldRunNextFrame.push(i)}}var r=new t.List(this._unblockedCoroutines);r.clear(),r.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(e,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(e,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={})),function(t){var e=function(){function e(){}return e.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}},e.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},e.findElementIndex=function(t,e){for(var n=t.length,i=0;it[e]&&(e=i);return e},e.getMinElementIndex=function(t){for(var e=0,n=t.length,i=1;i=0;--r)n.unshift(e[r]);return n},e.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)},e.cloneList=function(t){return t?t.slice(0,t.length):null},e.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},e.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},e.shuffle=function(e){for(var n=e.length;n>1;){n--;var i=t.RandomUtils.randint(0,n+1),r=e[i];e[i]=e[n],e[n]=r}},e.addIfNotPresent=function(e,n){return!new t.List(e).contains(n)&&(e.push(n),!0)},e.lastItem=function(t){return t[t.length-1]},e.randomItem=function(e){return e[t.RandomUtils.randint(0,e.length-1)]},e.randomItems=function(e,n,i){for(var r=new Set;r.size!=i;){var o=this.randomItem(n);r.has(o)||r.add(o)}var s=t.ListPool.obtain(e);return r.forEach(function(t){return s.push(t)}),s},e}();t.ArrayUtils=e}(es||(es={})),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}();t.RandomUtils=e}(es||(es={})),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.getClosestPointOnBoundsToOrigin=function(e){var n=this.getMax(e),i=Math.abs(e.location.x),r=new t.Vector2(e.location.x,0);return Math.abs(n.x)r&&(r=a.x),a.yo&&(o=a.y)}return this.fromMinMaxVector(new t.Vector2(Math.trunc(n),Math.trunc(i)),new t.Vector2(Math.trunc(r),Math.trunc(o)))},e.calculateBounds=function(e,n,i,r,o,s,a,c){if(0==s)e.x=Math.trunc(n.x+i.x-r.x*o.x),e.y=Math.trunc(n.y+i.y-r.y*o.y),e.width=Math.trunc(a*o.x),e.height=Math.trunc(c*o.y);else{var h=n.x+i.x,u=n.y+i.y,l=new t.Matrix2D;t.Matrix2D.createTranslation(-h-r.x,-u-r.y,l),t.Matrix2D.createScale(o.x,o.y,void 0),l=l.multiply(void 0),t.Matrix2D.createRotation(s,void 0),l=l.multiply(void 0),t.Matrix2D.createTranslation(h,u,void 0),l=l.multiply(void 0);var p=new t.Vector2(h,u),f=new t.Vector2(h+a,u),d=new t.Vector2(h,u+c),m=new t.Vector2(h+a,u+c);t.Vector2Ext.transformR(p,l,p),t.Vector2Ext.transformR(f,l,f),t.Vector2Ext.transformR(d,l,d),t.Vector2Ext.transformR(m,l,m);var y=Math.trunc(Math.min(p.x,m.x,f.x,d.x)),g=Math.trunc(Math.max(p.x,m.x,f.x,d.x)),_=Math.trunc(Math.min(p.y,m.y,f.y,d.y)),v=Math.trunc(Math.max(p.y,m.y,f.y,d.y));e.location=new t.Vector2(y,_),e.width=Math.trunc(g-y),e.height=Math.trunc(v-_)}},e.scale=function(t,e){t.x=Math.trunc(t.x*e.x),t.y=Math.trunc(t.y*e.y),t.width=Math.trunc(t.width*e.x),t.height=Math.trunc(t.height*e.y)},e.translate=function(t,e){t.location.addEqual(e)},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.divideScaler(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 e=this._timers.length-1;e>=0;e--)this._timers[e].tick()&&(this._timers[e].unload(),new t.List(this._timers).removeAt(e))},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 __awaiter=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))(function(r,o){function s(t){try{c(i.next(t))}catch(t){o(t)}}function a(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){t.done?r(t.value):new n(function(e){e(t.value)}).then(s,a)}c((i=i.apply(t,e||[])).next())})},__generator=this&&this.__generator||function(t,e){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,i&&(r=2&o[0]?i.return:o[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,o[1])).done)return r;switch(i=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,i=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=(r=s.trys).length>0&&r[r.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]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(){function e(n,i){void 0===n&&(n=!0),void 0===i&&(i=!0),this._globalManagers=[],this._coroutineManager=new t.CoroutineManager,this._timerManager=new t.TimerManager,this._frameCounterElapsedTime=0,this._frameCounter=0,this._totalMemory=0,e._instance=this,e.emitter=new t.Emitter,e.emitter.addObserver(t.CoreEvents.frameUpdated,this.update,this),e.registerGlobalManager(this._coroutineManager),e.registerGlobalManager(new t.TweenManager),e.registerGlobalManager(this._timerManager),e.entitySystemsEnabled=i,this.debug=n,this.initialize()}return Object.defineProperty(e,"Instance",{get:function(){return this._instance},enumerable:!0,configurable:!0}),Object.defineProperty(e,"scene",{get:function(){return this._instance?this._instance._scene:null},set:function(e){t.Insist.isNotNull(e,"场景不能为空"),null==this._instance._scene?(this._instance._scene=e,this._instance.onSceneChanged(),this._instance._scene.begin()):this._instance._nextScene=e},enumerable:!0,configurable:!0}),e.create=function(e){return void 0===e&&(e=!0),null==this._instance&&(this._instance=new t.Core(e)),this._instance},e.registerGlobalManager=function(t){this._instance._globalManagers.push(t),t.enabled=!0},e.unregisterGlobalManager=function(e){new t.List(this._instance._globalManagers).remove(e),e.enabled=!1},e.getGlobalManager=function(t){for(var n=0,i=e._instance._globalManagers.length;n=1)){var e=window.performance.memory;null!=e&&(this._totalMemory=Number((e.totalJSHeapSize/1048576).toFixed(2))),this._titleMemory&&this._titleMemory(this._totalMemory,this._frameCounter),this._frameCounter=0,this._frameCounterElapsedTime-=1}},e.prototype.onSceneChanged=function(){t.Time.sceneChanged()},e.prototype.initialize=function(){},e.prototype.update=function(n){return void 0===n&&(n=-1),__awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(r){if(e.paused)return[2];if(t.Time.update(n,-1!=n),null!=this._scene){for(i=this._globalManagers.length-1;i>=0;i--)this._globalManagers[i].enabled&&this._globalManagers[i].update();this._scene.update(),null!=this._nextScene&&(this._scene.end(),this._scene=this._nextScene,this._nextScene=null,this.onSceneChanged(),this._scene.begin())}return this.startDebugDraw(),[2]})})},e.paused=!1,e.debugRenderEndabled=!1,e}();t.Core=e}(es||(es={})),function(t){var e;!function(t){t[t.error=0]="error",t[t.warn=1]="warn",t[t.log=2]="log",t[t.info=3]="info",t[t.trace=4]="trace"}(e=t.LogType||(t.LogType={}));var n=function(){function n(){}return n.warnIf=function(t,n){for(var i=[],r=2;r=0;t--){this.transform.getChild(t).entity.destroy()}},n.prototype.detachFromScene=function(){this.scene.entities.remove(this),this.components.deregisterAllComponents();for(var t=0;t0?new e(this.x/t,this.y/t):new e(0,1)},e.prototype.normalizeEqual=function(){var t=this.distance();return t>0?(this.setTo(this.x/t,this.y/t),this):(this.setTo(0,1),this)},e.prototype.magnitude=function(){return this.distance()},e.prototype.distance=function(t){return t||(t=e.zero),Math.sqrt(Math.pow(this.x-t.x,2)+Math.pow(this.y-t.y,2))},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(e,n){var i=e.sub(this),r=n.sub(this);return t.Vector2Ext.angle(i,r)},e.prototype.equals=function(t,e){return void 0===e&&(e=.001),Math.abs(this.x-t.x)<=e&&Math.abs(this.y-t.y)<=e},e.prototype.isValid=function(){return t.MathHelper.isValid(this.x)&&t.MathHelper.isValid(this.y)},e.min=function(t,n){return new e(t.xn.x?t.x:n.x,t.y>n.y?t.y:n.y)},e.hermite=function(n,i,r,o,s){return new e(t.MathHelper.hermite(n.x,i.x,r.x,o.x,s),t.MathHelper.hermite(n.y,i.y,r.y,o.y,s))},e.unsignedAngle=function(e,n,i){void 0===i&&(i=!0),e.normalizeEqual(),n.normalizeEqual();var r=Math.acos(t.MathHelper.clamp(e.dot(n),-1,1))*t.MathHelper.Rad2Deg;return i?Math.round(r):r},e.prototype.clone=function(){return new e(this.x,this.y)},e}();t.Vector2=e}(es||(es={})),function(t){var e=function(){function e(){this._sceneComponents=[],this.entities=new t.EntityList(this),this.entityProcessors=new t.EntityProcessorList,this.identifierPool=new t.IdentifierPool,this.initialize()}return e.prototype.initialize=function(){},e.prototype.onStart=function(){},e.prototype.unload=function(){},e.prototype.begin=function(){t.Physics.reset(),null!=this.entityProcessors&&this.entityProcessors.begin(),this._didSceneBegin=!0,this.onStart()},e.prototype.end=function(){this._didSceneBegin=!1,this.entities.removeAllEntities();for(var e=0;e=0;t--)this._sceneComponents[t].enabled&&this._sceneComponents[t].update();null!=this.entityProcessors&&this.entityProcessors.update(),this.entities.update(),null!=this.entityProcessors&&this.entityProcessors.lateUpdate()},e.prototype.addSceneComponent=function(t){return t.scene=this,t.onEnabled(),this._sceneComponents.push(t),this._sceneComponents.sort(t.compare),t},e.prototype.getSceneComponent=function(t){for(var e=0;ee.x?-1:1,i=this.position.sub(e).normalize();this.rotation=n*Math.acos(i.dot(t.Vector2.unitY))},i.prototype.setLocalRotation=function(t){return this._localRotation=t,this._localDirty=this._positionDirty=this._localPositionDirty=this._localRotationDirty=this._localScaleDirty=!0,this.setDirty(n.rotationDirty),this},i.prototype.setLocalRotationDegrees=function(e){return this.setLocalRotation(t.MathHelper.toRadians(e))},i.prototype.setScale=function(e){return this._scale=e,null!=this.parent?this.localScale=t.Vector2.divide(e,this.parent._scale):this.localScale=e,this},i.prototype.setLocalScale=function(t){return this._localScale=t,this._localDirty=this._positionDirty=this._localScaleDirty=!0,this.setDirty(n.scaleDirty),this},i.prototype.roundPosition=function(){this.position=t.Vector2Ext.round(this._position)},i.prototype.updateTransform=function(){this.hierarchyDirty!=n.clean&&(null!=this.parent&&this.parent.updateTransform(),this._localDirty&&(this._localPositionDirty&&(t.Matrix2D.createTranslation(this._localPosition.x,this._localPosition.y,this._translationMatrix),this._localPositionDirty=!1),this._localRotationDirty&&(t.Matrix2D.createRotation(this._localRotation,this._rotationMatrix),this._localRotationDirty=!1),this._localScaleDirty&&(t.Matrix2D.createScale(this._localScale.x,this._localScale.y,this._scaleMatrix),this._localScaleDirty=!1),t.Matrix2D.multiply(this._scaleMatrix,this._rotationMatrix,this._localTransform),t.Matrix2D.multiply(this._localTransform,this._translationMatrix,this._localTransform),null==this.parent&&(this._worldTransform=this._localTransform,this._rotation=this._localRotation,this._scale=this._localScale,this._worldInverseDirty=!0),this._localDirty=!1),null!=this.parent&&(t.Matrix2D.multiply(this._localTransform,this.parent._worldTransform,this._worldTransform),this._rotation=this._localRotation+this.parent._rotation,this._scale=this.parent._scale.multiply(this._localScale),this._worldInverseDirty=!0),this._worldToLocalDirty=!0,this._positionDirty=!0,this.hierarchyDirty=n.clean)},i.prototype.setDirty=function(t){if(0==(this.hierarchyDirty&t)){switch(this.hierarchyDirty|=t,t){case n.positionDirty:this.entity.onTransformChanged(e.position);break;case n.rotationDirty:this.entity.onTransformChanged(e.rotation);break;case n.scaleDirty:this.entity.onTransformChanged(e.scale)}for(var i=0;i1e-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.setVelocity=function(t){return this.velocity=t,this},n.prototype.addImpulse=function(e){this.isImmovable||this.velocity.addEqual(e.scale(this._inverseMass*(t.Time.deltaTime*t.Time.deltaTime)*1e5))},n.prototype.onAddedToEntity=function(){this._collider=null;for(var e=0;e0&&(o=t.Vector2.zero);var a=this._friction;return s.lengthSquared()0&&this.collisionState.wasGroundedLastFrame&&(t=this.handleVerticalSlope(t)),0!==t.x&&(t=this.moveHorizontally(t)),0!==t.y&&(t=this.moveVertically(t)),this._player.setPosition(this._player.position.x+t.x,this._player.position.y+t.y),e>0&&(this.velocity.x=t.x/e,this.velocity.y=t.y/e),!this.collisionState.wasGroundedLastFrame&&this.collisionState.below&&(this.collisionState.becameGroundedThisFrame=!0),this._isGoingUpSlope&&(this.velocity.y=0),this._isWarpingToGround||this._triggerHelper.update();for(var n=0;n0&&(this.ignoreOneWayPlatformsTime-=e)},i.prototype.warpToGrounded=function(e){void 0===e&&(e=1e3),this.ignoreOneWayPlatformsTime=0,this._isWarpingToGround=!0;var n=0;do{if(n+=1,this.move(new t.Vector2(0,1),.02),n>e)break}while(!this.isGrounded);this._isWarpingToGround=!1},i.prototype.recalculateDistanceBetweenRays=function(){var t=this._collider.height*Math.abs(this._player.scale.y)-2*this._skinWidth;this._verticalDistanceBetweenRays=t/(this.totalHorizontalRays-1);var e=this._collider.width*Math.abs(this._player.scale.x)-2*this._skinWidth;this._horizontalDistanceBetweenRays=e/(this.totalVerticalRays-1)},i.prototype.primeRaycastOrigins=function(){var e=this._collider.bounds;this._raycastOrigins.topLeft=new t.Vector2(e.x+this._skinWidth,e.y+this._skinWidth),this._raycastOrigins.bottomRight=new t.Vector2(e.right-this._skinWidth,e.bottom-this._skinWidth),this._raycastOrigins.bottomLeft=new t.Vector2(e.x+this._skinWidth,e.bottom-this._skinWidth)},i.prototype.moveHorizontally=function(e){for(var n=e.x>0,i=Math.abs(e.x)+this._skinWidth*this.rayOriginSkinMutiplier,r=n?t.Vector2.right:t.Vector2.left,o=this._raycastOrigins.bottomLeft.y,s=n?this._raycastOrigins.bottomRight.x-this._skinWidth*(this.rayOriginSkinMutiplier-1):this._raycastOrigins.bottomLeft.x+this._skinWidth*(this.rayOriginSkinMutiplier-1),a=0;a0)&&(a&=~this.oneWayPlatformMask);for(var c=0;cthis.jumpingThreshold){var i=this.slopeSpeedMultiplier?this.slopeSpeedMultiplier.lerp(n):1;e.x*=i,e.y=Math.abs(Math.tan(n*t.MathHelper.Deg2Rad)*e.x);var r=e.x>0,o=r?this._raycastOrigins.bottomRight:this._raycastOrigins.bottomLeft,s=null;(s=this.supportSlopedOneWayPlatforms&&this.collisionState.wasGroundedLastFrame?t.Physics.linecast(o,o.add(e),this.platformMask,this.ignoredColliders):t.Physics.linecast(o,o.add(e),this.platformMask&~this.oneWayPlatformMask,this.ignoredColliders)).collider&&(e.x=s.point.x-o.x,e.y=s.point.y-o.y,r?e.x-=this._skinWidth:e.x+=this._skinWidth),this._isGoingUpSlope=!0,this.collisionState.below=!0}}else e.x=0;return!0},i}();t.CharacterController=i}(es||(es={})),function(t){var e=function(){function e(){}return e.getITriggerListener=function(e,n){var i,r;try{for(var o=__values(e.components._components),s=o.next();!s.done;s=o.next()){var a=s.value;t.isITriggerListener(a)&&n.push(a)}}catch(t){i={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}for(var c in e.components._componentsToAdd){a=e.components._componentsToAdd[c];t.isITriggerListener(a)&&n.push(a)}return n},e}();t.TriggerListenerHelper=e,t.isITriggerListener=function(t){return void 0!==t.onTriggerEnter}}(es||(es={})),function(t){var e=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return __extends(n,e),n.prototype.onAddedToEntity=function(){this._triggerHelper=new t.ColliderTriggerHelper(this.entity)},n.prototype.calculateMovement=function(e,n){for(var i,r,o=null,s=0;s0)for(var r=0;rn;n++){var i=t[n];this.processDelta(i,this.acc);var r=this.getRemainingDelay(i);r<=0?this.processExpired(i):this.offerDelay(r)}this.acc=0}else this.stop()},n.prototype.checkProcessing=function(){return!!this.running&&(this.acc+=t.Time.deltaTime,this.acc>=this.delay)},n.prototype.offerDelay=function(t){this.running?this.delay=Math.min(this.delay,t):(this.running=!0,this.delay=t)},n.prototype.getInitialTimeDelay=function(){return this.delay},n.prototype.getRemainingTimeUntilProcessing=function(){return this.running?this.delay-this.acc:0},n.prototype.isRunning=function(){return this.running},n.prototype.stop=function(){this.running=!1,this.acc=0},n}(t.EntitySystem);t.DelayedIteratingSystem=e}(es||(es={})),function(t){var e=function(t){function e(e){return t.call(this,e)||this}return __extends(e,t),e.prototype.lateProcessEntity=function(t){},e.prototype.process=function(t){if(0!=t.length)for(var e=0,n=t.length;e=this.interval&&(this.acc-=this.interval,this.intervalDelta=this.acc-this.intervalDelta,!0)},n.prototype.getIntervalDelta=function(){return this.interval+this.intervalDelta},n}(t.EntitySystem);t.IntervalSystem=e}(es||(es={})),function(t){var e=function(t){function e(e,n){return t.call(this,e,n)||this}return __extends(e,t),e.prototype.process=function(t){var e=this;t.forEach(function(t){return e.processEntity(t)})},e}(t.IntervalSystem);t.IntervalIteratingSystem=e}(es||(es={})),function(es){var JobSystem=function(_super){function JobSystem(t,e){var n=_super.call(this,t)||this;n._threads=e,n._jobs=new Array(e);for(var i=0;it.length&&(s=t.length);var a=o._jobs[n];if(a.set(t,r,s,o._executeStr,o),r!=s){var c=es.WorkerUtils.makeWorker(o.queueOnThread);es.WorkerUtils.workerMessage(c)(a).then(function(t){var n=t;e.resetJob(n),c.terminate()}).catch(function(t){a.err=t,c.terminate()})}},o=this,s=0;s-1?eval("(function(){return "+v+" })()"):v}),i=job.from;i0)for(var t=0,e=this._components.length;t0)for(var e=0,n=this._components.length;e0)for(var e=0,n=this._components.length;e0){for(var e=function(t,e){var i=n._componentsToRemoveList[t];n.handleRemove(i);var r=n._components.findIndex(function(t){return t.id==i.id});-1!=r&&n._components.splice(r,1),n.removeComponentsByType(i)},n=this,i=0,r=this._componentsToRemoveList.length;i0){for(i=0,r=this._componentsToAddList.length;i0){for(i=0,r=this._tempBufferList.length;i0){var n=this._updatableComponents.findIndex(function(t){return t.id==e.id});-1!=n&&this._updatableComponents.splice(n,1)}this.decreaseBits(e),this._entity.scene.entityProcessors.onComponentRemoved(this._entity),e.onRemovedFromEntity(),e.entity=null},e.prototype.removeComponentsByType=function(e){var n=this.componentsByType.get(t.TypeUtils.getType(e)),i=n.findIndex(function(t){return t.id==e.id});-1!=i&&n.splice(i,1)},e.prototype.addComponentsByType=function(e){var n=this.componentsByType.get(t.TypeUtils.getType(e));n||(n=[]),n.push(e),this.componentsByType.set(t.TypeUtils.getType(e),n)},e.prototype.removeComponentsToAddByType=function(e){var n=this.componentsToAddByType.get(t.TypeUtils.getType(e)),i=n.findIndex(function(t){return t.id==e.id});-1!=i&&n.splice(i,1)},e.prototype.addComponentsToAddByType=function(e){var n=this.componentsToAddByType.get(t.TypeUtils.getType(e));n||(n=[]),n.push(e),this.componentsToAddByType.set(t.TypeUtils.getType(e),n)},e.prototype.getComponent=function(t,e){var n=this.componentsByType.get(t);if(n&&n.length>0)return n[0];if(!e){var i=this.componentsToAddByType.get(t);if(i&&i.length>0)return i[0]}return null},e.prototype.getComponents=function(t,e){e||(e=[]);var n=this.componentsByType.get(t);n&&(e=e.concat(n));var i=this.componentsToAddByType.get(t);return i&&(e=e.concat(i)),e},e.prototype.update=function(){if(this.updateLists(),this._updatableComponents.length>0)for(var t=0,e=this._updatableComponents.length;t0)for(var e=0,n=this._components.length;e0)for(e=0,n=this._componentsToAddList.length;e0)for(var t=0,e=this._components.length;t0)for(var t=0,e=this._components.length;t0){for(var t=function(t,n){var i=e._entitiesToRemoveList[t];e.removeFromTagList(i);var r=e._entities.findIndex(function(t){return t.id==i.id});-1!=r&&e._entities.splice(r,1),i.onRemovedFromScene(),i.scene=null,e.scene.entityProcessors.onEntityRemoved(i)},e=this,n=0,i=this._entitiesToRemoveList.length;n0){for(n=0,i=this._entitiesToAddedList.length;n0)for(var e=0,n=this._entities.length;e0)for(e=0,n=this._entitiesToAddedList.length;e0)for(var e=0,n=this._entities.length;e0)try{for(var s=__values(r),a=s.next();!a.done;a=s.next()){var c=a.value;o.push(c)}}catch(t){n={error:t}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(n)throw n.error}}return o},e.prototype.entityWithTag=function(t){var e,n,i=this.getTagList(t);if(i.size>0)try{for(var r=__values(i),o=r.next();!o.done;o=r.next()){return o.value}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},e.prototype.findComponentOfType=function(t){if(this._entities.length>0)for(var e=0,n=this._entities.length;e0)for(e=0;e0)for(var i=0,r=this._entities.length;i0)for(i=0,r=this._entitiesToAddedList.length;i0)for(var i=0,r=this._entities.length;i0)for(var s=0,a=t.length;s0)for(i=0,r=this._entitiesToAddedList.length;i0)for(s=0,a=t.length;s=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;i0?this.ids.removeLast():this.nextAvailableId_++},e.prototype.checkIn=function(t){this.ids.add(t)},e}();t.IdentifierPool=e}(es||(es={})),function(t){var e=function(){function e(){this.allSet=[],this.exclusionSet=[],this.oneSet=[]}return e.empty=function(){return new e},e.prototype.getAllSet=function(){return this.allSet},e.prototype.getExclusionSet=function(){return this.exclusionSet},e.prototype.getOneSet=function(){return this.oneSet},e.prototype.isInterestedEntity=function(t){return this.isInterested(t.componentBits)},e.prototype.isInterested=function(e){if(0!=this.allSet.length)for(var n=0,i=this.allSet.length;n=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}();t.StringUtils=e}(es||(es={})),function(t){var e=function(){function t(){}return t.update=function(t,e){var n=0;e?n=t:(-1==t&&(t=Date.now()),-1==this._lastTime&&(this._lastTime=t),n=(t-this._lastTime)/1e3),n>this.maxDeltaTime&&(n=this.maxDeltaTime),this.totalTime+=n,this.deltaTime=n*this.timeScale,this.unscaledDeltaTime=n,this.timeSinceSceneLoad+=n,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.maxDeltaTime=Number.MAX_VALUE,t.frameCount=0,t.timeSinceSceneLoad=0,t._lastTime=-1,t}();t.Time=e}(es||(es={}));var 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 u=n.getDay();if(0==u&&(u=7),e&&(!o||u<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=1,n.range=this._points.length-4):(e=t.MathHelper.clamp01(e)*this._curveCount,n.range=Math.floor(e),e-=n.range,n.range*=3),n.time=e,n},e.prototype.setControlPoint=function(t,e){if(t%3==0){var n=e.sub(this._points[t]);t>0&&this._points[t-1].addEqual(n),t+1-Math.PI&&t<=Math.PI?t:(t%=2*Math.PI)<=-Math.PI?t+2*Math.PI:t>Math.PI?t-2*Math.PI:t},e.isPowerOfTwo=function(t){return t>0&&t%(t-1)==0},e.lerp=function(t,e,n){return t+(e-t)*this.clamp01(n)},e.betterLerp=function(t,n,i,r){return Math.abs(t-n)180&&(i-=360),t+i*this.clamp01(n)},e.lerpAngleRadians=function(t,e,n){var i=this.repeat(e-t,2*Math.PI);return i>Math.PI&&(i-=2*Math.PI),t+i*this.clamp01(n)},e.pingPong=function(t,e){return t=this.repeat(t,2*e),e-Math.abs(t-e)},e.signThreshold=function(t,e){return Math.abs(t)>=e?Math.sign(t):0},e.inverseLerp=function(t,e,n){if(te)return 1}else{if(nt)return 0}return(n-t)/(e-t)},e.lerpPrecise=function(t,e,n){return(1-n)*t+e*n},e.clamp=function(t,e,n){return tn?n:t},e.snap=function(t,e){return Math.round(t/e)*e},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.isOdd=function(t){return t%2!=0},e.roundWithRoundedAmount=function(t,e){var n=Math.round(t);return e.value=t-n*Math.round(t/n),n},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.decrementWithWrap=function(t,e){return--t<0?e-1:t},e.hypotenuse=function(t,e){return Math.sqrt(t*t+e*e)},e.closestPowerOfTwoGreaterThan=function(t){return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,(t|=t>>16)+1},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.between=function(t,e,n){return t>=e&&t<=n},e.deltaAngleRadians=function(t,e){var n=this.repeat(e-t,2*Math.PI);return n>Math.PI&&(n-=2*Math.PI),n},e.repeat=function(t,e){return t-Math.floor(t/e)*e},e.floorToInt=function(t){return Math.trunc(Math.floor(t))},e.rotateAround=function(e,n){var i=t.Time.totalTime*n,r=Math.cos(i),o=Math.sin(i);return new t.Vector2(e.x+r,e.y+o)},e.rotateAround2=function(e,n,i){i=this.toRadians(i);var r=Math.cos(i),o=Math.sin(i),s=r*(e.x-n.x)-o*(e.y-n.y)+n.x,a=o*(e.x-n.x)+r*(e.y-n.y)+n.y;return new t.Vector2(s,a)},e.pointOnCircle=function(e,n,i){var r=this.toRadians(i);return new t.Vector2(Math.cos(r)*n+e.x,Math.sin(r)*n+e.y)},e.pointOnCircleRadians=function(e,n,i){return new t.Vector2(Math.cos(i)*n+e.x,Math.sin(i)*n+e.y)},e.lissajou=function(e,n,i,r,o){void 0===e&&(e=2),void 0===n&&(n=3),void 0===i&&(i=1),void 0===r&&(r=1),void 0===o&&(o=0);var s=Math.sin(t.Time.totalTime*e+o)*i,a=Math.cos(t.Time.totalTime*n)*r;return new t.Vector2(s,a)},e.lissajouDamped=function(e,n,i,r,o,s,a){void 0===e&&(e=2),void 0===n&&(n=3),void 0===i&&(i=1),void 0===r&&(r=1),void 0===o&&(o=.5),void 0===s&&(s=0),void 0===a&&(a=5);var c=this.pingPong(t.Time.totalTime,a),u=Math.pow(Math.E,-s*c),h=u*Math.sin(t.Time.totalTime*e+o)*i,l=u*Math.cos(t.Time.totalTime*n)*r;return new t.Vector2(h,l)},e.hermite=function(t,e,n,i,r){return 0==r?t:1==r?n:(2*t-2*n+i+e)*(r*r*r)+(3*n-3*t-2*e-i)*(r*r)+e*r+t},e.isValid=function(t){return!Number.isNaN(t)&&t!==1/0},e.smoothDamp=function(t,e,n,i,r,o){var s=2/(i=Math.max(1e-4,i)),a=s*o,c=1/(1+(a+(a*a*.48+a*(a*a)*.235))),u=t-e,h=e,l=r*i,p=(n+s*(u=this.clamp(u,-1*l,l)))*o;n=(n-s*p)*c;var f=(e=t-u)+(u+p)*c;return h-t>0==f>h&&(n=((f=h)-h)/o),{value:f,currentVelocity:n}},e.smoothDampVector=function(e,n,i,r,o,s){var a=t.Vector2.zero,c=this.smoothDamp(e.x,n.x,i.x,r,o,s);a.x=c.value,i.x=c.currentVelocity;var u=this.smoothDamp(e.y,n.y,i.y,r,o,s);return a.y=u.value,i.y=u.currentVelocity,a},e.mapMinMax=function(t,n,i,r,o){return r+(e.clamp(t,n,i)-n)*(o-r)/(i-n)},e.fromAngle=function(e){return new t.Vector2(Math.cos(e),Math.sin(e)).normalizeEqual()},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(t,e,n,i,r,o,s,a,c,u,h,l,p,f,d,m){this.m11=t,this.m12=e,this.m13=n,this.m14=i,this.m21=r,this.m22=o,this.m23=s,this.m24=a,this.m31=c,this.m32=u,this.m33=h,this.m34=l,this.m41=p,this.m42=f,this.m43=d,this.m44=m}return Object.defineProperty(t,"Identity",{get:function(){return this.identity},enumerable:!0,configurable:!0}),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.createTranslation=function(t,e){e.m11=1,e.m12=0,e.m13=0,e.m14=0,e.m21=0,e.m22=1,e.m23=0,e.m24=0,e.m31=0,e.m32=0,e.m33=1,e.m34=0,e.m41=t.x,e.m42=t.y,e.m43=0,e.m44=1},t.createRotationZ=function(e,n){n=t.Identity;var i=Math.cos(e),r=Math.sin(e);n.m11=i,n.m12=r,n.m21=-r,n.m22=i},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,u=e.m21*n.m12+e.m22*n.m22+e.m23*n.m32+e.m24*n.m42,h=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=u,i.m23=h,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.identity=new t(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),t}();t.Matrix=e}(es||(es={})),function(t){var e=function(){function e(){this.m11=0,this.m12=0,this.m21=0,this.m22=0,this.m31=0,this.m32=0}return Object.defineProperty(e,"identity",{get:function(){return(new e).setIdentity()},enumerable:!0,configurable:!0}),e.prototype.setIdentity=function(){return this.setValues(1,0,0,1,0,0)},e.prototype.setValues=function(t,e,n,i,r,o){return this.m11=t,this.m12=e,this.m21=n,this.m22=i,this.m31=r,this.m32=o,this},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,e){e.setIdentity();var n=Math.cos(t),i=Math.sin(t);e.m11=n,e.m12=i,e.m21=-1*i,e.m22=n},e.createRotationOut=function(t,e){var n=Math.cos(t),i=Math.sin(t);e.m11=n,e.m12=i,e.m21=-i,e.m22=n},e.createScale=function(t,e,n){n.m11=t,n.m12=0,n.m21=0,n.m22=e,n.m31=0,n.m32=0},e.createScaleOut=function(t,e,n){n.m11=t,n.m12=0,n.m21=0,n.m22=e,n.m31=0,n.m32=0},e.createTranslation=function(t,e,n){return n.m11=1,n.m12=0,n.m21=0,n.m22=1,n.m31=t,n.m32=e,n},e.createTranslationOut=function(t,e){e.m11=1,e.m12=0,e.m21=0,e.m22=1,e.m31=t.x,e.m32=t.y},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.multiply=function(t,e,n){var i=t.m11*e.m11+t.m12*e.m21,r=t.m11*e.m12+t.m12*e.m22,o=t.m21*e.m11+t.m22*e.m21,s=t.m21*e.m12+t.m22*e.m22,a=t.m31*e.m11+t.m32*e.m21+e.m31,c=t.m31*e.m12+t.m32*e.m22+e.m32;n.m11=i,n.m12=r,n.m21=o,n.m22=s,n.m31=a,n.m32=c},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=new e;return e.createTranslation(n,i,r),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,u=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=u}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(e,n,i,r){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),void 0===r&&(r=0),this.x=0,this.y=0,this.width=0,this.height=0,this._tempMat=new t.Matrix2D,this._transformMat=new t.Matrix2D,this.x=e,this.y=n,this.width=i,this.height=r}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 e}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.distance=Math.max(r,e.distance),n=Math.min(o,n),e.distance>n)return e}if(Math.abs(t.direction.y)<1e-6){if(t.start.ythis.y+this.height)return e}else{var a=1/t.direction.y,c=(this.y-t.start.y)*a,u=(this.y+this.height-t.start.y)*a;if(c>u){var h=c;c=u,u=h}if(e.distance=Math.max(c,e.distance),n=Math.max(u,n),e.distance>n)return e}return e.intersected=!0,e},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(h)>=p)return t.Vector2.zero;var f=u>0?l-u:-l-u,d=h>0?p-h:-p-h;return new t.Vector2(f,d)},e.prototype.equals=function(t){return this===t},e.prototype.getHashCode=function(){return Math.trunc(this.x)^Math.trunc(this.y)^Math.trunc(this.width)^Math.trunc(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.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.PairSet,this._previousTriggerIntersections=new t.PairSet,this._tempTriggerList=[],this._entity=e}return e.prototype.update=function(){for(var e,n,i=[],r=this.getColliders(),o=0;o=t.Collider.lateSortOrder?i.push(h):this.notifyTriggerListeners(h,!0)),this._activeTriggerIntersections.add(h)}}try{for(var l=__values(i),p=l.next();!p.done;p=l.next()){h=p.value;this.notifyTriggerListeners(h,!0)}}catch(t){e={error:t}}finally{try{p&&!p.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}this.checkForExitedColliders()},e.prototype.getColliders=function(){for(var e=[],n=0;n1)return!1;var u=(a.x*r.y-a.y*r.x)/s;return!(u<0||u>1)},n.lineToLineIntersection=function(e,n,i,r,o){void 0===o&&(o=t.Vector2.zero),o.x=0,o.y=0;var s=n.sub(e),a=r.sub(i),c=s.x*a.y-s.y*a.x;if(0==c)return!1;var u=i.sub(e),h=(u.x*a.y-u.y*a.x)/c;if(h<0||h>1)return!1;var l=(u.x*s.y-u.y*s.x)/c;if(l<0||l>1)return!1;var p=e.add(s.scale(h));return o.x=p.x,o.y=p.y,!0},n.closestPointOnLine=function(e,n,i){var r=n.sub(e),o=i.sub(e).dot(r)/r.dot(r);return o=t.MathHelper.clamp(o,0,1),e.add(r.scale(o))},n.circleToCircle=function(e,n,i,r){return t.Vector2.sqrDistance(e,i)<(n+r)*(n+r)},n.circleToLine=function(e,n,i,r){return t.Vector2.sqrDistance(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.setAllValues=function(t,e,n,i,r){this.collider=t,this.fraction=e,this.distance=n,this.point=i,this.normal=r},e.prototype.setValues=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.clone=function(){var t=new e;return t.setAllValues(this.collider,this.fraction,this.distance,this.point,this.normal),t},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){return void 0===i&&(i=this.allLayers),this._spatialHash.overlapCircle(t,e,n,i)},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;return this._spatialHash.aabbBroadphase(n,t,e)},e.boxcastBroadphaseExcludingSelfDelta=function(t,n,i,r){void 0===r&&(r=e.allLayers);var o=t.bounds.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,r){return void 0===i&&(i=this.allLayers),void 0===r&&(r=null),this._hitArray[0].reset(),this.linecastAll(t,n,this._hitArray,i),this._hitArray[0].reset(),e.linecastAll(t,n,this._hitArray,i,r),this._hitArray[0].clone()},e.linecastAll=function(t,e,n,i,r){return void 0===i&&(i=this.allLayers),void 0===r&&(r=null),this._spatialHash.linecast(t,e,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.debugRender=!1,e._hitArray=[new t.RaycastHit],e._colliderArray=[null],e}();t.Physics=e}(es||(es={})),function(t){var e=function(){function t(t,e){this._start=t.clone(),this._end=e.clone(),this._direction=this._end.sub(this._start)}return Object.defineProperty(t.prototype,"start",{get:function(){return this._start},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"direction",{get:function(){return this._direction},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"end",{get:function(){return this._end},enumerable:!0,configurable:!0}),t}();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(e){for(var n=e.registeredPhysicsBounds.clone(),i=this.cellCoords(n.x,n.y),r=this.cellCoords(n.right,n.bottom),o=i.x;o<=r.x;o++)for(var s=i.y;s<=r.y;s++){var a=this.cellAtPosition(o,s);t.Insist.isNotNull(a,"从不存在碰撞器的单元格中移除碰撞器: ["+e+"]"),null!=a&&new t.List(a).remove(e)}},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(c)for(var u=0;u=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;ri&&(i=o,n=r)}return t[n]},n.getClosestPointOnPolygonToPoint=function(e,n){for(var i={distanceSquared:Number.MAX_VALUE,edgeNormal:t.Vector2.zero,closestPoint:t.Vector2.zero},r=0,o=0;ot.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.ShapeCollisionsPoint.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 c,u=s.start.add(s.direction.scale(r)),h=0;u.xn.bounds.right&&(h|=1),u.yn.bounds.bottom&&(h|=2);var l=c+h;return 3==l&&console.log("m == 3. corner "+t.Time.frameCount),!0},e.corner=function(e,n){var i=t.Vector2.zero;return i.x=0==(1&n)?e.right:e.left,i.y=0==(1&n)?e.bottom:e.top,i},e.testCircleBox=function(t,e,n){var i=e.bounds.getClosestPointOnRectangleToPoint(t.position).sub(t.position);return i.dot(i)<=t.radius*t.radius},e}();t.RealtimeCollisions=e}(es||(es={})),function(t){var e=function(){function e(){}return e.boxToBox=function(e,n,i){var r=this.minkowskiDifference(e,n);return!!r.contains(0,0)&&(i.minimumTranslationVector=r.getClosestPointOnBoundsToOrigin(),!i.minimumTranslationVector.equals(t.Vector2.zero)&&(i.normal=i.minimumTranslationVector.scale(-1),i.normal=i.normal.normalize(),!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,-s.y),r.normal=r.normal.normalize(),r.distance=0,r.fraction=0,!0)}var a=new t.Ray2D(t.Vector2.zero,i.scale(-1)),c=o.rayIntersects(a);return!!(c.intersected&&c.distance<=1)&&(r.fraction=c.distance,r.distance=i.magnitude()*c.distance,r.normal=i.scale(-1),r.normal=r.normal.normalize(),r.centroid=e.bounds.center.add(i.scale(c.distance)),!0)},e.minkowskiDifference=function(e,n){var i=e.position.sub(e.bounds.center),r=e.bounds.location.add(i.sub(n.bounds.max)),o=e.bounds.size.add(n.bounds.size);return new t.Rectangle(r.x,r.y,o.x,o.y)},e}();t.ShapeCollisionsBox=e}(es||(es={})),function(t){var e=function(){function e(){}return e.circleToCircleCast=function(e,n,i,r){var o=e.position.add(i),s=this.closestPointOnLine(e.position,o,n.position),a=t.Vector2.sqrDistance(n.position,s),c=(e.radius+n.radius)*(e.radius+n.radius);if(a<=c){var u=i.normalize();s===o&&(o=e.position.add(i.add(u.scale(n.radius))),s=this.closestPointOnLine(e.position,o,n.position),a=t.Vector2.sqrDistance(n.position,s));var h=Math.sqrt(c-a);return r.centroid=s.sub(u.scale(h)),r.normal=r.centroid.sub(n.position).normalize(),r.fraction=(r.centroid.x-e.position.x)/i.x,r.distance=t.Vector2.distance(e.position,r.centroid),r.point=n.position.add(r.normal.scale(n.radius)),!0}return!1},e.circleToCircle=function(e,n,i){void 0===i&&(i=new t.CollisionResult);var r=t.Vector2.sqrDistance(e.position,n.position),o=e.radius+n.radius;if(re.radius*e.radius&&!a)return!1;if(a)s=i.normal.scale(Math.sqrt(o.distanceSquared)-e.radius);else if(0===o.distanceSquared)s=i.normal.scale(e.radius);else{var c=Math.sqrt(o.distanceSquared);s=r.sub(o.closestPoint).scale((e.radius-c)/c*-1)}return i.minimumTranslationVector=s,i.point=o.closestPoint.add(n.position),!0},e.closestPointOnLine=function(e,n,i){var r=n.sub(e),o=i.sub(e).dot(r)/r.dot(r);return o=t.MathHelper.clamp(o,0,1),e.add(r.scaleEqual(o))},e}();t.ShapeCollisionsCircle=e}(es||(es={})),function(t){var e=function(){function e(){}return e.lineToPoly=function(n,i,r,o){void 0===o&&(o=new t.RaycastHit);for(var s=t.Vector2.zero,a=t.Vector2.zero,c=Number.MAX_VALUE,u=!1,h=r.points.length-1,l=0;l1)return!1;var h=(c.x*o.y-c.y*o.x)/a;if(h<0||h>1)return!1;var l=t.add(o.scale(u));return r.x=l.x,r.y=l.y,!0},e.lineToCircle=function(e,n,i,r){var o=t.Vector2.distance(e,n),s=t.Vector2.divideScaler(n.sub(e),o),a=e.sub(i.position),c=a.dot(s),u=a.dot(a)-i.radius*i.radius;if(u>0&&c>0)return!1;var h=c*c-u;return!(h<0)&&(r.fraction=-c-Math.sqrt(h),r.fraction<0&&(r.fraction=0),r.point=e.add(s.scale(r.fraction)),r.distance=t.Vector2.distance(e,r.point),r.normal=r.point.sub(i.position).normalize(),r.fraction=r.distance/o,!0)},e}();t.ShapeCollisionsLine=e}(es||(es={})),function(t){var e=function(){function e(){}return e.pointToCircle=function(e,n,i){var r=t.Vector2.sqrDistance(e,n.position),o=1+n.radius;if(r0&&(o=!1),!o)return!1;(p=Math.abs(p))i.max&&(i.max=n);return i},e.intervalDistance=function(t,e,n,i){return t=this._duration?(i=this._elapsedTime-this._duration,this._elapsedTime=this._duration,this._tweenState=n.complete):this._isRunningInReverse&&this._elapsedTime<=0&&(i=0-this._elapsedTime,this._elapsedTime=0,this._tweenState=n.complete),this._elapsedTime>=0&&this._elapsedTime<=this._duration&&this.updateValue(),this._loopType!=e.none&&this._tweenState==n.complete&&0!=this._loops&&this.handleLooping(i);var r=this._isTimeScaleIndependent?t.Time.unscaledDeltaTime:t.Time.deltaTime;return r*=this._timeScale,this._isRunningInReverse?this._elapsedTime-=r:this._elapsedTime+=r,this._tweenState==n.complete&&(this._completionHandler&&this._completionHandler(this),null!=this._nextTween&&(this._nextTween.start(),this._nextTween=null),!0)},i.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._target=null,this._nextTween=null)},i.prototype.isRunning=function(){return this._tweenState==n.running},i.prototype.start=function(){this._isFromValueOverridden||(this._fromValue=this._target.getTweenedValue()),this._tweenState==n.complete&&(this._tweenState=n.running,t.TweenManager.addTween(this))},i.prototype.pause=function(){this._tweenState=n.paused},i.prototype.resume=function(){this._tweenState=n.running},i.prototype.stop=function(i){void 0===i&&(i=!1),this._tweenState=n.complete,i?(this._elapsedTime=this._isRunningInReverse?0:this._duration,this._loopType=e.none,this._loops=0):t.TweenManager.removeTween(this)},i.prototype.jumpToElapsedTime=function(e){this._elapsedTime=t.MathHelper.clamp(e,0,this._duration),this.updateValue()},i.prototype.reverseTween=function(){this._isRunningInReverse=!this._isRunningInReverse},i.prototype.waitForCompletion=function(){return __generator(this,function(t){switch(t.label){case 0:return this._tweenState==n.complete?[3,2]:[4,null];case 1:return t.sent(),[3,0];case 2:return[2]}})},i.prototype.getTargetObject=function(){return this._target.getTargetObject()},i.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=t.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=e.none,this._delayBetweenLoops=0,this._loops=0,this._isRunningInReverse=!1},i.prototype.initialize=function(t,e,n){this.resetState(),this._target=t,this._toValue=e,this._duration=n},i.prototype.handleLooping=function(t){this._loops--,this._loopType==e.pingpong&&this.reverseTween(),this._loopType!=e.restartFromBeginning&&this._loops%2!=0||this._loopCompleteHandler&&this._completionHandler(this),0!=this._loops&&(this._tweenState=n.running,this._loopType==e.restartFromBeginning?this._elapsedTime=t-this._delayBetweenLoops:this._isRunningInReverse?this._elapsedTime+=this._delayBetweenLoops-t:this._elapsedTime=t-this._delayBetweenLoops,0==this._delayBetweenLoops&&t>0&&this.updateValue())},i}();t.Tween=i}(es||(es={})),function(t){var e=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheNumberTweens?t.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(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){e.prototype.recycleSelf.call(this),this._shouldRecycleTween&&t.TweenManager.cacheNumberTweens&&t.Pool.free(n,this)},n}(t.Tween);t.NumberTween=e;var n=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheVector2Tweens?t.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(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){e.prototype.recycleSelf.call(this),this._shouldRecycleTween&&t.TweenManager.cacheVector2Tweens&&t.Pool.free(n,this)},n}(t.Tween);t.Vector2Tween=n;var i=function(e){function n(t,n,i){var r=e.call(this)||this;return r.initialize(t,n,i),r}return __extends(n,e),n.create=function(){return t.TweenManager.cacheRectTweens?t.Pool.obtain(n):new n},n.prototype.setIsRelative=function(){return this._isRelative=!0,this._toValue=new t.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(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},n.prototype.recycleSelf=function(){e.prototype.recycleSelf.call(this),this._shouldRecycleTween&&t.TweenManager.cacheRectTweens&&t.Pool.free(n,this)},n}(t.Tween);t.RectangleTween=i}(es||(es={})),function(t){var e;!function(t){t[t.position=0]="position",t[t.localPosition=1]="localPosition",t[t.scale=2]="scale",t[t.localScale=3]="localScale",t[t.rotationDegrees=4]="rotationDegrees",t[t.localRotationDegrees=5]="localRotationDegrees"}(e=t.TransformTargetType||(t.TransformTargetType={}));var n=function(n){function i(){return null!==n&&n.apply(this,arguments)||this}return __extends(i,n),i.prototype.setTweenedValue=function(t){switch(this._targetType){case e.position:this._transform.position=t;break;case e.localPosition:this._transform.localPosition=t;break;case e.scale:this._transform.scale=t;break;case e.localScale:this._transform.localScale=t;break;case e.rotationDegrees:this._transform.rotationDegrees=t.x;case e.localRotationDegrees:this._transform.localRotationDegrees=t.x}},i.prototype.getTweenedValue=function(){switch(this._targetType){case e.position:return this._transform.position;case e.localPosition:return this._transform.localPosition;case e.scale:return this._transform.scale;case e.localScale:return this._transform.localScale;case e.rotationDegrees:return new t.Vector2(this._transform.rotationDegrees,this._transform.rotationDegrees);case e.localRotationDegrees:return new t.Vector2(this._transform.localRotationDegrees,0)}},i.prototype.getTargetObject=function(){return this._transform},i.prototype.setTargetAndType=function(t,e){this._transform=t,this._targetType=e},i.prototype.updateValue=function(){this._targetType!=e.rotationDegrees&&this._targetType!=e.localRotationDegrees||this._isRelative?this.setTweenedValue(t.Lerps.ease(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration)):this.setTweenedValue(t.Lerps.easeAngle(this._easeType,this._fromValue,this._toValue,this._elapsedTime,this._duration))},i.prototype.recycleSelf=function(){this._shouldRecycleTween&&(this._target=null,this._nextTween=null,this._transform=null,t.Pool.free(t.Vector2Tween,this))},i}(t.Vector2Tween);t.TransformVector2Tween=n}(es||(es={})),function(t){var e;!function(t){t[t.linear=0]="linear",t[t.sineIn=1]="sineIn",t[t.sineOut=2]="sineOut",t[t.sineInOut=3]="sineInOut",t[t.quadIn=4]="quadIn",t[t.quadOut=5]="quadOut",t[t.quadInOut=6]="quadInOut",t[t.quintIn=7]="quintIn",t[t.quintOut=8]="quintOut",t[t.quintInOut=9]="quintInOut",t[t.cubicIn=10]="cubicIn",t[t.cubicOut=11]="cubicOut",t[t.cubicInOut=12]="cubicInOut",t[t.quartIn=13]="quartIn",t[t.quartOut=14]="quartOut",t[t.quartInOut=15]="quartInOut",t[t.expoIn=16]="expoIn",t[t.expoOut=17]="expoOut",t[t.expoInOut=18]="expoInOut",t[t.circleIn=19]="circleIn",t[t.circleOut=20]="circleOut",t[t.circleInOut=21]="circleInOut",t[t.elasticIn=22]="elasticIn",t[t.elasticOut=23]="elasticOut",t[t.elasticInOut=24]="elasticInOut",t[t.punch=25]="punch",t[t.backIn=26]="backIn",t[t.backOut=27]="backOut",t[t.backInOut=28]="backInOut",t[t.bounceIn=29]="bounceIn",t[t.bounceOut=30]="bounceOut",t[t.bounceInOut=31]="bounceInOut"}(e=t.EaseType||(t.EaseType={}));var n=function(){function n(){}return n.oppositeEaseType=function(t){switch(t){case e.linear:return t;case e.backIn:return e.backOut;case e.backOut:return e.backIn;case e.backInOut:return t;case e.bounceIn:return e.bounceOut;case e.bounceOut:return e.bounceIn;case e.bounceInOut:return t;case e.circleIn:return e.circleOut;case e.circleOut:return e.circleIn;case e.circleInOut:return t;case e.cubicIn:return e.cubicOut;case e.cubicOut:return e.cubicIn;case e.circleInOut:case e.punch:return t;case e.expoIn:return e.expoOut;case e.expoOut:return e.expoIn;case e.expoInOut:return t;case e.quadIn:return e.quadOut;case e.quadOut:return e.quadIn;case e.quadInOut:return t;case e.quartIn:return e.quadOut;case e.quartOut:return e.quartIn;case e.quadInOut:return t;case e.sineIn:return e.sineOut;case e.sineOut:return e.sineIn;case e.sineInOut:default:return t}},n.ease=function(n,i,r){switch(n){case e.linear:return t.Easing.Linear.easeNone(i,r);case e.backIn:return t.Easing.Back.easeIn(i,r);case e.backOut:return t.Easing.Back.easeOut(i,r);case e.backInOut:return t.Easing.Back.easeInOut(i,r);case e.bounceIn:return t.Easing.Bounce.easeIn(i,r);case e.bounceOut:return t.Easing.Bounce.easeOut(i,r);case e.bounceInOut:return t.Easing.Bounce.easeInOut(i,r);case e.circleIn:return t.Easing.Circular.easeIn(i,r);case e.circleOut:return t.Easing.Circular.easeOut(i,r);case e.circleInOut:return t.Easing.Circular.easeInOut(i,r);case e.cubicIn:return t.Easing.Cubic.easeIn(i,r);case e.cubicOut:return t.Easing.Cubic.easeOut(i,r);case e.cubicInOut:return t.Easing.Cubic.easeInOut(i,r);case e.elasticIn:return t.Easing.Elastic.easeIn(i,r);case e.elasticOut:return t.Easing.Elastic.easeOut(i,r);case e.elasticInOut:return t.Easing.Elastic.easeInOut(i,r);case e.punch:return t.Easing.Elastic.punch(i,r);case e.expoIn:return t.Easing.Exponential.easeIn(i,r);case e.expoOut:return t.Easing.Exponential.easeOut(i,r);case e.expoInOut:return t.Easing.Exponential.easeInOut(i,r);case e.quadIn:return t.Easing.Quadratic.easeIn(i,r);case e.quadOut:return t.Easing.Quadratic.easeOut(i,r);case e.quadInOut:return t.Easing.Quadratic.easeInOut(i,r);case e.quintIn:return t.Easing.Quintic.easeIn(i,r);case e.quintOut:return t.Easing.Quintic.easeOut(i,r);case e.quintInOut:return t.Easing.Quintic.easeInOut(i,r);case e.sineIn:return t.Easing.Sinusoidal.easeIn(i,r);case e.sineOut:return t.Easing.Sinusoidal.easeOut(i,r);case e.sineInOut:return t.Easing.Sinusoidal.easeInOut(i,r);default:return t.Easing.Linear.easeNone(i,r)}},n}();t.EaseHelper=n}(es||(es={})),function(t){var e=function(){function t(){}return Object.defineProperty(t.prototype,"enabled",{get:function(){return this._enabled},set:function(t){this.setEnabled(t)},enumerable:!0,configurable:!0}),t.prototype.setEnabled=function(t){this._enabled!=t&&(this._enabled=t,this._enabled?this.onEnabled():this.onDisabled())},t.prototype.onEnabled=function(){},t.prototype.onDisabled=function(){},t.prototype.update=function(){},t}();t.GlobalManager=e}(es||(es={})),function(t){var e=function(e){function n(){var t=e.call(this)||this;return t._activeTweens=[],t._tempTweens=[],n._instance=t,t}return __extends(n,e),n.prototype.update=function(){this._isUpdating=!0;for(var e=this._activeTweens.length-1;e>=0;--e){var n=this._activeTweens[e];n.tick()&&this._tempTweens.push(n)}this._isUpdating=!1;for(e=0;e=0;--e)n._instance._activeTweens[e].stop(t)},n.allTweensWithContext=function(t){for(var e=[],i=0;i=0;--i)n._instance._activeTweens[i].context==t&&n._instance._activeTweens[i].stop(e)},n.allTweenWithTarget=function(t){for(var e=[],i=0;i=0;--i)if(n._instance._activeTweens[i]){var r=n._instance._activeTweens[i];r.getTargetObject()==t&&r.stop(e)}},n.defaultEaseType=t.EaseType.quartIn,n.removeAllTweensOnLevelLoad=!1,n.cacheNumberTweens=!0,n.cacheVector2Tweens=!0,n.cacheColorTweens=!0,n.cacheRectTweens=!1,n}(t.GlobalManager);t.TweenManager=e}(es||(es={})),function(t){!function(t){var e=function(){function t(){}return t.easeNone=function(t,e){return t/e},t}();t.Linear=e;var n=function(){function t(){}return t.easeIn=function(t,e){return(t/=e)*t},t.easeOut=function(t,e){return-1*(t/=e)*(t-2)},t.easeInOut=function(t,e){return(t/=e/2)<1?.5*t*t:-.5*(--t*(t-2)-1)},t}();t.Quadratic=n;var i=function(){function t(){}return t.easeIn=function(t,e){return(t/=e)*t*(2.70158*t-1.70158)},t.easeOut=function(t,e){return(t=t/e-1)*t*(2.70158*t+1.70158)+1},t.easeInOut=function(t,e){var n=1.70158;return(t/=e/2)<1?t*t*((1+(n*=1.525))*t-n)*.5:.5*((t-=2)*t*((1+(n*=1.525))*t+n)+2)},t}();t.Back=i;var r=function(){function t(){}return t.easeOut=function(t,e){return(t/=e)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},t.easeIn=function(t,e){return 1-this.easeOut(e-t,e)},t.easeInOut=function(t,e){return t= 2");if(t.sort(function(t,e){return t.t-e.t}),0!==t[0].t)throw new Error("curve must start with 0");if(1!==t[t.length-1].t)throw new Error("curve must end with 1");this._points=t}return Object.defineProperty(e.prototype,"points",{get:function(){return this._points},enumerable:!0,configurable:!0}),e.prototype.lerp=function(e){for(var n=1;n=0;o--)(e=r[o].func).call.apply(e,__spread([r[o].context],n))},n}();t.Emitter=n}(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.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(){function t(){this._listeners=[]}return t.prototype.addListener=function(t,e){-1===this._listeners.findIndex(function(n){return n.callback===e&&n.caller===t})&&this._listeners.push({caller:t,callback:e})},t.prototype.removeListener=function(t,e){var n=this._listeners.findIndex(function(n){return n.callback===e&&n.caller===t});n>=0&&this._listeners.splice(n,1)},t.prototype.clearListener=function(){this._listeners=[]},t.prototype.clearListenerWithCaller=function(t){for(var e=this._listeners.length-1;e>=0;e--){this._listeners[e].caller===t&&this._listeners.splice(e,1)}},t.prototype.notify=function(){for(var t,e=[],n=0;n=0;i--){var r=this._listeners[i];r.caller?(t=r.callback).call.apply(t,__spread([r.caller],e)):r.callback.apply(r,__spread(e))}},t}();t.Observable=e;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.addListener=function(e,n){t.prototype.addListener.call(this,e,n)},e.prototype.removeListener=function(e,n){t.prototype.removeListener.call(this,e,n)},e.prototype.notify=function(e){t.prototype.notify.call(this,e)},e}(e);t.ObservableT=n;var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.addListener=function(e,n){t.prototype.addListener.call(this,e,n)},e.prototype.removeListener=function(e,n){t.prototype.removeListener.call(this,e,n)},e.prototype.notify=function(e,n){t.prototype.notify.call(this,e,n)},e}(e);t.ObservableTT=i;var r=function(){function t(t,n){this.bindAction(t,n),this._onExec=new e}return t.prototype.bindAction=function(t,e){this._caller=t,this._action=e},t.prototype.dispatch=function(){for(var t,e=[],n=0;n3&&o<500;){o++;var a=!0,c=n[this._triPrev[s]],u=n[s],h=n[this._triNext[s]];if(t.Vector2Ext.isTriangleCCW(c,u,h)){var l=this._triNext[this._triNext[s]];do{if(e.testPointTriangle(n[l],c,u,h)){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.length>8&255]+e[t>>16&255]+e[t>>24&255]+"-"+e[255&n]+e[n>>8&255]+"-"+e[n>>16&15|64]+e[n>>24&255]+"-"+e[63&i|128]+e[i>>8&255]+"-"+e[i>>16&255]+e[i>>24&255]+e[255&r]+e[r>>8&255]+e[r>>16&255]+e[r>>24&255]},t}();t.UUID=n}(es||(es={})),function(t){t.getClassName=function(t){return t.className||t.name}}(es||(es={})),function(t){var e,n=function(){function t(t){void 0===t&&(t=i),this.getSystemTime=t,this._stopDuration=0,this._completeSlices=[]}return t.prototype.getState=function(){return void 0===this._startSystemTime?e.IDLE:void 0===this._stopSystemTime?e.RUNNING:e.STOPPED},t.prototype.isIdle=function(){return this.getState()===e.IDLE},t.prototype.isRunning=function(){return this.getState()===e.RUNNING},t.prototype.isStopped=function(){return this.getState()===e.STOPPED},t.prototype.slice=function(){return this.recordPendingSlice()},t.prototype.getCompletedSlices=function(){return Array.from(this._completeSlices)},t.prototype.getCompletedAndPendingSlices=function(){return __spread(this._completeSlices,[this.getPendingSlice()])},t.prototype.getPendingSlice=function(){return this.calculatePendingSlice()},t.prototype.getTime=function(){return this.caculateStopwatchTime()},t.prototype.reset=function(){this._startSystemTime=this._pendingSliceStartStopwatchTime=this._stopSystemTime=void 0,this._stopDuration=0,this._completeSlices=[]},t.prototype.start=function(t){if(void 0===t&&(t=!1),t&&this.reset(),void 0!==this._stopSystemTime){var e=(n=this.getSystemTime())-this._stopSystemTime;this._stopDuration+=e,this._stopSystemTime=void 0}else if(void 0===this._startSystemTime){var n=this.getSystemTime();this._startSystemTime=n,this._pendingSliceStartStopwatchTime=0}},t.prototype.stop=function(t){if(void 0===t&&(t=!1),void 0===this._startSystemTime)return 0;var e=this.getSystemTimeOfCurrentStopwatchTime();return t&&this.recordPendingSlice(this.caculateStopwatchTime(e)),this._stopSystemTime=e,this.getTime()},t.prototype.calculatePendingSlice=function(t){return void 0===this._pendingSliceStartStopwatchTime?Object.freeze({startTime:0,endTime:0,duration:0}):(void 0===t&&(t=this.getTime()),Object.freeze({startTime:this._pendingSliceStartStopwatchTime,endTime:t,duration:t-this._pendingSliceStartStopwatchTime}))},t.prototype.caculateStopwatchTime=function(t){return void 0===this._startSystemTime?0:(void 0===t&&(t=this.getSystemTimeOfCurrentStopwatchTime()),t-this._startSystemTime-this._stopDuration)},t.prototype.getSystemTimeOfCurrentStopwatchTime=function(){return void 0===this._stopSystemTime?this.getSystemTime():this._stopSystemTime},t.prototype.recordPendingSlice=function(t){if(void 0!==this._pendingSliceStartStopwatchTime){void 0===t&&(t=this.getTime());var e=this.calculatePendingSlice(t);return this._pendingSliceStartStopwatchTime=e.endTime,this._completeSlices.push(e),e}return this.calculatePendingSlice()},t}();t.Stopwatch=n,function(t){t.IDLE="IDLE",t.RUNNING="RUNNING",t.STOPPED="STOPPED"}(e||(e={})),t.setDefaultSystemTimeGetter=function(t){void 0===t&&(t=Date.now),i=t};var i=Date.now}(es||(es={})),function(t){var e=function(){function t(t){void 0===t&&(t=64),this.size_=0,this.length=0,this.array=[],this.length=t}return t.prototype.removeAt=function(t){var e=this.array[t];return this.array[t]=this.array[--this.size_],this.array[this.size_]=null,e},t.prototype.remove=function(t){var e,n=this.size_;for(e=0;e0){var t=this.array[--this.size_];return this.array[this.size_]=null,t}return null},t.prototype.contains=function(t){var e,n;for(e=0,n=this.size_;n>e;e++)if(t===this.array[e])return!0;return!1},t.prototype.removeAll=function(t){var e,n,i,r,o=!1;for(e=0,i=t.size();e=this.length)throw new Error("ArrayIndexOutOfBoundsException");return this.array[t]},t.prototype.safeGet=function(t){return t>=this.length&&this.grow(7*t/4+1),this.array[t]},t.prototype.size=function(){return this.size_},t.prototype.getCapacity=function(){return this.length},t.prototype.isIndexWithinBounds=function(t){return t=this.length&&this.grow(2*t),this.size_=t+1,this.array[t]=e},t.prototype.grow=function(t){void 0===t&&(t=1+~~(3*this.length/2)),this.length=~~t},t.prototype.ensureCapacity=function(t){t>=this.length&&this.grow(2*t)},t.prototype.clear=function(){var t,e;for(t=0,e=this.size_;te;e++)this.add(t.get(e))},t}();t.Bag=e}(es||(es={})),function(t){var e=function(){function e(e){void 0===e&&(e=1),this._freeValueCellIndex=0,this._collisions=0,this._valuesInfo=new Array(e),this._values=new Array(e),this._buckets=new Array(t.HashHelpers.getPrime(e))}return e.prototype.getValuesArray=function(t){return t.value=this._freeValueCellIndex,this._values},Object.defineProperty(e.prototype,"valuesArray",{get:function(){return this._values},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"count",{get:function(){return this._freeValueCellIndex},enumerable:!0,configurable:!0}),e.prototype.add=function(t,e){if(!this.addValue(t,e,{value:0}))throw new Error("key 已经存在")},e.prototype.addValue=function(i,r,o){var s=t.HashHelpers.getHashCode(i),a=e.reduce(s,this._buckets.length);if(this._freeValueCellIndex==this._values.length){var c=t.HashHelpers.expandPrime(this._freeValueCellIndex);this._values.length=c,this._valuesInfo.length=c}var u=t.NumberExtension.toNumber(this._buckets[a])-1;if(-1==u)this._valuesInfo[this._freeValueCellIndex]=new n(i,s);else{var h=u;do{if(this._valuesInfo[h].hashcode==s&&this._valuesInfo[h].key==i)return this._values[h]=r,o.value=h,!1;h=this._valuesInfo[h].previous}while(-1!=h);this._collisions++,this._valuesInfo[this._freeValueCellIndex]=new n(i,s,u),this._valuesInfo[u].next=this._freeValueCellIndex}if(this._buckets[a]=this._freeValueCellIndex+1,this._values[this._freeValueCellIndex]=r,o.value=this._freeValueCellIndex,this._freeValueCellIndex++,this._collisions>this._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 n=0;nthis._objectQueue.get(t).length;)this._objectQueue.get(t).shift()},t.clearCache=function(t){this.checkCreate(t),this._objectQueue.get(t).length=0},t.obtain=function(t){return this.checkCreate(t),this._objectQueue.get(t).length>0?this._objectQueue.get(t).shift():[]},t.free=function(t,e){this.checkCreate(t),this._objectQueue.get(t).unshift(e),e.length=0},t.checkCreate=function(t){this._objectQueue.get(t)||this._objectQueue.set(t,[])},t._objectQueue=new Map,t}();t.ListPool=e}(es||(es={})),function(t){var e=function(){function t(t,e){this.first=t,this.second=e}return t.prototype.clear=function(){this.first=this.second=null},t.prototype.equals=function(t){return this.first===t.first&&this.second===t.second},t}();t.Pair=e}(es||(es={})),function(t){var e=function(){function t(){this._all=new Array}return Object.defineProperty(t.prototype,"all",{get:function(){return this._all},enumerable:!0,configurable:!0}),t.prototype.has=function(t){return this._all.findIndex(function(e){return e.equals(t)})>-1},t.prototype.add=function(t){this.has(t)||this._all.push(t)},t.prototype.remove=function(t){var e=this._all.findIndex(function(e){return e.equals(t)});if(e>-1){var n=this._all[e];this._all[e]=this._all[this._all.length-1],this._all[this._all.length-1]=n,this._all=this._all.slice(0,this._all.length-1)}},t.prototype.clear=function(){this._all=[]},t.prototype.union=function(t){var e,n,i=t.all;try{for(var r=__values(i),o=r.next();!o.done;o=r.next()){var s=o.value;this.add(s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}},t.prototype.except=function(t){var e,n,i=t.all;try{for(var r=__values(i),o=r.next();!o.done;o=r.next()){var s=o.value;this.remove(s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}},t}();t.PairSet=e}(es||(es={})),function(t){var e=function(){function e(){}return e.warmCache=function(t,e){if(this.checkCreate(t),(e-=this._objectQueue.get(t).length)>0)for(var n=0;nthis._objectQueue.get(t).length;)this._objectQueue.get(t).shift()},e.clearCache=function(t){this.checkCreate(t),this._objectQueue.get(t).length=0},e.obtain=function(t){return this.checkCreate(t),this._objectQueue.get(t).length>0?this._objectQueue.get(t).shift():new t},e.free=function(e,n){this.checkCreate(e),this._objectQueue.get(e).unshift(n),t.isIPoolable(n)&&n.reset()},e.checkCreate=function(t){this._objectQueue.get(t)||this._objectQueue.set(t,[])},e._objectQueue=new Map,e}();t.Pool=e,t.isIPoolable=function(t){return void 0!==t.reset}}(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 n=0;n0?(i.waitTimer-=i.useUnscaledDeltaTime?t.Time.unscaledDeltaTime:t.Time.deltaTime,this._shouldRunNextFrame.push(i)):this.tickCoroutine(i)&&this._shouldRunNextFrame.push(i)}}var r=new t.List(this._unblockedCoroutines);r.clear(),r.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(e,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(e,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),u=Math.abs(this.freeRectangles[s].height-n),h=Math.min(c,u);(a=n&&this.freeRectangles[s].height>=e){c=Math.abs(this.freeRectangles[s].width-n),u=Math.abs(this.freeRectangles[s].height-e),h=Math.min(c,u);(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={})),function(t){var e=function(){function e(){}return e.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}},e.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},e.findElementIndex=function(t,e){for(var n=t.length,i=0;it[e]&&(e=i);return e},e.getMinElementIndex=function(t){for(var e=0,n=t.length,i=1;i=0;--r)n.unshift(e[r]);return n},e.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)},e.cloneList=function(t){return t?t.slice(0,t.length):null},e.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},e.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},e.shuffle=function(e){for(var n=e.length;n>1;){n--;var i=t.RandomUtils.randint(0,n+1),r=e[i];e[i]=e[n],e[n]=r}},e.addIfNotPresent=function(e,n){return!new t.List(e).contains(n)&&(e.push(n),!0)},e.lastItem=function(t){return t[t.length-1]},e.randomItem=function(e){return e[t.RandomUtils.randint(0,e.length-1)]},e.randomItems=function(e,n,i){for(var r=new Set;r.size!=i;){var o=this.randomItem(n);r.has(o)||r.add(o)}var s=t.ListPool.obtain(e);return r.forEach(function(t){return s.push(t)}),s},e}();t.ArrayUtils=e}(es||(es={})),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=[],u=0;u>2,o=(3&e)<<4|(n=t.charCodeAt(u++))>>4,s=(15&n)<<2|(i=t.charCodeAt(u++))>>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}();t.RandomUtils=e}(es||(es={})),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(h)>=p)return t.Vector2.zero;var f=u>0?l-u:-l-u,d=h>0?p-h:-p-h;return new t.Vector2(f,d)},e.getClosestPointOnBoundsToOrigin=function(e){var n=this.getMax(e),i=Math.abs(e.location.x),r=new t.Vector2(e.location.x,0);return Math.abs(n.x)r&&(r=a.x),a.yo&&(o=a.y)}return this.fromMinMaxVector(new t.Vector2(Math.trunc(n),Math.trunc(i)),new t.Vector2(Math.trunc(r),Math.trunc(o)))},e.calculateBounds=function(e,n,i,r,o,s,a,c){if(0==s)e.x=Math.trunc(n.x+i.x-r.x*o.x),e.y=Math.trunc(n.y+i.y-r.y*o.y),e.width=Math.trunc(a*o.x),e.height=Math.trunc(c*o.y);else{var u=n.x+i.x,h=n.y+i.y,l=new t.Matrix2D;t.Matrix2D.createTranslation(-u-r.x,-h-r.y,l),t.Matrix2D.createScale(o.x,o.y,void 0),l=l.multiply(void 0),t.Matrix2D.createRotation(s,void 0),l=l.multiply(void 0),t.Matrix2D.createTranslation(u,h,void 0),l=l.multiply(void 0);var p=new t.Vector2(u,h),f=new t.Vector2(u+a,h),d=new t.Vector2(u,h+c),m=new t.Vector2(u+a,h+c);t.Vector2Ext.transformR(p,l,p),t.Vector2Ext.transformR(f,l,f),t.Vector2Ext.transformR(d,l,d),t.Vector2Ext.transformR(m,l,m);var y=Math.trunc(Math.min(p.x,m.x,f.x,d.x)),g=Math.trunc(Math.max(p.x,m.x,f.x,d.x)),_=Math.trunc(Math.min(p.y,m.y,f.y,d.y)),v=Math.trunc(Math.max(p.y,m.y,f.y,d.y));e.location=new t.Vector2(y,_),e.width=Math.trunc(g-y),e.height=Math.trunc(v-_)}},e.scale=function(t,e){t.x=Math.trunc(t.x*e.x),t.y=Math.trunc(t.y*e.y),t.width=Math.trunc(t.width*e.x),t.height=Math.trunc(t.height*e.y)},e.translate=function(t,e){t.location.addEqual(e)},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.divideScaler(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 e=this._timers.length-1;e>=0;e--)this._timers[e].tick()&&(this._timers[e].unload(),new t.List(this._timers).removeAt(e))},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/gulpfile.js b/source/gulpfile.js index 8ff56701..2db20dc4 100644 --- a/source/gulpfile.js +++ b/source/gulpfile.js @@ -24,19 +24,13 @@ gulp.task("buildDts", ["buildJs"], () => { }); gulp.task("copy", ["buildDts"], () => { - return gulp.src('bin/**/*') - .pipe(gulp.dest('../demo/egret_demo/libs/framework/')) - .pipe(gulp.dest('../extensions/behaviourTree-ai/egret-demo/libs/framework/')) + return gulp.src('bin/**/*'); }); gulp.task('build', ['copy'], () => { return merge([ - gulp.src('bin/*.js') - .pipe(gulp.dest('../demo/laya_demo/bin/libs/')), - gulp.src('bin/*.ts') - .pipe(gulp.dest('../demo/laya_demo/libs/')), + gulp.src('bin/*.js'), + gulp.src('bin/*.ts'), gulp.src('bin/framework.d.ts') - .pipe(gulp.dest('../extensions/behaviourTree-ai/source/lib/')) - .pipe(gulp.dest('../extensions/ecs-star/lib/')) ]) }); \ No newline at end of file diff --git a/source/src/ECS/Component.ts b/source/src/ECS/Component.ts index c63e78b1..da3ae7d3 100644 --- a/source/src/ECS/Component.ts +++ b/source/src/ECS/Component.ts @@ -83,8 +83,6 @@ module es { public onEntityTransformChanged(comp: ComponentTransform) { } - public debugRender(batcher: IBatcher) {} - /** *当父实体或此组件启用时调用 */ diff --git a/source/src/ECS/Components/Physics/Colliders/BoxCollider.ts b/source/src/ECS/Components/Physics/Colliders/BoxCollider.ts index 6bfaf632..583e382a 100644 --- a/source/src/ECS/Components/Physics/Colliders/BoxCollider.ts +++ b/source/src/ECS/Components/Physics/Colliders/BoxCollider.ts @@ -11,11 +11,7 @@ module es { constructor(x: number = 0, y: number = 0, width: number = 1, height: number = 1) { super(); - if (width == 1 && height == 1) { - this._colliderRequiresAutoSizing = true; - } else { - this._localOffset = new Vector2(x + width / 2, y + height / 2); - } + this._localOffset = new Vector2(x + width / 2, y + height / 2); this.shape = new Box(width, height); } @@ -42,7 +38,6 @@ module es { * @param height */ public setSize(width: number, height: number) { - this._colliderRequiresAutoSizing = false; let box = this.shape as Box; if (width != box.width || height != box.height) { // 更新框,改变边界,如果我们需要更新物理系统中的边界 @@ -60,7 +55,6 @@ module es { * @param width */ public setWidth(width: number): BoxCollider { - this._colliderRequiresAutoSizing = false; let box = this.shape as Box; if (width != box.width) { // 更新框,改变边界,如果我们需要更新物理系统中的边界 @@ -78,7 +72,6 @@ module es { * @param height */ public setHeight(height: number) { - this._colliderRequiresAutoSizing = false; let box = this.shape as Box; if (height != box.height) { // 更新框,改变边界,如果我们需要更新物理系统中的边界 @@ -89,18 +82,6 @@ module es { } } - public debugRender(batcher: IBatcher) { - let poly = this.shape as Polygon; - batcher.drawHollowRect(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, new Color(76, 76, 76, 76), 2); - batcher.end(); - batcher.drawPolygon(this.shape.position, poly.points, new Color(139, 0, 0, 255), true, 2); - batcher.end(); - batcher.drawPixel(this.entity.position, new Color(255, 255, 0), 4); - batcher.end(); - batcher.drawPixel(es.Vector2.add(this.transform.position, this.shape.center), new Color(255, 0, 0), 2); - batcher.end(); - } - public toString() { return `[BoxCollider: bounds: ${this.bounds}]`; } diff --git a/source/src/ECS/Components/Physics/Colliders/CircleCollider.ts b/source/src/ECS/Components/Physics/Colliders/CircleCollider.ts index 4169df62..def607f5 100644 --- a/source/src/ECS/Components/Physics/Colliders/CircleCollider.ts +++ b/source/src/ECS/Components/Physics/Colliders/CircleCollider.ts @@ -11,9 +11,6 @@ module es { super(); this.shape = new Circle(radius); - if (radius == 1) { - this._colliderRequiresAutoSizing = true; - } } public get radius(): number { @@ -29,7 +26,6 @@ module es { * @param radius */ public setRadius(radius: number): CircleCollider { - this._colliderRequiresAutoSizing = false; let circle = this.shape as Circle; if (radius != circle.radius) { circle.radius = radius; @@ -43,17 +39,6 @@ module es { return this; } - public debugRender(batcher: IBatcher) { - batcher.drawHollowRect(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, new Color(76, 76, 76, 76), 2); - batcher.end(); - batcher.drawCircle(this.shape.position, this.radius, new Color(139, 0, 0), 2); - batcher.end(); - batcher.drawPixel(this.entity.transform.position, new Color(255, 255, 0), 4); - batcher.end(); - batcher.drawPixel(this.shape.position, new Color(255, 0, 0), 2); - batcher.end(); - } - public toString() { return `[CircleCollider: bounds: ${this.bounds}, radius: ${(this.shape as Circle).radius}]` } diff --git a/source/src/ECS/Components/Physics/Colliders/Collider.ts b/source/src/ECS/Components/Physics/Colliders/Collider.ts index 843e59cf..0e2f7fea 100644 --- a/source/src/ECS/Components/Physics/Colliders/Collider.ts +++ b/source/src/ECS/Components/Physics/Colliders/Collider.ts @@ -29,8 +29,6 @@ module es { */ public registeredPhysicsBounds: Rectangle = new Rectangle(); - protected _colliderRequiresAutoSizing: boolean; - public _localOffsetLength: number; public _isPositionDirty: boolean = true; public _isRotationDirty: boolean = true; @@ -116,33 +114,6 @@ module es { } public onAddedToEntity() { - if (this._colliderRequiresAutoSizing) { - let renderable = null; - for (let i = 0; i < this.entity.components.buffer.length; i ++) { - let component = this.entity.components.buffer[i]; - if (component instanceof RenderableComponent){ - renderable = component; - break; - } - } - - if (renderable != null) { - let renderableBounds = renderable.bounds.clone(); - - let width = renderableBounds.width / this.entity.transform.scale.x; - let height = renderableBounds.height / this.entity.transform.scale.y; - - if (this instanceof CircleCollider) { - this.radius = Math.max(width, height) * 0.5; - this.localOffset = renderableBounds.center.sub(this.entity.transform.position); - } else if (this instanceof BoxCollider) { - this.width = width; - this.height = height; - - this.localOffset = renderableBounds.center.sub(this.entity.transform.position); - } - } - } this._isParentEntityAddedToScene = true; this.registerColliderWithPhysicsSystem(); } diff --git a/source/src/ECS/Components/Renderables/IRenderable.ts b/source/src/ECS/Components/Renderables/IRenderable.ts deleted file mode 100644 index 956f7aa7..00000000 --- a/source/src/ECS/Components/Renderables/IRenderable.ts +++ /dev/null @@ -1,9 +0,0 @@ -module es { - export interface IRenderable { - enabled: boolean; - renderLayer: number; - isVisibleFromCamera(camera: ICamera): boolean; - render(batcher: IBatcher, camera: ICamera): void; - debugRender(batcher: IBatcher): void; - } -} \ No newline at end of file diff --git a/source/src/ECS/Components/Renderables/RenderableComponent.ts b/source/src/ECS/Components/Renderables/RenderableComponent.ts deleted file mode 100644 index 56b56ec4..00000000 --- a/source/src/ECS/Components/Renderables/RenderableComponent.ts +++ /dev/null @@ -1,133 +0,0 @@ -module es { - export abstract class RenderableComponent extends es.Component implements IRenderable { - public getwidth() { - return this.bounds.width; - } - - public getheight() { - return this.bounds.height; - } - - protected _bounds: es.Rectangle = new es.Rectangle(); - public getbounds(): es.Rectangle { - if (this._areBoundsDirty) { - this._bounds.calculateBounds(this.entity.transform.position, this._localOffset, new es.Vector2(this.getwidth() / 2, this.getheight() / 2), - this.entity.transform.scale, this.entity.transform.rotation, this.getwidth(), this.getheight()); - this._areBoundsDirty = false; - } - return this._bounds; - } - public get bounds() { - return this.getbounds(); - } - protected _areBoundsDirty: boolean = true; - public color: Color = Color.White; - - public get renderLayer() { - return this._renderLayer; - } - public set renderLayer(value: number) { - this.setRenderLayer(value); - } - - protected _renderLayer: number = 0; - - public onEntityTransformChanged(comp: ComponentTransform) { - this._areBoundsDirty = true; - } - - public get localOffset() { - return this._localOffset; - } - public set localOffset(value: es.Vector2) { - this.setLocalOffset(value); - } - - public setLocalOffset(offset: es.Vector2) { - if (!this._localOffset.equals(offset)) { - this._localOffset = offset; - this._areBoundsDirty = true; - } - - return this; - } - - public get isVisible() { - return this._isVisible; - } - - public set isVisible(value: boolean) { - if (this._isVisible != value) { - this._isVisible = value; - - if (this._isVisible) { - this.onBecameVisible(); - } else { - this.onBecameInvisible(); - } - } - } - - public debugRenderEnabled: boolean = true; - - protected _isVisible: boolean = false; - protected _localOffset: es.Vector2 = new es.Vector2(); - - public abstract render(batcher: IBatcher, camera: ICamera): void; - - protected onBecameVisible() { - - } - - protected onBecameInvisible() { - - } - - public setRenderLayer(renderLayer: number): RenderableComponent { - if (renderLayer != this._renderLayer) { - let oldRenderLayer = this._renderLayer; - this._renderLayer = renderLayer; - - if (this.entity != null && this.entity.scene != null) - es.Core.scene.renderableComponents.updateRenderableRenderLayer(this, oldRenderLayer, this._renderLayer); - } - - return this; - } - - public isVisibleFromCamera(cam: ICamera): boolean { - this.isVisible = cam.bounds.intersects(this.bounds); - - return this.isVisible; - } - - public debugRender(batcher: IBatcher) { - if (!this.debugRenderEnabled) - return; - - let collider = null; - for (let i = 0; i < this.entity.components.buffer.length; i++) { - let component = this.entity.components.buffer[i]; - if (component instanceof Collider) { - collider = component; - break; - } - } - - if (collider == null) { - batcher.drawHollowRect(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, new Color(255, 255, 0)); - batcher.end(); - } - - batcher.drawPixel(es.Vector2.add(this.entity.transform.position, this._localOffset), new Color(153, 50, 204), 4); - batcher.end(); - } - - public tweenColorTo(to: Color, duration: number) { - const tween = Pool.obtain(RenderableColorTween); - tween.setTarget(this); - tween.initialize(tween, to, duration); - return tween; - } - } -} \ No newline at end of file diff --git a/source/src/ECS/Entity.ts b/source/src/ECS/Entity.ts index ef7ceafe..0d137174 100644 --- a/source/src/ECS/Entity.ts +++ b/source/src/ECS/Entity.ts @@ -376,11 +376,6 @@ module es { this.components.update(); } - public debugRender(batcher: IBatcher) { - if (!batcher) return; - this.components.debugRender(batcher); - } - /** * 创建组件的新实例。返回实例组件 * @param componentType diff --git a/source/src/ECS/Scene.ts b/source/src/ECS/Scene.ts index ec05801f..df0262ee 100644 --- a/source/src/ECS/Scene.ts +++ b/source/src/ECS/Scene.ts @@ -2,21 +2,17 @@ module es { /** 场景 */ export class Scene { - public camera: ICamera; /** 这个场景中的实体列表 */ public readonly entities: EntityList; - public readonly renderableComponents: RenderableComponentList; /** 管理所有实体处理器 */ public readonly entityProcessors: EntityProcessorList; public readonly _sceneComponents: SceneComponent[] = []; - public _renderers: Renderer[] = []; public readonly identifierPool: IdentifierPool; private _didSceneBegin: boolean; constructor() { this.entities = new EntityList(this); - this.renderableComponents = new RenderableComponentList(); this.entityProcessors = new EntityProcessorList(); this.identifierPool = new IdentifierPool(); @@ -45,10 +41,6 @@ module es { } public begin() { - if (this._renderers.length == 0) { - this.addRenderer(new DefaultRenderer()); - } - Physics.reset(); if (this.entityProcessors != null) @@ -62,9 +54,6 @@ module es { public end() { this._didSceneBegin = false; - for (let i = 0; i < this._renderers.length; i ++) - this._renderers[i].unload(); - this.entities.removeAllEntities(); for (let i = 0; i < this._sceneComponents.length; i++) { @@ -72,7 +61,6 @@ module es { } this._sceneComponents.length = 0; - this.camera = null; Physics.clear(); if (this.entityProcessors) @@ -99,38 +87,6 @@ module es { if (this.entityProcessors != null) this.entityProcessors.lateUpdate(); - - this.renderableComponents.updateLists(); - this.render(); - } - - public render() { - for (let i = 0; i < this._renderers.length; i ++) { - this._renderers[i].render(this); - } - } - - public addRenderer(renderer: T): T { - this._renderers.push(renderer); - this._renderers.sort((self, other) => self.renderOrder - other.renderOrder); - - renderer.onAddedToScene(this); - - return renderer; - } - - public getRenderer(type: new (...args: any[]) => T): T { - for (let i = 0; i < this._renderers.length; i ++) { - if (this._renderers[i] instanceof type) - return this._renderers[i] as T; - } - - return null; - } - - public removeRenderer(renderer: Renderer) { - new List(this._renderers).remove(renderer); - renderer.unload(); } /** diff --git a/source/src/ECS/Utils/ComponentList.ts b/source/src/ECS/Utils/ComponentList.ts index c6a933ec..ac6088ac 100644 --- a/source/src/ECS/Utils/ComponentList.ts +++ b/source/src/ECS/Utils/ComponentList.ts @@ -94,9 +94,6 @@ module es { for (let i = 0, s = this._components.length; i < s; ++ i) { let component = this._components[i]; if (!component) continue; - - if (component instanceof RenderableComponent) - this._entity.scene.renderableComponents.remove(component); // 处理IUpdatable if (isIUpdatable(component)) @@ -112,9 +109,6 @@ module es { if (this._components.length > 0) { for (let i = 0, s = this._components.length; i < s; ++ i) { let component = this._components[i]; - if (component instanceof RenderableComponent) - this._entity.scene.renderableComponents.add(component); - if (isIUpdatable(component)) this._updatableComponents.push(component); @@ -157,8 +151,6 @@ module es { if (this._componentsToAddList.length > 0) { for (let i = 0, l = this._componentsToAddList.length; i < l; ++ i) { let component = this._componentsToAddList[i]; - if (component instanceof RenderableComponent) - this._entity.scene.renderableComponents.add(component); if (isIUpdatable(component)) this._updatableComponents.push(component); @@ -195,9 +187,6 @@ module es { } public handleRemove(component: Component) { - if (component instanceof RenderableComponent) - this._entity.scene.renderableComponents.remove(component); - if (isIUpdatable(component) && this._updatableComponents.length > 0) { let index = this._updatableComponents.findIndex((c) => (c as Component).id == component.id); if (index != -1) @@ -325,14 +314,5 @@ module es { this._components[i].onDisabled(); } } - - public debugRender(batcher: IBatcher) { - if (!batcher) return; - for (let i = 0; i < this._components.length; i ++) { - if (this._components[i].enabled) { - this._components[i].debugRender(batcher); - } - } - } } } diff --git a/source/src/ECS/Utils/RenderableComponentList.ts b/source/src/ECS/Utils/RenderableComponentList.ts deleted file mode 100644 index 6b1e219f..00000000 --- a/source/src/ECS/Utils/RenderableComponentList.ts +++ /dev/null @@ -1,81 +0,0 @@ -module es { - export class RenderableComponentList { - private _components: IRenderable[] = []; - private _componentsByRenderLayer: Map = new Map(); - private _unsortedRenderLayers: number[] = []; - private _componentsNeedSort = true; - - public get count() { - return this._components.length; - } - - public get(index: number) { - return this._components[index]; - } - - public add(component: IRenderable) { - this._components.push(component); - this.addToRenderLayerList(component, component.renderLayer); - } - - public remove(component: IRenderable) { - new List(this._components).remove(component); - new List(this._componentsByRenderLayer.get(component.renderLayer)).remove(component); - } - - public updateRenderableRenderLayer(component: IRenderable, oldRenderLayer: number, newRenderLayer: number) { - if (this._componentsByRenderLayer.has(oldRenderLayer) && new List(this._componentsByRenderLayer.get(oldRenderLayer)).contains(component)) { - new List(this._componentsByRenderLayer.get(oldRenderLayer)).remove(component); - this.addToRenderLayerList(component, newRenderLayer); - } - } - - public setRenderLayerNeedsComponentSort(renderLayer: number) { - const unsortedRenderLayersList = new List(this._unsortedRenderLayers); - if (!unsortedRenderLayersList.contains(renderLayer)) - unsortedRenderLayersList.add(renderLayer); - this._componentsNeedSort = true; - } - - public setNeedsComponentSort() { - this._componentsNeedSort = true; - } - - private addToRenderLayerList(component: IRenderable, renderLayer: number) { - let list = this.componentsWithRenderLayer(renderLayer); - es.Insist.isFalse(!!list.find(c => c == component), "组件renderLayer列表已包含此组件"); - - list.push(component); - const unsortedRenderLayersList = new List(this._unsortedRenderLayers); - if (!unsortedRenderLayersList.contains(renderLayer)) - unsortedRenderLayersList.add(renderLayer); - this._componentsNeedSort = true; - } - - public componentsWithRenderLayer(renderLayer: number) { - if (!this._componentsByRenderLayer.get(renderLayer)) { - this._componentsByRenderLayer.set(renderLayer, []); - } - - return this._componentsByRenderLayer.get(renderLayer); - } - - public updateLists() { - if (this._componentsNeedSort) { - this._components.sort((self, other) => other.renderLayer - self.renderLayer); - this._componentsNeedSort = false; - } - - if (this._unsortedRenderLayers.length > 0) { - for (let i = 0, count = this._unsortedRenderLayers.length; i < count; i ++) { - const renderLayerComponents = this._componentsByRenderLayer.get(this._unsortedRenderLayers[i]); - if (renderLayerComponents) { - renderLayerComponents.sort((self, other) => other.renderLayer - self.renderLayer); - } - - this._unsortedRenderLayers.length = 0; - } - } - } - } -} \ No newline at end of file diff --git a/source/src/Graphics/Batcher/Color.ts b/source/src/Graphics/Batcher/Color.ts deleted file mode 100644 index ca9d291a..00000000 --- a/source/src/Graphics/Batcher/Color.ts +++ /dev/null @@ -1,475 +0,0 @@ -module es { - export class Color { - /** - * 红色通道 - */ - public r: number; - /** - * 绿色通道 - */ - public g: number; - /** - * 蓝色通道 - */ - public b: number; - /** - * 透明度通道 (仅0-1之间) - */ - public a: number; - - /** - * 色调 - */ - public h: number; - /** - * 饱和 - */ - public s: number; - /** - * 亮度 - */ - public l: number; - - /** - * 从 r, g, b, a 创建一个新的 Color 实例 - * - * @param r 颜色的红色分量 (0-255) - * @param g 颜色的绿色成分 (0-255) - * @param b 颜色的蓝色分量 (0-255) - * @param a 颜色的 alpha 分量 (0-1.0) - */ - constructor(r: number, g: number, b: number, a?: number) { - this.r = r; - this.g = g; - this.b = b; - this.a = a != null ? a : 1; - } - - /** - * 从 r, g, b, a 创建一个新的 Color 实例 - * - * @param r 颜色的红色分量 (0-255) - * @param g 颜色的绿色成分 (0-255) - * @param b 颜色的蓝色分量 (0-255) - * @param a 颜色的 alpha 分量 (0-1.0) - */ - public static fromRGB(r: number, g: number, b: number, a?: number): Color { - return new Color(r, g, b, a); - } - - /** - * 从十六进制字符串创建一个新的 Color 实例 - * - * @param hex #ffffff 形式的 CSS 颜色字符串,alpha 组件是可选的 - */ - public static createFromHex(hex: string): Color { - const color = new Color(1, 1, 1); - color.fromHex(hex); - return color; - } - - /** - * 从 hsl 值创建一个新的 Color 实例 - * - * @param h 色调表示 [0-1] - * @param s 饱和度表示为 [0-1] - * @param l 亮度表示 [0-1] - * @param a 透明度表示 [0-1] - */ - public static fromHSL( - h: number, - s: number, - l: number, - a: number = 1.0 - ): Color { - const temp = new HSLColor(h, s, l, a); - return temp.toRGBA(); - } - - /** - * 将当前颜色调亮指定的量 - * - * @param factor - */ - public lighten(factor: number = 0.1): Color { - const temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.l += temp.l * factor; - return temp.toRGBA(); - } - - /** - * 将当前颜色变暗指定的量 - * - * @param factor - */ - public darken(factor: number = 0.1): Color { - const temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.l -= temp.l * factor; - return temp.toRGBA(); - } - - /** - * 使当前颜色饱和指定的量 - * - * @param factor - */ - public saturate(factor: number = 0.1): Color { - const temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.s += temp.s * factor; - return temp.toRGBA(); - } - - /** - * 按指定量降低当前颜色的饱和度 - * - * @param factor - */ - public desaturate(factor: number = 0.1): Color { - const temp = HSLColor.fromRGBA(this.r, this.g, this.b, this.a); - temp.s -= temp.s * factor; - return temp.toRGBA(); - } - - /** - * 将一种颜色乘以另一种颜色,得到更深的颜色 - * - * @param color - */ - public mulitiply(color: Color): Color { - const newR = (((color.r / 255) * this.r) / 255) * 255; - const newG = (((color.g / 255) * this.g) / 255) * 255; - const newB = (((color.b / 255) * this.b) / 255) * 255; - const newA = color.a * this.a; - return new Color(newR, newG, newB, newA); - } - - /** - * 筛选另一种颜色,导致颜色较浅 - * - * @param color - */ - public screen(color: Color): Color { - const color1 = color.invert(); - const color2 = color.invert(); - return color1.mulitiply(color2).invert(); - } - - /** - * 反转当前颜色 - */ - public invert(): Color { - return new Color(255 - this.r, 255 - this.g, 255 - this.b, 1.0 - this.a); - } - - /** - * 将当前颜色与另一个颜色平均 - * - * @param color - */ - public average(color: Color): Color { - const newR = (color.r + this.r) / 2; - const newG = (color.g + this.g) / 2; - const newB = (color.b + this.b) / 2; - const newA = (color.a + this.a) / 2; - return new Color(newR, newG, newB, newA); - } - - /** - * 返回颜色的 CSS 字符串表示形式。 - * - * @param format - */ - public toString(format: 'rgb' | 'hsl' | 'hex' = 'rgb') { - switch (format) { - case 'rgb': - return this.toRGBA(); - case 'hsl': - return this.toHSLA(); - case 'hex': - return this.toHex(); - default: - throw new Error('Invalid Color format'); - } - } - - /** - * 返回颜色分量的十六进制值 - * @param c - * @see https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb - */ - private _componentToHex(c: number) { - const hex = c.toString(16); - return hex.length === 1 ? '0' + hex : hex; - } - - /** - *返回颜色的十六进制表示 - */ - public toHex(): string { - return ( - '#' + - this._componentToHex(this.r) + - this._componentToHex(this.g) + - this._componentToHex(this.b) + - this._componentToHex(this.a) - ); - } - - /** - * 从十六进制字符串设置颜色 - * - * @param hex #ffffff 形式的 CSS 颜色字符串,alpha 组件是可选的 - */ - public fromHex(hex: string) { - const hexRegEx: RegExp = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i; - const match = hex.match(hexRegEx); - if (match) { - const r = parseInt(match[1], 16); - const g = parseInt(match[2], 16); - const b = parseInt(match[3], 16); - let a = 1; - if (match[4]) { - a = parseInt(match[4], 16) / 255; - } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } else { - throw new Error('Invalid hex string: ' + hex); - } - } - - /** - * 返回颜色的 RGBA 表示 - */ - public toRGBA() { - const result = - String(this.r.toFixed(0)) + - ', ' + - String(this.g.toFixed(0)) + - ', ' + - String(this.b.toFixed(0)); - if (this.a !== undefined || this.a != null) { - return 'rgba(' + result + ', ' + String(this.a) + ')'; - } - return 'rgb(' + result + ')'; - } - - /** - * 返回颜色的 HSLA 表示 - */ - public toHSLA() { - return HSLColor.fromRGBA(this.r, this.g, this.b, this.a).toString(); - } - - /** - * 返回颜色的 CSS 字符串表示形式 - */ - public fillStyle() { - return this.toString(); - } - - /** - * 返回当前颜色的克隆 - */ - public clone(): Color { - return new Color(this.r, this.g, this.b, this.a); - } - - /** - * Black (#000000) - */ - public static Black: Color = Color.createFromHex('#000000'); - - /** - * White (#FFFFFF) - */ - public static White: Color = Color.createFromHex('#FFFFFF'); - - /** - * Gray (#808080) - */ - public static Gray: Color = Color.createFromHex('#808080'); - - /** - * Light gray (#D3D3D3) - */ - public static LightGray: Color = Color.createFromHex('#D3D3D3'); - - /** - * Dark gray (#A9A9A9) - */ - public static DarkGray: Color = Color.createFromHex('#A9A9A9'); - - /** - * Yellow (#FFFF00) - */ - public static Yellow: Color = Color.createFromHex('#FFFF00'); - - /** - * Orange (#FFA500) - */ - public static Orange: Color = Color.createFromHex('#FFA500'); - - /** - * Red (#FF0000) - */ - public static Red: Color = Color.createFromHex('#FF0000'); - - /** - * Vermillion (#FF5B31) - */ - public static Vermillion: Color = Color.createFromHex('#FF5B31'); - - /** - * Rose (#FF007F) - */ - public static Rose: Color = Color.createFromHex('#FF007F'); - - /** - * Magenta (#FF00FF) - */ - public static Magenta: Color = Color.createFromHex('#FF00FF'); - - /** - * Violet (#7F00FF) - */ - public static Violet: Color = Color.createFromHex('#7F00FF'); - - /** - * Blue (#0000FF) - */ - public static Blue: Color = Color.createFromHex('#0000FF'); - - /** - * Azure (#007FFF) - */ - public static Azure: Color = Color.createFromHex('#007FFF'); - - /** - * Cyan (#00FFFF) - */ - public static Cyan: Color = Color.createFromHex('#00FFFF'); - - /** - * Viridian (#59978F) - */ - public static Viridian: Color = Color.createFromHex('#59978F'); - - /** - * Green (#00FF00) - */ - public static Green: Color = Color.createFromHex('#00FF00'); - - /** - * Chartreuse (#7FFF00) - */ - public static Chartreuse: Color = Color.createFromHex('#7FFF00'); - - /** - * Transparent (#FFFFFF00) - */ - public static Transparent: Color = Color.createFromHex('#FFFFFF00'); - } - - /** - * 内部 HSL 颜色表示 - * - * http://en.wikipedia.org/wiki/HSL_and_HSV - * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c - */ - class HSLColor { - constructor( - public h: number, - public s: number, - public l: number, - public a: number - ) { } - - public static hue2rgb(p: number, q: number, t: number): number { - if (t < 0) { - t += 1; - } - if (t > 1) { - t -= 1; - } - if (t < 1 / 6) { - return p + (q - p) * 6 * t; - } - if (t < 1 / 2) { - return q; - } - if (t < 2 / 3) { - return p + (q - p) * (2 / 3 - t) * 6; - } - return p; - } - - public static fromRGBA( - r: number, - g: number, - b: number, - a: number - ): HSLColor { - r /= 255; - g /= 255; - b /= 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - let h = (max + min) / 2; - let s = h; - const l = h; - - if (max === min) { - h = s = 0; // achromatic - } else { - const d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - - return new HSLColor(h, s, l, a); - } - - public toRGBA(): Color { - let r: number; - let g: number; - let b: number; - - if (this.s === 0) { - r = g = b = this.l; // achromatic - } else { - const q = - this.l < 0.5 - ? this.l * (1 + this.s) - : this.l + this.s - this.l * this.s; - const p = 2 * this.l - q; - r = HSLColor.hue2rgb(p, q, this.h + 1 / 3); - g = HSLColor.hue2rgb(p, q, this.h); - b = HSLColor.hue2rgb(p, q, this.h - 1 / 3); - } - - return new Color(r * 255, g * 255, b * 255, this.a); - } - - public toString(): string { - const h = this.h.toFixed(0); - const s = this.s.toFixed(0); - const l = this.l.toFixed(0); - const a = this.a.toFixed(0); - return `hsla(${h}, ${s}, ${l}, ${a})`; - } - } -} \ No newline at end of file diff --git a/source/src/Graphics/Batcher/IBatcher.ts b/source/src/Graphics/Batcher/IBatcher.ts deleted file mode 100644 index 06505b8b..00000000 --- a/source/src/Graphics/Batcher/IBatcher.ts +++ /dev/null @@ -1,15 +0,0 @@ -module es { - export interface IBatcher { - begin(cam: ICamera); - end(); - drawPoints(points: Vector2[], color: Color, thickness?: number); - drawPolygon(poisition: Vector2, points: Vector2[], color: Color, closePoly: boolean, thickness?: number); - drawHollowRect(x: number, y: number, width: number, height: number, color: Color, thickness?: number); - drawCircle(position: Vector2, raidus: number, color: Color, thickness?: number); - drawCircleLow(position: es.Vector2, radius: number, color: Color, thickness?: number, resolution?: number); - drawRect(x: number, y: number, width: number, height: number, color: Color); - drawLine(start: Vector2, end: Vector2, color: Color, thickness: number); - drawPixel(position: Vector2, color: Color, size?: number); - } -} - diff --git a/source/src/Graphics/Batcher/ICamera.ts b/source/src/Graphics/Batcher/ICamera.ts deleted file mode 100644 index bafd9122..00000000 --- a/source/src/Graphics/Batcher/ICamera.ts +++ /dev/null @@ -1,5 +0,0 @@ -module es { - export interface ICamera extends Component { - bounds: Rectangle; - } -} diff --git a/source/src/Graphics/Graphics.ts b/source/src/Graphics/Graphics.ts deleted file mode 100644 index 229b5dfb..00000000 --- a/source/src/Graphics/Graphics.ts +++ /dev/null @@ -1,10 +0,0 @@ -module es { - export class Graphics { - public static instance: Graphics; - public batcher: IBatcher; - - constructor(batcher: IBatcher) { - this.batcher = batcher; - } - } -} \ No newline at end of file diff --git a/source/src/Graphics/Renderers/DefaultRenderer.ts b/source/src/Graphics/Renderers/DefaultRenderer.ts deleted file mode 100644 index 26cd91a8..00000000 --- a/source/src/Graphics/Renderers/DefaultRenderer.ts +++ /dev/null @@ -1,29 +0,0 @@ -/// -module es { - export class DefaultRenderer extends Renderer { - constructor(renderOrder: number = 0, camera: ICamera = null) { - super(renderOrder, camera); - } - - public render(scene: Scene): void { - if (!this.renderDirty) - return; - - this.renderDirty = false; - let cam = this.camera ? this.camera : scene.camera; - this.beginRender(cam); - - for (let i = 0; i < scene.renderableComponents.count; i ++) { - let renderable = scene.renderableComponents.get(i); - if (renderable.enabled && renderable.isVisibleFromCamera(scene.camera)) - this.renderAfterStateCheck(renderable, cam); - } - - if (this.shouldDebugRender && es.Core.debugRenderEndabled) { - this.debugRender(scene); - } - - this.endRender(); - } - } -} \ No newline at end of file diff --git a/source/src/Graphics/Renderers/Renderer.ts b/source/src/Graphics/Renderers/Renderer.ts deleted file mode 100644 index f3799ada..00000000 --- a/source/src/Graphics/Renderers/Renderer.ts +++ /dev/null @@ -1,60 +0,0 @@ -module es { - export abstract class Renderer { - public camera: ICamera; - public readonly renderOrder: number = 0; - public shouldDebugRender: boolean = true; - protected renderDirty: boolean = true; - - constructor(renderOrder: number, camera: ICamera) { - this.renderOrder = renderOrder; - this.camera = camera; - - Core.emitter.addObserver(CoreEvents.renderChanged, this.onRenderChanged, this); - } - - public onAddedToScene(scene: es.Scene) { } - - public unload() { } - - protected beginRender(cam: ICamera) { - if (!Graphics.instance) - return; - - Graphics.instance.batcher.begin(cam); - } - - protected endRender() { - if (!Graphics.instance) - return; - - Graphics.instance.batcher.end(); - } - - protected onRenderChanged() { - this.renderDirty = true; - } - - public abstract render(scene: Scene): void; - - protected renderAfterStateCheck(renderable: IRenderable, cam: ICamera) { - if (!Graphics.instance) - return; - - renderable.render(Graphics.instance.batcher, cam); - } - - protected debugRender(scene: Scene) { - if (!Graphics.instance) - return; - - es.Physics.debugDraw(2); - - for (let i = 0; i < scene.entities.count; i ++) { - let entity = scene.entities.buffer[i]; - if (entity.enabled) { - entity.debugRender(Graphics.instance.batcher); - } - } - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Physics.ts b/source/src/Physics/Physics.ts index 394e92d6..36f24f23 100644 --- a/source/src/Physics/Physics.ts +++ b/source/src/Physics/Physics.ts @@ -43,11 +43,6 @@ module es { this._spatialHash.clear(); } - public static debugDraw(secondsToDisplay) { - if (this.debugRender) - this._spatialHash.debugDraw(secondsToDisplay); - } - /** * 检查是否有对撞机落在一个圆形区域内。返回遇到的第一个对撞机 * @param center diff --git a/source/src/Physics/SpatialHash.ts b/source/src/Physics/SpatialHash.ts index 8fa65d31..15de058b 100644 --- a/source/src/Physics/SpatialHash.ts +++ b/source/src/Physics/SpatialHash.ts @@ -94,21 +94,6 @@ module es { this._cellDict.clear(); } - public debugDraw(secondsToDisplay: number) { - for (let x = this.gridBounds.x; x <= this.gridBounds.right; x++) { - for (let y = this.gridBounds.y; y <= this.gridBounds.bottom; y++) { - let cell = this.cellAtPosition(x, y); - if (cell != null && cell.length > 0) - this.debugDrawCellDetails(x, y, secondsToDisplay); - } - } - } - - private debugDrawCellDetails(x: number, y: number, secondsToDisplay: number = 0.5) { - Graphics.instance.batcher.drawHollowRect(x * this._cellSize, y * this._cellSize, this._cellSize, this._cellSize, new Color(255, 0, 0), secondsToDisplay); - Graphics.instance.batcher.end(); - } - /** * 返回边框与单元格相交的所有对象 * @param bounds diff --git a/source/src/Physics/Verlet/Composites/Ball.ts b/source/src/Physics/Verlet/Composites/Ball.ts deleted file mode 100644 index 38aad51b..00000000 --- a/source/src/Physics/Verlet/Composites/Ball.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -module es { - export class Ball extends Composite { - constructor(position: Vector2, radius: number = 10) { - super(); - this.addParticle(new Particle(position)).radius = radius; - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Composites/Box.ts b/source/src/Physics/Verlet/Composites/Box.ts deleted file mode 100644 index b6fba44f..00000000 --- a/source/src/Physics/Verlet/Composites/Box.ts +++ /dev/null @@ -1,23 +0,0 @@ -/// -module es { - export class VerletBox extends es.Composite { - constructor(center: es.Vector2, width: number, height: number, borderStiffness: number = 0.2, diagonalStiffness: number = 0.5) { - super(); - - const tl = this.addParticle(new Particle(center.add(new Vector2(-width / 2, -height / 2)))); - const tr = this.addParticle(new Particle(center.add(new Vector2(width / 2, -height / 2)))); - const br = this.addParticle(new Particle(center.add(new Vector2(width / 2, height / 2)))); - const bl = this.addParticle(new Particle(center.add(new Vector2(-width / 2, height / 2)))); - - this.addConstraint(new DistanceConstraint(tl, tr, borderStiffness)); - this.addConstraint(new DistanceConstraint(tr, br, borderStiffness)); - this.addConstraint(new DistanceConstraint(br, bl, borderStiffness)); - this.addConstraint(new DistanceConstraint(bl, tl, borderStiffness)); - - this.addConstraint(new DistanceConstraint(tl, br, diagonalStiffness)) - .setCollidesWithColliders(false); - this.addConstraint(new DistanceConstraint(bl, tr, diagonalStiffness)) - .setCollidesWithColliders(false); - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Composites/Cloth.ts b/source/src/Physics/Verlet/Composites/Cloth.ts deleted file mode 100644 index 7622b452..00000000 --- a/source/src/Physics/Verlet/Composites/Cloth.ts +++ /dev/null @@ -1,33 +0,0 @@ -module es { - export class Cloth extends Composite { - constructor(topLeftPosition: Vector2, width: number, height: number, segments: number = 20, stiffness: number = 0.25, - tearSensitivity: number = 5, connectHorizontalParticles: boolean = true) { - super(); - const xStride = width / segments; - const yStride = height / segments; - - for (let y = 0; y < segments; y++) { - for (let x = 0; x < segments; x++) { - const px = topLeftPosition.x + x * xStride; - const py = topLeftPosition.y + y + yStride; - const particle = this.addParticle(new Particle(new Vector2(px, py))); - - if (connectHorizontalParticles && x > 0) - this.addConstraint(new DistanceConstraint(this.particles[y * segments + x], - this.particles[y * segments + x - 1], stiffness)) - .setTearSensitivity(tearSensitivity) - .setCollidesWithColliders(false); - - if (y > 0) - this.addConstraint(new DistanceConstraint(this.particles[y * segments + x], - this.particles[(y - 1) * segments + x], stiffness)) - .setTearSensitivity(tearSensitivity) - .setCollidesWithColliders(false); - - if (y == 0) - particle.pin(); - } - } - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Composites/Composite.ts b/source/src/Physics/Verlet/Composites/Composite.ts deleted file mode 100644 index e237956e..00000000 --- a/source/src/Physics/Verlet/Composites/Composite.ts +++ /dev/null @@ -1,88 +0,0 @@ -module es { - export class Composite { - public friction: Vector2 = new Vector2(0.98, 1); - public drawParticles: boolean = true; - public drawConstraints: boolean = true; - public collidesWithLayers: number = Physics.allLayers; - public particles: Particle[] = []; - _constraints: Constraint[] = []; - - public addParticle(particle: Particle): Particle { - this.particles.push(particle); - return particle; - } - - public removeParticle(particle: Particle) { - const index = this.particles.indexOf(particle); - this.particles.splice(index, 1); - } - - public removeAll() { - this.particles.length = 0; - this._constraints.length = 0; - } - - public addConstraint(constraint: T): T { - this._constraints.push(constraint); - constraint.composite = this; - return constraint; - } - - public removeConstraint(constraint: Constraint) { - const index = this._constraints.indexOf(constraint); - this._constraints.splice(index, 1); - } - - public applyForce(force: Vector2) { - for (let j = 0; j < this.particles.length; j ++) - this.particles[j].applyForce(force); - } - - public solveConstraints() { - for (let i = this._constraints.length - 1; i >= 0; i --) - this._constraints[i].solve(); - } - - public updateParticles(deltaTimeSquared: number, gravity: Vector2) { - for (let j = 0; j < this.particles.length; j ++) { - const p = this.particles[j]; - if (p.isPinned) { - p.position = p.pinnedPosition; - continue; - } - - p.applyForce(gravity.scale(p.mass)); - - const vel = p.position.sub(p.lastPosition).multiply(this.friction); - const nextPos = p.position.add(vel).add(p.acceleration.scale(0.5 * deltaTimeSquared)); - - p.lastPosition = p.position; - p.position = nextPos; - p.acceleration.x = p.acceleration.y = 0; - } - } - - public handleConstraintCollisions() { - for (let i = this._constraints.length - 1; i >= 0; i --) { - if (this._constraints[i].collidesWithColliders) - this._constraints[i].handleCollisions(this.collidesWithLayers); - } - } - - public debugRender(batcher: IBatcher) { - if (this.drawConstraints) { - for (let i = 0; i < this._constraints.length; i ++) - this._constraints[i].debugRender(batcher); - } - - if (this.drawParticles) { - for (let i = 0; i < this.particles.length; i ++) { - if (this.particles[i].radius == 0) - batcher.drawPixel(this.particles[i].position, new Color(220, 52, 94), 4); - else - batcher.drawCircleLow(this.particles[i].position, this.particles[i].radius, new Color(220, 52, 94), 1, 4); - } - } - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Composites/LineSegments.ts b/source/src/Physics/Verlet/Composites/LineSegments.ts deleted file mode 100644 index 2e7992f7..00000000 --- a/source/src/Physics/Verlet/Composites/LineSegments.ts +++ /dev/null @@ -1,20 +0,0 @@ -module es { - export class LineSegments extends Composite { - constructor(vertices: Vector2[], stiffness: number) { - super(); - - for (let i = 0; i < vertices.length; i ++) { - const p = new Particle(vertices[i]); - this.addParticle(p); - - if (i > 0) - this.addConstraint(new DistanceConstraint(this.particles[i], this.particles[i - 1], stiffness)); - } - } - - public pinParticleAtIndex(index: number): LineSegments { - this.particles[index].pin(); - return this; - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Composites/Ragdoll.ts b/source/src/Physics/Verlet/Composites/Ragdoll.ts deleted file mode 100644 index a1ef573d..00000000 --- a/source/src/Physics/Verlet/Composites/Ragdoll.ts +++ /dev/null @@ -1,55 +0,0 @@ -module es { - export class Ragdoll extends Composite { - constructor(x: number, y: number, bodyHeight: number) { - super(); - - const headLength = bodyHeight / 7.5; - const head = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - head.radius = headLength * 0.75; - head.mass = 4; - const shoulder = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - shoulder.mass = 26; - this.addConstraint(new DistanceConstraint(head, shoulder, 1, 5 / 4 * headLength)); - - const elbowLeft = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - const elbowRight = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - elbowLeft.mass = 2; - elbowRight.mass = 2; - this.addConstraint(new DistanceConstraint(elbowLeft, shoulder, 1, headLength * 3 / 2)); - this.addConstraint(new DistanceConstraint(elbowRight, shoulder, 1, headLength * 3 / 2)); - - const handLeft = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - const handRight = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - handLeft.mass = 2; - handRight.mass = 2; - this.addConstraint(new DistanceConstraint(handLeft, elbowLeft, 1, headLength * 2)); - this.addConstraint(new DistanceConstraint(handRight, elbowRight, 1, headLength * 2)); - - const pelvis = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - pelvis.mass = 15; - this.addConstraint(new DistanceConstraint(pelvis, shoulder, 0.8, headLength * 3.5)); - - this.addConstraint(new DistanceConstraint(pelvis, head, 0.02, bodyHeight * 2)) - .setCollidesWithColliders(false); - - const kneeLeft = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - const kneeRight = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - kneeLeft.mass = 10; - kneeRight.mass = 10; - this.addConstraint(new DistanceConstraint(kneeLeft, pelvis, 1, headLength * 2)); - this.addConstraint(new DistanceConstraint(kneeRight, pelvis, 1, headLength * 2)); - - const footLeft = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - const footRight = this.addParticle(new Particle({ x: x + RandomUtils.randint(-5, 5), y: y + RandomUtils.randint(-5, 5) })); - footLeft.mass = 5; - footRight.mass = 5; - this.addConstraint(new DistanceConstraint(footLeft, kneeLeft, 1, headLength * 2)); - this.addConstraint(new DistanceConstraint(footRight, kneeRight, 1, headLength * 2)); - - this.addConstraint(new DistanceConstraint(footLeft, shoulder, 0.001, bodyHeight * 2)) - .setCollidesWithColliders(false); - this.addConstraint(new DistanceConstraint(footLeft, shoulder, 0.001, bodyHeight * 2)) - .setCollidesWithColliders(false); - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Composites/Tire.ts b/source/src/Physics/Verlet/Composites/Tire.ts deleted file mode 100644 index 3a472c0d..00000000 --- a/source/src/Physics/Verlet/Composites/Tire.ts +++ /dev/null @@ -1,23 +0,0 @@ -module es { - export class Tire extends Composite { - constructor(origin: Vector2, radius: number, segments: number, spokeStiffness: number = 1, treadStiffness: number = 1) { - super(); - - const stride = 2 * Math.PI / segments; - for (let i = 0; i < segments; i ++) { - const theta = i * stride; - this.addParticle(new Particle(new Vector2(origin.x + Math.cos(theta) * radius, - origin.y + Math.sin(theta) * radius))); - } - - const centerParticle = this.addParticle(new Particle(origin)); - - for (let i = 0; i < segments; i ++) { - this.addConstraint(new DistanceConstraint(this.particles[i], this.particles[(i + 1) % segments], treadStiffness)); - this.addConstraint(new DistanceConstraint(this.particles[i], centerParticle, spokeStiffness)) - .setCollidesWithColliders(false); - this.addConstraint(new DistanceConstraint(this.particles[i], this.particles[(i + 5) % segments], treadStiffness)); - } - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Constraints/AngleConstraint.ts b/source/src/Physics/Verlet/Constraints/AngleConstraint.ts deleted file mode 100644 index 87d8bfd5..00000000 --- a/source/src/Physics/Verlet/Constraints/AngleConstraint.ts +++ /dev/null @@ -1,47 +0,0 @@ -/// -module es { - export class AngleConstraint extends Constraint { - public stiffness: number = 0; - public angleInRadius: number = 0; - - _particleA: Particle; - _centerParticle: Particle; - _particleC: Particle; - - constructor(a: Particle, center: Particle, c: Particle, stiffness: number) { - super(); - this._particleA = a; - this._centerParticle = center; - this._particleC = c; - this.stiffness = stiffness; - - this.collidesWithColliders = false; - - this.angleInRadius = this.angleBetweenParticles(); - } - - angleBetweenParticles(): number { - const first = this._particleA.position.sub(this._centerParticle.position); - const second = this._particleC.position.sub(this._centerParticle.position); - - return Math.atan2(first.x * second.y - first.y * second.x, first.x * second.x + first.y * second.y); - } - - public solve() { - const angleBetween = this.angleBetweenParticles(); - let diff = angleBetween - this.angleInRadius; - - if (diff <= -Math.PI) - diff += 2 * Math.PI; - else if(diff >= Math.PI) - diff -= 2 * Math.PI; - - diff *= this.stiffness; - - this._particleA.position = MathHelper.rotateAround2(this._particleA.position, this._centerParticle.position, diff); - this._particleC.position = MathHelper.rotateAround2(this._particleC.position, this._centerParticle.position, -diff); - this._centerParticle.position = MathHelper.rotateAround2(this._centerParticle.position, this._particleA.position, diff); - this._centerParticle.position = MathHelper.rotateAround2(this._centerParticle.position, this._particleC.position, -diff); - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Constraints/Constraint.ts b/source/src/Physics/Verlet/Constraints/Constraint.ts deleted file mode 100644 index dd125e90..00000000 --- a/source/src/Physics/Verlet/Constraints/Constraint.ts +++ /dev/null @@ -1,16 +0,0 @@ -module es { - export abstract class Constraint { - public composite: Composite; - public collidesWithColliders: boolean = true; - - public abstract solve(): void; - - public handleCollisions(collidesWithLayers: number) { - - } - - public debugRender(batcher: IBatcher) { - - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Constraints/DistanceConstraint.ts b/source/src/Physics/Verlet/Constraints/DistanceConstraint.ts deleted file mode 100644 index d36a5711..00000000 --- a/source/src/Physics/Verlet/Constraints/DistanceConstraint.ts +++ /dev/null @@ -1,123 +0,0 @@ -module es { - export class DistanceConstraint extends Constraint { - public stiffness: number = 0; - public restingDistance: number = 0; - public tearSensitivity = Number.POSITIVE_INFINITY; - public shouldApproximateCollisionsWithPoints: boolean = false; - public totalPointsToApproximateCollisionsWith = 5; - _particleOne: Particle; - _particleTwo: Particle; - static _polygon: Polygon = new Polygon([]); - - constructor(first: Particle, second: Particle, stiffness: number, distance: number = -1) { - super(); - - DistanceConstraint._polygon.create(2, 1); - this._particleOne = first; - this._particleTwo = second; - this.stiffness = stiffness; - - if (distance > -1) - this.restingDistance = distance; - else - this.restingDistance = first.position.distance(second.position); - } - - public static create(a: Particle, center: Particle, c: Particle, stiffness: number, angleInDegrees: number) { - const aToCenter = a.position.distance(center.position); - const cToCenter = c.position.distance(center.position); - const distance = Math.sqrt(aToCenter * aToCenter + cToCenter * cToCenter - (2 * aToCenter * cToCenter * Math.cos(angleInDegrees * MathHelper.Deg2Rad))); - - return new DistanceConstraint(a, c, stiffness, distance); - } - - public setTearSensitivity(tearSensitivity: number) { - this.tearSensitivity = tearSensitivity; - return this; - } - - public setCollidesWithColliders(collidesWithColliders: boolean) { - this.collidesWithColliders = collidesWithColliders; - return this; - } - - public setShouldApproximateCollisionsWithPoints(shouldApproximateCollisionsWithPoints: boolean) { - this.shouldApproximateCollisionsWithPoints = shouldApproximateCollisionsWithPoints; - return this; - } - - public solve(): void { - const diff = this._particleOne.position.sub(this._particleTwo.position); - const d = diff.distance(); - - const difference = (this.restingDistance - d) / d; - if (d / this.restingDistance > this.tearSensitivity) { - this.composite.removeConstraint(this); - return; - } - - const im1 = 1 / this._particleOne.mass; - const im2 = 1 / this._particleTwo.mass; - const scalarP1 = (im1 / (im1 + im2)) * this.stiffness; - const scalarP2 = this.stiffness - scalarP1; - - this._particleOne.position = this._particleOne.position.add(diff.scale(scalarP1 * difference)); - this._particleTwo.position = this._particleTwo.position.sub(diff.scale(scalarP2 * difference)); - } - - public handleCollisions(collidesWithLayers: number) { - if (this.shouldApproximateCollisionsWithPoints) { - this.approximateCollisionsWithPoints(collidesWithLayers); - return; - } - - const minX = Math.min(this._particleOne.position.x, this._particleTwo.position.x); - const maxX = Math.max(this._particleOne.position.x, this._particleTwo.position.x); - const minY = Math.min(this._particleOne.position.y, this._particleTwo.position.y); - const maxY = Math.max(this._particleOne.position.y, this._particleTwo.position.y); - DistanceConstraint._polygon.bounds = Rectangle.fromMinMax(minX, minY, maxX, maxY); - - let midPoint: Vector2 = Vector2.zero; - this.preparePolygonForCollisionChecks(midPoint); - - const colliders = Physics.boxcastBroadphase(DistanceConstraint._polygon.bounds, collidesWithLayers); - for (let i = 0; i < colliders.length; i ++) { - const collider = colliders[i]; - const result = new CollisionResult(); - if (DistanceConstraint._polygon.collidesWithShape(collider.shape, result)) { - this._particleOne.position = this._particleOne.position.sub(result.minimumTranslationVector); - this._particleTwo.position = this._particleTwo.position.sub(result.minimumTranslationVector); - } - } - } - - approximateCollisionsWithPoints(collidesWithLayers: number) { - let pt: Vector2; - for (let j = 0; j < this.totalPointsToApproximateCollisionsWith - 1; j ++) { - pt = Vector2.lerp(this._particleOne.position, this._particleTwo.position, (j + 1) / this.totalPointsToApproximateCollisionsWith); - const collidedCount = Physics.overlapCircleAll(pt, 3, VerletWorld._colliders, collidesWithLayers); - for (let i = 0; i < collidedCount; i ++) { - const collider = VerletWorld._colliders[i]; - const collisionResult = new CollisionResult(); - if (collider.shape.pointCollidesWithShape(pt, collisionResult)) { - this._particleOne.position = this._particleOne.position.sub(collisionResult.minimumTranslationVector); - this._particleTwo.position = this._particleTwo.position.sub(collisionResult.minimumTranslationVector); - } - } - } - } - - preparePolygonForCollisionChecks(midPoint: Vector2) { - const tempMidPoint = Vector2.lerp(this._particleOne.position, this._particleTwo.position, 0.5); - midPoint.setTo(tempMidPoint.x, tempMidPoint.y); - DistanceConstraint._polygon.position = midPoint; - DistanceConstraint._polygon.points[0] = this._particleOne.position.sub(DistanceConstraint._polygon.position); - DistanceConstraint._polygon.points[1] = this._particleTwo.position.sub(DistanceConstraint._polygon.position); - DistanceConstraint._polygon.recalculateCenterAndEdgeNormals(); - } - - public debugRender(batcher: IBatcher) { - batcher.drawLine(this._particleOne.position, this._particleTwo.position, new Color(67, 62, 54), 1); - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/Particle.ts b/source/src/Physics/Verlet/Particle.ts deleted file mode 100644 index b77e1e03..00000000 --- a/source/src/Physics/Verlet/Particle.ts +++ /dev/null @@ -1,39 +0,0 @@ -module es { - export class Particle { - public position: Vector2 = Vector2.zero; - public lastPosition: Vector2 = Vector2.zero; - public mass = 1; - public radius: number = 0; - public collidesWithColliders: boolean = true; - public isPinned: boolean = false; - public acceleration: Vector2 = Vector2.zero; - public pinnedPosition: Vector2 = Vector2.zero; - - constructor(position: {x: number, y: number}) { - this.position = new Vector2(position.x, position.y); - this.lastPosition = new Vector2(position.x, position.y); - } - - public applyForce(force: Vector2) { - this.acceleration = this.acceleration.add(force.divideScaler(this.mass)); - } - - public pin(): Particle { - this.isPinned = true; - this.pinnedPosition = this.position; - return this; - } - - public pinTo(position: Vector2): Particle { - this.isPinned = true; - this.pinnedPosition = position; - this.position = this.pinnedPosition; - return this; - } - - public unpin(): Particle { - this.isPinned = false; - return this; - } - } -} \ No newline at end of file diff --git a/source/src/Physics/Verlet/VerletWorld.ts b/source/src/Physics/Verlet/VerletWorld.ts deleted file mode 100644 index 6a36c104..00000000 --- a/source/src/Physics/Verlet/VerletWorld.ts +++ /dev/null @@ -1,163 +0,0 @@ -module es { - export class VerletWorld { - public gravity: Vector2 = new Vector2(0, -980); - public constraintIterations = 3; - public maximumStepIterations = 5; - public simulationBounds: Rectangle; - public allowDragging: boolean = true; - public selectionRadiusSquared = 20 * 20; - _draggedParticle: Particle; - _composites: Composite[] = []; - public static _colliders: Collider[] = []; - _tempCircle: Circle = new Circle(1); - - _leftOverTime: number = 0; - _fixedDeltaTime: number = 1 / 60; - _iterationSteps: number = 0; - _fixedDeltaTimeSq: number = 0; - - onHandleDrag: Function; - - constructor(simulationBounds: Rectangle = null) { - this.simulationBounds = simulationBounds; - this._fixedDeltaTimeSq = Math.pow(this._fixedDeltaTime, 2); - } - - public update() { - this.updateTiming(); - - if (this.allowDragging) - this.handleDragging(); - - for (let iteration = 1; iteration <= this._iterationSteps; iteration ++) { - for (let i = this._composites.length - 1; i >= 0; i --) { - const composite = this._composites[i]; - for (let s = 0; s < this.constraintIterations; s ++) - composite.solveConstraints(); - - composite.updateParticles(this._fixedDeltaTimeSq, this.gravity); - - composite.handleConstraintCollisions(); - - for (let j = 0; j < composite.particles.length; j ++) { - const p = composite.particles[j]; - - if (this.simulationBounds) { - this.constrainParticleToBounds(p); - } - - if (p.collidesWithColliders) - this.handleCollisions(p, composite.collidesWithLayers); - } - } - } - } - - constrainParticleToBounds(p: Particle) { - const tempPos = p.position; - const bounds = this.simulationBounds; - - if (p.radius == 0) { - if (tempPos.y > bounds.height) - tempPos.y = bounds.height; - else if (tempPos.y < bounds.y) - tempPos.y = bounds.y; - - if (tempPos.x < bounds.x) - tempPos.x = bounds.x; - else if (tempPos.x > bounds.width) - tempPos.x = bounds.width; - } else { - if (tempPos.y < bounds.y + p.radius) - tempPos.y = 2 * (bounds.y + p.radius) - tempPos.y; - if (tempPos.y > bounds.height - p.radius) - tempPos.y = 2 * (bounds.height - p.radius) - tempPos.y; - if (tempPos.x > bounds.width - p.radius) - tempPos.x = 2 * (bounds.width - p.radius) - tempPos.x; - if (tempPos.x < bounds.x + p.radius) - tempPos.x = 2 * (bounds.x + p.radius) - tempPos.x; - } - - p.position = tempPos; - } - - handleCollisions(p: Particle, collidesWithLayers: number) { - const collidedCount = Physics.overlapCircleAll(p.position, p.radius, VerletWorld._colliders, collidesWithLayers); - for (let i = 0; i < collidedCount; i++) { - const collider = VerletWorld._colliders[i]; - if (collider.isTrigger) - continue; - - const collisionResult = new CollisionResult(); - - if (p.radius < 2) { - if (collider.shape.pointCollidesWithShape(p.position, collisionResult)) { - p.position = p.position.sub(collisionResult.minimumTranslationVector); - } - } else { - this._tempCircle.radius = p.radius; - this._tempCircle.position = p.position; - - if (this._tempCircle.collidesWithShape(collider.shape, collisionResult)) { - p.position = p.position.sub(collisionResult.minimumTranslationVector); - } - } - } - } - - updateTiming() { - this._leftOverTime += Time.deltaTime; - this._iterationSteps = Math.trunc(this._leftOverTime / this._fixedDeltaTime); - this._leftOverTime -= this._iterationSteps * this._fixedDeltaTime; - - this._iterationSteps = Math.min(this._iterationSteps, this.maximumStepIterations); - } - - public addComposite(composite: T): T { - this._composites.push(composite); - return composite; - } - - public removeComposite(composite: Composite) { - const index = this._composites.indexOf(composite); - this._composites.splice(index, 1); - } - - handleDragging() { - if (this.onHandleDrag) - this.onHandleDrag(); - } - - public getNearestParticle(position: Vector2) { - let nearestSquaredDistance = this.selectionRadiusSquared; - let particle: Particle = null; - - for (let j = 0; j < this._composites.length; j++) { - const particles = this._composites[j].particles; - for (let i = 0; i < particles.length; i++) { - const p = particles[i]; - const squaredDistanceToParticle = Vector2.sqrDistance(p.position, position); - if (squaredDistanceToParticle <= this.selectionRadiusSquared && - (particle == null || squaredDistanceToParticle < nearestSquaredDistance)) { - particle = p; - nearestSquaredDistance = squaredDistanceToParticle; - } - } - } - - return particle; - } - - public debugRender(batcher: IBatcher) { - for (let i = 0; i < this._composites.length; i ++) { - this._composites[i].debugRender(batcher); - } - - if (this.allowDragging) { - if (this._draggedParticle != null) { - batcher.drawCircle(this._draggedParticle.position, 8, Color.White); - } - } - } - } -} \ No newline at end of file diff --git a/source/src/Tween/Easing/Lerps.ts b/source/src/Tween/Easing/Lerps.ts index 53957bda..73708c20 100644 --- a/source/src/Tween/Easing/Lerps.ts +++ b/source/src/Tween/Easing/Lerps.ts @@ -3,7 +3,6 @@ module es { * 一系列静态方法来处理所有常见的tween类型结构,以及它们的unclamped lerps.unclamped lerps对于超过0-1范围的bounce、elastic或其他tweens是必需的 */ export class Lerps { - public static lerp(from: Color, to: Color, t: number); public static lerp(from: number, to: number, t: number); public static lerp(from: Rectangle, to: Rectangle, t: number); public static lerp(from: Vector2, to: Vector2, t: number); @@ -12,12 +11,6 @@ module es { return from + (to - from) * t; } - if (from instanceof Color && to instanceof Color) { - const t255 = t * 255; - return new Color(from.r + (to.r - from.r) * t255 / 255, from.g + (to.g - from.g) * t255 / 255, - from.b + (to.b - from.b) * t255 / 255, from.a + (to.a - from.a) * t255 / 255) - } - if (from instanceof Rectangle && to instanceof Rectangle) { return new Rectangle( (from.x + (to.x - from.x) * t), @@ -41,7 +34,6 @@ module es { public static ease(easeType: EaseType, from: Rectangle, to: Rectangle, t: number, duration: number); public static ease(easeType: EaseType, from: Vector2, to: Vector2, t: number, duration: number); public static ease(easeType: EaseType, from: number, to: number, t: number, duration: number); - public static ease(easeType: EaseType, from: Color, to: Color, t: number, duration: number); public static ease(easeType: EaseType, from: any, to: any, t: number, duration: number) { if (typeof(from) == 'number' && typeof(to) == "number") { return this.lerp(from, to, EaseHelper.ease(easeType, t, duration)); @@ -54,10 +46,6 @@ module es { if (from instanceof Rectangle && to instanceof Rectangle) { return this.lerp(from, to, EaseHelper.ease(easeType, t, duration)); } - - if (from instanceof Color && to instanceof Color) { - return this.lerp(from, to, EaseHelper.ease(easeType, t, duration)); - } } public static easeAngle(easeType: EaseType, from: Vector2, to: Vector2, t: number, duration: number) { diff --git a/source/src/Tween/RenderableColorTween.ts b/source/src/Tween/RenderableColorTween.ts deleted file mode 100644 index 4831c15e..00000000 --- a/source/src/Tween/RenderableColorTween.ts +++ /dev/null @@ -1,38 +0,0 @@ -/// -module es { - export class RenderableColorTween extends ColorTween implements ITweenTarget { - _renderable: RenderableComponent; - - setTweenedValue(value: Color) { - this._renderable.color = value; - } - - getTweenedValue(): Color { - return this._renderable.color; - } - - public getTargetObject() { - return this._renderable; - } - - public updateValue() { - this.setTweenedValue(Lerps.ease(this._easeType, this._fromValue, this._toValue, this._elapsedTime, this._duration)); - } - - public setTarget(renderable: RenderableComponent) { - this._renderable = renderable; - } - - public recycleSelf() { - if (this._shouldRecycleTween) { - this._renderable = null; - this._target = null; - this._nextTween = null; - } - - if (this._shouldRecycleTween && TweenManager.cacheColorTweens) { - Pool.free(ColorTween, this); - } - } - } -} \ No newline at end of file diff --git a/source/src/Tween/Tweens.ts b/source/src/Tween/Tweens.ts index 2c093e7e..9f8e279e 100644 --- a/source/src/Tween/Tweens.ts +++ b/source/src/Tween/Tweens.ts @@ -88,30 +88,4 @@ module es { Pool.free(RectangleTween, this); } } - - export class ColorTween extends Tween { - public static create() : ColorTween { - return TweenManager.cacheColorTweens ? Pool.obtain(ColorTween) : new ColorTween(); - - } - - constructor(target?: ITweenTarget, to?: Color, duration?: number) { - super(); - - this.initialize(target, to, duration); - } - - public setIsRelative() { - this._isRelative = true; - this._toValue.r += this._fromValue.r; - this._toValue.g += this._fromValue.g; - this._toValue.b += this._fromValue.b; - this._toValue.a += this._fromValue.a; - return this; - } - - protected updateValue() { - this._target.setTweenedValue(Lerps.ease(this._easeType, this._fromValue as any, this._toValue as any, this._elapsedTime, this._duration)); - } - } } \ No newline at end of file