@gg-web-engine/core 0.0.28 → 0.0.30
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/dist/2d/components/physics/i-physics-world-2d.component.d.ts +2 -3
- package/dist/2d/components/physics/i-rigid-body-2d.component.d.ts +2 -2
- package/dist/2d/components/physics/i-trigger-2d.component.d.ts +4 -5
- package/dist/2d/components/rendering/i-display-object-2d.component.d.ts +2 -2
- package/dist/2d/components/rendering/i-renderer-2d.component.d.ts +2 -2
- package/dist/2d/components/rendering/i-visual-scene-2d.component.d.ts +3 -5
- package/dist/2d/entities/controllers/entity-2d-positioning.animator.d.ts +2 -2
- package/dist/2d/entities/entity-2d.d.ts +6 -9
- package/dist/2d/entities/i-renderable-2d.entity.d.ts +2 -3
- package/dist/2d/entities/renderer-2d.entity.d.ts +2 -3
- package/dist/2d/entities/trigger-2d.entity.d.ts +4 -3
- package/dist/2d/factories.d.ts +13 -10
- package/dist/2d/factories.js +8 -5
- package/dist/2d/gg-2d-world.d.ts +22 -6
- package/dist/2d/gg-2d-world.js +2 -2
- package/dist/3d/components/physics/i-physics-world-3d.component.d.ts +3 -5
- package/dist/3d/components/physics/i-raycast-vehicle.component.d.ts +3 -2
- package/dist/3d/components/physics/i-rigid-body-3d.component.d.ts +2 -2
- package/dist/3d/components/physics/i-trigger-3d.component.d.ts +4 -5
- package/dist/3d/components/rendering/i-camera.component.d.ts +2 -2
- package/dist/3d/components/rendering/i-display-object-3d.component.d.ts +2 -2
- package/dist/3d/components/rendering/i-renderer-3d.component.d.ts +3 -4
- package/dist/3d/components/rendering/i-visual-scene-3d.component.d.ts +4 -8
- package/dist/3d/entities/controllers/animators/camera-3d.animator.d.ts +6 -6
- package/dist/3d/entities/controllers/animators/entity-3d-positioning.animator.d.ts +2 -2
- package/dist/3d/entities/controllers/input/free-camera.controller.d.ts +1 -1
- package/dist/3d/entities/controllers/input/free-camera.controller.js +1 -1
- package/dist/3d/entities/controllers/input/orbit-camera.controller.d.ts +1 -1
- package/dist/3d/entities/controllers/input/orbit-camera.controller.js +1 -1
- package/dist/3d/entities/entity-3d.d.ts +5 -6
- package/dist/3d/entities/gg-car/gg-car.entity.d.ts +9 -8
- package/dist/3d/entities/gg-car/gg-car.entity.js +20 -8
- package/dist/3d/entities/i-renderable-3d.entity.d.ts +2 -3
- package/dist/3d/entities/map-graph-3d.entity.d.ts +20 -14
- package/dist/3d/entities/raycast-vehicle-3d.entity.d.ts +4 -4
- package/dist/3d/entities/raycast-vehicle-3d.entity.js +0 -1
- package/dist/3d/entities/renderer-3d.entity.d.ts +3 -5
- package/dist/3d/entities/trigger-3d.entity.d.ts +4 -3
- package/dist/3d/factories.d.ts +29 -13
- package/dist/3d/factories.js +12 -6
- package/dist/3d/gg-3d-world.d.ts +28 -7
- package/dist/3d/gg-3d-world.js +2 -2
- package/dist/3d/loader.d.ts +12 -14
- package/dist/3d/loaders.d.ts +5 -6
- package/dist/3d/models/shapes.d.ts +2 -0
- package/dist/base/components/i-world-component.d.ts +4 -6
- package/dist/base/components/physics/i-body.component.d.ts +10 -7
- package/dist/base/components/physics/i-physics-world.component.d.ts +6 -3
- package/dist/base/components/physics/i-rigid-body.component.d.ts +3 -3
- package/dist/base/components/physics/i-trigger.component.d.ts +5 -5
- package/dist/base/components/rendering/i-display-object.component.d.ts +6 -6
- package/dist/base/components/rendering/i-renderer.component.d.ts +7 -7
- package/dist/base/components/rendering/i-visual-scene.component.d.ts +4 -3
- package/dist/base/data-structures/bitmask.d.ts +30 -0
- package/dist/base/data-structures/bitmask.js +55 -0
- package/dist/base/entities/controllers/animation-mixer.d.ts +3 -3
- package/dist/base/entities/i-entity.d.ts +8 -10
- package/dist/base/entities/i-renderable.entity.d.ts +2 -3
- package/dist/base/entities/i-renderer.entity.d.ts +6 -7
- package/dist/base/gg-world.d.ts +17 -6
- package/dist/base/index.d.ts +1 -0
- package/dist/base/index.js +1 -0
- package/dist/base/interfaces/i-debug-physics-drawer.d.ts +2 -2
- package/dist/base/math/quaternion.d.ts +14 -0
- package/dist/base/math/quaternion.js +18 -0
- package/dist/base/models/body-options.d.ts +3 -0
- package/package.json +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IPhysicsWorldComponent, Point2 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
export interface IPhysicsWorld2dComponent extends IPhysicsWorldComponent<Point2, number> {
|
|
4
|
-
readonly factory: IPhysicsBody2dComponentFactory;
|
|
2
|
+
import { PhysicsTypeDocRepo2D } from '../../gg-2d-world';
|
|
3
|
+
export interface IPhysicsWorld2dComponent<TypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> extends IPhysicsWorldComponent<Point2, number, TypeDoc> {
|
|
5
4
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IRigidBodyComponent, Point2 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
export interface IRigidBody2dComponent<
|
|
2
|
+
import { PhysicsTypeDocRepo2D } from '../../gg-2d-world';
|
|
3
|
+
export interface IRigidBody2dComponent<TypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> extends IRigidBodyComponent<Point2, number, TypeDoc> {
|
|
4
4
|
angularVelocity: number;
|
|
5
5
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ITriggerComponent, Point2 } from '../../../base';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
get
|
|
7
|
-
get onEntityLeft(): Observable<IRigidBody2dComponent | null>;
|
|
3
|
+
import { PhysicsTypeDocRepo2D } from '../../gg-2d-world';
|
|
4
|
+
export interface ITrigger2dComponent<TypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> extends ITriggerComponent<Point2, number, TypeDoc> {
|
|
5
|
+
get onEntityEntered(): Observable<TypeDoc['rigidBody']>;
|
|
6
|
+
get onEntityLeft(): Observable<TypeDoc['rigidBody'] | null>;
|
|
8
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IDisplayObjectComponent, Point2 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
export interface IDisplayObject2dComponent<
|
|
2
|
+
import { VisualTypeDocRepo2D } from '../../gg-2d-world';
|
|
3
|
+
export interface IDisplayObject2dComponent<TypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D> extends IDisplayObjectComponent<Point2, number, TypeDoc> {
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IRendererComponent, Point2 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
export declare abstract class IRenderer2dComponent<
|
|
2
|
+
import { VisualTypeDocRepo2D } from '../../gg-2d-world';
|
|
3
|
+
export declare abstract class IRenderer2dComponent<TypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D> extends IRendererComponent<Point2, number, TypeDoc> {
|
|
4
4
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { IVisualSceneComponent, Point2, RendererOptions } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readonly factory: IGg2dObjectFactory;
|
|
6
|
-
createRenderer(canvas?: HTMLCanvasElement, rendererOptions?: Partial<RendererOptions>): IRenderer2dComponent;
|
|
2
|
+
import { VisualTypeDocRepo2D } from '../../gg-2d-world';
|
|
3
|
+
export interface IVisualScene2dComponent<TypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D> extends IVisualSceneComponent<Point2, number, TypeDoc> {
|
|
4
|
+
createRenderer(canvas?: HTMLCanvasElement, rendererOptions?: Partial<RendererOptions>): TypeDoc['renderer'];
|
|
7
5
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AnimationFunction, AnimationMixer, Point2 } from '../../../base';
|
|
2
|
-
import { Gg2dWorld } from '../../gg-2d-world';
|
|
2
|
+
import { Gg2dWorld, PhysicsTypeDocRepo2D, VisualTypeDocRepo2D } from '../../gg-2d-world';
|
|
3
3
|
import { Entity2d } from '../entity-2d';
|
|
4
4
|
declare type Positioning2d = {
|
|
5
5
|
position: Point2;
|
|
6
6
|
rotation: number;
|
|
7
7
|
};
|
|
8
|
-
export declare class Entity2dPositioningAnimator<T extends Entity2d = Entity2d> extends AnimationMixer<Positioning2d> {
|
|
8
|
+
export declare class Entity2dPositioningAnimator<T extends Entity2d = Entity2d> extends AnimationMixer<Positioning2d, Point2, number, VisualTypeDocRepo2D, PhysicsTypeDocRepo2D> {
|
|
9
9
|
entity: T;
|
|
10
10
|
protected _animationFunction: AnimationFunction<Positioning2d>;
|
|
11
11
|
constructor(entity: T, _animationFunction: AnimationFunction<Positioning2d>);
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { Point2, TickOrder } from '../../base';
|
|
2
|
-
import { IRigidBody2dComponent } from '../components/physics/i-rigid-body-2d.component';
|
|
3
|
-
import { IDisplayObject2dComponent } from '../components/rendering/i-display-object-2d.component';
|
|
4
2
|
import { IPositionable2d } from '../interfaces/i-positionable-2d';
|
|
5
3
|
import { IRenderable2dEntity } from './i-renderable-2d.entity';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly
|
|
10
|
-
readonly objectBody: IRigidBody2dComponent | null;
|
|
4
|
+
import { PhysicsTypeDocRepo2D, VisualTypeDocRepo2D } from '../gg-2d-world';
|
|
5
|
+
export declare class Entity2d<VTypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D, PTypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> extends IRenderable2dEntity<VTypeDoc, PTypeDoc> implements IPositionable2d {
|
|
6
|
+
readonly object2D: VTypeDoc['displayObject'] | null;
|
|
7
|
+
readonly objectBody: PTypeDoc['rigidBody'] | null;
|
|
11
8
|
readonly tickOrder = TickOrder.OBJECTS_BINDING;
|
|
12
9
|
private _position;
|
|
13
10
|
get position(): Point2;
|
|
@@ -19,6 +16,6 @@ export declare class Entity2d<VS extends IVisualScene2dComponent = IVisualScene2
|
|
|
19
16
|
/**
|
|
20
17
|
* Synchronize physics body transform with entity (and object2d if defined)
|
|
21
18
|
* */
|
|
22
|
-
protected runTransformBinding(objectBody:
|
|
23
|
-
constructor(object2D:
|
|
19
|
+
protected runTransformBinding(objectBody: PTypeDoc['rigidBody'], object2D: VTypeDoc['displayObject'] | null): void;
|
|
20
|
+
constructor(object2D: VTypeDoc['displayObject'] | null, objectBody: PTypeDoc['rigidBody'] | null);
|
|
24
21
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IRenderableEntity, Point2 } from '../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare abstract class IRenderable2dEntity<VS extends IVisualScene2dComponent = IVisualScene2dComponent, PW extends IPhysicsWorld2dComponent = IPhysicsWorld2dComponent> extends IRenderableEntity<Point2, number, VS, PW> {
|
|
2
|
+
import { PhysicsTypeDocRepo2D, VisualTypeDocRepo2D } from '../gg-2d-world';
|
|
3
|
+
export declare abstract class IRenderable2dEntity<TypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D, PTypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> extends IRenderableEntity<Point2, number, TypeDoc, PTypeDoc> {
|
|
5
4
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IRendererEntity, Point2 } from '../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare class Renderer2dEntity<RC extends IRenderer2dComponent = IRenderer2dComponent> extends IRendererEntity<Point2, number, IVisualScene2dComponent, RC> {
|
|
2
|
+
import { VisualTypeDocRepo2D } from '../gg-2d-world';
|
|
3
|
+
export declare class Renderer2dEntity<TypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D> extends IRendererEntity<Point2, number, TypeDoc> {
|
|
5
4
|
}
|
|
@@ -2,11 +2,12 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import { ITrigger2dComponent } from '../components/physics/i-trigger-2d.component';
|
|
3
3
|
import { IEntity, Point2, TickOrder } from '../../base';
|
|
4
4
|
import { IPositionable2d } from '../interfaces/i-positionable-2d';
|
|
5
|
-
|
|
5
|
+
import { PhysicsTypeDocRepo2D, VisualTypeDocRepo2D } from '../gg-2d-world';
|
|
6
|
+
export declare class Trigger2dEntity<TypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> extends IEntity<Point2, number, VisualTypeDocRepo2D, TypeDoc> implements IPositionable2d {
|
|
6
7
|
readonly objectBody: ITrigger2dComponent;
|
|
7
8
|
readonly tickOrder = TickOrder.OBJECTS_BINDING;
|
|
8
|
-
get onEntityEntered(): Observable<IEntity & IPositionable2d>;
|
|
9
|
-
get onEntityLeft(): Observable<(IEntity & IPositionable2d) | null>;
|
|
9
|
+
get onEntityEntered(): Observable<IEntity<Point2, number, VisualTypeDocRepo2D, TypeDoc> & IPositionable2d>;
|
|
10
|
+
get onEntityLeft(): Observable<(IEntity<Point2, number, VisualTypeDocRepo2D, TypeDoc> & IPositionable2d) | null>;
|
|
10
11
|
private _position;
|
|
11
12
|
get position(): Point2;
|
|
12
13
|
set position(value: Point2);
|
package/dist/2d/factories.d.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { Point2 } from '../base';
|
|
2
2
|
import { BodyShape2DDescriptor, Shape2DDescriptor } from './models/shapes';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { PhysicsTypeDocRepo2D, VisualTypeDocRepo2D } from './gg-2d-world';
|
|
4
|
+
export declare type DisplayObject2dOpts<Tex> = {
|
|
5
|
+
color?: number;
|
|
6
|
+
texture?: Tex;
|
|
7
|
+
};
|
|
8
|
+
export declare abstract class IDisplayObject2dComponentFactory<TypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D> {
|
|
9
|
+
abstract createPrimitive(descriptor: Shape2DDescriptor, material?: DisplayObject2dOpts<TypeDoc['texture']>): TypeDoc['displayObject'];
|
|
10
|
+
randomColor(): number;
|
|
11
|
+
createSquare(dimensions: Point2, material?: DisplayObject2dOpts<TypeDoc['texture']>): TypeDoc['displayObject'];
|
|
12
|
+
createCircle(radius: number, material?: DisplayObject2dOpts<TypeDoc['texture']>): TypeDoc['displayObject'];
|
|
10
13
|
}
|
|
11
|
-
export interface IPhysicsBody2dComponentFactory<
|
|
14
|
+
export interface IPhysicsBody2dComponentFactory<TypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D> {
|
|
12
15
|
createRigidBody(descriptor: BodyShape2DDescriptor, transform?: {
|
|
13
16
|
position?: Point2;
|
|
14
17
|
rotation?: number;
|
|
15
|
-
}):
|
|
18
|
+
}): TypeDoc['rigidBody'];
|
|
16
19
|
createTrigger(descriptor: Shape2DDescriptor, transform?: {
|
|
17
20
|
position?: Point2;
|
|
18
21
|
rotation?: number;
|
|
19
|
-
}):
|
|
22
|
+
}): TypeDoc['trigger'];
|
|
20
23
|
}
|
package/dist/2d/factories.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class IDisplayObject2dComponentFactory {
|
|
2
|
+
randomColor() {
|
|
3
|
+
return ((Math.floor(Math.random() * 256) << 16) | (Math.floor(Math.random() * 256) << 8) | Math.floor(Math.random() * 256));
|
|
4
|
+
}
|
|
2
5
|
// shortcuts
|
|
3
|
-
createSquare(dimensions) {
|
|
4
|
-
return this.createPrimitive({ shape: 'SQUARE', dimensions });
|
|
6
|
+
createSquare(dimensions, material = {}) {
|
|
7
|
+
return this.createPrimitive({ shape: 'SQUARE', dimensions }, material);
|
|
5
8
|
}
|
|
6
|
-
createCircle(radius) {
|
|
7
|
-
return this.createPrimitive({ shape: 'CIRCLE', radius });
|
|
9
|
+
createCircle(radius, material = {}) {
|
|
10
|
+
return this.createPrimitive({ shape: 'CIRCLE', radius }, material);
|
|
8
11
|
}
|
|
9
12
|
}
|
package/dist/2d/gg-2d-world.d.ts
CHANGED
|
@@ -4,10 +4,26 @@ import { Entity2d } from './entities/entity-2d';
|
|
|
4
4
|
import { IPhysicsWorld2dComponent } from './components/physics/i-physics-world-2d.component';
|
|
5
5
|
import { IVisualScene2dComponent } from './components/rendering/i-visual-scene-2d.component';
|
|
6
6
|
import { Renderer2dEntity } from './entities/renderer-2d.entity';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import { DisplayObject2dOpts, IDisplayObject2dComponentFactory, IPhysicsBody2dComponentFactory } from './factories';
|
|
8
|
+
import { IRenderer2dComponent } from './components/rendering/i-renderer-2d.component';
|
|
9
|
+
import { IDisplayObject2dComponent } from './components/rendering/i-display-object-2d.component';
|
|
10
|
+
import { ITrigger2dComponent } from './components/physics/i-trigger-2d.component';
|
|
11
|
+
import { IRigidBody2dComponent } from './components/physics/i-rigid-body-2d.component';
|
|
12
|
+
export declare type VisualTypeDocRepo2D = {
|
|
13
|
+
factory: IDisplayObject2dComponentFactory;
|
|
14
|
+
displayObject: IDisplayObject2dComponent;
|
|
15
|
+
renderer: IRenderer2dComponent;
|
|
16
|
+
texture: unknown;
|
|
17
|
+
};
|
|
18
|
+
export declare type PhysicsTypeDocRepo2D = {
|
|
19
|
+
factory: IPhysicsBody2dComponentFactory;
|
|
20
|
+
rigidBody: IRigidBody2dComponent;
|
|
21
|
+
trigger: ITrigger2dComponent;
|
|
22
|
+
};
|
|
23
|
+
export declare class Gg2dWorld<VTypeDoc extends VisualTypeDocRepo2D = VisualTypeDocRepo2D, PTypeDoc extends PhysicsTypeDocRepo2D = PhysicsTypeDocRepo2D, VS extends IVisualScene2dComponent<VTypeDoc> = IVisualScene2dComponent<VTypeDoc>, PW extends IPhysicsWorld2dComponent<PTypeDoc> = IPhysicsWorld2dComponent<PTypeDoc>> extends GgWorld<Point2, number, VTypeDoc, PTypeDoc, VS, PW> {
|
|
24
|
+
readonly visualScene: VS;
|
|
25
|
+
readonly physicsWorld: PW;
|
|
26
|
+
constructor(visualScene: VS, physicsWorld: PW);
|
|
27
|
+
addPrimitiveRigidBody(descr: BodyShape2DDescriptor, position?: Point2, rotation?: number, material?: DisplayObject2dOpts<VTypeDoc['texture']>): Entity2d<VTypeDoc, PTypeDoc>;
|
|
28
|
+
addRenderer(canvas?: HTMLCanvasElement, rendererOptions?: Partial<RendererOptions>): Renderer2dEntity<VTypeDoc>;
|
|
13
29
|
}
|
package/dist/2d/gg-2d-world.js
CHANGED
|
@@ -28,8 +28,8 @@ export class Gg2dWorld extends GgWorld {
|
|
|
28
28
|
'{x: 0, y: value}, 2 arguments set the whole vector. Default value is "9.82" or "0 9.82"');
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
addPrimitiveRigidBody(descr, position = Pnt2.O, rotation = 0) {
|
|
32
|
-
const entity = new Entity2d(this.visualScene.factory.createPrimitive(descr.shape), this.physicsWorld.factory.createRigidBody(descr));
|
|
31
|
+
addPrimitiveRigidBody(descr, position = Pnt2.O, rotation = 0, material = {}) {
|
|
32
|
+
const entity = new Entity2d(this.visualScene.factory.createPrimitive(descr.shape, material), this.physicsWorld.factory.createRigidBody(descr));
|
|
33
33
|
entity.position = position;
|
|
34
34
|
entity.rotation = rotation;
|
|
35
35
|
this.addEntity(entity);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { IPhysicsWorldComponent, Point3, Point4 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readonly factory: IPhysicsBody3dComponentFactory;
|
|
6
|
-
readonly loader: IPhysicsBody3dComponentLoader;
|
|
2
|
+
import { PhysicsTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
export interface IPhysicsWorld3dComponent<TypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D> extends IPhysicsWorldComponent<Point3, Point4, TypeDoc> {
|
|
4
|
+
readonly loader: TypeDoc['loader'];
|
|
7
5
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Point3, Point4 } from '../../../base';
|
|
2
2
|
import { IRigidBody3dComponent } from './i-rigid-body-3d.component';
|
|
3
|
-
import {
|
|
3
|
+
import { PhysicsTypeDocRepo3D } from '../../gg-3d-world';
|
|
4
4
|
export declare type SuspensionOptions = {
|
|
5
5
|
stiffness: number;
|
|
6
6
|
damping: number;
|
|
@@ -17,7 +17,7 @@ export declare type WheelOptions = {
|
|
|
17
17
|
rollInfluence: number;
|
|
18
18
|
maxTravel: number;
|
|
19
19
|
};
|
|
20
|
-
export interface IRaycastVehicleComponent<
|
|
20
|
+
export interface IRaycastVehicleComponent<TypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D> extends IRigidBody3dComponent<TypeDoc> {
|
|
21
21
|
/** Return speed in m/s, calculated by car itself (which should be shown on the speedometer) */
|
|
22
22
|
get wheelSpeed(): number;
|
|
23
23
|
addWheel(options: WheelOptions, suspensionOptions: SuspensionOptions): void;
|
|
@@ -33,4 +33,5 @@ export interface IRaycastVehicleComponent<PW extends IPhysicsWorld3dComponent =
|
|
|
33
33
|
rotation: Point4;
|
|
34
34
|
};
|
|
35
35
|
resetSuspension(): void;
|
|
36
|
+
clone(): IRaycastVehicleComponent;
|
|
36
37
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IRigidBodyComponent, Point3, Point4 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
export interface IRigidBody3dComponent<
|
|
2
|
+
import { PhysicsTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
export interface IRigidBody3dComponent<TypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D> extends IRigidBodyComponent<Point3, Point4, TypeDoc> {
|
|
4
4
|
angularVelocity: Point3;
|
|
5
5
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ITriggerComponent, Point3, Point4 } from '../../../base';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
get
|
|
7
|
-
get onEntityLeft(): Observable<IRigidBody3dComponent | null>;
|
|
3
|
+
import { PhysicsTypeDocRepo3D } from '../../gg-3d-world';
|
|
4
|
+
export interface ITrigger3dComponent<TypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D> extends ITriggerComponent<Point3, Point4, TypeDoc> {
|
|
5
|
+
get onEntityEntered(): Observable<TypeDoc['rigidBody']>;
|
|
6
|
+
get onEntityLeft(): Observable<TypeDoc['rigidBody'] | null>;
|
|
8
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IDisplayObject3dComponent } from './i-display-object-3d.component';
|
|
2
|
-
import {
|
|
3
|
-
export interface ICameraComponent<
|
|
2
|
+
import { VisualTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
export interface ICameraComponent<TypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D> extends IDisplayObject3dComponent<TypeDoc> {
|
|
4
4
|
get supportsFov(): boolean;
|
|
5
5
|
get fov(): number;
|
|
6
6
|
set fov(f: number);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IDisplayObjectComponent, Point3, Point4 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
export interface IDisplayObject3dComponent<
|
|
2
|
+
import { VisualTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
export interface IDisplayObject3dComponent<TypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D> extends IDisplayObjectComponent<Point3, Point4, TypeDoc> {
|
|
4
4
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IRendererComponent, Point3, Point4 } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
abstract camera: CC;
|
|
2
|
+
import { VisualTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
export declare abstract class IRenderer3dComponent<TypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D> extends IRendererComponent<Point3, Point4, TypeDoc> {
|
|
4
|
+
abstract camera: TypeDoc['camera'];
|
|
6
5
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { IVisualSceneComponent, Point3, Point4, RendererOptions } from '../../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface IVisualScene3dComponent extends IVisualSceneComponent<Point3, Point4> {
|
|
7
|
-
readonly factory: IDisplayObject3dComponentFactory;
|
|
8
|
-
readonly loader: IDisplayObject3dComponentLoader;
|
|
9
|
-
createRenderer(camera: ICameraComponent, canvas?: HTMLCanvasElement, rendererOptions?: Partial<RendererOptions>): IRenderer3dComponent;
|
|
2
|
+
import { VisualTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
export interface IVisualScene3dComponent<TypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D> extends IVisualSceneComponent<Point3, Point4, TypeDoc> {
|
|
4
|
+
readonly loader: TypeDoc['loader'];
|
|
5
|
+
createRenderer(camera: TypeDoc['camera'], canvas?: HTMLCanvasElement, rendererOptions?: Partial<RendererOptions>): TypeDoc['renderer'];
|
|
10
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnimationFunction, AnimationMixer, Point3 } from '../../../../base';
|
|
2
|
-
import { Gg3dWorld } from '../../../gg-3d-world';
|
|
1
|
+
import { AnimationFunction, AnimationMixer, Point3, Point4 } from '../../../../base';
|
|
2
|
+
import { Gg3dWorld, VisualTypeDocRepo3D } from '../../../gg-3d-world';
|
|
3
3
|
import { Renderer3dEntity } from '../../renderer-3d.entity';
|
|
4
4
|
export declare type Camera3dAnimationArgs = {
|
|
5
5
|
position: Point3;
|
|
@@ -7,10 +7,10 @@ export declare type Camera3dAnimationArgs = {
|
|
|
7
7
|
up?: Point3;
|
|
8
8
|
fov?: number;
|
|
9
9
|
};
|
|
10
|
-
export declare class Camera3dAnimator extends AnimationMixer<Camera3dAnimationArgs> {
|
|
11
|
-
entity: Renderer3dEntity
|
|
10
|
+
export declare class Camera3dAnimator<VTypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D> extends AnimationMixer<Camera3dAnimationArgs, Point3, Point4, VTypeDoc> {
|
|
11
|
+
entity: Renderer3dEntity<VTypeDoc>;
|
|
12
12
|
protected _animationFunction: AnimationFunction<Camera3dAnimationArgs>;
|
|
13
|
-
constructor(entity: Renderer3dEntity
|
|
14
|
-
onSpawned(world: Gg3dWorld): void;
|
|
13
|
+
constructor(entity: Renderer3dEntity<VTypeDoc>, _animationFunction: AnimationFunction<Camera3dAnimationArgs>);
|
|
14
|
+
onSpawned(world: Gg3dWorld<VTypeDoc>): void;
|
|
15
15
|
protected applyPositioning(value: Camera3dAnimationArgs): void;
|
|
16
16
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AnimationFunction, AnimationMixer, Point3, Point4 } from '../../../../base';
|
|
2
|
-
import { Gg3dWorld } from '../../../gg-3d-world';
|
|
2
|
+
import { Gg3dWorld, PhysicsTypeDocRepo3D, VisualTypeDocRepo3D } from '../../../gg-3d-world';
|
|
3
3
|
import { IPositionable3d } from '../../../interfaces/i-positionable-3d';
|
|
4
4
|
declare type Positioning3d = {
|
|
5
5
|
position: Point3;
|
|
6
6
|
rotation: Point4;
|
|
7
7
|
};
|
|
8
|
-
export declare class Entity3dPositioningAnimator<T extends IPositionable3d = IPositionable3d> extends AnimationMixer<Positioning3d> {
|
|
8
|
+
export declare class Entity3dPositioningAnimator<T extends IPositionable3d = IPositionable3d> extends AnimationMixer<Positioning3d, Point3, Point4, VisualTypeDocRepo3D, PhysicsTypeDocRepo3D> {
|
|
9
9
|
entity: T;
|
|
10
10
|
protected _animationFunction: AnimationFunction<Positioning3d>;
|
|
11
11
|
constructor(entity: T, _animationFunction: AnimationFunction<Positioning3d>);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DirectionKeyboardInput, DirectionKeyboardKeymap,
|
|
1
|
+
import { DirectionKeyboardInput, DirectionKeyboardKeymap, GgWorld, IEntity, KeyboardInput, MouseInput, MouseInputOptions, TickOrder } from '../../../../base';
|
|
2
2
|
import { Renderer3dEntity } from '../../renderer-3d.entity';
|
|
3
3
|
/**
|
|
4
4
|
* Options for configuring a FreeCameraInput controller.
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { combineLatest, filter, takeUntil } from 'rxjs';
|
|
11
|
-
import { DirectionKeyboardInput, IEntity,
|
|
11
|
+
import { DirectionKeyboardInput, IEntity, MouseInput, Pnt2, Pnt3, Qtrn, TickOrder, } from '../../../../base';
|
|
12
12
|
/**
|
|
13
13
|
* A controller for a free-moving camera.
|
|
14
14
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GgWorld, IEntity, MouseInput, MouseInputOptions, MutableSpherical, Point3, TickOrder } from '../../../../base';
|
|
2
2
|
import { Renderer3dEntity } from '../../renderer-3d.entity';
|
|
3
3
|
export declare type OrbitCameraControllerOptions = {
|
|
4
4
|
mouseOptions: Partial<MouseInputOptions>;
|
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { IEntity,
|
|
10
|
+
import { IEntity, MouseInput, MouseInputState, Pnt3, Qtrn, TickOrder, } from '../../../../base';
|
|
11
11
|
import { filter, takeUntil } from 'rxjs';
|
|
12
12
|
import { map } from 'rxjs/operators';
|
|
13
13
|
const DEFAULT_OPTIONS = {
|
|
@@ -3,11 +3,10 @@ import { IRigidBody3dComponent } from '../components/physics/i-rigid-body-3d.com
|
|
|
3
3
|
import { IDisplayObject3dComponent } from '../components/rendering/i-display-object-3d.component';
|
|
4
4
|
import { IPositionable3d } from '../interfaces/i-positionable-3d';
|
|
5
5
|
import { IRenderable3dEntity } from './i-renderable-3d.entity';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly
|
|
10
|
-
readonly objectBody: IRigidBody3dComponent | null;
|
|
6
|
+
import { PhysicsTypeDocRepo3D, VisualTypeDocRepo3D } from '../gg-3d-world';
|
|
7
|
+
export declare class Entity3d<VTypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D, PTypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D> extends IRenderable3dEntity<VTypeDoc, PTypeDoc> implements IPositionable3d {
|
|
8
|
+
readonly object3D: VTypeDoc['displayObject'] | null;
|
|
9
|
+
readonly objectBody: PTypeDoc['rigidBody'] | null;
|
|
11
10
|
readonly tickOrder = TickOrder.OBJECTS_BINDING;
|
|
12
11
|
private _position;
|
|
13
12
|
get position(): Point3;
|
|
@@ -20,5 +19,5 @@ export declare class Entity3d<VS extends IVisualScene3dComponent = IVisualScene3
|
|
|
20
19
|
* Synchronize physics body transform with entity (and mesh if defined)
|
|
21
20
|
* */
|
|
22
21
|
protected runTransformBinding(objectBody: IRigidBody3dComponent, object3D: IDisplayObject3dComponent | null): void;
|
|
23
|
-
constructor(object3D:
|
|
22
|
+
constructor(object3D: VTypeDoc['displayObject'] | null, objectBody?: PTypeDoc['rigidBody'] | null);
|
|
24
23
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { RaycastVehicle3dEntity, RVEntityProperties } from '../raycast-vehicle-3d.entity';
|
|
2
|
-
import {
|
|
2
|
+
import { Gg3dWorld, PhysicsTypeDocRepo3D, VisualTypeDocRepo3D } from '../../gg-3d-world';
|
|
3
|
+
import { IRenderable3dEntity } from '../i-renderable-3d.entity';
|
|
3
4
|
import { IPositionable3d } from '../../interfaces/i-positionable-3d';
|
|
5
|
+
import { Point3, Point4 } from '../../../base';
|
|
4
6
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
5
|
-
import { Gg3dWorld } from '../../gg-3d-world';
|
|
6
|
-
import { IDisplayObject3dComponent } from '../../components/rendering/i-display-object-3d.component';
|
|
7
|
-
import { IRaycastVehicleComponent } from '../../components/physics/i-raycast-vehicle.component';
|
|
8
7
|
export declare type GgCarProperties = RVEntityProperties & {
|
|
9
8
|
mpsToRpmFactor?: number;
|
|
10
9
|
engine: {
|
|
@@ -33,7 +32,7 @@ export declare type GgCarProperties = RVEntityProperties & {
|
|
|
33
32
|
};
|
|
34
33
|
maxSteerAngle: number;
|
|
35
34
|
};
|
|
36
|
-
export declare class GgCarEntity extends
|
|
35
|
+
export declare class GgCarEntity<VTypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D, PTypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D, RVEntity extends RaycastVehicle3dEntity<VTypeDoc, PTypeDoc> = RaycastVehicle3dEntity<VTypeDoc, PTypeDoc>> extends IRenderable3dEntity<VTypeDoc, PTypeDoc> implements IPositionable3d {
|
|
37
36
|
readonly carProperties: GgCarProperties;
|
|
38
37
|
readonly tickOrder: number;
|
|
39
38
|
get position(): Point3;
|
|
@@ -59,6 +58,7 @@ export declare class GgCarEntity extends IRenderableEntity<Point3, Point4> imple
|
|
|
59
58
|
get brake(): number;
|
|
60
59
|
set brake(value: number);
|
|
61
60
|
set steeringFactor(value: number);
|
|
61
|
+
get steeringFactor(): number;
|
|
62
62
|
protected handBrake$: BehaviorSubject<boolean>;
|
|
63
63
|
get handBrake(): boolean;
|
|
64
64
|
set handBrake(value: boolean);
|
|
@@ -68,9 +68,10 @@ export declare class GgCarEntity extends IRenderableEntity<Point3, Point4> imple
|
|
|
68
68
|
get gear$(): Observable<number>;
|
|
69
69
|
set gear(value: number);
|
|
70
70
|
set isHonking(value: boolean);
|
|
71
|
-
readonly raycastVehicle:
|
|
72
|
-
constructor(carProperties: GgCarProperties, chassis3D:
|
|
73
|
-
|
|
71
|
+
readonly raycastVehicle: RVEntity;
|
|
72
|
+
constructor(carProperties: GgCarProperties, chassis3D: VTypeDoc['displayObject'] | null, chassisBody: PTypeDoc['raycastVehicle']);
|
|
73
|
+
protected createRaycastVehicle(carProperties: GgCarProperties, chassis3D: VTypeDoc['displayObject'] | null, chassisBody: PTypeDoc['raycastVehicle']): RVEntity;
|
|
74
|
+
onSpawned(world: Gg3dWorld<VTypeDoc, PTypeDoc>): void;
|
|
74
75
|
protected updateEngine(delta: number): void;
|
|
75
76
|
resetTo(options?: {
|
|
76
77
|
position?: Point3;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { RaycastVehicle3dEntity } from '../raycast-vehicle-3d.entity';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { throttleTime } from 'rxjs
|
|
5
|
-
export class GgCarEntity extends
|
|
2
|
+
import { IRenderable3dEntity } from '../i-renderable-3d.entity';
|
|
3
|
+
import { cubicSplineInterpolation, TickOrder } from '../../../base';
|
|
4
|
+
import { BehaviorSubject, filter, throttleTime } from 'rxjs';
|
|
5
|
+
export class GgCarEntity extends IRenderable3dEntity {
|
|
6
6
|
constructor(carProperties, chassis3D, chassisBody) {
|
|
7
7
|
super();
|
|
8
8
|
this.carProperties = carProperties;
|
|
@@ -16,7 +16,7 @@ export class GgCarEntity extends IRenderableEntity {
|
|
|
16
16
|
this.handBrake$ = new BehaviorSubject(false);
|
|
17
17
|
this._gear = 0;
|
|
18
18
|
this._gear$ = new BehaviorSubject(0);
|
|
19
|
-
this.raycastVehicle =
|
|
19
|
+
this.raycastVehicle = this.createRaycastVehicle(carProperties, chassis3D, chassisBody);
|
|
20
20
|
this.addChildren(this.raycastVehicle);
|
|
21
21
|
}
|
|
22
22
|
get position() {
|
|
@@ -106,6 +106,9 @@ export class GgCarEntity extends IRenderableEntity {
|
|
|
106
106
|
set steeringFactor(value) {
|
|
107
107
|
this.raycastVehicle.steeringAngle = value * this.carProperties.maxSteerAngle;
|
|
108
108
|
}
|
|
109
|
+
get steeringFactor() {
|
|
110
|
+
return this.raycastVehicle.steeringAngle / this.carProperties.maxSteerAngle;
|
|
111
|
+
}
|
|
109
112
|
get handBrake() {
|
|
110
113
|
return this.handBrake$.getValue();
|
|
111
114
|
}
|
|
@@ -128,6 +131,9 @@ export class GgCarEntity extends IRenderableEntity {
|
|
|
128
131
|
}
|
|
129
132
|
// TODO remove
|
|
130
133
|
set isHonking(value) { }
|
|
134
|
+
createRaycastVehicle(carProperties, chassis3D, chassisBody) {
|
|
135
|
+
return new RaycastVehicle3dEntity(carProperties, chassis3D, chassisBody);
|
|
136
|
+
}
|
|
131
137
|
onSpawned(world) {
|
|
132
138
|
super.onSpawned(world);
|
|
133
139
|
this.tick$.subscribe(([_, delta]) => {
|
|
@@ -156,9 +162,15 @@ export class GgCarEntity extends IRenderableEntity {
|
|
|
156
162
|
}
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
165
|
+
if (brake === 0) {
|
|
166
|
+
this.raycastVehicle.applyTractionForce(force);
|
|
167
|
+
this.raycastVehicle.applyBrake('both', 0);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this.raycastVehicle.applyTractionForce(0);
|
|
171
|
+
this.raycastVehicle.applyBrake('front', brake * this.carProperties.brake.frontAxleForce);
|
|
172
|
+
this.raycastVehicle.applyBrake('rear', brake * this.carProperties.brake.rearAxleForce);
|
|
173
|
+
}
|
|
162
174
|
if (this.handBrake) {
|
|
163
175
|
this.raycastVehicle.applyBrake('rear', this.carProperties.brake.handbrakeForce);
|
|
164
176
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IRenderableEntity, Point3, Point4 } from '../../base';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare abstract class IRenderable3dEntity<VS extends IVisualScene3dComponent = IVisualScene3dComponent, PW extends IPhysicsWorld3dComponent = IPhysicsWorld3dComponent> extends IRenderableEntity<Point3, Point4, VS, PW> {
|
|
2
|
+
import { PhysicsTypeDocRepo3D, VisualTypeDocRepo3D } from '../gg-3d-world';
|
|
3
|
+
export declare abstract class IRenderable3dEntity<TypeDoc extends VisualTypeDocRepo3D = VisualTypeDocRepo3D, PTypeDoc extends PhysicsTypeDocRepo3D = PhysicsTypeDocRepo3D> extends IRenderableEntity<Point3, Point4, TypeDoc, PTypeDoc> {
|
|
5
4
|
}
|