hytopia 0.1.55 → 0.1.56

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 (37) hide show
  1. package/docs/server.basecharactercontroller.attach.md +53 -0
  2. package/docs/server.basecharactercontroller.despawn.md +53 -0
  3. package/docs/server.basecharactercontroller.detach.md +53 -0
  4. package/docs/server.basecharactercontroller.md +91 -28
  5. package/docs/server.basecharactercontroller.onattach.md +13 -0
  6. package/docs/server.basecharactercontroller.ondespawn.md +13 -0
  7. package/docs/server.basecharactercontroller.ondetach.md +13 -0
  8. package/docs/server.basecharactercontroller.onspawn.md +13 -0
  9. package/docs/server.basecharactercontroller.ontick.md +2 -2
  10. package/docs/server.basecharactercontroller.ontickwithplayerinput.md +2 -2
  11. package/docs/server.basecharactercontroller.spawn.md +53 -0
  12. package/docs/server.basecharactercontroller.tick.md +15 -1
  13. package/docs/server.basecharactercontroller.tickwithplayerinput.md +17 -1
  14. package/docs/server.defaultcharactercontroller._constructor_.md +1 -17
  15. package/docs/server.defaultcharactercontroller.attach.md +53 -0
  16. package/docs/server.defaultcharactercontroller.md +18 -4
  17. package/docs/server.defaultcharactercontroller.spawn.md +53 -0
  18. package/docs/server.defaultcharactercontroller.tickwithplayerinput.md +17 -1
  19. package/docs/server.entity.md +0 -19
  20. package/docs/server.entity.setcharactercontroller.md +2 -2
  21. package/docs/server.entityoptions.charactercontroller.md +13 -0
  22. package/docs/server.entityoptions.md +3 -3
  23. package/examples/block-entity/index.ts +1 -1
  24. package/examples/character-controller/MyCharacterController.ts +190 -119
  25. package/examples/character-controller/index.ts +5 -10
  26. package/examples/custom-ui/index.ts +1 -1
  27. package/examples/payload-game/index.ts +6 -7
  28. package/package.json +1 -1
  29. package/server.api.json +468 -176
  30. package/server.d.ts +71 -40
  31. package/server.js +81 -81
  32. package/docs/server.basecharactercontroller._constructor_.md +0 -65
  33. package/docs/server.basecharactercontroller.createcolliders.md +0 -19
  34. package/docs/server.basecharactercontroller.entity.md +0 -13
  35. package/docs/server.defaultcharactercontroller.createcolliders.md +0 -19
  36. package/docs/server.entity.createcustomcharactercontroller.md +0 -13
  37. package/docs/server.entityoptions.createcustomcharactercontroller.md +0 -13
@@ -11,6 +11,10 @@ startServer(world => {
11
11
  // Uncomment this to visualize physics vertices, will cause noticable lag.
12
12
  // world.simulation.enableDebugRendering(true);
13
13
 
14
+ // Visualize raycasts, like block breaking for our
15
+ // character controller.
16
+ world.simulation.enableDebugRaycasting(true);
17
+
14
18
  world.loadMap(worldMap);
15
19
 
16
20
  world.onPlayerJoin = player => {
@@ -20,18 +24,9 @@ startServer(world => {
20
24
  modelUri: 'models/player.gltf',
21
25
  modelLoopedAnimations: [ 'idle' ],
22
26
  modelScale: 0.5,
27
+ characterController: new MyCharacterController(), // attach our character controller
23
28
  });
24
29
 
25
- // Assign a custom character controller factory to the player entity.
26
- // This must be assigned before spawning the entity.
27
- // createCustomCharacterController if set will be handled internally when
28
- // .spawn() is called.
29
- playerEntity.createCustomCharacterController = () => {
30
- console.log('Creating custom player entity character controller...');
31
-
32
- return new MyCharacterController(playerEntity);
33
- };
34
-
35
30
  playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
36
31
  console.log('Spawned player entity!');
37
32
 
@@ -45,7 +45,7 @@ startServer(world => {
45
45
  const randomY = Math.random() * 13 + 2; // Random between 2 and 15
46
46
  const randomZ = Math.random() * 40 - 20; // Random between -20 and 20
47
47
 
48
- playerEntity.setTranslation({ x: randomX, y: randomY, z: randomZ });
48
+ playerEntity.setPosition({ x: randomX, y: randomY, z: randomZ });
49
49
  }
50
50
  };
51
51
  };
@@ -293,7 +293,7 @@ function spawnPayloadEntity(world: World) {
293
293
  }
294
294
 
295
295
  payloadEntity = new Entity({
296
- createCustomCharacterController: (entity: Entity) => new SimpleCharacterController(entity),
296
+ characterController: new SimpleCharacterController(),
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
- createCustomCharacterController: (entity: Entity) => new SimpleCharacterController(entity),
353
+ characterController: new SimpleCharacterController(),
354
354
  name: 'Spider',
355
355
  modelUri: 'models/spider.gltf',
356
356
  modelLoopedAnimations: [ 'walk' ],
@@ -495,12 +495,11 @@ function onTickPathfindEnemy(entity: Entity, targetPlayers: Set<PlayerEntity>, s
495
495
  enemyPathfindAccumulators[entityId]++;
496
496
  }
497
497
 
498
- function onTickWithPlayerInput(this: DefaultCharacterController, input: PlayerInput, cameraOrientation: PlayerCameraOrientation, _deltaTimeMs: number) {
499
- if (!this.entity.world) return;
498
+ function onTickWithPlayerInput(this: DefaultCharacterController, entity: PlayerEntity, input: PlayerInput, cameraOrientation: PlayerCameraOrientation, _deltaTimeMs: number) {
499
+ if (!entity.world) return;
500
500
 
501
501
  if (input.ml) {
502
- const world = this.entity.world;
503
- const entity = this.entity;
502
+ const world = entity.world;
504
503
  const direction = Vector3.fromVector3Like(entity.directionFromRotation);
505
504
 
506
505
  direction.y = Math.sin(cameraOrientation.pitch);
@@ -513,7 +512,7 @@ function onTickWithPlayerInput(this: DefaultCharacterController, input: PlayerIn
513
512
  // Normalize the direction vector to unit length
514
513
  direction.normalize();
515
514
 
516
- this.entity.startModelOneshotAnimations([ 'shoot' ]);
515
+ entity.startModelOneshotAnimations([ 'shoot' ]);
517
516
 
518
517
  // Adjust bullet origin roughly for camera offset so crosshair is accurate
519
518
  const bulletOrigin = entity.position;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hytopia",
3
- "version": "0.1.55",
3
+ "version": "0.1.56",
4
4
  "description": "The HYTOPIA SDK makes it easy for developers to create massively multiplayer games using JavaScript or TypeScript.",
5
5
  "main": "server.js",
6
6
  "bin": {