angry-pixel 1.0.8 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/lib/component/Animation.d.ts +2 -2
  2. package/lib/component/Animator.d.ts +2 -4
  3. package/lib/component/AudioPlayer.d.ts +2 -5
  4. package/lib/component/ComponentTypes.d.ts +4 -0
  5. package/lib/component/RigidBody.d.ts +8 -28
  6. package/lib/component/RigidBodyOld.d.ts +39 -0
  7. package/lib/component/Transform.d.ts +2 -0
  8. package/lib/component/collider/BallCollider.d.ts +26 -0
  9. package/lib/component/collider/BoxCollider.d.ts +34 -0
  10. package/lib/component/collider/Collider.d.ts +22 -0
  11. package/lib/component/collider/EdgeCollider.d.ts +31 -0
  12. package/lib/component/collider/PolygonCollider.d.ts +31 -0
  13. package/lib/component/collider/TilemapCollider.d.ts +16 -0
  14. package/lib/component/colliderComponent/PolygonCollider.d.ts +32 -0
  15. package/lib/component/colliderComponent/TriangleCollider.d.ts +32 -0
  16. package/lib/component/rendering/MaskRenderer.d.ts +29 -0
  17. package/lib/component/rendering/SpriteRenderer.d.ts +46 -0
  18. package/lib/component/rendering/TextRenderer.d.ts +49 -0
  19. package/lib/component/rendering/tilemap/CsvTilemapRenderer.d.ts +13 -0
  20. package/lib/component/rendering/tilemap/Tile.d.ts +7 -0
  21. package/lib/component/rendering/tilemap/TileData.d.ts +10 -0
  22. package/lib/component/rendering/tilemap/TiledTilemapRenderer.d.ts +43 -0
  23. package/lib/component/rendering/tilemap/TilemapRenderer.d.ts +72 -0
  24. package/lib/component/rendering/tilemap/Tileset.d.ts +25 -0
  25. package/lib/component/renderingComponent/MaskRenderer.d.ts +29 -0
  26. package/lib/core/Component.d.ts +25 -25
  27. package/lib/core/Game.d.ts +0 -8
  28. package/lib/core/GameObject.d.ts +17 -23
  29. package/lib/core/Scene.d.ts +10 -12
  30. package/lib/core/facades/AssetManagerFacade.d.ts +2 -2
  31. package/lib/core/facades/GameObjectManagerFacade.d.ts +0 -4
  32. package/lib/core/managers/AssetManager.d.ts +2 -3
  33. package/lib/core/managers/GameObjectManager.d.ts +1 -1
  34. package/lib/core/managers/IterationManager.d.ts +24 -11
  35. package/lib/core/managers/SceneManager.d.ts +3 -0
  36. package/lib/core/managers/TimeManager.d.ts +6 -4
  37. package/lib/index.cjs.js +1 -1
  38. package/lib/index.d.ts +15 -11
  39. package/lib/index.esm.js +1 -1
  40. package/lib/index.js +1 -1
  41. package/lib/input/GamepadController.d.ts +9 -1
  42. package/lib/input/KeyboardController.d.ts +5 -0
  43. package/lib/math/Rotation.d.ts +1 -4
  44. package/lib/math/Utils.d.ts +7 -0
  45. package/lib/physics/PhysicsManager.d.ts +24 -0
  46. package/lib/physics/PhysicsManagerOld2.d.ts +34 -0
  47. package/lib/physics/collision/ColliderData.d.ts +15 -0
  48. package/lib/physics/collision/CollisionManager.d.ts +17 -13
  49. package/lib/physics/collision/CollisionManagerOld.d.ts +27 -0
  50. package/lib/physics/collision/QuadTree.d.ts +16 -11
  51. package/lib/physics/collision/method/AABBMethod.d.ts +13 -0
  52. package/lib/physics/collision/method/CollisionMethod.d.ts +5 -0
  53. package/lib/physics/collision/method/SatMethod.d.ts +11 -0
  54. package/lib/physics/collision/resolver/AABBResolver.d.ts +6 -9
  55. package/lib/physics/collision/resolver/CircumferenceAABBResolver.d.ts +9 -0
  56. package/lib/physics/collision/resolver/CircumferenceCircumferenceResolver.d.ts +7 -0
  57. package/lib/physics/collision/resolver/CircumferencePolygonResolver.d.ts +23 -0
  58. package/lib/physics/collision/resolver/CircumferenceRectangleResolver.d.ts +9 -0
  59. package/lib/physics/collision/resolver/CircumferenceResolver.d.ts +7 -0
  60. package/lib/physics/collision/resolver/CollisionResolution.d.ts +6 -0
  61. package/lib/physics/collision/resolver/CollisionResolver.d.ts +10 -0
  62. package/lib/physics/collision/resolver/PolygonPolygonResolver.d.ts +15 -0
  63. package/lib/physics/collision/resolver/RectangleRectangleResolver.d.ts +11 -0
  64. package/lib/physics/collision/resolver/SatResolver.d.ts +10 -6
  65. package/lib/physics/collision/shape/Circumference.d.ts +18 -0
  66. package/lib/physics/collision/shape/Line.d.ts +19 -0
  67. package/lib/physics/collision/shape/Polygon.d.ts +31 -0
  68. package/lib/physics/collision/shape/Rectangle.d.ts +7 -11
  69. package/lib/physics/collision/shape/Shape.d.ts +13 -24
  70. package/lib/physics/collision-old/CollisionData.d.ts +8 -0
  71. package/lib/physics/collision-old/CollisionManager.d.ts +30 -0
  72. package/lib/physics/collision-old/QuadTree.d.ts +32 -0
  73. package/lib/physics/collision-old/collider/ICollider.d.ts +14 -0
  74. package/lib/physics/collision-old/collider/RectangleCollider.d.ts +32 -0
  75. package/lib/physics/collision-old/resolver/AABBResolver.d.ts +14 -0
  76. package/lib/physics/collision-old/resolver/ICollisionResolver.d.ts +5 -0
  77. package/lib/physics/collision-old/resolver/SatResolver.d.ts +14 -0
  78. package/lib/physics/collision-old/shape/Rectangle.d.ts +13 -0
  79. package/lib/physics/collision-old/shape/Shape.d.ts +28 -0
  80. package/lib/physics/rigodBody/RigidBodyData.d.ts +10 -0
  81. package/lib/physics/rigodBody/RigidBodyManager.d.ts +23 -0
  82. package/lib/rendering/CullingService.d.ts +0 -1
  83. package/lib/rendering/FontAtlasFactory.d.ts +6 -1
  84. package/lib/rendering/renderData/GeometricRenderData.d.ts +11 -6
  85. package/lib/rendering/renderData/MaskRenderData.d.ts +9 -0
  86. package/lib/rendering/renderData/RenderData.d.ts +3 -3
  87. package/lib/rendering/renderData/TilemapRenderData.d.ts +7 -1
  88. package/lib/rendering/webGL/ProgramFactory.d.ts +1 -1
  89. package/lib/rendering/webGL/WebGLRenderer.d.ts +13 -11
  90. package/lib/rendering/webGL/renderer/GeometricRenderer.d.ts +6 -7
  91. package/lib/rendering/webGL/renderer/MaskRenderer.d.ts +14 -0
  92. package/lib/rendering/webGL/shader/imageFragmentShader.d.ts +1 -1
  93. package/lib/rendering/webGL/shader/legacy/imageFragmentShader.d.ts +1 -1
  94. package/package.json +1 -1
  95. package/angry-pixel-v1.0.7.tgz +0 -0
@@ -1,3 +1,4 @@
1
+ import { Vector2 } from "../math/Vector2";
1
2
  export declare class GamepadController {
2
3
  private readonly gamepads;
3
4
  constructor();
@@ -6,17 +7,24 @@ export declare class GamepadController {
6
7
  private gamepadConnected;
7
8
  private gamepadDisconected;
8
9
  update(): void;
10
+ private getGamepads;
9
11
  }
10
12
  export declare class GamepadData {
11
13
  private _connected;
12
14
  private _id;
13
15
  private readonly buttons;
14
16
  private readonly axes;
17
+ private readonly _dpadAxes;
18
+ private readonly _leftStickAxes;
19
+ private readonly _rightStickAxes;
15
20
  updateFromGamepad(gamepad: Gamepad): void;
21
+ get id(): string;
16
22
  getButtonPressed(index: number): boolean;
17
23
  getAxis(index: number): number;
24
+ get dpadAxes(): Vector2;
25
+ get leftStickAxes(): Vector2;
26
+ get rightStickAxes(): Vector2;
18
27
  get connected(): boolean;
19
- get id(): string;
20
28
  get dpadUp(): boolean;
21
29
  get dpadDown(): boolean;
22
30
  get dpadLeft(): boolean;
@@ -4,4 +4,9 @@ export declare class KeyboardController {
4
4
  constructor(canvas: HTMLCanvasElement);
5
5
  private eventHandler;
6
6
  isPressed(keyCode: string): boolean;
7
+ orPressed(keyCodes: string[]): boolean;
8
+ andPressed(keyCodes: string[]): boolean;
9
+ isPressedReturn<T>(keyCode: string, returnTrue: T, returnFalse: T): T;
10
+ orPressedReturn<T>(keyCodes: string[], returnTrue: T, returnFalse: T): T;
11
+ andPressedReturn<T>(keyCodes: string[], returnTrue: T, returnFalse: T): T;
7
12
  }
@@ -3,10 +3,7 @@ export declare class Rotation {
3
3
  private _degrees;
4
4
  private _radians;
5
5
  private _direction;
6
- constructor(config?: {
7
- radians?: number;
8
- degrees?: number;
9
- });
6
+ constructor(radians?: number | null, degrees?: number | null);
10
7
  set degrees(degrees: number);
11
8
  get degrees(): number;
12
9
  set radians(radians: number);
@@ -24,3 +24,10 @@ export declare const fixedRound: (value: number, decimals: number) => number;
24
24
  * @returns number range
25
25
  */
26
26
  export declare const range: (start: number, end: number, steps?: number) => number[];
27
+ /**
28
+ * @param value number to compare
29
+ * @param min min value
30
+ * @param max max value
31
+ * @returns true if the number is between the min and the max, false instead
32
+ */
33
+ export declare const between: (value: number, min: number, max: number) => boolean;
@@ -0,0 +1,24 @@
1
+ import { CollisionManager } from "./collision/CollisionManager";
2
+ import { RigidBodyData } from "./rigodBody/RigidBodyData";
3
+ export declare enum RigidBodyType {
4
+ Static = 0,
5
+ Dynamic = 1
6
+ }
7
+ export declare class RigidBodyManager {
8
+ private readonly collisionManager;
9
+ private rigidBodyData;
10
+ private cachePosition;
11
+ private cacheVelocity;
12
+ private cacheGravity;
13
+ private cacheDisplacement;
14
+ private cacheNewDisplacement;
15
+ private cacheCollisions;
16
+ constructor(collisionManager: CollisionManager);
17
+ addRigidBodyData(data: RigidBodyData): void;
18
+ update(deltaTime: number): void;
19
+ private applyGravity;
20
+ private applyVelocity;
21
+ private applyReposition;
22
+ private getCollisions;
23
+ clear(): void;
24
+ }
@@ -0,0 +1,34 @@
1
+ import { CollisionManager } from "./collision/CollisionManager";
2
+ import { GameObject } from "../core/GameObject";
3
+ import { Vector2 } from "../math/Vector2";
4
+ import { ICollider } from "./collision/collider/ICollider";
5
+ import { TimeManager } from "../core/managers/TimeManager";
6
+ export declare enum RigidBodyType {
7
+ Static = 0,
8
+ Dynamic = 1
9
+ }
10
+ export interface RigidBodyData {
11
+ gameObject: GameObject;
12
+ gravity: Vector2;
13
+ velocity: Vector2;
14
+ layersToCollider: string[];
15
+ colliders: ICollider[];
16
+ }
17
+ export declare class PhysicsManager {
18
+ private readonly timeManager;
19
+ private readonly collisionManager;
20
+ private rigidBodyData;
21
+ private cachePosition;
22
+ private cacheVelocity;
23
+ private cacheGravity;
24
+ private cacheDisplacement;
25
+ private cacheNewDisplacement;
26
+ constructor(timeManager: TimeManager, collisionManager: CollisionManager);
27
+ addRigidBodyData(data: RigidBodyData): void;
28
+ updatePositions(): void;
29
+ private applyGravityAndVelocity;
30
+ applyReposition(): void;
31
+ private applyRepositionToGameObject;
32
+ private getCollisions;
33
+ clear(): void;
34
+ }
@@ -0,0 +1,15 @@
1
+ import { QuadItem } from "./QuadTree";
2
+ import { Shape } from "./shape/Shape";
3
+ export declare class ColliderData implements QuadItem {
4
+ shape: Shape;
5
+ layer: string;
6
+ id: string;
7
+ updateCollisions: boolean;
8
+ physics: boolean;
9
+ rigidBody: boolean;
10
+ constructor(shape: Shape, layer: string, id: string, updateCollisions: boolean, physics: boolean, rigidBody: boolean);
11
+ get x(): number;
12
+ get y(): number;
13
+ get x1(): number;
14
+ get y1(): number;
15
+ }
@@ -1,27 +1,31 @@
1
1
  import { Rectangle } from "../../math/Rectangle";
2
- import { ICollider } from "./collider/ICollider";
3
- import { CollisionData } from "./CollisionData";
4
- import { ICollisionResolver } from "./resolver/ICollisionResolver";
2
+ import { ColliderData } from "./ColliderData";
3
+ import { CollisionMethod } from "./method/CollisionMethod";
4
+ import { CollisionResolution } from "./resolver/CollisionResolver";
5
5
  export interface Collision {
6
- localCollider: ICollider;
7
- remoteCollider: ICollider;
8
- collisionData: CollisionData;
6
+ localCollider: ColliderData;
7
+ remoteCollider: ColliderData;
8
+ resolution: CollisionResolution;
9
9
  }
10
10
  export declare class CollisionManager {
11
11
  private colliders;
12
12
  private quadTree;
13
13
  private bounds;
14
14
  private fixedQuadTree;
15
- private resolver;
15
+ private method;
16
+ private collisions;
16
17
  private minBounds;
17
18
  private maxBounds;
18
19
  private newBounds;
19
- constructor(resolver: ICollisionResolver, quadTreeBounds: Rectangle | null, quadMaxLevel: number, collidersPerQuad: number);
20
- addCollider(collider: ICollider): void;
21
- removeCollider(collider: ICollider): void;
22
- getCollisionsForCollider(collider: ICollider): Collision[];
23
- private broadPhase;
24
- private narrowPhase;
20
+ constructor(method: CollisionMethod, quadTreeBounds: Rectangle | null, quadMaxLevel: number, collidersPerQuad: number);
21
+ addCollider(collider: ColliderData): void;
22
+ removeCollider(collider: ColliderData): void;
23
+ getFrameCollisionsForCollider(collider: ColliderData): Collision[];
24
+ refreshCollisionsForCollider(collider: ColliderData): Collision[];
25
+ clear(): void;
25
26
  update(): void;
26
27
  private updateNewBounds;
28
+ private updateCollisions;
29
+ private broadPhase;
30
+ private narrowPhase;
27
31
  }
@@ -0,0 +1,27 @@
1
+ import { Rectangle } from "../../math/Rectangle";
2
+ import { ICollider } from "./collider/ICollider";
3
+ import { CollisionData } from "./CollisionData";
4
+ import { ICollisionResolver } from "./resolver/ICollisionResolver";
5
+ export interface Collision {
6
+ localCollider: ICollider;
7
+ remoteCollider: ICollider;
8
+ collisionData: CollisionData;
9
+ }
10
+ export declare class CollisionManager {
11
+ private colliders;
12
+ private quadTree;
13
+ private bounds;
14
+ private fixedQuadTree;
15
+ private resolver;
16
+ private minBounds;
17
+ private maxBounds;
18
+ private newBounds;
19
+ constructor(resolver: ICollisionResolver, quadTreeBounds: Rectangle | null, quadMaxLevel: number, collidersPerQuad: number);
20
+ addCollider(collider: ICollider): void;
21
+ removeCollider(collider: ICollider): void;
22
+ getCollisionsForCollider(collider: ICollider): Collision[];
23
+ private broadPhase;
24
+ private narrowPhase;
25
+ update(): void;
26
+ private updateNewBounds;
27
+ }
@@ -1,14 +1,19 @@
1
1
  import { Rectangle } from "../../math/Rectangle";
2
- import { ICollider } from "./collider/ICollider";
3
- export declare const DEFAULT_MAX_COLLIDERS: number;
2
+ export declare const DEFAULT_MAX_ITEMS: number;
4
3
  export declare const DEFAULT_MAX_LEVELS: number;
4
+ export interface QuadItem {
5
+ x: number;
6
+ y: number;
7
+ x1: number;
8
+ y1: number;
9
+ }
5
10
  export declare class QuadTree {
6
11
  private _bounds;
12
+ private _items;
7
13
  private _quadrants;
8
14
  private readonly maxLevels;
9
- private readonly maxColliders;
15
+ private readonly maxItems;
10
16
  private readonly level;
11
- private colliders;
12
17
  private readonly sw;
13
18
  private readonly se;
14
19
  private readonly nw;
@@ -16,17 +21,17 @@ export declare class QuadTree {
16
21
  private center;
17
22
  private childrenWidth;
18
23
  private childrenHeight;
19
- private quadrantsForCollider;
20
- constructor(level: number, bounds: Rectangle, maxLevels?: number, maxColliders?: number);
24
+ private quadsForItem;
25
+ constructor(level: number, bounds: Rectangle, maxLevels?: number, maxItems?: number);
21
26
  get bounds(): Rectangle;
22
27
  get quadrants(): QuadTree[];
23
28
  updateBounds(bounds: Rectangle): void;
24
- clearColliders(): void;
29
+ clearItems(): void;
25
30
  clearQuadrants(): void;
26
- addCollider(collider: ICollider): void;
27
- retrieve(collider: ICollider): ICollider[];
31
+ addItem(item: QuadItem): void;
32
+ retrieve<T extends QuadItem>(item: QuadItem): T[];
28
33
  private splitQuad;
29
- private getChildrenQuadrantForCollider;
30
- private insertColliderIntoChildrenQuads;
34
+ private getChildrenQuadrantForItem;
35
+ private insertItemIntoChildrenQuads;
31
36
  private updateCache;
32
37
  }
@@ -0,0 +1,13 @@
1
+ import { Shape } from "../shape/Shape";
2
+ import { CollisionResolution } from "../resolver/CollisionResolver";
3
+ import { CollisionMethod } from "./CollisionMethod";
4
+ import { AABBResolver } from "../resolver/AABBResolver";
5
+ import { CircumferenceAABBResolver } from "../resolver/CircumferenceAABBResolver";
6
+ import { CircumferenceResolver } from "../resolver/CircumferenceResolver";
7
+ export declare class AABBMethod implements CollisionMethod {
8
+ private readonly AABBResolver;
9
+ private readonly circumferenceAABBResolver;
10
+ private readonly circumferenceResolver;
11
+ constructor(AABBResolver: AABBResolver, circumferenceAABBResolver: CircumferenceAABBResolver, circumferenceResolver: CircumferenceResolver);
12
+ getCollisionResolution(shapeA: Shape, shapeB: Shape): CollisionResolution | null;
13
+ }
@@ -0,0 +1,5 @@
1
+ import { Shape } from "../shape/Shape";
2
+ import { CollisionResolution } from "../resolver/CollisionResolver";
3
+ export interface CollisionMethod {
4
+ getCollisionResolution(shapeA: Shape, shapeB: Shape): CollisionResolution | null;
5
+ }
@@ -0,0 +1,11 @@
1
+ import { Shape } from "../shape/Shape";
2
+ import { CollisionResolution } from "../resolver/CollisionResolver";
3
+ import { CollisionMethod } from "./CollisionMethod";
4
+ import { CircumferenceResolver } from "../resolver/CircumferenceResolver";
5
+ import { SatResolver } from "../resolver/SatResolver";
6
+ export declare class SatMethod implements CollisionMethod {
7
+ private readonly circumferenceResolver;
8
+ private readonly satResolver;
9
+ constructor(circumferenceResolver: CircumferenceResolver, satResolver: SatResolver);
10
+ getCollisionResolution(shapeA: Shape, shapeB: Shape): CollisionResolution | null;
11
+ }
@@ -1,14 +1,11 @@
1
- import { CollisionData } from "../CollisionData";
2
- import { Shape } from "../shape/Shape";
3
- import { ICollisionResolver } from "./ICollisionResolver";
4
- export declare class AABBResolver implements ICollisionResolver {
5
- private shape1Rect;
6
- private shape2Rect;
1
+ import { Rectangle } from "../shape/Rectangle";
2
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
3
+ export declare class AABBResolver implements CollisionResolver {
7
4
  private overlapX;
8
5
  private overlapY;
9
6
  private minOverlap;
10
- private displaceDirection;
11
- getCollisionData(shape1: Shape, shape2: Shape): CollisionData | null;
12
- private setShapeRect;
7
+ private direction;
8
+ private displacementDirection;
9
+ resolve(shapeA: Rectangle, shapeB: Rectangle): CollisionResolution | null;
13
10
  private preventContainment;
14
11
  }
@@ -0,0 +1,9 @@
1
+ import { Circumference } from "../shape/Circumference";
2
+ import { Rectangle } from "../shape/Rectangle";
3
+ import { CollisionResolver, CollisionResolution } from "./CollisionResolver";
4
+ export declare class CircumferenceAABBResolver implements CollisionResolver {
5
+ private closestPoint;
6
+ private distance;
7
+ private direction;
8
+ resolve(shapeA: Circumference, shapeB: Rectangle, invert?: boolean): CollisionResolution;
9
+ }
@@ -0,0 +1,7 @@
1
+ import { Circumference } from "../shape/Circumference";
2
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
3
+ export declare class CircumferenceCircumferenceResolver implements CollisionResolver {
4
+ private distance;
5
+ private direction;
6
+ resolve(shapeA: Circumference, shapeB: Circumference): CollisionResolution;
7
+ }
@@ -0,0 +1,23 @@
1
+ import { Circumference } from "../shape/Circumference";
2
+ import { Line } from "../shape/Line";
3
+ import { Polygon } from "../shape/Polygon";
4
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
5
+ export declare class CircumferencePolygonResolver implements CollisionResolver {
6
+ private axes;
7
+ private projA;
8
+ private projB;
9
+ private currentOverlap;
10
+ private minOverlap;
11
+ private displaceDirection;
12
+ private direction;
13
+ private closestVertex;
14
+ private distance;
15
+ private newDistance;
16
+ private circumferenceAxis;
17
+ private cache;
18
+ resolve(shapeA: Circumference, shapeB: Polygon | Line, invert?: boolean): CollisionResolution;
19
+ private findClosestVertex;
20
+ private setCircumferenceVertices;
21
+ private projectShapeOntoAxis;
22
+ private preventContainment;
23
+ }
@@ -0,0 +1,9 @@
1
+ import { Circumference } from "../shape/Circumference";
2
+ import { Rectangle } from "../shape/Rectangle";
3
+ import { CollisionResolver, CollisionResolution } from "./CollisionResolver";
4
+ export declare class CircumferenceRectangleResolver implements CollisionResolver {
5
+ private closestPoint;
6
+ private distance;
7
+ private direction;
8
+ resolve(shapeA: Circumference, shapeB: Rectangle, invert?: boolean): CollisionResolution;
9
+ }
@@ -0,0 +1,7 @@
1
+ import { Circumference } from "../shape/Circumference";
2
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
3
+ export declare class CircumferenceResolver implements CollisionResolver {
4
+ private distance;
5
+ private direction;
6
+ resolve(shapeA: Circumference, shapeB: Circumference): CollisionResolution;
7
+ }
@@ -0,0 +1,6 @@
1
+ import { Vector2 } from "../../../math/Vector2";
2
+ export interface CollisionResolution {
3
+ penetration: number;
4
+ direction: Vector2;
5
+ displacementDirection: Vector2;
6
+ }
@@ -0,0 +1,10 @@
1
+ import { Shape } from "../shape/Shape";
2
+ import { Vector2 } from "../../../math/Vector2";
3
+ export interface CollisionResolution {
4
+ penetration: number;
5
+ direction: Vector2;
6
+ displacementDirection: Vector2;
7
+ }
8
+ export interface CollisionResolver {
9
+ resolve(shapeA: Shape, shapeB: Shape): CollisionResolution | null;
10
+ }
@@ -0,0 +1,15 @@
1
+ import { Line } from "../shape/Line";
2
+ import { Polygon } from "../shape/Polygon";
3
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
4
+ export declare class PolygonPolygonResolver implements CollisionResolver {
5
+ private axes;
6
+ private projA;
7
+ private projB;
8
+ private currentOverlap;
9
+ private minOverlap;
10
+ private displaceDirection;
11
+ private direction;
12
+ resolve(shapeA: Polygon | Line, shapeB: Polygon | Line): CollisionResolution | null;
13
+ private projectShapeOntoAxis;
14
+ private preventContainment;
15
+ }
@@ -0,0 +1,11 @@
1
+ import { Rectangle } from "../shape/Rectangle";
2
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
3
+ export declare class RectangleRectangleResolver implements CollisionResolver {
4
+ private overlapX;
5
+ private overlapY;
6
+ private minOverlap;
7
+ private direction;
8
+ private displacementDirection;
9
+ resolve(shapeA: Rectangle, shapeB: Rectangle): CollisionResolution | null;
10
+ private preventContainment;
11
+ }
@@ -1,14 +1,18 @@
1
1
  import { Shape } from "../shape/Shape";
2
- import { CollisionData } from "../CollisionData";
3
- import { ICollisionResolver } from "./ICollisionResolver";
4
- export declare class SatResolver implements ICollisionResolver {
2
+ import { CollisionResolution, CollisionResolver } from "./CollisionResolver";
3
+ export declare class SatResolver implements CollisionResolver {
5
4
  private axes;
6
- private proj1;
7
- private proj2;
5
+ private projA;
6
+ private projB;
8
7
  private currentOverlap;
9
8
  private minOverlap;
10
9
  private displaceDirection;
11
- getCollisionData(shape1: Shape, shape2: Shape): CollisionData | null;
10
+ private direction;
11
+ private distance;
12
+ private cache;
13
+ resolve(shapeA: Shape, shapeB: Shape): CollisionResolution | null;
12
14
  private projectShapeOntoAxis;
13
15
  private preventContainment;
16
+ private setCircumferenceAxis;
17
+ private setCircumferenceVertices;
14
18
  }
@@ -0,0 +1,18 @@
1
+ import { Rectangle } from "../../../math/Rectangle";
2
+ import { Vector2 } from "../../../math/Vector2";
3
+ import { Shape, ShapeType } from "./Shape";
4
+ export declare class Circumference implements Shape {
5
+ readonly type: ShapeType;
6
+ readonly vertices: Vector2[];
7
+ readonly projectionAxes: Vector2[];
8
+ readonly boundingBox: Rectangle;
9
+ readonly angle: number;
10
+ readonly vertexModel: Vector2[];
11
+ radius: number;
12
+ protected _position: Vector2;
13
+ constructor(radius: number);
14
+ set position(value: Vector2);
15
+ get position(): Vector2;
16
+ update(): void;
17
+ protected updateBoundingBox(): void;
18
+ }
@@ -0,0 +1,19 @@
1
+ import { Rectangle } from "../../../math/Rectangle";
2
+ import { Vector2 } from "../../../math/Vector2";
3
+ import { Shape, ShapeType } from "./Shape";
4
+ export declare class Line implements Shape {
5
+ vertexModel: [Vector2, Vector2];
6
+ readonly type: ShapeType;
7
+ readonly vertices: Vector2[];
8
+ readonly projectionAxes: Vector2[];
9
+ readonly boundingBox: Rectangle;
10
+ angle: number;
11
+ private _position;
12
+ constructor(vertexModel: [Vector2, Vector2]);
13
+ update(): void;
14
+ set position(value: Vector2);
15
+ get position(): Vector2;
16
+ protected updateVertices(): void;
17
+ protected updateBoundingBox(): void;
18
+ protected updateProjectionAxes(): void;
19
+ }
@@ -0,0 +1,31 @@
1
+ import { Rectangle } from "../../../math/Rectangle";
2
+ import { Vector2 } from "../../../math/Vector2";
3
+ import { Shape, ShapeType } from "./Shape";
4
+ export declare class Polygon implements Shape {
5
+ protected _type: ShapeType;
6
+ protected _vertices: Vector2[];
7
+ protected _boundingBox: Rectangle;
8
+ protected _projectionAxes: Vector2[];
9
+ protected _position: Vector2;
10
+ protected _angle: number;
11
+ protected _vertexModel: Vector2[];
12
+ private boxMinX;
13
+ private boxMinY;
14
+ private boxMaxX;
15
+ private boxMaxY;
16
+ constructor(vertexModel: Vector2[]);
17
+ get type(): ShapeType;
18
+ get vertices(): Vector2[];
19
+ get boundingBox(): Rectangle;
20
+ get projectionAxes(): Vector2[];
21
+ set position(value: Vector2);
22
+ get position(): Vector2;
23
+ set angle(value: number);
24
+ get angle(): number;
25
+ get vertexModel(): Vector2[];
26
+ set vertexModel(value: Vector2[]);
27
+ update(): void;
28
+ protected updateVertices(): void;
29
+ protected updateBoundingBox(): void;
30
+ protected updateProjectionAxes(): void;
31
+ }
@@ -1,13 +1,9 @@
1
1
  import { Vector2 } from "../../../math/Vector2";
2
- import { Shape } from "./Shape";
3
- export declare class Rectangle extends Shape {
4
- private cacheVector;
5
- private axes;
6
- constructor(position: Vector2, width: number, height: number, angle?: number);
7
- update(): void;
8
- private updateModel;
9
- private updateDirection;
10
- private updateAxes;
11
- clone(): Rectangle;
12
- getAxes(): Vector2[];
2
+ import { Polygon } from "./Polygon";
3
+ export declare class Rectangle extends Polygon {
4
+ width: number;
5
+ height: number;
6
+ constructor(width: number, height: number, position: Vector2);
7
+ updateSize(width: number, height: number): void;
8
+ protected updateProjectionAxes(): void;
13
9
  }
@@ -1,28 +1,17 @@
1
+ import { Rectangle } from "../../../math/Rectangle";
1
2
  import { Vector2 } from "../../../math/Vector2";
2
3
  export declare enum ShapeType {
3
- Rectangle = 0
4
+ Polygon = 0,
5
+ Circumference = 1,
6
+ Line = 2
4
7
  }
5
- export declare abstract class Shape {
6
- protected _type: ShapeType;
7
- protected _model: Vector2[];
8
- protected _vertices: Vector2[];
9
- protected _position: Vector2;
10
- protected _direction: Vector2;
11
- protected _height: number;
12
- protected _width: number;
13
- protected _angle: number;
14
- get type(): ShapeType;
15
- get position(): Vector2;
16
- set position(position: Vector2);
17
- get angle(): number;
18
- set angle(angle: number);
19
- get width(): number;
20
- set width(width: number);
21
- get height(): number;
22
- set height(height: number);
23
- get direction(): Vector2;
24
- get vertices(): Vector2[];
25
- abstract update(): void;
26
- abstract clone(): Shape;
27
- abstract getAxes(): Vector2[];
8
+ export interface Shape {
9
+ readonly vertices: Vector2[];
10
+ readonly type: ShapeType;
11
+ readonly boundingBox: Rectangle;
12
+ readonly projectionAxes: Vector2[];
13
+ vertexModel: Vector2[];
14
+ position: Vector2;
15
+ angle: number;
16
+ update(): void;
28
17
  }
@@ -0,0 +1,8 @@
1
+ import { Vector2 } from "../../math/Vector2";
2
+ export declare class CollisionData {
3
+ private _penetration;
4
+ private _displacementDirection;
5
+ constructor(penetration: number, displacementDirection: Vector2);
6
+ get penetration(): number;
7
+ get displacementDirection(): Vector2;
8
+ }
@@ -0,0 +1,30 @@
1
+ import { Rectangle } from "../../math/Rectangle";
2
+ import { ICollider } from "./collider/ICollider";
3
+ import { CollisionData } from "./CollisionData";
4
+ import { ICollisionResolver } from "./resolver/ICollisionResolver";
5
+ export interface Collision {
6
+ localCollider: ICollider;
7
+ remoteCollider: ICollider;
8
+ collisionData: CollisionData;
9
+ }
10
+ export declare class CollisionManager {
11
+ private colliders;
12
+ private quadTree;
13
+ private bounds;
14
+ private fixedQuadTree;
15
+ private resolver;
16
+ private collisions;
17
+ private minBounds;
18
+ private maxBounds;
19
+ private newBounds;
20
+ constructor(resolver: ICollisionResolver, quadTreeBounds: Rectangle | null, quadMaxLevel: number, collidersPerQuad: number);
21
+ addCollider(collider: ICollider): void;
22
+ removeCollider(collider: ICollider): void;
23
+ getFrameCollisionsForCollider(collider: ICollider): Collision[];
24
+ refreshCollisionsForCollider(collider: ICollider): Collision[];
25
+ update(): void;
26
+ private updateNewBounds;
27
+ private updateCollisions;
28
+ private broadPhase;
29
+ private narrowPhase;
30
+ }