hytopia 0.1.56 → 0.1.57
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/boilerplate/index.ts +1 -1
- package/docs/{server.basecharactercontroller.attach.md → server.baseentitycontroller.attach.md} +3 -3
- package/docs/{server.basecharactercontroller.despawn.md → server.baseentitycontroller.despawn.md} +3 -3
- package/docs/{server.basecharactercontroller.detach.md → server.baseentitycontroller.detach.md} +3 -3
- package/docs/{server.basecharactercontroller.md → server.baseentitycontroller.md} +29 -29
- package/docs/{server.basecharactercontroller.onattach.md → server.baseentitycontroller.onattach.md} +3 -3
- package/docs/server.baseentitycontroller.ondespawn.md +13 -0
- package/docs/{server.basecharactercontroller.ondetach.md → server.baseentitycontroller.ondetach.md} +3 -3
- package/docs/server.baseentitycontroller.onspawn.md +13 -0
- package/docs/server.baseentitycontroller.ontick.md +13 -0
- package/docs/{server.basecharactercontroller.ontickwithplayerinput.md → server.baseentitycontroller.ontickwithplayerinput.md} +3 -3
- package/docs/{server.basecharactercontroller.spawn.md → server.baseentitycontroller.spawn.md} +3 -3
- package/docs/{server.basecharactercontroller.tick.md → server.baseentitycontroller.tick.md} +3 -3
- package/docs/{server.basecharactercontroller.tickwithplayerinput.md → server.baseentitycontroller.tickwithplayerinput.md} +3 -3
- package/docs/server.entity.controller.md +13 -0
- package/docs/server.entity.md +40 -5
- package/docs/server.entity.modelanimationsplaybackrate.md +13 -0
- package/docs/server.entity.setcontroller.md +53 -0
- package/docs/server.entity.setmodelanimationsplaybackrate.md +57 -0
- package/docs/server.entityeventpayload.md +9 -0
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.entity.md +11 -0
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.md +70 -0
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.playbackrate.md +11 -0
- package/docs/server.entityeventtype.md +14 -0
- package/docs/server.entityoptions.controller.md +13 -0
- package/docs/server.entityoptions.md +22 -3
- package/docs/server.entityoptions.modelanimationsplaybackrate.md +13 -0
- package/docs/server.facecallback.md +1 -1
- package/docs/server.facecompletecallback.md +1 -1
- package/docs/server.faceoptions.md +1 -1
- package/docs/server.md +27 -27
- package/docs/server.movecallback.md +1 -1
- package/docs/server.movecompletecallback.md +1 -1
- package/docs/server.moveoptions.md +1 -1
- package/docs/server.playerentity.md +1 -1
- package/docs/server.playerentitycontroller._constructor_.md +49 -0
- package/docs/{server.defaultcharactercontroller.attach.md → server.playerentitycontroller.attach.md} +2 -2
- package/docs/server.playerentitycontroller.canjump.md +13 -0
- package/docs/server.playerentitycontroller.canrun.md +13 -0
- package/docs/server.playerentitycontroller.canwalk.md +13 -0
- package/docs/server.playerentitycontroller.isgrounded.md +13 -0
- package/docs/server.playerentitycontroller.isonplatform.md +13 -0
- package/docs/server.playerentitycontroller.jumpvelocity.md +13 -0
- package/docs/server.playerentitycontroller.md +331 -0
- package/docs/server.playerentitycontroller.platform.md +13 -0
- package/docs/server.playerentitycontroller.runvelocity.md +13 -0
- package/docs/server.playerentitycontroller.spawn.md +53 -0
- package/docs/{server.defaultcharactercontroller.tickwithplayerinput.md → server.playerentitycontroller.tickwithplayerinput.md} +3 -3
- package/docs/server.playerentitycontroller.walkvelocity.md +13 -0
- package/docs/server.playerentitycontrolleroptions.canjump.md +13 -0
- package/docs/server.playerentitycontrolleroptions.canrun.md +13 -0
- package/docs/server.playerentitycontrolleroptions.canwalk.md +13 -0
- package/docs/server.playerentitycontrolleroptions.jumpvelocity.md +13 -0
- package/docs/{server.defaultcharactercontrolleroptions.md → server.playerentitycontrolleroptions.md} +10 -10
- package/docs/server.playerentitycontrolleroptions.runvelocity.md +13 -0
- package/docs/server.playerentitycontrolleroptions.walkvelocity.md +13 -0
- package/docs/server.playerui.lockpointer.md +53 -0
- package/docs/server.playerui.md +14 -0
- package/docs/server.playeruieventpayload.lockpointer.lock.md +11 -0
- package/docs/server.playeruieventpayload.lockpointer.md +70 -0
- package/docs/server.playeruieventpayload.lockpointer.playerui.md +11 -0
- package/docs/server.playeruieventpayload.md +9 -0
- package/docs/server.playeruieventtype.md +14 -0
- package/docs/{server.simplecharactercontroller.face.md → server.simpleentitycontroller.face.md} +2 -2
- package/docs/{server.simplecharactercontroller.md → server.simpleentitycontroller.md} +11 -13
- package/docs/{server.simplecharactercontroller.move.md → server.simpleentitycontroller.move.md} +2 -2
- package/examples/block-entity/index.ts +7 -7
- package/examples/{character-controller/MyCharacterController.ts → entity-controller/MyEntityController.ts} +20 -20
- package/examples/entity-controller/README.md +4 -0
- package/examples/{character-controller → entity-controller}/index.ts +3 -3
- package/examples/{character-controller → entity-controller}/package.json +1 -1
- package/examples/payload-game/index.ts +15 -15
- package/package.json +1 -1
- package/server.api.json +4678 -4339
- package/server.d.ts +185 -154
- package/server.js +76 -76
- package/docs/server.basecharactercontroller.ondespawn.md +0 -13
- package/docs/server.basecharactercontroller.onspawn.md +0 -13
- package/docs/server.basecharactercontroller.ontick.md +0 -13
- package/docs/server.defaultcharactercontroller._constructor_.md +0 -49
- package/docs/server.defaultcharactercontroller.canjump.md +0 -13
- package/docs/server.defaultcharactercontroller.canrun.md +0 -13
- package/docs/server.defaultcharactercontroller.canwalk.md +0 -13
- package/docs/server.defaultcharactercontroller.isgrounded.md +0 -13
- package/docs/server.defaultcharactercontroller.isonplatform.md +0 -13
- package/docs/server.defaultcharactercontroller.jumpvelocity.md +0 -13
- package/docs/server.defaultcharactercontroller.md +0 -333
- package/docs/server.defaultcharactercontroller.platform.md +0 -13
- package/docs/server.defaultcharactercontroller.runvelocity.md +0 -13
- package/docs/server.defaultcharactercontroller.spawn.md +0 -53
- package/docs/server.defaultcharactercontroller.walkvelocity.md +0 -13
- package/docs/server.defaultcharactercontrolleroptions.canjump.md +0 -13
- package/docs/server.defaultcharactercontrolleroptions.canrun.md +0 -13
- package/docs/server.defaultcharactercontrolleroptions.canwalk.md +0 -13
- package/docs/server.defaultcharactercontrolleroptions.jumpvelocity.md +0 -13
- package/docs/server.defaultcharactercontrolleroptions.runvelocity.md +0 -13
- package/docs/server.defaultcharactercontrolleroptions.walkvelocity.md +0 -13
- package/docs/server.entity.charactercontroller.md +0 -13
- package/docs/server.entity.setcharactercontroller.md +0 -53
- package/docs/server.entityoptions.charactercontroller.md +0 -13
- package/examples/character-controller/README.md +0 -4
- /package/examples/{character-controller → entity-controller}/assets/map.json +0 -0
@@ -0,0 +1,70 @@
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
|
+
|
3
|
+
[Home](./index.md) > [server](./server.md) > [PlayerUIEventPayload](./server.playeruieventpayload.md) > [LockPointer](./server.playeruieventpayload.lockpointer.md)
|
4
|
+
|
5
|
+
## PlayerUIEventPayload.LockPointer interface
|
6
|
+
|
7
|
+
**Signature:**
|
8
|
+
|
9
|
+
```typescript
|
10
|
+
interface LockPointer
|
11
|
+
```
|
12
|
+
|
13
|
+
## Properties
|
14
|
+
|
15
|
+
<table><thead><tr><th>
|
16
|
+
|
17
|
+
Property
|
18
|
+
|
19
|
+
|
20
|
+
</th><th>
|
21
|
+
|
22
|
+
Modifiers
|
23
|
+
|
24
|
+
|
25
|
+
</th><th>
|
26
|
+
|
27
|
+
Type
|
28
|
+
|
29
|
+
|
30
|
+
</th><th>
|
31
|
+
|
32
|
+
Description
|
33
|
+
|
34
|
+
|
35
|
+
</th></tr></thead>
|
36
|
+
<tbody><tr><td>
|
37
|
+
|
38
|
+
[lock](./server.playeruieventpayload.lockpointer.lock.md)
|
39
|
+
|
40
|
+
|
41
|
+
</td><td>
|
42
|
+
|
43
|
+
|
44
|
+
</td><td>
|
45
|
+
|
46
|
+
boolean
|
47
|
+
|
48
|
+
|
49
|
+
</td><td>
|
50
|
+
|
51
|
+
|
52
|
+
</td></tr>
|
53
|
+
<tr><td>
|
54
|
+
|
55
|
+
[playerUI](./server.playeruieventpayload.lockpointer.playerui.md)
|
56
|
+
|
57
|
+
|
58
|
+
</td><td>
|
59
|
+
|
60
|
+
|
61
|
+
</td><td>
|
62
|
+
|
63
|
+
[PlayerUI](./server.playerui.md)
|
64
|
+
|
65
|
+
|
66
|
+
</td><td>
|
67
|
+
|
68
|
+
|
69
|
+
</td></tr>
|
70
|
+
</tbody></table>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
|
+
|
3
|
+
[Home](./index.md) > [server](./server.md) > [PlayerUIEventPayload](./server.playeruieventpayload.md) > [LockPointer](./server.playeruieventpayload.lockpointer.md) > [playerUI](./server.playeruieventpayload.lockpointer.playerui.md)
|
4
|
+
|
5
|
+
## PlayerUIEventPayload.LockPointer.playerUI property
|
6
|
+
|
7
|
+
**Signature:**
|
8
|
+
|
9
|
+
```typescript
|
10
|
+
playerUI: PlayerUI;
|
11
|
+
```
|
package/docs/{server.simplecharactercontroller.face.md → server.simpleentitycontroller.face.md}
RENAMED
@@ -1,8 +1,8 @@
|
|
1
1
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
2
|
|
3
|
-
[Home](./index.md) > [server](./server.md) > [
|
3
|
+
[Home](./index.md) > [server](./server.md) > [SimpleEntityController](./server.simpleentitycontroller.md) > [face](./server.simpleentitycontroller.face.md)
|
4
4
|
|
5
|
-
##
|
5
|
+
## SimpleEntityController.face() method
|
6
6
|
|
7
7
|
Rotates the entity at a given speed to face a target coordinate.
|
8
8
|
|
@@ -1,30 +1,28 @@
|
|
1
1
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
2
|
|
3
|
-
[Home](./index.md) > [server](./server.md) > [
|
3
|
+
[Home](./index.md) > [server](./server.md) > [SimpleEntityController](./server.simpleentitycontroller.md)
|
4
4
|
|
5
|
-
##
|
5
|
+
## SimpleEntityController class
|
6
6
|
|
7
|
-
A simple
|
7
|
+
A simple entity controller with basic movement functions.
|
8
8
|
|
9
9
|
**Signature:**
|
10
10
|
|
11
11
|
```typescript
|
12
|
-
export default class
|
12
|
+
export default class SimpleEntityController extends BaseEntityController
|
13
13
|
```
|
14
|
-
**Extends:** [
|
14
|
+
**Extends:** [BaseEntityController](./server.baseentitycontroller.md)
|
15
15
|
|
16
16
|
## Remarks
|
17
17
|
|
18
|
-
This class implements simple movement methods that serve as a way to add realistic movement and rotational facing functionality to an entity. This is also a great base to extend for your own more complex
|
18
|
+
This class implements simple movement methods that serve as a way to add realistic movement and rotational facing functionality to an entity. This is also a great base to extend for your own more complex entity controller that implements things like pathfinding. Compatible with entities that have kinematic or dynamic rigid body types.
|
19
19
|
|
20
20
|
## Example
|
21
21
|
|
22
22
|
|
23
23
|
```typescript
|
24
|
-
// Create a custom
|
25
|
-
myEntity.
|
26
|
-
return new SimpleCharacterController(myEntity);
|
27
|
-
};
|
24
|
+
// Create a custom entity controller for myEntity, prior to spawning it.
|
25
|
+
myEntity.setController(new SimpleEntityController());
|
28
26
|
|
29
27
|
// Spawn the entity in the world.
|
30
28
|
myEntity.spawn(world, { x: 53, y: 10, z: 23 });
|
@@ -32,7 +30,7 @@ myEntity.spawn(world, { x: 53, y: 10, z: 23 });
|
|
32
30
|
// Move the entity at a speed of 4 blocks
|
33
31
|
// per second to the coordinate (10, 1, 10).
|
34
32
|
// console.log when we reach the target.
|
35
|
-
myEntity.
|
33
|
+
myEntity.controller.move({ x: 10, y: 1, z: 10 }, 4, {
|
36
34
|
moveCompleteCallback: endPosition => {
|
37
35
|
console.log('Finished moving to', endPosition);
|
38
36
|
},
|
@@ -59,7 +57,7 @@ Description
|
|
59
57
|
</th></tr></thead>
|
60
58
|
<tbody><tr><td>
|
61
59
|
|
62
|
-
[face(target, speed, options)](./server.
|
60
|
+
[face(target, speed, options)](./server.simpleentitycontroller.face.md)
|
63
61
|
|
64
62
|
|
65
63
|
</td><td>
|
@@ -73,7 +71,7 @@ Rotates the entity at a given speed to face a target coordinate.
|
|
73
71
|
</td></tr>
|
74
72
|
<tr><td>
|
75
73
|
|
76
|
-
[move(target, speed, options)](./server.
|
74
|
+
[move(target, speed, options)](./server.simpleentitycontroller.move.md)
|
77
75
|
|
78
76
|
|
79
77
|
</td><td>
|
package/docs/{server.simplecharactercontroller.move.md → server.simpleentitycontroller.move.md}
RENAMED
@@ -1,8 +1,8 @@
|
|
1
1
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
2
|
|
3
|
-
[Home](./index.md) > [server](./server.md) > [
|
3
|
+
[Home](./index.md) > [server](./server.md) > [SimpleEntityController](./server.simpleentitycontroller.md) > [move](./server.simpleentitycontroller.move.md)
|
4
4
|
|
5
|
-
##
|
5
|
+
## SimpleEntityController.move() method
|
6
6
|
|
7
7
|
Moves the entity at a given speed in a straight line to a target coordinate.
|
8
8
|
|
@@ -5,7 +5,7 @@ import {
|
|
5
5
|
Entity,
|
6
6
|
RigidBodyType,
|
7
7
|
GameServer,
|
8
|
-
|
8
|
+
SimpleEntityController,
|
9
9
|
} from 'hytopia';
|
10
10
|
|
11
11
|
import worldMap from './assets/map.json';
|
@@ -140,9 +140,9 @@ startServer(world => {
|
|
140
140
|
const blockPet = new Entity({
|
141
141
|
blockTextureUri: 'textures/bricks.png',
|
142
142
|
blockHalfExtents: { x: 0.5, y: 0.5, z: 0.5 },
|
143
|
-
// attach a simple
|
144
|
-
// the
|
145
|
-
|
143
|
+
// attach a simple entity controller so we can pathfind,
|
144
|
+
// the entity controller will be created and associated when we spawn the entity
|
145
|
+
controller: new SimpleEntityController(),
|
146
146
|
});
|
147
147
|
|
148
148
|
blockPet.spawn(world, { x: 0, y: 10, z: -6 });
|
@@ -167,10 +167,10 @@ startServer(world => {
|
|
167
167
|
if (!targetPlayerEntity) { return; } // if the player doesn't have an entity, don't pathfind.
|
168
168
|
|
169
169
|
// pathfind to the player's entity
|
170
|
-
const
|
170
|
+
const blockPetEntityController = blockPet.controller as SimpleEntityController;
|
171
171
|
const targetPosition = targetPlayerEntity.position;
|
172
|
-
|
173
|
-
|
172
|
+
blockPetEntityController.move(targetPosition, 3);
|
173
|
+
blockPetEntityController.face(targetPosition, 1);
|
174
174
|
}
|
175
175
|
};
|
176
176
|
});
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {
|
2
2
|
Audio,
|
3
|
-
|
3
|
+
BaseEntityController,
|
4
4
|
ColliderShape,
|
5
5
|
CoefficientCombineRule,
|
6
6
|
CollisionGroup,
|
@@ -14,8 +14,8 @@ import type {
|
|
14
14
|
PlayerCameraOrientation,
|
15
15
|
} from 'hytopia';
|
16
16
|
|
17
|
-
/** Options for creating a
|
18
|
-
export interface
|
17
|
+
/** Options for creating a MyEntityController instance. @public */
|
18
|
+
export interface MyEntityControllerOptions {
|
19
19
|
/** The upward velocity applied to the entity when it jumps. */
|
20
20
|
jumpVelocity?: number;
|
21
21
|
|
@@ -36,16 +36,16 @@ export interface MyCharacterControllerOptions {
|
|
36
36
|
}
|
37
37
|
|
38
38
|
/**
|
39
|
-
* A custom
|
39
|
+
* A custom entity controller implementation.
|
40
40
|
*
|
41
41
|
* @remarks
|
42
|
-
* This class extends {@link
|
42
|
+
* This class extends {@link BaseEntityController}
|
43
43
|
* and implements the default movement logic for a
|
44
|
-
*
|
44
|
+
* entity.
|
45
45
|
*
|
46
46
|
* @public
|
47
47
|
*/
|
48
|
-
export default class
|
48
|
+
export default class MyEntityController extends BaseEntityController {
|
49
49
|
/** The upward velocity applied to the entity when it jumps. */
|
50
50
|
public jumpVelocity: number = 10;
|
51
51
|
|
@@ -57,24 +57,24 @@ export default class MyCharacterController extends BaseCharacterController {
|
|
57
57
|
|
58
58
|
/**
|
59
59
|
* A function allowing custom logic to determine if the entity can walk.
|
60
|
-
* @param
|
61
|
-
* @returns Whether the entity of the
|
60
|
+
* @param myEntityController - The entity controller instance.
|
61
|
+
* @returns Whether the entity of the entity controller can walk.
|
62
62
|
*/
|
63
|
-
public canWalk: (
|
63
|
+
public canWalk: (myEntityController: MyEntityController) => boolean = () => true;
|
64
64
|
|
65
65
|
/**
|
66
66
|
* A function allowing custom logic to determine if the entity can run.
|
67
|
-
* @param
|
68
|
-
* @returns Whether the entity of the
|
67
|
+
* @param myEntityController - The entity controller instance.
|
68
|
+
* @returns Whether the entity of the entity controller can run.
|
69
69
|
*/
|
70
|
-
public canRun: (
|
70
|
+
public canRun: (myEntityController: MyEntityController) => boolean = () => true;
|
71
71
|
|
72
72
|
/**
|
73
73
|
* A function allowing custom logic to determine if the entity can jump.
|
74
|
-
* @param
|
75
|
-
* @returns Whether the entity of the
|
74
|
+
* @param myEntityController - The entity controller instance.
|
75
|
+
* @returns Whether the entity of the entity controller can jump.
|
76
76
|
*/
|
77
|
-
public canJump: (
|
77
|
+
public canJump: (myEntityController: MyEntityController) => boolean = () => true;
|
78
78
|
|
79
79
|
/** @internal */
|
80
80
|
private _stepAudio: Audio | undefined;
|
@@ -88,7 +88,7 @@ export default class MyCharacterController extends BaseCharacterController {
|
|
88
88
|
/**
|
89
89
|
* @param options - Options for the controller.
|
90
90
|
*/
|
91
|
-
public constructor(options:
|
91
|
+
public constructor(options: MyEntityControllerOptions = {}) {
|
92
92
|
super();
|
93
93
|
|
94
94
|
this.jumpVelocity = options.jumpVelocity ?? this.jumpVelocity;
|
@@ -125,13 +125,13 @@ export default class MyCharacterController extends BaseCharacterController {
|
|
125
125
|
|
126
126
|
/**
|
127
127
|
* Called when the controlled entity is spawned.
|
128
|
-
* In
|
128
|
+
* In MyEntityController, this function is used to create
|
129
129
|
* the colliders for the entity for wall and ground detection.
|
130
130
|
* @param entity - The entity that is spawned.
|
131
131
|
*/
|
132
132
|
public spawn(entity: Entity) {
|
133
133
|
if (!entity.isSpawned) {
|
134
|
-
throw new Error('
|
134
|
+
throw new Error('MyEntityController.createColliders(): Entity is not spawned!');
|
135
135
|
}
|
136
136
|
|
137
137
|
// Ground sensor
|
@@ -184,7 +184,7 @@ export default class MyCharacterController extends BaseCharacterController {
|
|
184
184
|
};
|
185
185
|
|
186
186
|
/**
|
187
|
-
* Ticks the player movement for the
|
187
|
+
* Ticks the player movement for the entity controller,
|
188
188
|
* overriding the default implementation.
|
189
189
|
*
|
190
190
|
* @param entity - The entity to tick.
|
@@ -3,7 +3,7 @@ import {
|
|
3
3
|
PlayerEntity,
|
4
4
|
} from 'hytopia';
|
5
5
|
|
6
|
-
import
|
6
|
+
import MyEntityController from './MyEntityController';
|
7
7
|
|
8
8
|
import worldMap from './assets/map.json';
|
9
9
|
|
@@ -12,7 +12,7 @@ startServer(world => {
|
|
12
12
|
// world.simulation.enableDebugRendering(true);
|
13
13
|
|
14
14
|
// Visualize raycasts, like block breaking for our
|
15
|
-
//
|
15
|
+
// entity controller.
|
16
16
|
world.simulation.enableDebugRaycasting(true);
|
17
17
|
|
18
18
|
world.loadMap(worldMap);
|
@@ -24,7 +24,7 @@ startServer(world => {
|
|
24
24
|
modelUri: 'models/player.gltf',
|
25
25
|
modelLoopedAnimations: [ 'idle' ],
|
26
26
|
modelScale: 0.5,
|
27
|
-
|
27
|
+
controller: new MyEntityController(), // attach our entity controller
|
28
28
|
});
|
29
29
|
|
30
30
|
playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* payload-game is a simple game that encompasses a number of core HYTOPIA SDK systems.
|
3
3
|
* This example utilizes entities, spawning, rigid body, colliders and sensors,
|
4
|
-
* collision groups, audio,
|
4
|
+
* collision groups, audio, entity controller hooks, and more.
|
5
5
|
*
|
6
6
|
* This example is a quick and dirty implementation of an overwatch style push the payload
|
7
7
|
* in a multiplayer PvE style. Players start the game around the payload and must stay near it
|
@@ -22,11 +22,11 @@ import {
|
|
22
22
|
PlayerCameraMode,
|
23
23
|
ColliderShape,
|
24
24
|
CollisionGroup,
|
25
|
-
|
25
|
+
PlayerEntityController,
|
26
26
|
Entity,
|
27
27
|
PlayerEntity,
|
28
28
|
RigidBodyType,
|
29
|
-
|
29
|
+
SimpleEntityController,
|
30
30
|
Vector3,
|
31
31
|
World,
|
32
32
|
startServer,
|
@@ -120,7 +120,7 @@ startServer(world => { // Perform our game setup logic in the startServer init c
|
|
120
120
|
playerEntity.spawn(world, randomSpawnCoordinate);
|
121
121
|
|
122
122
|
// We need to do some custom logic for player inputs, so let's assign custom onTick handler to the default player controller.
|
123
|
-
playerEntity.
|
123
|
+
playerEntity.controller!.onTickWithPlayerInput = onTickWithPlayerInput;
|
124
124
|
|
125
125
|
// Set custom collision groups for the player entity, this is so we can reference the PLAYER collision group
|
126
126
|
// specifically in enemy collision sensors.
|
@@ -293,7 +293,7 @@ function spawnPayloadEntity(world: World) {
|
|
293
293
|
}
|
294
294
|
|
295
295
|
payloadEntity = new Entity({
|
296
|
-
|
296
|
+
controller: new SimpleEntityController(),
|
297
297
|
name: 'Payload',
|
298
298
|
modelUri: 'models/payload.gltf',
|
299
299
|
modelScale: 0.7,
|
@@ -350,7 +350,7 @@ function spawnSpider(world: World, coordinate: Vector3Like) {
|
|
350
350
|
const targetPlayers = new Set<PlayerEntity>();
|
351
351
|
|
352
352
|
const spider = new Entity({
|
353
|
-
|
353
|
+
controller: new SimpleEntityController(),
|
354
354
|
name: 'Spider',
|
355
355
|
modelUri: 'models/spider.gltf',
|
356
356
|
modelLoopedAnimations: [ 'walk' ],
|
@@ -444,16 +444,16 @@ function onTickPathfindPayload(entity: Entity) { // Movement logic for the paylo
|
|
444
444
|
return console.warn('Payload destination reached!! Game won!!');
|
445
445
|
}
|
446
446
|
|
447
|
-
if (!(entity.
|
448
|
-
return console.warn('Payload entity does not have a
|
447
|
+
if (!(entity.controller instanceof SimpleEntityController)) { // type guard
|
448
|
+
return console.warn('Payload entity does not have a SimpleEntityController!');
|
449
449
|
}
|
450
450
|
|
451
|
-
entity.
|
451
|
+
entity.controller.move(targetWaypointCoordinate, speed, {
|
452
452
|
moveCompleteCallback: () => targetWaypointCoordinateIndex++,
|
453
453
|
moveIgnoreAxes: { y: true },
|
454
454
|
});
|
455
455
|
|
456
|
-
entity.
|
456
|
+
entity.controller.face(targetWaypointCoordinate, speed / 2);
|
457
457
|
}
|
458
458
|
|
459
459
|
function onTickPathfindEnemy(entity: Entity, targetPlayers: Set<PlayerEntity>, speed: number, _tickDeltaMs: number) {
|
@@ -483,19 +483,19 @@ function onTickPathfindEnemy(entity: Entity, targetPlayers: Set<PlayerEntity>, s
|
|
483
483
|
}
|
484
484
|
|
485
485
|
// Handle Movement
|
486
|
-
if (!(entity.
|
487
|
-
return console.warn('Enemy entity does not have a
|
486
|
+
if (!(entity.controller instanceof SimpleEntityController)) {
|
487
|
+
return console.warn('Enemy entity does not have a SimpleEntityController!');
|
488
488
|
}
|
489
489
|
|
490
490
|
const targetPosition = enemyPathfindingTargets[entityId];
|
491
|
-
entity.
|
492
|
-
entity.
|
491
|
+
entity.controller.move(targetPosition, speed, { moveIgnoreAxes: { y: true } });
|
492
|
+
entity.controller.face(targetPosition, speed / 2);
|
493
493
|
}
|
494
494
|
|
495
495
|
enemyPathfindAccumulators[entityId]++;
|
496
496
|
}
|
497
497
|
|
498
|
-
function onTickWithPlayerInput(this:
|
498
|
+
function onTickWithPlayerInput(this: PlayerEntityController, entity: PlayerEntity, input: PlayerInput, cameraOrientation: PlayerCameraOrientation, _deltaTimeMs: number) {
|
499
499
|
if (!entity.world) return;
|
500
500
|
|
501
501
|
if (input.ml) {
|