emeraldengine 3.0.0 → 3.1.0
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.
- package/README.md +1498 -1659
- package/dist/types/index.d.ts +4 -1
- package/dist/types/src/Animator.d.ts +1 -1
- package/dist/types/src/CollisionLayers.d.ts +2 -2
- package/dist/types/src/Color.d.ts +1 -0
- package/dist/types/src/Drawable.d.ts +1 -1
- package/dist/types/src/EmeraldDB.d.ts +2 -2
- package/dist/types/src/InstancedTexture.d.ts +17 -2
- package/dist/types/src/Material.d.ts +2 -2
- package/dist/types/src/MathUtils.d.ts +2 -1
- package/dist/types/src/ParticleEmitter.d.ts +1 -1
- package/dist/types/src/Physics.d.ts +148 -18
- package/dist/types/src/Scene.d.ts +1 -1
- package/dist/types/src/Shaders.d.ts +2 -2
- package/dist/types/src/Tilemap.d.ts +1 -1
- package/dist/types/src/UI.d.ts +1 -1
- package/dist/types/src/components/Behaviour.d.ts +2 -2
- package/dist/types/src/components/Collider.d.ts +7 -1
- package/dist/types/src/components/GameObject.d.ts +2 -2
- package/dist/types/src/components/PolygonCollider.d.ts +33 -0
- package/dist/types/src/components/RigidBody.d.ts +281 -8
- package/dist/types/src/importers/Aseprite.d.ts +2 -2
- package/dist/types/src/importers/ForgeLevel.d.ts +97 -0
- package/dist/types/src/importers/TiledMap.d.ts +1 -1
- package/dist/types/src/managers/EventManager.d.ts +1 -1
- package/dist/types/src/managers/Gamepad.d.ts +102 -0
- package/dist/types/src/managers/InputManager.d.ts +93 -2
- package/dist/types/src/managers/NetworkManager.d.ts +2 -2
- package/dist/types/src/managers/RenderStats.d.ts +1 -1
- package/dist/types/src/managers/TextureManager.d.ts +1 -1
- package/dist/types/src/physics/AABB.d.ts +92 -0
- package/dist/types/src/physics/Body.d.ts +435 -0
- package/dist/types/src/physics/BodyType.d.ts +6 -0
- package/dist/types/src/physics/BroadPhase.d.ts +210 -0
- package/dist/types/src/physics/Collision.d.ts +102 -0
- package/dist/types/src/physics/Contact.d.ts +206 -0
- package/dist/types/src/physics/ContactSolver.d.ts +108 -0
- package/dist/types/src/physics/Distance.d.ts +54 -0
- package/dist/types/src/physics/DistanceJoint.d.ts +90 -0
- package/dist/types/src/physics/Fixture.d.ts +221 -0
- package/dist/types/src/physics/Island.d.ts +52 -0
- package/dist/types/src/physics/Joint.d.ts +59 -0
- package/dist/types/src/physics/Math2D.d.ts +371 -0
- package/dist/types/src/physics/RevoluteJoint.d.ts +119 -0
- package/dist/types/src/physics/Settings.d.ts +22 -0
- package/dist/types/src/physics/Shapes.d.ts +207 -0
- package/dist/types/src/physics/TimeOfImpact.d.ts +22 -0
- package/dist/types/src/physics/World.d.ts +274 -0
- package/dist/types/src/physics/index.d.ts +34 -0
- package/index.js +6 -0
- package/package.json +2 -3
- package/src/Animator.js +1 -1
- package/src/CollisionLayers.js +3 -3
- package/src/Color.js +8 -0
- package/src/Drawable.js +1 -1
- package/src/Emerald.js +1 -1
- package/src/EmeraldDB.js +2 -2
- package/src/InstancedTexture.js +57 -9
- package/src/Material.js +2 -2
- package/src/MathUtils.js +2 -1
- package/src/ParticleEmitter.js +1 -1
- package/src/Physics.js +270 -60
- package/src/Scene.js +1 -1
- package/src/Shaders.js +20 -20
- package/src/Tilemap.js +1 -1
- package/src/UI.js +1 -1
- package/src/components/Behaviour.js +2 -2
- package/src/components/BoxCollider.js +7 -9
- package/src/components/BoxColliderDebug.js +3 -4
- package/src/components/CircleCollider.js +7 -9
- package/src/components/CircleColliderDebug.js +3 -2
- package/src/components/Collider.js +13 -3
- package/src/components/GameObject.js +2 -2
- package/src/components/PolygonCollider.js +55 -0
- package/src/components/RigidBody.js +441 -14
- package/src/importers/Aseprite.js +2 -2
- package/src/importers/ForgeLevel.js +581 -0
- package/src/importers/TiledMap.js +1 -1
- package/src/managers/EventManager.js +1 -1
- package/src/managers/Gamepad.js +126 -0
- package/src/managers/InputManager.js +129 -3
- package/src/managers/NetworkManager.js +2 -2
- package/src/managers/RenderStats.js +1 -1
- package/src/managers/TextureManager.js +1 -1
- package/src/physics/AABB.js +207 -0
- package/src/physics/Body.js +862 -0
- package/src/physics/BodyType.js +16 -0
- package/src/physics/BroadPhase.js +641 -0
- package/src/physics/Collision.js +534 -0
- package/src/physics/Contact.js +500 -0
- package/src/physics/ContactSolver.js +526 -0
- package/src/physics/Distance.js +403 -0
- package/src/physics/DistanceJoint.js +227 -0
- package/src/physics/Fixture.js +346 -0
- package/src/physics/Island.js +203 -0
- package/src/physics/Joint.js +78 -0
- package/src/physics/Math2D.js +573 -0
- package/src/physics/RevoluteJoint.js +278 -0
- package/src/physics/Settings.js +78 -0
- package/src/physics/Shapes.js +549 -0
- package/src/physics/TimeOfImpact.js +87 -0
- package/src/physics/World.js +731 -0
- package/src/physics/index.js +79 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Emerald's built-in 2D rigid-body physics engine.
|
|
3
|
+
* @description A complete, dependency-free simulation: a dynamic AABB tree
|
|
4
|
+
* broadphase, SAT/GJK narrowphase, an impulse-based contact solver with warm
|
|
5
|
+
* starting and island sleeping, and conservative-advancement continuous
|
|
6
|
+
* collision detection.
|
|
7
|
+
*
|
|
8
|
+
* Everything here works in physics units (meters, radians, seconds). Games
|
|
9
|
+
* normally use {@link Physics}, {@link RigidBody}, {@link BoxCollider} and
|
|
10
|
+
* {@link CircleCollider} instead, which handle the pixel conversion; reach for
|
|
11
|
+
* this module directly only when you want a bare world.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { World, Box, Vec2 } from "emeraldengine/src/physics/index.js";
|
|
15
|
+
* const world = new World({ gravity: new Vec2(0, -10) });
|
|
16
|
+
* const ground = world.createBody({ type: "static", position: new Vec2(0, 0) });
|
|
17
|
+
* ground.createFixture(Box(50, 1), { friction: 0.4 });
|
|
18
|
+
* const crate = world.createBody({ type: "dynamic", position: new Vec2(0, 8) });
|
|
19
|
+
* crate.createFixture(Box(0.5, 0.5), { density: 1, friction: 0.3 });
|
|
20
|
+
* world.step(1 / 60);
|
|
21
|
+
*/
|
|
22
|
+
import World from "./World.js";
|
|
23
|
+
import { Body, BodyType } from "./Body.js";
|
|
24
|
+
import { Fixture } from "./Fixture.js";
|
|
25
|
+
import { Contact, ContactManager, shouldCollide } from "./Contact.js";
|
|
26
|
+
import {
|
|
27
|
+
Shape,
|
|
28
|
+
ShapeType,
|
|
29
|
+
CircleShape,
|
|
30
|
+
PolygonShape,
|
|
31
|
+
Box,
|
|
32
|
+
Circle,
|
|
33
|
+
} from "./Shapes.js";
|
|
34
|
+
import { Vec2, Rot, Transform2, Sweep } from "./Math2D.js";
|
|
35
|
+
import AABB from "./AABB.js";
|
|
36
|
+
import Settings from "./Settings.js";
|
|
37
|
+
import { Manifold, ManifoldType, WorldManifold } from "./Collision.js";
|
|
38
|
+
import { DistanceProxy, distance, testOverlap } from "./Distance.js";
|
|
39
|
+
import { timeOfImpact, TOIState } from "./TimeOfImpact.js";
|
|
40
|
+
import { BroadPhase, DynamicTree } from "./BroadPhase.js";
|
|
41
|
+
import { Joint, JointType } from "./Joint.js";
|
|
42
|
+
import DistanceJoint from "./DistanceJoint.js";
|
|
43
|
+
import RevoluteJoint from "./RevoluteJoint.js";
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
World,
|
|
47
|
+
Body,
|
|
48
|
+
BodyType,
|
|
49
|
+
Fixture,
|
|
50
|
+
Contact,
|
|
51
|
+
ContactManager,
|
|
52
|
+
shouldCollide,
|
|
53
|
+
Shape,
|
|
54
|
+
ShapeType,
|
|
55
|
+
CircleShape,
|
|
56
|
+
PolygonShape,
|
|
57
|
+
Box,
|
|
58
|
+
Circle,
|
|
59
|
+
Vec2,
|
|
60
|
+
Rot,
|
|
61
|
+
Transform2,
|
|
62
|
+
Sweep,
|
|
63
|
+
AABB,
|
|
64
|
+
Settings,
|
|
65
|
+
Manifold,
|
|
66
|
+
ManifoldType,
|
|
67
|
+
WorldManifold,
|
|
68
|
+
DistanceProxy,
|
|
69
|
+
distance,
|
|
70
|
+
testOverlap,
|
|
71
|
+
timeOfImpact,
|
|
72
|
+
TOIState,
|
|
73
|
+
BroadPhase,
|
|
74
|
+
DynamicTree,
|
|
75
|
+
Joint,
|
|
76
|
+
JointType,
|
|
77
|
+
DistanceJoint,
|
|
78
|
+
RevoluteJoint,
|
|
79
|
+
};
|