Files
esengine/source/bin/framework.d.ts

4311 lines
141 KiB
TypeScript
Raw Normal View History

declare module es {
2020-11-26 11:48:02 +08:00
/**
*
* - onAddedToEntity
* - OnEnabled
*
*
* - onRemovedFromEntity
*/
abstract class Component {
2020-11-26 11:48:02 +08:00
/**
*
*/
entity: Entity;
2020-11-26 11:48:02 +08:00
/**
*
*/
updateInterval: number;
2020-11-26 11:48:02 +08:00
/**
* 访 this.entity.transform
*/
readonly transform: Transform;
private _enabled;
2020-11-26 11:48:02 +08:00
/**
* onEnabled/onDisable
*/
/**
* onEnabled/onDisable
* @param value
*/
enabled: boolean;
private _updateOrder;
2020-11-26 11:48:02 +08:00
/** 更新此实体上组件的顺序 */
/** 更新此实体上组件的顺序 */
updateOrder: number;
2020-11-26 11:48:02 +08:00
/**
* 西访
*/
initialize(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
onAddedToEntity(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
onRemovedFromEntity(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param comp
*/
onEntityTransformChanged(comp: transform.Component): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
onEnabled(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
onDisabled(): void;
setEnabled(isEnabled: boolean): this;
setUpdateOrder(updateOrder: number): this;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
class Core {
2020-11-26 11:48:02 +08:00
/**
*
*/
static emitter: Emitter<CoreEvents>;
2020-11-26 11:48:02 +08:00
/**
* /
*/
static pauseOnFocusLost: boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
static debugRenderEndabled: boolean;
2020-11-26 11:48:02 +08:00
/**
* 访
*/
static _instance: Core;
2020-11-26 11:48:02 +08:00
/**
* 使EntitySystems
*/
static entitySystemsEnabled: boolean;
_nextScene: Scene;
2020-11-26 11:48:02 +08:00
/**
* GraphicsDeviceReset事件
*/
_graphicsDeviceChangeTimer: ITimer;
2020-11-26 11:48:02 +08:00
/**
* 访
*/
_globalManagers: FastList<GlobalManager>;
_timerManager: TimerManager;
width: number;
height: number;
constructor(width: number, height: number, enableEntitySystems?: boolean);
2020-11-26 11:48:02 +08:00
/**
* /访
* @constructor
*/
static readonly Instance: Core;
_frameCounterElapsedTime: number;
_frameCounter: number;
_totalMemory: number;
_titleMemory: (totalMemory: number, frameCounter: number) => void;
_scene: Scene;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
static scene: Scene;
2020-11-26 11:48:02 +08:00
/**
*
* @param manager
*/
static registerGlobalManager(manager: es.GlobalManager): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param manager
*/
static unregisterGlobalManager(manager: es.GlobalManager): void;
2020-11-26 11:48:02 +08:00
/**
* T的全局管理器
* @param type
*/
static getGlobalManager<T extends es.GlobalManager>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
*
* @param timeInSeconds
* @param repeats
* @param context
* @param onTime
*/
static schedule(timeInSeconds: number, repeats: boolean, context: any, onTime: (timer: ITimer) => void): Timer;
onOrientationChanged(): void;
startDebugDraw(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
onSceneChanged(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
protected onGraphicsDeviceReset(): void;
protected initialize(): void;
2020-11-26 17:26:49 +08:00
protected update(currentTime?: number): Promise<void>;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
enum CoreEvents {
2020-11-26 11:48:02 +08:00
/**
* VRAM将被擦除
*/
GraphicsDeviceReset = 0,
2020-11-26 11:48:02 +08:00
/**
*
*/
SceneChanged = 1,
2020-11-26 11:48:02 +08:00
/**
*
*/
OrientationChanged = 2,
2020-11-26 11:48:02 +08:00
/**
*
*/
FrameUpdated = 3
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 20:02:53 +08:00
class EntityComparer implements IComparer<Entity> {
compare(self: Entity, other: Entity): number;
}
2020-11-27 11:07:43 +08:00
class Entity implements IEqualityComparable {
2020-07-23 11:00:46 +08:00
static _idGenerator: number;
2020-11-26 20:02:53 +08:00
static entityComparer: IComparer<Entity>;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
scene: Scene;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
name: string;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
readonly id: number;
2020-11-26 11:48:02 +08:00
/**
* //
*/
2020-07-23 11:00:46 +08:00
readonly transform: Transform;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
readonly components: ComponentList;
2020-11-26 11:48:02 +08:00
/**
* entity update方法的频率12
*/
2020-07-23 11:00:46 +08:00
updateInterval: number;
2020-07-28 16:25:20 +08:00
componentBits: BitSet;
constructor(name: string);
2020-07-23 11:00:46 +08:00
_isDestroyed: boolean;
2020-11-26 11:48:02 +08:00
/**
* destroytrue
*/
2020-07-23 11:00:46 +08:00
readonly isDestroyed: boolean;
private _tag;
2020-11-26 11:48:02 +08:00
/**
* 使使
*/
/**
* 使使
* @param value
*/
2020-07-28 16:25:20 +08:00
tag: number;
2020-07-23 11:00:46 +08:00
private _enabled;
2020-11-26 11:48:02 +08:00
/**
* /
*/
/**
* /
* @param value
*/
2020-07-28 16:25:20 +08:00
enabled: boolean;
2020-07-23 11:00:46 +08:00
private _updateOrder;
2020-11-26 11:48:02 +08:00
/**
* updateOrder还用于对scene.entities上的标签列表进行排序
*/
/**
* updateOrder还用于对scene.entities上的标签列表进行排序
* @param value
*/
2020-07-28 16:25:20 +08:00
updateOrder: number;
2020-07-23 11:00:46 +08:00
parent: Transform;
readonly childCount: number;
position: Vector2;
localPosition: Vector2;
2020-07-23 11:00:46 +08:00
rotation: number;
rotationDegrees: number;
localRotation: number;
localRotationDegrees: number;
2020-07-23 11:00:46 +08:00
scale: Vector2;
localScale: Vector2;
readonly worldInverseTransform: Matrix2D;
readonly localToWorldTransform: Matrix2D;
readonly worldToLocalTransform: Matrix2D;
2020-07-23 11:00:46 +08:00
onTransformChanged(comp: transform.Component): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param tag
*/
2020-07-23 11:00:46 +08:00
setTag(tag: number): Entity;
2020-11-26 11:48:02 +08:00
/**
*
* @param isEnabled
*/
2020-07-23 11:00:46 +08:00
setEnabled(isEnabled: boolean): this;
2020-11-26 11:48:02 +08:00
/**
* updateOrder还用于对scene.entities上的标签列表进行排序
* @param updateOrder
*/
2020-07-23 11:00:46 +08:00
setUpdateOrder(updateOrder: number): this;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
destroy(): void;
2020-11-26 11:48:02 +08:00
/**
* 下面的生命周期方法将被调用在组件上:OnRemovedFromEntity
*/
2020-07-23 11:00:46 +08:00
detachFromScene(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param newScene
*/
2020-07-23 11:00:46 +08:00
attachToScene(newScene: Scene): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
onAddedToScene(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
onRemovedFromScene(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
update(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param component
*/
2020-07-23 11:00:46 +08:00
addComponent<T extends Component>(component: T): T;
2020-11-26 11:48:02 +08:00
/**
* T的第一个组件并返回它null
* @param type
*/
2020-07-23 11:00:46 +08:00
getComponent<T extends Component>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
*
* @param type
*/
2020-07-23 11:00:46 +08:00
hasComponent<T extends Component>(type: any): boolean;
2020-11-26 11:48:02 +08:00
/**
* T的第一个组件并返回它
* @param type
*/
getOrCreateComponent<T extends Component>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
* typeName类型的所有组件使
* @param typeName
* @param componentList
*/
getComponents(typeName: any, componentList?: any): any;
2020-11-26 11:48:02 +08:00
/**
*
* @param component
*/
2020-07-23 11:00:46 +08:00
removeComponent(component: Component): void;
2020-11-26 11:48:02 +08:00
/**
* T的第一个组件
* @param type
*/
2020-07-23 11:00:46 +08:00
removeComponentForType<T extends Component>(type: any): boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
removeAllComponents(): void;
compareTo(other: Entity): number;
2020-11-27 11:07:43 +08:00
equals(other: Entity): boolean;
getHashCode(): number;
2020-07-23 11:00:46 +08:00
toString(): string;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/** 场景 */
class Scene {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
readonly entities: EntityList;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
readonly entityProcessors: EntityProcessorList;
readonly _sceneComponents: FastList<SceneComponent>;
2020-07-23 11:00:46 +08:00
_didSceneBegin: any;
constructor();
2020-11-26 11:48:02 +08:00
/**
*
* begin之前contructor中调用这个函数
*/
2020-07-23 11:00:46 +08:00
initialize(): void;
2020-11-26 11:48:02 +08:00
/**
* Core将这个场景设置为活动场景时
*/
2020-12-01 20:02:45 +08:00
onStart(): void;
2020-11-26 11:48:02 +08:00
/**
*
* Core把这个场景从活动槽中移除时
*/
2020-07-23 11:00:46 +08:00
unload(): void;
2020-08-25 17:28:22 +08:00
begin(): void;
2020-07-23 11:00:46 +08:00
end(): void;
updateResolutionScaler(): void;
2020-07-23 11:00:46 +08:00
update(): void;
2020-11-26 11:48:02 +08:00
/**
* SceneComponent
* @param component
*/
2020-08-11 11:07:20 +08:00
addSceneComponent<T extends SceneComponent>(component: T): T;
2020-11-26 11:48:02 +08:00
/**
* T的第一个SceneComponent并返回它null
* @param type
*/
2020-08-11 11:07:20 +08:00
getSceneComponent<T extends SceneComponent>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
* T的第一个SceneComponent并返回它SceneComponentSceneComponent
* @param type
*/
2020-08-11 11:07:20 +08:00
getOrCreateSceneComponent<T extends SceneComponent>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
* SceneComponents列表中删除一个SceneComponent
* @param component
*/
2020-08-11 11:07:20 +08:00
removeSceneComponent(component: SceneComponent): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param name
*/
2020-07-23 11:00:46 +08:00
createEntity(name: string): Entity;
2020-11-26 11:48:02 +08:00
/**
*
* @param entity
*/
2020-07-23 11:00:46 +08:00
addEntity(entity: Entity): Entity;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
destroyAllEntities(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param name
*/
2020-07-23 11:00:46 +08:00
findEntity(name: string): Entity;
2020-11-26 11:48:02 +08:00
/**
*
* @param tag
*/
2020-07-23 11:00:46 +08:00
findEntitiesWithTag(tag: number): Entity[];
2020-11-26 11:48:02 +08:00
/**
* T的所有实体
* @param type
*/
2020-07-23 11:00:46 +08:00
entitiesOfType<T extends Entity>(type: any): T[];
2020-11-26 11:48:02 +08:00
/**
* T的组件
* @param type
*/
2020-07-23 11:00:46 +08:00
findComponentOfType<T extends Component>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
* T的所有已启用已加载组件的列表
* @param type
*/
2020-07-23 11:00:46 +08:00
findComponentsOfType<T extends Component>(type: any): T[];
2020-11-26 11:48:02 +08:00
/**
* EntitySystem处理器
* @param processor
*/
2020-07-23 11:00:46 +08:00
addEntityProcessor(processor: EntitySystem): EntitySystem;
2020-11-26 11:48:02 +08:00
/**
* EntitySystem处理器
* @param processor
*/
2020-07-23 11:00:46 +08:00
removeEntityProcessor(processor: EntitySystem): void;
2020-11-26 11:48:02 +08:00
/**
* EntitySystem处理器
*/
2020-07-23 11:00:46 +08:00
getEntityProcessor<T extends EntitySystem>(): T;
}
}
declare module transform {
enum Component {
position = 0,
scale = 1,
rotation = 2
}
}
declare module es {
enum DirtyType {
clean = 0,
positionDirty = 1,
scaleDirty = 2,
rotationDirty = 3
}
class Transform {
2020-11-26 11:48:02 +08:00
/** 与此转换关联的实体 */
2020-07-23 11:00:46 +08:00
readonly entity: Entity;
hierarchyDirty: DirtyType;
_localDirty: boolean;
_localPositionDirty: boolean;
_localScaleDirty: boolean;
_localRotationDirty: boolean;
_positionDirty: boolean;
_worldToLocalDirty: boolean;
_worldInverseDirty: boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
_localTransform: Matrix2D;
2020-11-26 11:48:02 +08:00
/**
*
*/
_worldTransform: Matrix2D;
_rotationMatrix: Matrix2D;
_translationMatrix: Matrix2D;
_scaleMatrix: Matrix2D;
2020-07-28 16:25:20 +08:00
_children: Transform[];
constructor(entity: Entity);
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-28 16:25:20 +08:00
readonly childCount: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
2020-07-28 16:25:20 +08:00
rotationDegrees: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
2020-07-28 16:25:20 +08:00
localRotationDegrees: number;
readonly localToWorldTransform: Matrix2D;
_parent: Transform;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
2020-07-28 16:25:20 +08:00
parent: Transform;
_worldToLocalTransform: Matrix2D;
readonly worldToLocalTransform: Matrix2D;
_worldInverseTransform: Matrix2D;
readonly worldInverseTransform: Matrix2D;
_position: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
2020-07-28 16:25:20 +08:00
position: Vector2;
_scale: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
2020-07-28 16:25:20 +08:00
scale: Vector2;
_rotation: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
/**
*
* @param value
*/
2020-07-28 16:25:20 +08:00
rotation: number;
_localPosition: Vector2;
2020-11-26 11:48:02 +08:00
/**
* transform.position相同
*/
/**
* transform.position相同
* @param value
*/
2020-07-28 16:25:20 +08:00
localPosition: Vector2;
_localScale: Vector2;
2020-11-26 11:48:02 +08:00
/**
* transform.scale相同
*/
/**
* transform.scale相同
* @param value
*/
2020-07-28 16:25:20 +08:00
localScale: Vector2;
_localRotation: number;
2020-11-26 11:48:02 +08:00
/**
* transform.rotation相同
*/
/**
* transform.rotation相同
* @param value
*/
2020-07-28 16:25:20 +08:00
localRotation: number;
2020-11-26 11:48:02 +08:00
/**
*
* @param index
*/
2020-07-23 11:00:46 +08:00
getChild(index: number): Transform;
2020-11-26 11:48:02 +08:00
/**
*
* @param parent
*/
2020-07-23 11:00:46 +08:00
setParent(parent: Transform): Transform;
2020-11-26 11:48:02 +08:00
/**
*
* @param x
* @param y
*/
2020-07-23 11:00:46 +08:00
setPosition(x: number, y: number): Transform;
2020-11-26 11:48:02 +08:00
/**
* transform.position相同
* @param localPosition
*/
setLocalPosition(localPosition: Vector2): Transform;
2020-11-26 11:48:02 +08:00
/**
*
* @param radians
*/
setRotation(radians: number): Transform;
2020-11-26 11:48:02 +08:00
/**
*
* @param degrees
*/
setRotationDegrees(degrees: number): Transform;
2020-11-26 11:48:02 +08:00
/**
* 使
* @param pos
*/
2020-07-23 11:00:46 +08:00
lookAt(pos: Vector2): void;
2020-11-26 11:48:02 +08:00
/**
* transform.rotation相同
* @param radians
*/
setLocalRotation(radians: number): this;
2020-11-26 11:48:02 +08:00
/**
* transform.rotation相同
* @param degrees
*/
setLocalRotationDegrees(degrees: number): Transform;
2020-11-26 11:48:02 +08:00
/**
*
* @param scale
*/
setScale(scale: Vector2): Transform;
2020-11-26 11:48:02 +08:00
/**
* transform.scale相同
* @param scale
*/
setLocalScale(scale: Vector2): Transform;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
roundPosition(): void;
updateTransform(): void;
2020-07-23 11:00:46 +08:00
setDirty(dirtyFlagType: DirtyType): void;
2020-11-26 11:48:02 +08:00
/**
* transform属性进行拷贝
* @param transform
*/
2020-07-23 11:00:46 +08:00
copyFrom(transform: Transform): void;
toString(): string;
2020-08-11 11:07:20 +08:00
}
}
2020-07-23 11:00:46 +08:00
declare module es {
class ComponentPool<T extends PooledComponent> {
private _cache;
private _type;
constructor(typeClass: any);
obtain(): T;
free(component: T): void;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
* Component时Component和实体被启用
*/
2020-10-27 18:08:49 +08:00
interface IUpdatable {
enabled: boolean;
updateOrder: number;
update(): any;
}
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-10-27 18:08:49 +08:00
class IUpdatableComparer implements IComparer<IUpdatable> {
compare(a: IUpdatable, b: IUpdatable): number;
2020-07-23 11:00:46 +08:00
}
var isIUpdatable: (props: any) => props is IUpdatable;
2020-07-23 11:00:46 +08:00
}
declare module es {
2020-11-26 11:48:02 +08:00
/** 回收实例的组件类型。 */
2020-07-23 11:00:46 +08:00
abstract class PooledComponent extends Component {
abstract reset(): any;
}
}
declare module es {
class SceneComponent implements IComparer<SceneComponent> {
2020-11-26 11:48:02 +08:00
/**
*
*/
scene: Scene;
2020-11-26 11:48:02 +08:00
/**
* SceneComponenttrueonEnabled/onDisable
*/
/**
* SceneComponenttrueonEnabled/onDisable
* @param value
*/
enabled: boolean;
2020-11-26 11:48:02 +08:00
/**
* SceneComponents的顺序
*/
updateOrder: number;
_enabled: boolean;
2020-11-26 11:48:02 +08:00
/**
* SceneComponent时调用
*/
onEnabled(): void;
2020-11-26 11:48:02 +08:00
/**
* SceneComponent时调用
*/
onDisabled(): void;
2020-11-26 11:48:02 +08:00
/**
* SceneComponent从场景中移除时调用
*/
onRemovedFromScene(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
update(): void;
2020-11-26 11:48:02 +08:00
/**
* /SceneComponent
* @param isEnabled
*/
setEnabled(isEnabled: boolean): SceneComponent;
2020-11-26 11:48:02 +08:00
/**
* SceneComponent的updateOrder并触发某种SceneComponent
* @param updateOrder
*/
setUpdateOrder(updateOrder: number): this;
compare(other: SceneComponent): number;
}
}
declare module es {
/**
2020-12-07 12:16:36 +08:00
*
*
*/
class ArcadeRigidbody extends Component implements IUpdatable {
/** 这个刚体的质量。质量为0则是一个不可移动的物体 */
mass: number;
/**
* 0-101
*/
readonly elasticity: number;
elasticiy: number;
/**
* 0 - 101
*/
friction: number;
/**
* 0-9沿线glue摩擦力
*/
glue: number;
/**
* Physics.gravity
*/
shouldUseGravity: boolean;
/**
*
*/
velocity: Vector2;
/**
* 0
*/
readonly isImmovable: boolean;
_mass: number;
_elasticity: number;
_friction: number;
_glue: number;
_inverseMass: number;
_collider: Collider;
constructor();
/**
* 0
* @param mass
*/
setMass(mass: number): ArcadeRigidbody;
/**
* 0-101
* @param value
*/
setElasticity(value: number): ArcadeRigidbody;
/**
* 0 - 101
* @param value
*/
setFriction(value: number): ArcadeRigidbody;
/**
* 0-9沿线glue摩擦力
* @param value
*/
setGlue(value: number): ArcadeRigidbody;
/**
* 100000使使
* @param force
*/
addImpulse(force: Vector2): void;
onAddedToEntity(): void;
update(): void;
/**
*
* @param other
* @param minimumTranslationVector
*/
processOverlap(other: ArcadeRigidbody, minimumTranslationVector: Vector2): void;
/**
*
* @param other
* @param minimumTranslationVector
*/
processCollision(other: ArcadeRigidbody, minimumTranslationVector: Vector2): void;
/**
* MTV之间的相对速度使
* @param relativeVelocity
* @param minimumTranslationVector
* @param responseVelocity
*/
calculateResponseVelocity(relativeVelocity: Vector2, minimumTranslationVector: Vector2, responseVelocity?: Vector2): void;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
* /退
* ITriggerListener方法将在实现接口的触发器实体上的任何组件上调用
* Mover类一起工作
*/
interface ITriggerListener {
2020-11-26 11:48:02 +08:00
/**
*
* Mover/ProjectileMover方法处理使
* @param other
* @param local
*/
onTriggerEnter(other: Collider, local: Collider): any;
2020-11-26 11:48:02 +08:00
/**
*
* @param other
* @param local
*/
onTriggerExit(other: Collider, local: Collider): any;
}
2020-11-26 17:26:49 +08:00
class TriggerListenerHelper {
static getITriggerListener(entity: Entity, components: ITriggerListener[]): ITriggerListener[];
}
var isITriggerListener: (props: any) => props is ITriggerListener;
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
* ITriggerListener接口用于管理对移动过程中违反的任何触发器的回调
* move方法
*
* ITriggerListener
*/
class Mover extends Component {
private _triggerHelper;
onAddedToEntity(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param motion
* @param collisionResult
*/
calculateMovement(motion: Vector2, collisionResult: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
* calculatemomovement应用到实体并更新triggerHelper
* @param motion
*/
applyMovement(motion: Vector2): void;
2020-11-26 11:48:02 +08:00
/**
* calculateMovement和applyMovement来移动考虑碰撞的实体;
* @param motion
* @param collisionResult
*/
move(motion: Vector2, collisionResult: CollisionResult): boolean;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
* ITriggerListeners报告
*
2020-11-26 11:48:02 +08:00
*/
class ProjectileMover extends Component {
private _tempTriggerList;
private _collider;
onAddedToEntity(): void;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 11:48:02 +08:00
* @param motion
*/
move(motion: Vector2): boolean;
private notifyTriggerListeners;
}
}
declare module es {
abstract class Collider extends Component {
2020-11-26 11:48:02 +08:00
/**
*
*/
shape: Shape;
2020-11-26 11:48:02 +08:00
/**
*
*/
isTrigger: boolean;
2020-11-26 11:48:02 +08:00
/**
* physicsLayer可以用作过滤器Flags类有帮助位掩码的方法
*/
physicsLayer: Ref<number>;
2020-11-26 11:48:02 +08:00
/**
* 使
*
*/
collidesWithLayers: Ref<number>;
2020-11-26 11:48:02 +08:00
/**
* true
*/
shouldColliderScaleAndRotateWithTransform: boolean;
2020-11-26 11:48:02 +08:00
/**
*
* 使
*/
registeredPhysicsBounds: Rectangle;
_localOffsetLength: number;
_isPositionDirty: boolean;
_isRotationDirty: boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
protected _isParentEntityAddedToScene: any;
2020-11-26 11:48:02 +08:00
/**
*
*/
protected _isColliderRegistered: any;
2020-11-26 11:48:02 +08:00
/**
*
*/
readonly absolutePosition: Vector2;
2020-11-26 11:48:02 +08:00
/**
* transform.rotation
*/
readonly rotation: number;
readonly bounds: Rectangle;
protected _localOffset: Vector2;
2020-11-26 11:48:02 +08:00
/**
* localOffset添加到实体
* /
*/
/**
* localOffset添加到实体
* /
* @param value
*/
localOffset: Vector2;
2020-11-26 11:48:02 +08:00
/**
* localOffset添加到实体
*
* @param offset
*/
setLocalOffset(offset: Vector2): Collider;
2020-11-26 11:48:02 +08:00
/**
* true
* @param shouldColliderScaleAndRotationWithTransform
*/
setShouldColliderScaleAndRotateWithTransform(shouldColliderScaleAndRotationWithTransform: boolean): Collider;
onAddedToEntity(): void;
onRemovedFromEntity(): void;
onEntityTransformChanged(comp: transform.Component): void;
onEnabled(): void;
onDisabled(): void;
2020-11-26 11:48:02 +08:00
/**
* ()
*/
registerColliderWithPhysicsSystem(): void;
2020-11-26 11:48:02 +08:00
/**
* ()
*/
unregisterColliderWithPhysicsSystem(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param other
*/
overlaps(other: Collider): boolean;
2020-11-26 11:48:02 +08:00
/**
* ()true
* @param collider
* @param motion
* @param result
*/
collidesWith(collider: Collider, motion: Vector2, result?: CollisionResult): boolean;
/**
* true
* @param collider
* @param result
*/
collidesWithNonMotion(collider: Collider, result?: CollisionResult): boolean;
}
}
declare module es {
class BoxCollider extends Collider {
constructor(x: number, y: number, width: number, height: number);
width: number;
height: number;
2020-11-26 11:48:02 +08:00
/**
* BoxCollider的大小
* @param width
* @param height
*/
setSize(width: number, height: number): this;
2020-11-26 11:48:02 +08:00
/**
* BoxCollider的宽度
* @param width
*/
setWidth(width: number): BoxCollider;
2020-11-26 11:48:02 +08:00
/**
* BoxCollider的高度
* @param height
*/
setHeight(height: number): void;
toString(): string;
}
}
declare module es {
class CircleCollider extends Collider {
2020-11-26 11:48:02 +08:00
/**
*
*
* @param radius
*/
constructor(radius: number);
radius: number;
2020-11-26 11:48:02 +08:00
/**
*
* @param radius
*/
setRadius(radius: number): CircleCollider;
toString(): string;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
class PolygonCollider extends Collider {
2020-11-26 11:48:02 +08:00
/**
* localOffset的差异为居中
* @param points
*/
constructor(points: Vector2[]);
}
}
2020-07-23 11:00:46 +08:00
declare module es {
class EntitySystem {
private _entities;
2020-07-28 16:25:20 +08:00
constructor(matcher?: Matcher);
private _scene;
scene: Scene;
2020-07-23 11:00:46 +08:00
private _matcher;
readonly matcher: Matcher;
initialize(): void;
onChanged(entity: Entity): void;
add(entity: Entity): void;
onAdded(entity: Entity): void;
remove(entity: Entity): void;
onRemoved(entity: Entity): void;
update(): void;
lateUpdate(): void;
protected begin(): void;
protected process(entities: Entity[]): void;
protected lateProcess(entities: Entity[]): void;
protected end(): void;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
abstract class EntityProcessingSystem extends EntitySystem {
constructor(matcher: Matcher);
2020-11-26 11:48:02 +08:00
/**
*
* @param entity
*/
2020-07-23 11:00:46 +08:00
abstract processEntity(entity: Entity): any;
lateProcessEntity(entity: Entity): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param entities
*/
2020-07-23 11:00:46 +08:00
protected process(entities: Entity[]): void;
protected lateProcess(entities: Entity[]): void;
}
}
declare module es {
abstract class PassiveSystem extends EntitySystem {
onChanged(entity: Entity): void;
protected process(entities: Entity[]): void;
}
}
2020-11-26 11:48:02 +08:00
/** 用于协调其他系统的通用系统基类 */
2020-07-23 11:00:46 +08:00
declare module es {
abstract class ProcessingSystem extends EntitySystem {
onChanged(entity: Entity): void;
2020-11-26 11:48:02 +08:00
/** 处理我们的系统 每帧调用 */
2020-07-23 11:00:46 +08:00
abstract processSystem(): any;
2020-07-28 16:25:20 +08:00
protected process(entities: Entity[]): void;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*
* ;
*/
2020-07-23 11:00:46 +08:00
class BitSet {
private static LONG_MASK;
private _bits;
constructor(nbits?: number);
and(bs: BitSet): void;
andNot(bs: BitSet): void;
cardinality(): number;
clear(pos?: number): void;
get(pos: number): boolean;
intersects(set: BitSet): boolean;
isEmpty(): boolean;
nextSetBit(from: number): number;
set(pos: number, value?: boolean): void;
2020-07-28 16:25:20 +08:00
private ensure;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
class ComponentList {
2020-11-26 11:48:02 +08:00
/**
* updateOrder排序
*/
2020-07-23 11:00:46 +08:00
static compareUpdatableOrder: IUpdatableComparer;
_entity: Entity;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-10-27 18:08:49 +08:00
_components: FastList<Component>;
2020-11-26 11:48:02 +08:00
/**
*
*/
_updatableComponents: FastList<IUpdatable>;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
_componentsToAdd: Component[];
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
_componentsToRemove: Component[];
_tempBufferList: Component[];
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
_isComponentListUnsorted: boolean;
constructor(entity: Entity);
readonly count: number;
readonly buffer: Component[];
markEntityListUnsorted(): void;
add(component: Component): void;
remove(component: Component): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
removeAllComponents(): void;
deregisterAllComponents(): void;
registerAllComponents(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
updateLists(): void;
handleRemove(component: Component): void;
2020-11-26 11:48:02 +08:00
/**
* T的第一个组件并返回它
* (onAddedToEntity方法的组件)
* null
* @param type
* @param onlyReturnInitializedComponents
*/
2020-07-23 11:00:46 +08:00
getComponent<T extends Component>(type: any, onlyReturnInitializedComponents: boolean): T;
2020-11-26 11:48:02 +08:00
/**
* T类型的所有组件使
* @param typeName
* @param components
*/
getComponents(typeName: any, components?: any): any;
2020-07-23 11:00:46 +08:00
update(): void;
onEntityTransformChanged(comp: transform.Component): void;
onEntityEnabled(): void;
onEntityDisabled(): void;
}
}
declare module es {
class ComponentTypeManager {
private static _componentTypesMask;
static add(type: any): void;
static getIndexFor(type: any): number;
}
}
declare module es {
class EntityList {
scene: Scene;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-11-26 20:02:53 +08:00
_entities: FastList<Entity>;
2020-11-26 11:48:02 +08:00
/**
* 便
*/
2020-11-27 11:07:43 +08:00
_entitiesToAdded: HashSet<Entity>;
2020-11-26 11:48:02 +08:00
/**
* 便
*/
2020-11-27 11:07:43 +08:00
_entitiesToRemove: HashSet<Entity>;
2020-11-26 11:48:02 +08:00
/**
*
*/
_isEntityListUnsorted: boolean;
2020-11-26 11:48:02 +08:00
/**
* 便
*/
_entityDict: Map<number, Entity[]>;
2020-10-27 18:08:49 +08:00
_unsortedTags: Set<number>;
2020-07-23 11:00:46 +08:00
constructor(scene: Scene);
readonly count: number;
2020-11-26 20:02:53 +08:00
readonly buffer: FastList<Entity>;
markEntityListUnsorted(): void;
markTagUnsorted(tag: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param entity
*/
2020-07-23 11:00:46 +08:00
add(entity: Entity): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param entity
*/
2020-07-23 11:00:46 +08:00
remove(entity: Entity): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
removeAllEntities(): void;
2020-11-26 11:48:02 +08:00
/**
* EntityList管理
* @param entity
*/
contains(entity: Entity): boolean;
2020-07-23 11:00:46 +08:00
getTagList(tag: number): Entity[];
addToTagList(entity: Entity): void;
removeFromTagList(entity: Entity): void;
update(): void;
updateLists(): void;
2020-11-26 11:48:02 +08:00
/**
* name的实体null
* @param name
*/
findEntity(name: string): Entity;
2020-11-26 11:48:02 +08:00
/**
*
* List可以通过ListPool.free放回池中
* @param tag
*/
entitiesWithTag(tag: number): Entity[];
2020-11-26 11:48:02 +08:00
/**
* T类型的所有实体的列表
* List可以通过ListPool.free放回池中
* @param type
*/
entitiesOfType<T extends Entity>(type: any): T[];
2020-11-26 11:48:02 +08:00
/**
* T类型的组件
* @param type
*/
findComponentOfType<T extends Component>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
* T类型的组件
* List可以通过ListPool.free放回池中
* @param type
*/
findComponentsOfType<T extends Component>(type: any): T[];
2020-07-23 11:00:46 +08:00
}
}
declare module es {
class EntityProcessorList {
2020-10-27 18:08:49 +08:00
protected _processors: EntitySystem[];
2020-07-23 11:00:46 +08:00
add(processor: EntitySystem): void;
remove(processor: EntitySystem): void;
onComponentAdded(entity: Entity): void;
onComponentRemoved(entity: Entity): void;
onEntityAdded(entity: Entity): void;
onEntityRemoved(entity: Entity): void;
begin(): void;
update(): void;
lateUpdate(): void;
end(): void;
getProcessor<T extends EntitySystem>(): T;
2020-07-28 16:25:20 +08:00
protected notifyEntityChanged(entity: Entity): void;
protected removeFromProcessors(entity: Entity): void;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
* 使
* N倍
* Faster dictionary在大部分操作上也比标准字典快
* 使
*/
class FasterDictionary<TKey, TValue> {
_values: TValue[];
_valuesInfo: FastNode[];
_buckets: number[];
_freeValueCellIndex: number;
_collisions: number;
constructor(size?: number);
getValuesArray(count: {
value: number;
}): TValue[];
readonly valuesArray: TValue[];
readonly count: number;
add(key: TKey, value: TValue): void;
addValue(key: TKey, value: TValue, indexSet: {
value: number;
}): boolean;
remove(key: TKey): boolean;
trim(): void;
clear(): void;
fastClear(): void;
containsKey(key: TKey): boolean;
tryGetValue(key: TKey): TValue;
tryFindIndex(key: TKey, findIndex: {
value: number;
}): boolean;
getDirectValue(index: number): TValue;
getIndex(key: TKey): number;
static updateLinkedList(index: number, valuesInfo: FastNode[]): void;
static hash(key: any): number;
static reduce(x: number, n: number): number;
}
class FastNode {
readonly key: any;
readonly hashcode: number;
previous: number;
next: number;
constructor(key: any, hash: number, previousNode?: number);
}
}
2020-10-27 18:08:49 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
* 访使FastList.length字段
*
* @tutorial
* for( var i = 0; i <= list.length; i++ )
* var item = list.buffer[i];
*/
2020-10-27 18:08:49 +08:00
class FastList<T> {
2020-11-26 11:48:02 +08:00
/**
* 访
* 使buffer.Length! 使FastList.length
*/
2020-10-27 18:08:49 +08:00
buffer: T[];
2020-11-26 11:48:02 +08:00
/**
* 访
*/
2020-10-27 18:08:49 +08:00
length: number;
constructor(size?: number);
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-10-27 18:08:49 +08:00
clear(): void;
2020-11-26 11:48:02 +08:00
/**
* clear的工作原理一样
*/
2020-10-27 18:08:49 +08:00
reset(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param item
*/
2020-10-27 18:08:49 +08:00
add(item: T): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param item
*/
2020-10-27 18:08:49 +08:00
remove(item: T): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param index
*/
2020-10-27 18:08:49 +08:00
removeAt(index: number): void;
2020-11-26 11:48:02 +08:00
/**
* FastList中
* @param item
*/
2020-10-27 18:08:49 +08:00
contains(item: T): boolean;
2020-11-26 11:48:02 +08:00
/**
* ItemCount
* @param additionalItemCount
*/
2020-10-27 18:08:49 +08:00
ensureCapacity(additionalItemCount?: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param array
*/
2020-10-27 18:08:49 +08:00
addRange(array: T[]): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-10-27 18:08:49 +08:00
sort(comparer: IComparer<T>): void;
}
}
declare module es {
class HashHelpers {
static readonly hashCollisionThreshold: number;
static readonly hashPrime: number;
2020-11-26 11:48:02 +08:00
/**
*
*
* Hashtable当前的容量为x
* 2x2x的质数p_1p_2...p_i...p_n使p_n-1 < 2x < p_n
*
* IEh1(key)+i*h2(key)0 <= i < size.h2和size必须是相对质数
*/
static readonly primes: number[];
2020-11-26 11:48:02 +08:00
/**
* Array.MaxArrayLength小的最大质数
*/
static readonly maxPrimeArrayLength: number;
static isPrime(candidate: number): boolean;
static getPrime(min: number): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param oldSize
* @returns
*/
static expandPrime(oldSize: number): number;
static getHashCode(str: any): number;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
class Matcher {
protected allSet: BitSet;
protected exclusionSet: BitSet;
protected oneSet: BitSet;
static empty(): Matcher;
getAllSet(): BitSet;
getExclusionSet(): BitSet;
getOneSet(): BitSet;
isInterestedEntity(e: Entity): boolean;
isInterested(componentBits: BitSet): boolean;
2020-07-23 11:00:46 +08:00
all(...types: any[]): Matcher;
exclude(...types: any[]): this;
one(...types: any[]): this;
}
2020-06-08 18:26:05 +08:00
}
declare class StringUtils {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-28 16:25:20 +08:00
private static specialSigns;
2020-11-26 11:48:02 +08:00
/**
*
* @param str
* @return
*/
static matchChineseWord(str: string): string[];
2020-11-26 11:48:02 +08:00
/**
*
* @param target
* @return
*/
static lTrim(target: string): string;
2020-11-26 11:48:02 +08:00
/**
*
* @param target
* @return
*/
static rTrim(target: string): string;
2020-11-26 11:48:02 +08:00
/**
* 2
* @param target
* @return 2
*/
static trim(target: string): string;
2020-11-26 11:48:02 +08:00
/**
*
* @param str
* @return
*/
static isWhiteSpace(str: string): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param mainStr
* @param targetStr
* @param replaceStr
* @param caseMark
* @return
*/
static replaceMatch(mainStr: string, targetStr: string, replaceStr: string, caseMark?: boolean): string;
2020-11-26 11:48:02 +08:00
/**
* html实体换掉字符窜中的特殊字符
* @param str
* @param reversion
* @return
*/
static htmlSpecialChars(str: string, reversion?: boolean): string;
2020-11-26 11:48:02 +08:00
/**
* "0"
*
* <pre>
*
* trace( StringFormat.zfill('1') );
* // 01
*
* trace( StringFormat.zfill('16', 5) );
* // 00016
*
* trace( StringFormat.zfill('-3', 3) );
* // -03
*
* </pre>
*
* @param str
* @param width
* str.length >= widthstr
* @return
*
*/
static zfill(str: string, width?: number): string;
2020-11-26 11:48:02 +08:00
/**
*
* @param str
* @return
*/
static reverse(str: string): string;
2020-11-26 11:48:02 +08:00
/**
*
* @param str
* @param start
* @param len
* @param order true从字符串头部开始计算false从字符串尾巴开始结算
* @return
*/
static cutOff(str: string, start: number, len: number, order?: boolean): string;
2020-11-26 11:48:02 +08:00
/**{0} 字符替换 */
static strReplace(str: string, rStr: string[]): string;
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/** 提供帧定时信息 */
2020-07-23 11:00:46 +08:00
class Time {
2020-11-26 11:48:02 +08:00
/** 游戏运行的总时间 */
2020-11-25 11:37:24 +08:00
static totalTime: number;
2020-11-26 11:48:02 +08:00
/** deltaTime的未缩放版本。不受时间尺度的影响 */
2020-07-23 11:00:46 +08:00
static unscaledDeltaTime: any;
2020-11-26 11:48:02 +08:00
/** 前一帧到当前帧的时间增量,按时间刻度进行缩放 */
2020-07-23 11:00:46 +08:00
static deltaTime: number;
2020-11-26 11:48:02 +08:00
/** 时间刻度缩放 */
2020-07-23 11:00:46 +08:00
static timeScale: number;
2020-11-26 11:48:02 +08:00
/** 已传递的帧总数 */
2020-07-23 11:00:46 +08:00
static frameCount: number;
2020-11-26 11:48:02 +08:00
/** 自场景加载以来的总时间 */
2020-11-25 11:37:24 +08:00
static timeSinceSceneLoad: any;
2020-07-28 16:25:20 +08:00
private static _lastTime;
2020-07-23 11:00:46 +08:00
static update(currentTime: number): void;
static sceneChanged(): void;
2020-11-26 11:48:02 +08:00
/**
* 使delta的间隔值true
* @param interval
*/
2020-07-23 11:00:46 +08:00
static checkEvery(interval: number): boolean;
}
}
declare class TimeUtils {
2020-11-26 11:48:02 +08:00
/**
* ID
* @param d
* @returns ID
*/
static monthId(d?: Date): number;
2020-11-26 11:48:02 +08:00
/**
* ID
* @param d
* @returns ID
*/
static dateId(t?: Date): number;
2020-11-26 11:48:02 +08:00
/**
* ID
* @param d
* @returns ID
*/
static weekId(d?: Date, first?: boolean): number;
2020-11-26 11:48:02 +08:00
/**
* a比b小
*/
static diffDay(a: Date, b: Date, fixOne?: boolean): number;
2020-11-26 11:48:02 +08:00
/**
*
*/
static getFirstDayOfWeek(d?: Date): Date;
2020-11-26 11:48:02 +08:00
/**
*
*/
static getFirstOfDay(d?: Date): Date;
2020-11-26 11:48:02 +08:00
/**
*
*/
static getNextFirstOfDay(d?: Date): Date;
2020-11-26 11:48:02 +08:00
/**
* @returns 2018-12-12
*/
static formatDate(date: Date): string;
2020-11-26 11:48:02 +08:00
/**
* @returns 2018-12-12 12:12:12
*/
static formatDateTime(date: Date): string;
2020-11-26 11:48:02 +08:00
/**
* @returns s 2018-12-12 2018-12-12 12:12:12
*/
static parseDate(s: string): Date;
2020-11-26 11:48:02 +08:00
/**
*
* @param time
* @param partition
* @param showHour
* @return , ,
*
* 比如: time = 4351; secondToTime(time)返回字符串01:12:31;
*/
static secondToTime(time?: number, partition?: string, showHour?: boolean): string;
2020-11-26 11:48:02 +08:00
/**
*
* @param time
* @param partition
* @return
* @throws Error Exception
*
* 1 trace(MillisecondTransform.timeToMillisecond("00:60:00"))
* 3600000
*
*
* 2 trace(MillisecondTransform.timeToMillisecond("00.60.00","."))
* 3600000
*/
static timeToMillisecond(time: string, partition?: string): string;
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/** 贝塞尔帮助类 */
2020-07-23 11:00:46 +08:00
class Bezier {
2020-11-26 11:48:02 +08:00
/**
* 线
* @param p0
* @param p1
* @param p2
* @param t
*/
2020-07-23 11:00:46 +08:00
static getPoint(p0: Vector2, p1: Vector2, p2: Vector2, t: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param p0
* @param p1
* @param p2
* @param t
*/
2020-07-23 11:00:46 +08:00
static getFirstDerivative(p0: Vector2, p1: Vector2, p2: Vector2, t: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param start
* @param firstControlPoint
* @param secondControlPoint
* @param end
* @param t
*/
2020-07-23 11:00:46 +08:00
static getFirstDerivativeThree(start: Vector2, firstControlPoint: Vector2, secondControlPoint: Vector2, end: Vector2, t: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param start
* @param firstControlPoint
* @param secondControlPoint
* @param end
* @param t
*/
2020-07-23 11:00:46 +08:00
static getPointThree(start: Vector2, firstControlPoint: Vector2, secondControlPoint: Vector2, end: Vector2, t: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
* bezier曲线
* ListPool的合并列表
* @param start
* @param firstCtrlPoint
* @param secondCtrlPoint
* @param end
* @param distanceTolerance
*/
2020-07-23 11:00:46 +08:00
static getOptimizedDrawingPoints(start: Vector2, firstCtrlPoint: Vector2, secondCtrlPoint: Vector2, end: Vector2, distanceTolerance?: number): Vector2[];
2020-11-26 11:48:02 +08:00
/**
* bezier曲线
* @param start
* @param firstCtrlPoint
* @param secondCtrlPoint
* @param end
* @param points
* @param distanceTolerance
*/
2020-07-23 11:00:46 +08:00
private static recursiveGetOptimizedDrawingPoints;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
* isFlagSet之外flag参数是一个非移位的标志
* 使(0123)/
*/
2020-07-23 11:00:46 +08:00
class Flags {
2020-11-26 11:48:02 +08:00
/**
*
*
* @param self
* @param flag
*/
2020-07-23 11:00:46 +08:00
static isFlagSet(self: number, flag: number): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param self
* @param flag
*/
2020-07-23 11:00:46 +08:00
static isUnshiftedFlagSet(self: number, flag: number): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param self
* @param flag
*/
2020-08-27 18:48:20 +08:00
static setFlagExclusive(self: Ref<number>, flag: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param self
* @param flag
*/
2020-08-27 18:48:20 +08:00
static setFlag(self: Ref<number>, flag: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param self
* @param flag
*/
2020-08-27 18:48:20 +08:00
static unsetFlag(self: Ref<number>, flag: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param self
*/
2020-08-27 18:48:20 +08:00
static invertFlags(self: Ref<number>): void;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
class MathHelper {
static readonly Epsilon: number;
static readonly Rad2Deg: number;
static readonly Deg2Rad: number;
2020-11-26 11:48:02 +08:00
/**
* pi除以2的值(1.57079637)
*/
static readonly PiOver2: number;
2020-11-26 11:48:02 +08:00
/**
*
* @param radians
*/
2020-07-23 11:00:46 +08:00
static toDegrees(radians: number): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param degrees
*/
2020-07-23 11:00:46 +08:00
static toRadians(degrees: number): number;
2020-11-26 11:48:02 +08:00
/**
* mapps值(leftMin - leftMax范围内)rightMin - rightMax范围内的值
* @param value
* @param leftMin
* @param leftMax
* @param rightMin
* @param rightMax
*/
2020-07-23 11:00:46 +08:00
static map(value: number, leftMin: number, leftMax: number, rightMin: number, rightMax: number): number;
static lerp(value1: number, value2: number, amount: number): number;
static clamp(value: number, min: number, max: number): number;
2020-11-26 11:48:02 +08:00
/**
* 03
* @param circleCenter
* @param radius
* @param angleInDegrees
*/
2020-07-23 11:00:46 +08:00
static pointOnCirlce(circleCenter: Vector2, radius: number, angleInDegrees: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
* true
* @param value
*/
2020-07-23 11:00:46 +08:00
static isEven(value: number): boolean;
2020-11-26 11:48:02 +08:00
/**
* 0-1
* @param value
*/
2020-07-23 11:00:46 +08:00
static clamp01(value: number): number;
static angleBetweenVectors(from: Vector2, to: Vector2): number;
static angleToVector(angleRadians: number, length: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
* t并确保它总是大于或等于0并且小于长度
* @param t
* @param length
*/
2020-08-12 12:16:35 +08:00
static incrementWithWrap(t: number, length: number): number;
2020-11-26 11:48:02 +08:00
/**
* start可以小于或大于end例如:开始是21046
* @param start
* @param end
* @param shift
*/
static approach(start: number, end: number, shift: number): number;
2020-07-23 11:00:46 +08:00
}
}
2020-12-09 10:55:31 +08:00
declare module es {
/**
* 4x4浮点矩阵
*/
class Matrix {
m11: number;
m12: number;
m13: number;
m14: number;
m21: number;
m22: number;
m23: number;
m24: number;
m31: number;
m32: number;
m33: number;
m34: number;
m41: number;
m42: number;
m43: number;
m44: number;
/**
*
* @param left
* @param right
* @param top
* @param zFarPlane
* @param result
*/
static createOrthographicOffCenter(left: number, right: number, bottom: number, top: number, zNearPlane: number, zFarPlane: number, result?: Matrix): void;
/**
*
* @param matrix1
* @param matrix2
* @param result
*/
static multiply(matrix1: Matrix, matrix2: Matrix, result?: Matrix): void;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
* 3 * 3
*/
class Matrix2D implements IEquatable<Matrix2D> {
2020-07-23 11:00:46 +08:00
m11: number;
m12: number;
m21: number;
m22: number;
m31: number;
m32: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
static readonly identity: Matrix2D;
2020-11-26 11:48:02 +08:00
/**
*
*/
translation: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
*/
rotation: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
rotationDegrees: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
scale: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param m11
* @param m12
* @param m21
* @param m22
* @param m31
* @param m32
*/
constructor(m11: number, m12: number, m21: number, m22: number, m31: number, m32: number);
2020-11-26 11:48:02 +08:00
/**
* Z轴的旋转矩阵2D
* @param radians
*/
static createRotation(radians: number): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* 2D
* @param xScale
* @param yScale
*/
static createScale(xScale: number, yScale: number): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* 2D
* @param xPosition
* @param yPosition
*/
static createTranslation(xPosition: number, yPosition: number): Matrix2D;
static invert(matrix: Matrix2D): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* matrix,
* @param matrix
*/
2020-07-23 13:25:10 +08:00
add(matrix: Matrix2D): Matrix2D;
substract(matrix: Matrix2D): Matrix2D;
divide(matrix: Matrix2D): Matrix2D;
multiply(matrix: Matrix2D): Matrix2D;
2020-07-23 11:00:46 +08:00
determinant(): number;
2020-11-26 11:48:02 +08:00
/**
* Matrix2D线
* @param matrix1
* @param matrix2
* @param amount
*/
static lerp(matrix1: Matrix2D, matrix2: Matrix2D, amount: number): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
*
* @param matrix
*/
static transpose(matrix: Matrix2D): Matrix2D;
mutiplyTranslation(x: number, y: number): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* Matrix2D
* @param other
*/
equals(other: Matrix2D): boolean;
2020-12-09 10:55:31 +08:00
static toMatrix(mat: Matrix2D): Matrix;
toString(): string;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
class MatrixHelper {
2020-11-26 11:48:02 +08:00
/**
* Matrix2D
* @param matrix1
* @param matrix2
*/
static add(matrix1: Matrix2D, matrix2: Matrix2D): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* Matrix2D的元素除以另一个矩阵的元素
* @param matrix1
* @param matrix2
*/
static divide(matrix1: Matrix2D, matrix2: Matrix2D): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* Matrix2D
* @param matrix1
* @param matrix2
*/
static mutiply(matrix1: Matrix2D, matrix2: Matrix2D | number): Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* Matrix2D
* @param matrix1
* @param matrix2
*/
static subtract(matrix1: Matrix2D, matrix2: Matrix2D): Matrix2D;
}
}
declare module es {
class Rectangle implements IEquatable<Rectangle> {
2020-11-26 11:48:02 +08:00
/**
* x坐标
*/
x: number;
2020-11-26 11:48:02 +08:00
/**
* y坐标
*/
y: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
width: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
height: number;
2020-11-26 11:48:02 +08:00
/**
* X=0, Y=0, Width=0, Height=0
*/
static readonly empty: Rectangle;
2020-11-26 11:48:02 +08:00
/**
* Number.Min/Max值的矩形
*/
static readonly maxRect: Rectangle;
2020-11-26 11:48:02 +08:00
/**
* X坐标
*/
readonly left: number;
2020-11-26 11:48:02 +08:00
/**
* X坐标
*/
readonly right: number;
2020-11-26 11:48:02 +08:00
/**
* y坐标
*/
readonly top: number;
2020-11-26 11:48:02 +08:00
/**
* y坐标
*/
readonly bottom: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
readonly max: Vector2;
2020-11-26 11:48:02 +08:00
/**
* 000
*/
isEmpty(): boolean;
2020-11-26 11:48:02 +08:00
/** 这个矩形的左上角坐标 */
2020-07-23 11:00:46 +08:00
location: Vector2;
2020-11-26 11:48:02 +08:00
/**
* -
*/
2020-07-23 11:00:46 +08:00
size: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* "宽度 " "高度 "
*/
readonly center: Vector2;
_tempMat: Matrix2D;
_transformMat: Matrix2D;
2020-11-26 11:48:02 +08:00
/**
* Rectanglestruct实例
* @param x X坐标
* @param y y坐标
* @param width
* @param height
*/
constructor(x?: number, y?: number, width?: number, height?: number);
2020-11-26 11:48:02 +08:00
/**
* /
* @param minX
* @param minY
* @param maxX
* @param maxY
*/
2020-07-28 16:25:20 +08:00
static fromMinMax(minX: number, minY: number, maxX: number, maxY: number): Rectangle;
2020-11-26 11:48:02 +08:00
/**
*
* @param points
* @returns
*/
2020-07-28 16:25:20 +08:00
static rectEncompassingPoints(points: Vector2[]): Rectangle;
2020-11-26 11:48:02 +08:00
/**
*
* @param edge
*/
getSide(edge: Edge): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param x X坐标
* @param y Y坐标
*/
contains(x: number, y: number): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param horizontalAmount
* @param verticalAmount
*/
inflate(horizontalAmount: number, verticalAmount: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param value
*/
intersects(value: Rectangle): boolean;
2020-08-25 14:21:37 +08:00
rayIntersects(ray: Ray2D, distance: Ref<number>): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param value
*/
2020-07-23 11:00:46 +08:00
containsRect(value: Rectangle): boolean;
getHalfSize(): Vector2;
getClosestPointOnBoundsToOrigin(): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param point
*/
getClosestPointOnRectangleToPoint(point: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param point
* @param edgeNormal
* @returns
*/
getClosestPointOnRectangleBorderToPoint(point: Vector2, edgeNormal: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
* RectangleFRectangleF包含两个其他矩形的重叠区域
* @param value1
* @param value2
* @returns
*/
static intersect(value1: Rectangle, value2: Rectangle): Rectangle;
2020-11-26 11:48:02 +08:00
/**
*
* @param offsetX X坐标
* @param offsetY y坐标
*/
offset(offsetX: number, offsetY: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
static union(value1: Rectangle, value2: Rectangle): Rectangle;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
static overlap(value1: Rectangle, value2: Rectangle): Rectangle;
2020-07-23 11:00:46 +08:00
calculateBounds(parentPosition: Vector2, position: Vector2, origin: Vector2, scale: Vector2, rotation: number, width: number, height: number): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param deltaX
* @param deltaY
*/
getSweptBroadphaseBounds(deltaX: number, deltaY: number): Rectangle;
2020-11-26 11:48:02 +08:00
/**
* true
* moveX和moveY将返回b1为避免碰撞而必须移动的移动量
* @param other
* @param moveX
* @param moveY
*/
collisionCheck(other: Rectangle, moveX: Ref<number>, moveY: Ref<number>): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param rectA
* @param rectB
* @returns
* /
*
* Vector2.Zero
*/
static getIntersectionDepth(rectA: Rectangle, rectB: Rectangle): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param other
*/
equals(other: Rectangle): boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
getHashCode(): number;
clone(): Rectangle;
2020-07-23 11:00:46 +08:00
}
}
2020-08-23 22:09:22 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
* 11update时添加到amount中
* :
*
* let deltaMove = this.velocity * es.Time.deltaTime;
* deltaMove.x = this._x.update(deltaMove.x);
* deltaMove.y = this._y.update(deltaMove.y);
*/
2020-08-23 22:09:22 +08:00
class SubpixelFloat {
remainder: number;
2020-11-26 11:48:02 +08:00
/**
* amount递增余数amount设置为当前值
* @param amount
*/
2020-08-23 22:09:22 +08:00
update(amount: number): number;
2020-11-26 11:48:02 +08:00
/**
* 0
*/
2020-08-23 22:09:22 +08:00
reset(): void;
}
}
declare module es {
class SubpixelVector2 {
_x: SubpixelFloat;
_y: SubpixelFloat;
2020-11-26 11:48:02 +08:00
/**
* s/y余数amount设置为当前值
* @param amount
*/
2020-08-23 22:09:22 +08:00
update(amount: Vector2): void;
2020-11-26 11:48:02 +08:00
/**
* 0
*/
2020-08-23 22:09:22 +08:00
reset(): void;
}
}
2020-11-23 18:02:14 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/** 2d 向量 */
2020-11-23 18:02:14 +08:00
class Vector2 implements IEquatable<Vector2> {
x: number;
y: number;
2020-11-26 11:48:02 +08:00
/**
* X和Y的二维向量
* @param x x坐标
* @param y y坐标
*/
2020-11-23 18:02:14 +08:00
constructor(x?: number, y?: number);
static readonly zero: Vector2;
static readonly one: Vector2;
static readonly unitX: Vector2;
static readonly unitY: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
2020-11-23 18:02:14 +08:00
static add(value1: Vector2, value2: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
2020-11-23 18:02:14 +08:00
static divide(value1: Vector2, value2: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
2020-11-23 18:02:14 +08:00
static multiply(value1: Vector2, value2: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
2020-11-23 18:02:14 +08:00
static subtract(value1: Vector2, value2: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
* Vector2
*
* @param value
*/
2020-11-23 18:02:14 +08:00
static normalize(value: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
2020-11-23 18:02:14 +08:00
static dot(value1: Vector2, value2: Vector2): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
*/
2020-11-23 18:02:14 +08:00
static distanceSquared(value1: Vector2, value2: Vector2): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param min
* @param max
*/
2020-11-23 18:02:14 +08:00
static clamp(value1: Vector2, min: Vector2, max: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
* Vector2线
* @param value1
* @param value2
* @param amount (0.0-1.0)
* @returns 线
*/
2020-11-23 18:02:14 +08:00
static lerp(value1: Vector2, value2: Vector2, amount: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
* Vector2Vector2包含了通过指定的Matrix进行的二维向量变换
* @param position
* @param matrix
*/
2020-11-23 18:02:14 +08:00
static transform(position: Vector2, matrix: Matrix2D): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value1
* @param value2
* @returns
*/
2020-11-23 18:02:14 +08:00
static distance(value1: Vector2, value2: Vector2): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param from
* @param to
*/
2020-11-23 18:02:14 +08:00
static angle(from: Vector2, to: Vector2): number;
2020-11-26 11:48:02 +08:00
/**
* Vector2
* @param value
* @returns
*/
2020-11-23 18:02:14 +08:00
static negate(value: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value
*/
2020-11-23 18:02:14 +08:00
add(value: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value
*/
2020-11-23 18:02:14 +08:00
divide(value: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param value
*/
2020-11-23 18:02:14 +08:00
multiply(value: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
* Vector2减去一个Vector2
* @param value Vector2
* @returns Vector2
*/
2020-11-23 18:02:14 +08:00
subtract(value: Vector2): this;
2020-11-26 11:48:02 +08:00
/**
* Vector2变成一个方向相同的单位向量
*/
2020-11-23 18:02:14 +08:00
normalize(): void;
2020-11-26 11:48:02 +08:00
/** 返回它的长度 */
2020-11-23 18:02:14 +08:00
length(): number;
2020-11-26 11:48:02 +08:00
/**
* Vector2的平方长度
* @returns Vector2的平方长度
*/
2020-11-23 18:02:14 +08:00
lengthSquared(): number;
2020-11-26 11:48:02 +08:00
/**
* X和Y值
*/
2020-11-23 18:02:14 +08:00
round(): Vector2;
/**
*
* @param left
* @param right
*/
angleBetween(left: Vector2, right: Vector2): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param other
* @returns true false
*/
2020-11-23 18:02:14 +08:00
equals(other: Vector2 | object): boolean;
clone(): Vector2;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
* 使itriggerlistener
*/
2020-07-23 11:00:46 +08:00
class ColliderTriggerHelper {
private _entity;
2020-11-26 17:26:49 +08:00
/** 存储当前帧中发生的所有活动交点对 */
2020-07-23 11:00:46 +08:00
private _activeTriggerIntersections;
2020-11-26 17:26:49 +08:00
/** 存储前一帧的交点对,这样我们就可以在移动这一帧后检测到退出 */
2020-07-23 11:00:46 +08:00
private _previousTriggerIntersections;
private _tempTriggerList;
constructor(entity: Entity);
2020-11-26 11:48:02 +08:00
/**
2020-11-26 17:26:49 +08:00
* update应该在实体被移动后被调用Colllider重叠的ITriggerListeners
* Collider重叠的ITriggerListeners
2020-11-26 11:48:02 +08:00
*/
2020-07-23 11:00:46 +08:00
update(): void;
private checkForExitedColliders;
private notifyTriggerListeners;
}
}
declare module es {
enum PointSectors {
center = 0,
top = 1,
bottom = 2,
topLeft = 9,
topRight = 5,
left = 8,
right = 4,
bottomLeft = 10,
bottomRight = 6
}
class Collisions {
static isLineToLine(a1: Vector2, a2: Vector2, b1: Vector2, b2: Vector2): boolean;
static lineToLineIntersection(a1: Vector2, a2: Vector2, b1: Vector2, b2: Vector2): Vector2;
static closestPointOnLine(lineA: Vector2, lineB: Vector2, closestTo: Vector2): Vector2;
2020-08-27 18:48:20 +08:00
static circleToCircle(circleCenter1: Vector2, circleRadius1: number, circleCenter2: Vector2, circleRadius2: number): boolean;
static circleToLine(circleCenter: Vector2, radius: number, lineFrom: Vector2, lineTo: Vector2): boolean;
static circleToPoint(circleCenter: Vector2, radius: number, point: Vector2): boolean;
static rectToCircle(rect: Rectangle, cPosition: Vector2, cRadius: number): boolean;
2020-08-27 18:48:20 +08:00
static rectToLine(rect: Rectangle, lineFrom: Vector2, lineTo: Vector2): boolean;
static rectToPoint(rX: number, rY: number, rW: number, rH: number, point: Vector2): boolean;
2020-11-26 11:48:02 +08:00
/**
* 使CohenSutherland算法
*
* :
* 1001 1000 1010
* 0001 0000 0010
* 0101 0100 0110
* @param rX
* @param rY
* @param rW
* @param rH
* @param point
*/
2020-07-23 11:00:46 +08:00
static getSector(rX: number, rY: number, rW: number, rH: number, point: Vector2): PointSectors;
}
}
declare module es {
class RaycastHit {
2020-11-26 11:48:02 +08:00
/**
* 线
*/
collider: Collider;
2020-11-26 11:48:02 +08:00
/**
* 沿线
*/
fraction: number;
2020-11-26 11:48:02 +08:00
/**
* 线
*/
distance: number;
2020-11-26 11:48:02 +08:00
/**
* 线
*/
point: Vector2;
2020-11-26 11:48:02 +08:00
/**
* 线
*/
normal: Vector2;
2020-11-26 11:48:02 +08:00
/**
* 使
*/
centroid: Vector2;
constructor(collider?: Collider, fraction?: number, distance?: number, point?: Vector2, normal?: Vector2);
setValues(collider: Collider, fraction: number, distance: number, point: Vector2): void;
setValuesNonCollider(fraction: number, distance: number, point: Vector2, normal: Vector2): void;
reset(): void;
toString(): string;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
class Physics {
2020-11-26 17:26:49 +08:00
static _spatialHash: SpatialHash;
/** 用于在全局范围内存储重力值的方便字段 */
static gravity: Vector2;
2020-11-26 11:48:02 +08:00
/** 调用reset并创建一个新的SpatialHash时使用的单元格大小 */
2020-07-23 11:00:46 +08:00
static spatialHashCellSize: number;
2020-11-26 11:48:02 +08:00
/** 接受layerMask的所有方法的默认值 */
2020-07-23 11:00:46 +08:00
static readonly allLayers: number;
2020-11-26 11:48:02 +08:00
/**
* raycast是否检测配置为触发器的碰撞器
*/
2020-08-03 14:45:57 +08:00
static raycastsHitTriggers: boolean;
2020-11-26 11:48:02 +08:00
/**
* 线/线
*/
2020-08-03 14:45:57 +08:00
static raycastsStartInColliders: boolean;
2020-11-26 11:48:02 +08:00
/**
* raycast发生时分配它
*/
static _hitArray: RaycastHit[];
2020-07-23 11:00:46 +08:00
static reset(): void;
2020-11-26 11:48:02 +08:00
/**
* SpatialHash中移除所有碰撞器
*/
2020-07-23 11:00:46 +08:00
static clear(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param center
* @param randius
* @param results
* @param layerMask
*/
2020-07-23 11:00:46 +08:00
static overlapCircleAll(center: Vector2, randius: number, results: any[], layerMask?: number): number;
2020-11-26 11:48:02 +08:00
/**
* boundsbroadphase检查!
* @param rect
* @param layerMask
*/
2020-11-26 17:26:49 +08:00
static boxcastBroadphase(rect: Rectangle, layerMask?: number): Set<Collider>;
2020-11-26 11:48:02 +08:00
/**
* (self)
* @param collider
* @param rect
* @param layerMask
*/
2020-11-26 17:26:49 +08:00
static boxcastBroadphaseExcludingSelf(collider: Collider, rect: Rectangle, layerMask?: number): Set<Collider>;
/**
* collider.bounds (self)
* @param collider
* @param layerMask
*/
static boxcastBroadphaseExcludingSelfNonRect(collider: Collider, layerMask?: number): Set<Collider>;
2020-11-26 11:48:02 +08:00
/**
*
* @param collider
*/
2020-07-23 11:00:46 +08:00
static addCollider(collider: Collider): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param collider
*/
2020-07-23 11:00:46 +08:00
static removeCollider(collider: Collider): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param collider
*/
2020-07-23 11:00:46 +08:00
static updateCollider(collider: Collider): void;
2020-11-26 11:48:02 +08:00
/**
* layerMask匹配的碰撞器的第一次命中
* @param start
* @param end
* @param layerMask
*/
static linecast(start: Vector2, end: Vector2, layerMask?: number): RaycastHit;
2020-11-26 11:48:02 +08:00
/**
* hits数组
* @param start
* @param end
* @param hits
* @param layerMask
*/
static linecastAll(start: Vector2, end: Vector2, hits: RaycastHit[], layerMask?: number): number;
2020-07-23 11:00:46 +08:00
}
}
2020-08-03 14:45:57 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
* 线(线)线线
*/
2020-08-03 14:45:57 +08:00
class Ray2D {
start: Vector2;
end: Vector2;
direction: Vector2;
constructor(position: Vector2, end: Vector2);
}
}
declare module es {
class SpatialHash {
gridBounds: Rectangle;
_raycastParser: RaycastResultParser;
2020-11-26 11:48:02 +08:00
/**
*
*/
_cellSize: number;
2020-11-26 11:48:02 +08:00
/**
* 1使
*/
_inverseCellSize: number;
2020-11-26 11:48:02 +08:00
/**
*
*/
_overlapTestCircle: Circle;
2020-11-26 11:48:02 +08:00
/**
*
*/
_cellDict: NumberDictionary;
2020-11-26 11:48:02 +08:00
/**
* HashSet
*/
2020-11-26 17:26:49 +08:00
_tempHashSet: Set<Collider>;
constructor(cellSize?: number);
2020-11-26 11:48:02 +08:00
/**
* SpatialHash
* @param collider
*/
register(collider: Collider): void;
2020-11-26 11:48:02 +08:00
/**
* SpatialHash中删除对象
* @param collider
*/
remove(collider: Collider): void;
2020-11-26 11:48:02 +08:00
/**
* 使SpatialHash中删除对象
* @param obj
*/
removeWithBruteForce(obj: Collider): void;
clear(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param bounds
* @param excludeCollider
* @param layerMask
*/
2020-11-26 17:26:49 +08:00
aabbBroadphase(bounds: Rectangle, excludeCollider: Collider, layerMask: number): Set<Collider>;
2020-11-26 11:48:02 +08:00
/**
* hits数组
* @param start
* @param end
* @param hits
* @param layerMask
*/
linecast(start: Vector2, end: Vector2, hits: RaycastHit[], layerMask: number): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param circleCenter
* @param radius
* @param results
* @param layerMask
*/
overlapCircle(circleCenter: Vector2, radius: number, results: Collider[], layerMask: any): number;
2020-11-26 11:48:02 +08:00
/**
* x,y值作为世界空间的x,y值
* @param x
* @param y
*/
2020-11-26 17:26:49 +08:00
cellCoords(x: number, y: number): Vector2;
2020-11-26 11:48:02 +08:00
/**
* x,y值的单元格
* createCellIfEmpty为true
* @param x
* @param y
* @param createCellIfEmpty
*/
2020-11-26 17:26:49 +08:00
cellAtPosition(x: number, y: number, createCellIfEmpty?: boolean): Collider[];
}
2020-11-26 11:48:02 +08:00
/**
* Unit32
* intint xy坐标散列到单个Uint32键中使O(1)
*/
class NumberDictionary {
_store: Map<number, Collider[]>;
add(x: number, y: number, list: Collider[]): void;
2020-11-26 11:48:02 +08:00
/**
* 使
* @param obj
*/
remove(obj: Collider): void;
tryGetValue(x: number, y: number): Collider[];
getKey(x: number, y: number): number;
2020-11-26 11:48:02 +08:00
/**
*
*/
clear(): void;
}
class RaycastResultParser {
hitCounter: number;
static compareRaycastHits: (a: RaycastHit, b: RaycastHit) => number;
_hits: RaycastHit[];
_tempHit: RaycastHit;
_checkedColliders: Collider[];
_cellHits: RaycastHit[];
_ray: Ray2D;
_layerMask: number;
start(ray: Ray2D, hits: RaycastHit[], layerMask: number): void;
2020-11-26 11:48:02 +08:00
/**
* hits数组被填充true!
* @param cellX
* @param cellY
* @param cell
*/
checkRayIntersection(cellX: number, cellY: number, cell: Collider[]): boolean;
reset(): void;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
abstract class Shape {
2020-11-26 11:48:02 +08:00
/**
* entity.position
* //
*
*/
2020-07-23 11:00:46 +08:00
position: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* localOffset
*
*/
2020-07-23 11:00:46 +08:00
center: Vector2;
2020-11-26 11:48:02 +08:00
/** 缓存的形状边界 内部字段 */
2020-07-07 18:54:19 +08:00
bounds: Rectangle;
2020-07-23 11:00:46 +08:00
abstract recalculateBounds(collider: Collider): any;
abstract overlaps(other: Shape): boolean;
abstract collidesWithShape(other: Shape, collisionResult: CollisionResult): boolean;
2020-08-03 14:45:57 +08:00
abstract collidesWithLine(start: Vector2, end: Vector2, hit: RaycastHit): boolean;
abstract containsPoint(point: Vector2): any;
abstract pointCollidesWithShape(point: Vector2, result: CollisionResult): boolean;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
class Polygon extends Shape {
2020-11-26 11:48:02 +08:00
/**
*
*
*/
2020-07-23 11:00:46 +08:00
points: Vector2[];
_areEdgeNormalsDirty: boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
_originalPoints: Vector2[];
_polygonCenter: Vector2;
2020-11-26 11:48:02 +08:00
/**
* box碰撞
*/
2020-07-23 11:00:46 +08:00
isBox: boolean;
isUnrotated: boolean;
2020-11-26 11:48:02 +08:00
/**
*
* /0 0
* @param points
* @param isBox
*/
2020-07-23 11:00:46 +08:00
constructor(points: Vector2[], isBox?: boolean);
2020-07-28 16:25:20 +08:00
_edgeNormals: Vector2[];
2020-11-26 11:48:02 +08:00
/**
* 线SAT碰撞检测squareRoots
* box只有两个边缘
*/
2020-07-28 16:25:20 +08:00
readonly edgeNormals: Vector2[];
2020-11-26 11:48:02 +08:00
/**
* 线
* @param points
*/
2020-07-31 17:17:44 +08:00
setPoints(points: Vector2[]): void;
2020-11-26 11:48:02 +08:00
/**
*
*
*/
2020-07-31 17:17:44 +08:00
recalculateCenterAndEdgeNormals(): void;
2020-11-26 11:48:02 +08:00
/**
* 线
* edgeNormals getter惰性创建和更新
*/
2020-07-31 17:17:44 +08:00
buildEdgeNormals(): void;
2020-11-26 11:48:02 +08:00
/**
* (n角形)
* @param vertCount
* @param radius
*/
2020-07-23 11:00:46 +08:00
static buildSymmetricalPolygon(vertCount: number, radius: number): any[];
2020-11-26 11:48:02 +08:00
/**
*
* @param points
*/
2020-07-23 11:00:46 +08:00
static recenterPolygonVerts(points: Vector2[]): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param points
*/
2020-07-23 11:00:46 +08:00
static findPolygonCenter(points: Vector2[]): Vector2;
2020-11-26 11:48:02 +08:00
/**
* climbing算法
* @param points
* @param direction
*/
2020-07-31 17:17:44 +08:00
static getFarthestPointInDirection(points: Vector2[], direction: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* 线
* (-.)
* @param points
* @param point
* @param distanceSquared
* @param edgeNormal
*/
2020-08-25 14:21:37 +08:00
static getClosestPointOnPolygonToPoint(points: Vector2[], point: Vector2, distanceSquared: Ref<number>, edgeNormal: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param radians
* @param originalPoints
* @param rotatedPoints
*/
2020-08-27 18:48:20 +08:00
static rotatePolygonVerts(radians: number, originalPoints: Vector2[], rotatedPoints: Vector2[]): void;
2020-07-23 11:00:46 +08:00
recalculateBounds(collider: Collider): void;
overlaps(other: Shape): any;
collidesWithShape(other: Shape, result: CollisionResult): boolean;
2020-08-03 14:45:57 +08:00
collidesWithLine(start: es.Vector2, end: es.Vector2, hit: es.RaycastHit): boolean;
2020-11-26 11:48:02 +08:00
/**
* 线
*
* @param point
*/
2020-07-23 11:00:46 +08:00
containsPoint(point: Vector2): boolean;
pointCollidesWithShape(point: Vector2, result: CollisionResult): boolean;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
* SAT碰撞检查时28
*/
2020-07-23 11:00:46 +08:00
class Box extends Polygon {
width: number;
height: number;
constructor(width: number, height: number);
2020-11-26 11:48:02 +08:00
/**
*
* @param width
* @param height
*/
2020-07-23 11:00:46 +08:00
private static buildBox;
2020-11-26 11:48:02 +08:00
/**
* /
* @param width
* @param height
*/
2020-07-23 11:00:46 +08:00
updateBox(width: number, height: number): void;
overlaps(other: Shape): any;
collidesWithShape(other: Shape, result: CollisionResult): boolean;
2020-07-23 11:00:46 +08:00
containsPoint(point: Vector2): boolean;
2020-07-31 17:17:44 +08:00
pointCollidesWithShape(point: es.Vector2, result: es.CollisionResult): boolean;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
class Circle extends Shape {
radius: number;
_originalRadius: number;
constructor(radius: number);
recalculateBounds(collider: es.Collider): void;
overlaps(other: Shape): any;
collidesWithShape(other: Shape, result: CollisionResult): boolean;
2020-08-03 14:45:57 +08:00
collidesWithLine(start: es.Vector2, end: es.Vector2, hit: es.RaycastHit): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param point
*/
2020-08-03 14:45:57 +08:00
containsPoint(point: es.Vector2): boolean;
pointCollidesWithShape(point: Vector2, result: CollisionResult): boolean;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
class CollisionResult {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
collider: Collider;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
normal: Vector2;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-31 17:17:44 +08:00
minimumTranslationVector: Vector2;
2020-11-26 11:48:02 +08:00
/**
* 使!ShapeCollisions切割类!
*/
2020-07-23 11:00:46 +08:00
point: Vector2;
2020-11-26 11:48:02 +08:00
/**
* x分量
* @param deltaMovement
*/
2020-07-31 17:17:44 +08:00
removeHorizontal(deltaMovement: Vector2): void;
invertResult(): this;
toString(): string;
2020-07-23 11:00:46 +08:00
}
}
2020-08-03 14:45:57 +08:00
declare module es {
class RealtimeCollisions {
2020-08-25 14:21:37 +08:00
static intersectMovingCircleBox(s: Circle, b: Box, movement: Vector2, time: Ref<number>): boolean;
/**
* n的矩形vert
* @param b
* @param n
*/
static corner(b: Rectangle, n: number): Vector2;
/**
* point交点
* @param cirlce
* @param box
* @param point
*/
static testCircleBox(cirlce: Circle, box: Box, point: Vector2): boolean;
2020-08-03 14:45:57 +08:00
}
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
* (shape1)
* pos应该设置为shape1pos - shape2.pos)
*/
2020-07-23 11:00:46 +08:00
class ShapeCollisions {
2020-11-26 11:48:02 +08:00
/**
*
* @param first
* @param second
* @param result
*/
static polygonToPolygon(first: Polygon, second: Polygon, result: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
* [minA, maxA][minB, maxB]
* @param minA
* @param maxA
* @param minB
* @param maxB
*/
2020-07-23 11:00:46 +08:00
static intervalDistance(minA: number, maxA: number, minB: number, maxB: any): number;
2020-11-26 11:48:02 +08:00
/**
* [minmax]
* @param axis
* @param polygon
* @param min
* @param max
*/
2020-12-03 20:43:59 +08:00
static getInterval(axis: Vector2, polygon: Polygon, min: Ref<number>, max: Ref<number>): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param circle
* @param polygon
* @param result
*/
static circleToPolygon(circle: Circle, polygon: Polygon, result: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param circle
* @param box
* @param result
*/
static circleToBox(circle: Circle, box: Box, result: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param point
* @param circle
* @param result
*/
static pointToCircle(point: Vector2, circle: Circle, result: CollisionResult): boolean;
2020-07-31 17:17:44 +08:00
static pointToBox(point: Vector2, box: Box, result: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param lineA
* @param lineB
* @param closestTo
*/
2020-07-23 11:00:46 +08:00
static closestPointOnLine(lineA: Vector2, lineB: Vector2, closestTo: Vector2): Vector2;
2020-11-26 11:48:02 +08:00
/**
*
* @param point
* @param poly
* @param result
*/
static pointToPoly(point: Vector2, poly: Polygon, result: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param first
* @param second
* @param result
*/
static circleToCircle(first: Circle, second: Circle, result: CollisionResult): boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param first
* @param second
* @param result
*/
static boxToBox(first: Box, second: Box, result: CollisionResult): boolean;
2020-07-23 11:00:46 +08:00
private static minkowskiDifference;
2020-08-03 14:45:57 +08:00
static lineToPoly(start: Vector2, end: Vector2, polygon: Polygon, hit: RaycastHit): boolean;
static lineToLine(a1: Vector2, a2: Vector2, b1: Vector2, b2: Vector2, intersection: Vector2): boolean;
static lineToCircle(start: Vector2, end: Vector2, s: Circle, hit: RaycastHit): boolean;
2020-11-26 11:48:02 +08:00
/**
* second检查被deltaMovement移动的框的结果
* @param first
* @param second
* @param movement
* @param hit
*/
2020-08-03 14:45:57 +08:00
static boxToBoxCast(first: Box, second: Box, movement: Vector2, hit: RaycastHit): boolean;
2020-07-23 11:00:46 +08:00
}
}
declare class ArrayUtils {
2020-11-26 11:48:02 +08:00
/**
*
* @param ary
* -- http://www.hiahia.org/datastructure/paixu/paixu8.3.1.1-1.htm
*/
static bubbleSort(ary: number[]): void;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
2020-11-26 11:48:02 +08:00
*/
static insertionSort(ary: number[]): void;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
* @param value
* @returns
2020-11-26 11:48:02 +08:00
*/
static binarySearch(ary: number[], value: number): number;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
* @param num
2020-11-26 11:48:02 +08:00
*/
static findElementIndex(ary: any[], num: any): any;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
2020-11-26 11:48:02 +08:00
*/
static getMaxElementIndex(ary: number[]): number;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
2020-11-26 11:48:02 +08:00
*/
static getMinElementIndex(ary: number[]): number;
2020-11-26 11:48:02 +08:00
/**
* "唯一性"
2020-11-26 17:26:49 +08:00
* @param ary
* @returns
*
* @tutorial
2020-11-26 11:48:02 +08:00
* : [1, 2, 2, 3, 4]
* : [1, 2, 3, 4]
*/
static getUniqueAry(ary: number[]): number[];
2020-11-26 11:48:02 +08:00
/**
* 2
* A = [1, 2, 3, 4, 6]
* B = [0, 2, 1, 3, 4]
* [6, 0]
* @param aryA
* @param aryB
* @return
*/
static getDifferAry(aryA: number[], aryB: number[]): number[];
2020-11-26 11:48:02 +08:00
/**
*
* @param array
* @param index1
* @param index2
*/
static swap(array: any[], index1: number, index2: number): void;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
2020-11-26 11:48:02 +08:00
*/
static clearList(ary: any[]): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param ary
* @return
*/
static cloneList(ary: any[]): any[];
2020-11-26 11:48:02 +08:00
/**
* 2
2020-11-26 17:26:49 +08:00
* @param ary1 1
* @param ary2 2
2020-11-26 11:48:02 +08:00
*/
static equals(ary1: number[], ary2: number[]): Boolean;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 17:26:49 +08:00
* @param ary
* @param index
* @param value
* @returns
2020-11-26 11:48:02 +08:00
*/
static insert(ary: any[], index: number, value: any): any;
2020-11-26 17:26:49 +08:00
/**
* FisherYates shuffle
* @param list
*/
static shuffle<T>(list: T[]): void;
/**
* falsetrue
* @param list
* @param item
*/
static addIfNotPresent<T>(list: T[], item: T): boolean;
/**
*
* @param list
*/
static lastItem<T>(list: T[]): T;
/**
* !
* @param list
*/
static randomItem<T>(list: T[]): T;
/**
* List可以通过ListPool.free放回池中
* @param list
* @param itemCount
*/
static randomItems<T>(list: T[], itemCount: number): T[];
}
2020-08-13 17:39:24 +08:00
declare module es {
class Base64Utils {
private static _keyStr;
2020-11-26 11:48:02 +08:00
/**
* Base64位解析
*/
2020-08-13 17:39:24 +08:00
static readonly nativeBase64: boolean;
2020-11-26 11:48:02 +08:00
/**
*
* @param input
*/
2020-08-13 17:39:24 +08:00
static decode(input: string): string;
2020-11-26 11:48:02 +08:00
/**
*
* @param input
*/
2020-08-13 17:39:24 +08:00
static encode(input: string): string;
2020-11-26 11:48:02 +08:00
/**
* Base64格式数据
* @param input
* @param bytes
*/
2020-08-13 17:39:24 +08:00
static decodeBase64AsArray(input: string, bytes: number): Uint32Array;
2020-11-26 11:48:02 +08:00
/**
*
* @param data
* @param decoded
* @param compression
* @private
*/
2020-08-13 17:39:24 +08:00
static decompress(data: string, decoded: any, compression: string): any;
2020-11-26 11:48:02 +08:00
/**
* csv数据
* @param input
*/
2020-08-13 17:39:24 +08:00
static decodeCSV(input: string): Array<number>;
}
2020-07-17 15:40:28 +08:00
}
2020-08-12 12:16:35 +08:00
declare module es {
class EdgeExt {
static oppositeEdge(self: Edge): Edge;
2020-11-26 11:48:02 +08:00
/**
* true
* @param self
*/
2020-08-12 12:16:35 +08:00
static isHorizontal(self: Edge): boolean;
2020-11-26 11:48:02 +08:00
/**
* true
* @param self
*/
2020-08-12 12:16:35 +08:00
static isVertical(self: Edge): boolean;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-12-07 12:16:36 +08:00
/**
*
*/
class FuncPack {
/** 函数 */
func: Function;
/** 上下文 */
context: any;
constructor(func: Function, context: any);
}
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
class Emitter<T> {
private _messageTable;
constructor();
2020-11-26 11:48:02 +08:00
/**
*
* @param eventType
* @param handler
* @param context
*/
2020-07-23 11:00:46 +08:00
addObserver(eventType: T, handler: Function, context: any): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param eventType
* @param handler
*/
2020-07-23 11:00:46 +08:00
removeObserver(eventType: T, handler: Function): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param eventType
* @param data
*/
2020-07-23 11:00:46 +08:00
emit(eventType: T, data?: any): void;
}
}
2020-08-12 12:16:35 +08:00
declare module es {
enum Edge {
top = 0,
bottom = 1,
left = 2,
right = 3
}
}
declare module es {
class Enumerable {
2020-11-26 11:48:02 +08:00
/**
*
* @param element
* @param count
*/
2020-08-12 12:16:35 +08:00
static repeat<T>(element: T, count: number): any[];
}
}
2020-10-27 18:08:49 +08:00
declare module es {
2020-11-27 11:07:43 +08:00
class EqualityComparer<T> implements IEqualityComparer<T> {
2020-10-27 18:08:49 +08:00
static default<T>(): EqualityComparer<T>;
protected constructor();
equals(x: T, y: T): boolean;
2020-11-27 11:07:43 +08:00
getHashCode(o: T): number;
private _getHashCodeForNumber;
private _getHashCodeForString;
private forOwn;
2020-10-27 18:08:49 +08:00
}
}
2020-07-23 11:00:46 +08:00
declare module es {
class GlobalManager {
2020-07-28 16:25:20 +08:00
_enabled: boolean;
2020-11-26 11:48:02 +08:00
/**
* true则启用了GlobalManager
* OnEnabled/OnDisable
*/
/**
* true则启用了GlobalManager
* OnEnabled/OnDisable
* @param value
*/
2020-07-23 11:00:46 +08:00
enabled: boolean;
2020-11-26 11:48:02 +08:00
/**
* /GlobalManager
* @param isEnabled
*/
2020-07-23 11:00:46 +08:00
setEnabled(isEnabled: boolean): void;
2020-11-26 11:48:02 +08:00
/**
* GlobalManager启用时调用
*/
2020-07-23 11:00:46 +08:00
onEnabled(): void;
2020-11-26 11:48:02 +08:00
/**
* GlobalManager禁用时调用
*/
2020-07-23 11:00:46 +08:00
onDisabled(): void;
2020-11-26 11:48:02 +08:00
/**
* frame .update之前调用每一帧
*/
2020-07-23 11:00:46 +08:00
update(): void;
}
}
2020-10-27 18:08:49 +08:00
declare module es {
interface IComparer<T> {
compare(x: T, y: T): number;
}
}
declare module es {
2020-11-27 11:07:43 +08:00
/**
* Hashcode的生成
*/
interface IEqualityComparable {
/**
*
* @param other
*/
equals(other: any): boolean;
/**
*
*/
getHashCode(): number;
}
}
declare module es {
/**
*
*/
interface IEqualityComparer<T> {
/**
*
* @param x
* @param y
*/
equals(x: T, y: T): boolean;
/**
*
* @param value
*/
getHashCode(value: T): number;
2020-10-27 18:08:49 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-10-27 18:08:49 +08:00
interface IEquatable<T> {
equals(other: T): boolean;
}
}
declare module es {
class Node<T> {
element: T;
next: Node<T>;
constructor(element: T, next?: Node<T>);
}
interface equalsFnType<T> {
(a: T, b: T): boolean;
}
function defaultEquals<T>(a: T, b: T): boolean;
class LinkedList<T> {
protected count: number;
protected next: any;
protected equalsFn: equalsFnType<T>;
protected head: Node<T>;
constructor(equalsFn?: typeof defaultEquals);
push(element: T): void;
removeAt(index: number): T;
getElementAt(index: number): Node<T>;
insert(element: T, index: number): boolean;
indexOf(element: T): number;
remove(element: T): void;
clear(): void;
size(): number;
isEmpty(): boolean;
getHead(): Node<T>;
toString(): string;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
class ListPool {
private static readonly _objectQueue;
2020-11-26 11:48:02 +08:00
/**
* 使cacheCount对象填充缓存
* @param cacheCount
*/
2020-07-23 11:00:46 +08:00
static warmCache(cacheCount: number): void;
2020-11-26 11:48:02 +08:00
/**
* cacheCount项目
* @param cacheCount
*/
2020-07-23 11:00:46 +08:00
static trimCache(cacheCount: any): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
static clearCache(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-23 11:00:46 +08:00
static obtain<T>(): T[];
2020-11-26 11:48:02 +08:00
/**
*
* @param obj
*/
2020-07-23 11:00:46 +08:00
static free<T>(obj: Array<T>): void;
}
}
declare module es {
class NumberExtension {
static toNumber(value: any): number;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
* DTO
*/
2020-11-27 11:07:43 +08:00
class Pair<T> implements IEqualityComparable {
2020-07-23 11:00:46 +08:00
first: T;
second: T;
constructor(first: T, second: T);
clear(): void;
equals(other: Pair<T>): boolean;
2020-11-27 11:07:43 +08:00
getHashCode(): number;
2020-07-23 11:00:46 +08:00
}
}
2020-08-28 19:12:21 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-08-28 19:12:21 +08:00
class Pool<T> {
private static _objectQueue;
2020-11-26 11:48:02 +08:00
/**
* 使cacheCount对象填充缓存
* @param type
* @param cacheCount
*/
2020-08-28 19:12:21 +08:00
static warmCache(type: any, cacheCount: number): void;
2020-11-26 11:48:02 +08:00
/**
* cacheCount项目
* @param cacheCount
*/
2020-08-28 19:12:21 +08:00
static trimCache(cacheCount: number): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-08-28 19:12:21 +08:00
static clearCache(): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-08-28 19:12:21 +08:00
static obtain<T>(type: any): T;
2020-11-26 11:48:02 +08:00
/**
*
* @param obj
*/
2020-08-28 19:12:21 +08:00
static free<T>(obj: T): void;
}
interface IPoolable {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-08-28 19:12:21 +08:00
reset(): any;
}
var isIPoolable: (props: any) => props is IPoolable;
2020-08-28 19:12:21 +08:00
}
declare class RandomUtils {
2020-11-26 11:48:02 +08:00
/**
* start stop之间取一个随机整数step指定间隔 start与stop较大的一个
*
* this.randrange(1, 10, 3)
* 1 4 7 , 1010
*
* @param start
* @param stop
* @param step
* @return start < stop, [start, stop)
*
*/
static randrange(start: number, stop: number, step?: number): number;
2020-11-26 11:48:02 +08:00
/**
* a b直间的随机整数 a b
* @param a
* @param b
* @return [a, b]
*
*/
static randint(a: number, b: number): number;
2020-11-26 11:48:02 +08:00
/**
* a - b之间的随机数 Math.max(a, b)
* @param a
* @param b
* @return a < b, [a, b)
*/
static randnum(a: number, b: number): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param array
* @return
*/
static shuffle(array: any[]): any[];
2020-11-26 11:48:02 +08:00
/**
*
* @param sequence vectorlength属性
*
* @return
*
*/
static choice(sequence: any): any;
2020-11-26 11:48:02 +08:00
/**
* æ ?
* <pre>
* this.sample([1, 2, 3, 4, 5], 3) // Choose 3 elements
* [4, 1, 5]
* </pre>
* @param sequence
* @param num
* @return
*
*/
static sample(sequence: any[], num: number): any[];
2020-11-26 11:48:02 +08:00
/**
* 0.0 - 1.0 Math.random()
* @return Math.random()
*
*/
static random(): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param chance
* @return
*/
static boolean(chance?: number): boolean;
2020-07-28 16:25:20 +08:00
private static _randomCompare;
}
2020-07-23 11:00:46 +08:00
declare module es {
class RectangleExt {
2020-11-26 11:48:02 +08:00
/**
*
* @param rect
* @param edge
*/
2020-08-12 12:16:35 +08:00
static getSide(rect: Rectangle, edge: Edge): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param first
* @param point
*/
2020-07-23 11:00:46 +08:00
static union(first: Rectangle, point: Vector2): Rectangle;
2020-08-12 12:16:35 +08:00
static getHalfRect(rect: Rectangle, edge: Edge): Rectangle;
2020-11-26 11:48:02 +08:00
/**
* /
* @param rect
* @param edge
* @param size
*/
2020-08-12 12:16:35 +08:00
static getRectEdgePortion(rect: Rectangle, edge: Edge, size?: number): Rectangle;
static expandSide(rect: Rectangle, edge: Edge, amount: number): void;
static contract(rect: Rectangle, horizontalAmount: any, verticalAmount: any): void;
}
}
2020-08-25 14:21:37 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
* 使number/string/boolean类型作为对象引用来进行传递
*/
2020-11-20 14:07:34 +08:00
class Ref<T extends number | string | boolean> {
2020-08-25 14:21:37 +08:00
value: T;
constructor(value: T);
}
}
2020-11-27 11:07:43 +08:00
declare module es {
interface ISet<T> {
add(item: T): boolean;
remove(item: T): boolean;
contains(item: T): boolean;
getCount(): number;
clear(): void;
toArray(): Array<T>;
/**
*
* @param other
*/
exceptWith(other: Array<T>): void;
/**
* Set对象使
* @param other
*/
intersectWith(other: Array<T>): void;
/**
* 使
* @param other
*/
unionWith(other: Array<T>): void;
isSubsetOf(other: Array<T>): boolean;
isSupersetOf(other: Array<T>): boolean;
overlaps(other: Array<T>): boolean;
setEquals(other: Array<T>): boolean;
}
abstract class Set<T> implements ISet<T> {
protected buckets: T[][];
protected count: number;
constructor(source?: Array<T>);
abstract getHashCode(item: T): number;
abstract areEqual(value1: T, value2: T): boolean;
add(item: T): boolean;
remove(item: T): boolean;
contains(item: T): boolean;
getCount(): number;
clear(): void;
toArray(): T[];
/**
*
* @param other
*/
exceptWith(other: Array<T>): void;
/**
* Set对象使
* @param other
*/
intersectWith(other: Array<T>): void;
unionWith(other: Array<T>): void;
/**
*
* @param other
*/
2020-11-27 11:07:43 +08:00
isSubsetOf(other: Array<T>): boolean;
/**
*
* @param other
*/
2020-11-27 11:07:43 +08:00
isSupersetOf(other: Array<T>): boolean;
overlaps(other: Array<T>): boolean;
setEquals(other: Array<T>): boolean;
private buildInternalBuckets;
private bucketsContains;
}
class HashSet<T extends IEqualityComparable> extends Set<T> {
constructor(source?: Array<T>);
getHashCode(item: T): number;
areEqual(value1: T, value2: T): boolean;
}
}
2020-08-12 12:16:35 +08:00
declare module es {
2020-11-26 11:48:02 +08:00
/**
* 11update时添加到amount中
*/
2020-08-12 12:16:35 +08:00
class SubpixelNumber {
remainder: number;
2020-11-26 11:48:02 +08:00
/**
* amount递增余数intamount设置为当前值
* @param amount
*/
2020-08-12 12:16:35 +08:00
update(amount: number): number;
2020-11-26 11:48:02 +08:00
/**
* 0
*
*/
2020-08-12 12:16:35 +08:00
reset(): void;
2020-07-23 11:00:46 +08:00
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
* triangleIndices列表中
2020-11-26 11:48:02 +08:00
*/
2020-07-23 11:00:46 +08:00
class Triangulator {
2020-11-26 11:48:02 +08:00
/**
* 使
2020-11-26 11:48:02 +08:00
*/
2020-07-23 11:00:46 +08:00
triangleIndices: number[];
private _triPrev;
private _triNext;
2020-07-28 16:25:20 +08:00
static testPointTriangle(point: Vector2, a: Vector2, b: Vector2, c: Vector2): boolean;
2020-11-26 11:48:02 +08:00
/**
* CCWarePointsCCW参数传递为false
* @param points
* @param arePointsCCW
*/
2020-07-23 11:00:46 +08:00
triangulate(points: Vector2[], arePointsCCW?: boolean): void;
private initialize;
}
}
2020-11-26 17:26:49 +08:00
declare module es {
class TypeUtils {
static getType(obj: any): any;
}
}
2020-07-23 11:00:46 +08:00
declare module es {
class Vector2Ext {
2020-11-26 11:48:02 +08:00
/**
* CCW还是CW
* @param a
* @param center
* @param c
*/
2020-07-23 11:00:46 +08:00
static isTriangleCCW(a: Vector2, center: Vector2, c: Vector2): boolean;
2020-10-09 15:39:06 +08:00
static halfVector(): Vector2;
2020-11-26 11:48:02 +08:00
/**
* (Perp(u) v)
* @param u
* @param v
*/
2020-07-23 11:00:46 +08:00
static cross(u: Vector2, v: Vector2): number;
2020-11-26 11:48:02 +08:00
/**
*
2020-11-26 11:48:02 +08:00
* @param first
* @param second
*/
2020-07-23 11:00:46 +08:00
static perpendicular(first: Vector2, second: Vector2): Vector2;
/**
*
* @param from
* @param to
*/
static angle(from: Vector2, to: Vector2): number;
/**
* 线(ab和cd)
* @param a
* @param b
* @param c
* @param d
* @param intersection
*/
static getRayIntersection(a: Vector2, b: Vector2, c: Vector2, d: Vector2, intersection?: Vector2): boolean;
2020-11-26 11:48:02 +08:00
/**
* Vector2的临时解决方案
*
* @param vec
*/
static normalize(vec: Vector2): void;
2020-11-26 11:48:02 +08:00
/**
* Vector2的数组中的向量应用变换
* @param sourceArray
* @param sourceIndex
* @param matrix
* @param destinationArray
* @param destinationIndex
* @param length
*/
2020-07-23 11:00:46 +08:00
static transformA(sourceArray: Vector2[], sourceIndex: number, matrix: Matrix2D, destinationArray: Vector2[], destinationIndex: number, length: number): void;
/**
* Vector2Vector2包含了通过指定的Matrix进行的二维向量变换
* @param position
* @param matrix
* @param result
*/
static transformR(position: Vector2, matrix: Matrix2D, result?: Vector2): void;
2020-11-26 11:48:02 +08:00
/**
* Vector2的数组中的所有向量应用变换
* @param sourceArray
* @param matrix
* @param destinationArray
*/
2020-07-23 11:00:46 +08:00
static transform(sourceArray: Vector2[], matrix: Matrix2D, destinationArray: Vector2[]): void;
static round(vec: Vector2): Vector2;
}
}
declare class WebGLUtils {
2020-11-26 11:48:02 +08:00
/**
* webgl context
*/
static getContext(): CanvasRenderingContext2D;
}
2020-07-12 14:51:20 +08:00
declare namespace stopwatch {
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
class Stopwatch {
private readonly getSystemTime;
2020-11-26 11:48:02 +08:00
/**
*
* undefined
*/
2020-07-12 14:51:20 +08:00
private _startSystemTime;
2020-11-26 11:48:02 +08:00
/**
*
* undefined
*/
2020-07-12 14:51:20 +08:00
private _stopSystemTime;
2020-11-26 11:48:02 +08:00
/** 自上次复位以来,秒表已停止的系统时间总数。 */
2020-07-12 14:51:20 +08:00
private _stopDuration;
2020-11-26 11:48:02 +08:00
/**
*
* undefined
*/
2020-07-12 14:51:20 +08:00
private _pendingSliceStartStopwatchTime;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
private _completeSlices;
constructor(getSystemTime?: GetTimeFunc);
getState(): State;
isIdle(): boolean;
isRunning(): boolean;
isStopped(): boolean;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
slice(): Slice;
2020-11-26 11:48:02 +08:00
/**
* /
*/
2020-07-12 14:51:20 +08:00
getCompletedSlices(): Slice[];
2020-11-26 11:48:02 +08:00
/**
* /
*/
2020-07-12 14:51:20 +08:00
getCompletedAndPendingSlices(): Slice[];
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
getPendingSlice(): Slice;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
getTime(): number;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
reset(): void;
2020-11-26 11:48:02 +08:00
/**
* ()
* @param forceReset
*/
2020-07-12 14:51:20 +08:00
start(forceReset?: boolean): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param recordPendingSlice
*/
2020-07-12 14:51:20 +08:00
stop(recordPendingSlice?: boolean): number;
2020-11-26 11:48:02 +08:00
/**
*
* @param endStopwatchTime
*/
2020-07-28 16:25:20 +08:00
private calculatePendingSlice;
2020-11-26 11:48:02 +08:00
/**
*
* @param endSystemTime
*/
2020-07-28 16:25:20 +08:00
private caculateStopwatchTime;
2020-11-26 11:48:02 +08:00
/**
*
*
*/
2020-07-28 16:25:20 +08:00
private getSystemTimeOfCurrentStopwatchTime;
2020-11-26 11:48:02 +08:00
/**
* /
* @param endStopwatchTime
*/
2020-07-12 14:51:20 +08:00
private recordPendingSlice;
}
2020-11-26 11:48:02 +08:00
/**
*
*
*/
2020-07-12 14:51:20 +08:00
type GetTimeFunc = () => number;
enum State {
2020-11-26 11:48:02 +08:00
/** 秒表尚未启动,或已复位。 */
2020-07-12 14:51:20 +08:00
IDLE = "IDLE",
2020-11-26 11:48:02 +08:00
/** 秒表正在运行。 */
2020-07-12 14:51:20 +08:00
RUNNING = "RUNNING",
2020-11-26 11:48:02 +08:00
/** 秒表以前还在跑,但现在已经停了。 */
2020-07-12 14:51:20 +08:00
STOPPED = "STOPPED"
}
function setDefaultSystemTimeGetter(systemTimeGetter?: GetTimeFunc): void;
2020-11-26 11:48:02 +08:00
/**
*
*/
2020-07-12 14:51:20 +08:00
interface Slice {
2020-11-26 11:48:02 +08:00
/** 秒表显示的时间在这一片开始的时候。 */
2020-07-12 14:51:20 +08:00
readonly startTime: number;
2020-11-26 11:48:02 +08:00
/** 秒表在这片片尾的时间。 */
2020-07-12 14:51:20 +08:00
readonly endTime: number;
2020-11-26 11:48:02 +08:00
/** 该切片的运行时间 */
2020-07-12 14:51:20 +08:00
readonly duration: number;
}
}
declare module linq {
class Enumerable {
/**
*
*/
static range(start: number, count: number): List<number>;
/**
*
*/
static repeat<T>(element: T, count: number): List<T>;
}
}
declare module linq {
/**
*
*/
const isObj: <T>(x: T) => boolean;
/**
*
*/
const negate: <T>(pred: (...args: T[]) => boolean) => (...args: T[]) => boolean;
/**
*
*/
const composeComparers: <T>(previousComparer: (a: T, b: T) => number, currentComparer: (a: T, b: T) => number) => (a: T, b: T) => number;
const keyComparer: <T>(_keySelector: (key: T) => string, descending?: boolean) => (a: T, b: T) => number;
}
declare module linq {
type PredicateType<T> = (value?: T, index?: number, list?: T[]) => boolean;
class List<T> {
protected _elements: T[];
/**
*
*/
constructor(elements?: T[]);
/**
*
*/
add(element: T): void;
/**
*
*/
append(element: T): void;
/**
*
*/
prepend(element: T): void;
/**
*
*/
addRange(elements: T[]): void;
/**
*
*/
aggregate<U>(accumulator: (accum: U, value?: T, index?: number, list?: T[]) => any, initialValue?: U): any;
/**
*
*/
all(predicate: PredicateType<T>): boolean;
/**
*
*/
any(): boolean;
any(predicate: PredicateType<T>): boolean;
/**
*
*/
average(): number;
average(transform: (value?: T, index?: number, list?: T[]) => any): number;
/**
*
*/
cast<U>(): List<U>;
/**
*
*/
clear(): void;
/**
*
*/
concat(list: List<T>): List<T>;
/**
*
*/
contains(element: T): boolean;
/**
*
*/
count(): number;
count(predicate: PredicateType<T>): number;
/**
*
*/
defaultIfEmpty(defaultValue?: T): List<T>;
/**
*
*/
distinctBy(keySelector: (key: T) => string | number): List<T>;
/**
*
*/
elementAt(index: number): T;
/**
*
*/
elementAtOrDefault(index: number): T | null;
/**
* 使
*/
except(source: List<T>): List<T>;
/**
*
*/
first(): T;
first(predicate: PredicateType<T>): T;
/**
*
*/
firstOrDefault(): T;
firstOrDefault(predicate: PredicateType<T>): T;
/**
*
*/
forEach(action: (value?: T, index?: number, list?: T[]) => any): void;
/**
*
*/
groupBy<TResult>(grouper: (key: T) => string | number, mapper?: (element: T) => TResult): {
[key: string]: TResult[];
};
/**
*
*/
groupJoin<U, R>(list: List<U>, key1: (k: T) => any, key2: (k: U) => any, result: (first: T, second: List<U>) => R): List<R>;
/**
*
*/
indexOf(element: T): number;
/**
*
*/
insert(index: number, element: T): void | Error;
/**
* 使
*/
intersect(source: List<T>): List<T>;
/**
*
*/
join<U, R>(list: List<U>, key1: (key: T) => any, key2: (key: U) => any, result: (first: T, second: U) => R): List<R>;
/**
*
*/
last(): T;
last(predicate: PredicateType<T>): T;
/**
*
*/
lastOrDefault(): T;
lastOrDefault(predicate: PredicateType<T>): T;
/**
*
*/
max(): number;
max(selector: (value: T, index: number, array: T[]) => number): number;
/**
*
*/
min(): number;
min(selector: (value: T, index: number, array: T[]) => number): number;
/**
*
*/
ofType<U>(type: any): List<U>;
/**
*
*/
orderBy(keySelector: (key: T) => any, comparer?: (a: T, b: T) => number): List<T>;
/**
*
*/
orderByDescending(keySelector: (key: T) => any, comparer?: (a: T, b: T) => number): List<T>;
/**
*
*/
thenBy(keySelector: (key: T) => any): List<T>;
/**
*
*/
thenByDescending(keySelector: (key: T) => any): List<T>;
/**
*
*/
remove(element: T): boolean;
/**
*
*/
removeAll(predicate: PredicateType<T>): List<T>;
/**
*
*/
removeAt(index: number): void;
/**
*
*/
reverse(): List<T>;
/**
*
*/
select<TOut>(selector: (element: T, index: number) => TOut): List<TOut>;
/**
*
*/
selectMany<TOut extends List<any>>(selector: (element: T, index: number) => TOut): TOut;
/**
* 使
*/
sequenceEqual(list: List<T>): boolean;
/**
*
*/
single(predicate?: PredicateType<T>): T;
/**
* ;
*/
singleOrDefault(predicate?: PredicateType<T>): T;
/**
*
*/
skip(amount: number): List<T>;
/**
*
*/
skipLast(amount: number): List<T>;
/**
*
*/
skipWhile(predicate: PredicateType<T>): List<T>;
/**
*
*/
sum(): number;
sum(transform: (value?: T, index?: number, list?: T[]) => number): number;
/**
*
*/
take(amount: number): List<T>;
/**
*
*/
takeLast(amount: number): List<T>;
/**
*
*/
takeWhile(predicate: PredicateType<T>): List<T>;
/**
*
*/
toArray(): T[];
/**
* <dictionary>List< T>
*/
toDictionary<TKey>(key: (key: T) => TKey): List<{
Key: TKey;
Value: T;
}>;
toDictionary<TKey, TValue>(key: (key: T) => TKey, value: (value: T) => TValue): List<{
Key: TKey;
Value: T | TValue;
}>;
/**
* Set从一个Enumerable.List< T>
*/
toSet(): Set<any>;
/**
* List< T>Enumerable.List< T>
*/
toList(): List<T>;
/**
* TElement>IEnumerable< T>
*/
toLookup<TResult>(keySelector: (key: T) => string | number, elementSelector: (element: T) => TResult): {
[key: string]: TResult[];
};
/**
*
*/
where(predicate: PredicateType<T>): List<T>;
/**
*
*/
zip<U, TOut>(list: List<U>, result: (first: T, second: U) => TOut): List<TOut>;
}
/**
* 使
*
* ToDictionaryToLookupToList或ToArray方法枚举对象之前
*/
class OrderedList<T> extends List<T> {
private _comparer;
constructor(elements: T[], _comparer: (a: T, b: T) => number);
/**
*
* @override
*/
thenBy(keySelector: (key: T) => any): List<T>;
/**
*
* @override
*/
thenByDescending(keySelector: (key: T) => any): List<T>;
}
}
declare module es {
/**
*
*/
class EndPoint {
/** 该部分的位置 */
position: Vector2;
/** 如果这个端点是一个段的起始点或终点(每个段只有一个起始点和一个终点) */
begin: boolean;
/** 该端点所属的段 */
segment: Segment;
/** 端点相对于能见度测试位置的角度 */
angle: number;
constructor();
}
class EndPointComparer implements IComparer<EndPoint> {
/**
*
* @param a
* @param b
*/
compare(a: EndPoint, b: EndPoint): 1 | 0 | -1;
}
}
declare module es {
/**
* 线
*/
class Segment {
/**
*
*/
p1: EndPoint;
/**
*
*/
p2: EndPoint;
constructor();
}
}
declare module es {
/**
* 使
*
* - begin
* -
* - end来获取可见度多边形end时
*/
class VisibilityComputer {
/**
* 线180线
*/
lineCountForCircleApproximation: number;
_radius: number;
_origin: Vector2;
_isSpotLight: boolean;
_spotStartAngle: number;
_spotEndAngle: number;
_endPoints: EndPoint[];
_segments: Segment[];
_radialComparer: EndPointComparer;
static _cornerCache: Vector2[];
static _openSegments: LinkedList<Segment>;
constructor(origin?: Vector2, radius?: number);
/**
* PolyLight的遮蔽器
* @param collider
*/
addColliderOccluder(collider: Collider): void;
/**
*
* @param position
* @param radius
*/
addCircleOccluder(position: Vector2, radius: number): void;
/**
* 线
* @param p1
* @param p2
*/
addLineOccluder(p1: Vector2, p2: Vector2): void;
/**
*
* @param bounds
*/
addSquareOccluder(bounds: Rectangle): void;
/**
*
*
* @param p1
* @param p2
*/
addSegment(p1: Vector2, p2: Vector2): void;
/**
*
*/
clearOccluders(): void;
/**
*
* @param origin
* @param radius
*/
begin(origin: Vector2, radius: number): void;
/**
* ListPool
*/
end(): Vector2[];
addTriangle(triangles: Vector2[], angle1: number, angle2: number, segment: Segment): void;
/**
* 线p1-p2与p3-p4的交点
* @param p1
* @param p2
* @param p3
* @param p4
*/
static lineLineIntersection(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2): Vector2;
static between(value: number, min: number, max: number): boolean;
/**
* 沿线
*/
loadRectangleBoundaries(): void;
/**
* a段在b的前面吗isSegmentInFrontOf(a, b) != (!isSegmentInFrontOf(b, a))
*
* http://www.redblobgames.com/articles/visibility/segment-sorting.html
* @param a
* @param b
* @param relativeTo
*/
isSegmentInFrontOf(a: Segment, b: Segment, relativeTo: Vector2): boolean;
/**
* p * (1 - f) + q * f
* @param p
* @param q
* @param f
*/
static interpolate(p: Vector2, q: Vector2, f: number): Vector2;
/**
* 线p1-p2的 "左边"
* @param p1
* @param p2
* @param point
*/
static isLeftOf(p1: Vector2, p2: Vector2, point: Vector2): boolean;
/**
* 便
*/
updateSegments(): void;
}
}
declare module es {
interface ITimer {
context: any;
2020-11-26 11:48:02 +08:00
/**
* stop以停止此计时器再次运行
*/
stop(): any;
2020-11-26 11:48:02 +08:00
/**
* 0
*/
reset(): any;
2020-11-26 11:48:02 +08:00
/**
* T的上下文便
2020-11-26 11:48:02 +08:00
*/
getContext<T>(): T;
}
}
declare module es {
/**
* ITimer的实现
*/
class Timer implements ITimer {
context: any;
_timeInSeconds: number;
_repeats: boolean;
_onTime: (timer: ITimer) => void;
_isDone: boolean;
_elapsedTime: number;
getContext<T>(): T;
reset(): void;
stop(): void;
tick(): boolean;
initialize(timeInsSeconds: number, repeats: boolean, context: any, onTime: (timer: ITimer) => void): void;
2020-11-26 11:48:02 +08:00
/**
* 便js需要时GC可以清理它们的引用
*/
unload(): void;
}
}
declare module es {
2020-11-26 11:48:02 +08:00
/**
*
*/
class TimerManager extends GlobalManager {
_timers: Timer[];
update(): void;
2020-11-26 11:48:02 +08:00
/**
*
* @param timeInSeconds
* @param repeats
* @param context
* @param onTime
*/
schedule(timeInSeconds: number, repeats: boolean, context: any, onTime: (timer: ITimer) => void): Timer;
}
}