hytopia 0.3.0-dev.2 → 0.3.0-dev.3
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 +17 -9
- package/docs/server.modelregistry.md +38 -0
- package/docs/server.modelregistry.optimize.md +13 -0
- package/docs/server.modelregistry.optimizeeverystart.md +13 -0
- package/docs/server.playerui.md +0 -19
- package/docs/server.playeruievent.md +14 -0
- package/docs/server.playeruieventpayloads._player_ui.data_.md +16 -0
- package/docs/server.playeruieventpayloads._player_ui.send_data_.md +2 -2
- package/docs/server.playeruieventpayloads.md +21 -2
- package/examples/custom-ui/index.ts +4 -3
- package/examples/payload-game/assets/models/.optimized/bullet/baseColor.png +0 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.gltf +308 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf +142 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/payload/baseColor.png +0 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.gltf +2868 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload.gltf +1109 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_1.png +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_2.png +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.gltf +8572 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf +7849 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/raygun/baseColor_1.png +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/baseColor_2.png +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.gltf +7752 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf +832 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_1.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_2.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_3.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_4.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf +7774 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/raygun.gltf +1 -0
- package/examples/payload-game/assets/models/soldier-player.gltf +1 -0
- package/examples/payload-game/index.ts +23 -4
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.gltf +806 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.gltf +15 -686
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.gltf +1633 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.gltf +86 -1578
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.gltf +2480 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.gltf +88 -2427
- package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.gltf +136 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole.gltf +1 -1
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.gltf +831 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.gltf +16 -706
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.gltf +4025 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.gltf +136 -3944
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.gltf +196 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.gltf +57 -28
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.gltf +3412 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.gltf +133 -3323
- package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun.glb +0 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.gltf +10037 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.bin +0 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.gltf +1262 -4533
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.bin +0 -0
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.gltf +529 -434
- package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.gltf +136 -0
- package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace.gltf +1 -1
- package/package.json +5 -2
- package/server.api.json +148 -43
- package/server.d.ts +18 -15
- package/server.js +132 -90
- package/tsdoc-metadata.json +1 -1
- package/docs/server.playerui.ondata.md +0 -18
package/boilerplate/index.ts
CHANGED
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
import {
|
|
27
27
|
startServer,
|
|
28
28
|
Audio,
|
|
29
|
-
GameServer,
|
|
30
29
|
PlayerEntity,
|
|
30
|
+
PlayerEvent,
|
|
31
31
|
} from 'hytopia';
|
|
32
32
|
|
|
33
33
|
import worldMap from './assets/map.json';
|
|
@@ -65,14 +65,18 @@ startServer(world => {
|
|
|
65
65
|
world.loadMap(worldMap);
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* Handle player joining the game. The
|
|
69
|
-
*
|
|
68
|
+
* Handle player joining the game. The PlayerEvent.JOINED_WORLD
|
|
69
|
+
* event is emitted to the world when a new player connects to
|
|
70
70
|
* the game. From here, we create a basic player
|
|
71
71
|
* entity instance which automatically handles mapping
|
|
72
72
|
* their inputs to control their in-game entity and
|
|
73
73
|
* internally uses our player entity controller.
|
|
74
|
+
*
|
|
75
|
+
* The HYTOPIA SDK is heavily driven by events, you
|
|
76
|
+
* can find documentation on how the event system works,
|
|
77
|
+
* here: https://dev.hytopia.com/sdk-guides/events
|
|
74
78
|
*/
|
|
75
|
-
world.
|
|
79
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
|
76
80
|
const playerEntity = new PlayerEntity({
|
|
77
81
|
player,
|
|
78
82
|
name: 'Player',
|
|
@@ -89,11 +93,11 @@ startServer(world => {
|
|
|
89
93
|
world.chatManager.sendPlayerMessage(player, 'Press space to jump.');
|
|
90
94
|
world.chatManager.sendPlayerMessage(player, 'Hold shift to sprint.');
|
|
91
95
|
world.chatManager.sendPlayerMessage(player, 'Press \\ to enter or exit debug view.');
|
|
92
|
-
};
|
|
96
|
+
});
|
|
93
97
|
|
|
94
98
|
/**
|
|
95
|
-
* Handle player leaving the game. The
|
|
96
|
-
*
|
|
99
|
+
* Handle player leaving the game. The PlayerEvent.LEFT_WORLD
|
|
100
|
+
* event is emitted to the world when a player leaves the game.
|
|
97
101
|
* Because HYTOPIA is not opinionated on join and
|
|
98
102
|
* leave game logic, we are responsible for cleaning
|
|
99
103
|
* up the player and any entities associated with them
|
|
@@ -101,10 +105,14 @@ startServer(world => {
|
|
|
101
105
|
* getting all the known PlayerEntity instances for
|
|
102
106
|
* the player who left by using our world's EntityManager
|
|
103
107
|
* instance.
|
|
108
|
+
*
|
|
109
|
+
* The HYTOPIA SDK is heavily driven by events, you
|
|
110
|
+
* can find documentation on how the event system works,
|
|
111
|
+
* here: https://dev.hytopia.com/sdk-guides/events
|
|
104
112
|
*/
|
|
105
|
-
world.
|
|
113
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
|
106
114
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
|
107
|
-
};
|
|
115
|
+
});
|
|
108
116
|
|
|
109
117
|
/**
|
|
110
118
|
* A silly little easter egg command. When a player types
|
|
@@ -73,6 +73,44 @@ Description
|
|
|
73
73
|
The global ModelRegistry instance as a singleton.
|
|
74
74
|
|
|
75
75
|
|
|
76
|
+
</td></tr>
|
|
77
|
+
<tr><td>
|
|
78
|
+
|
|
79
|
+
[optimize](./server.modelregistry.optimize.md)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
</td><td>
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
</td><td>
|
|
86
|
+
|
|
87
|
+
boolean
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
</td><td>
|
|
91
|
+
|
|
92
|
+
Whether to use optimized models when they are loaded.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
</td></tr>
|
|
96
|
+
<tr><td>
|
|
97
|
+
|
|
98
|
+
[optimizeEveryStart](./server.modelregistry.optimizeeverystart.md)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
</td><td>
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
</td><td>
|
|
105
|
+
|
|
106
|
+
boolean
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
</td><td>
|
|
110
|
+
|
|
111
|
+
Whether to always run model optimization on server start.
|
|
112
|
+
|
|
113
|
+
|
|
76
114
|
</td></tr>
|
|
77
115
|
</tbody></table>
|
|
78
116
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [server](./server.md) > [ModelRegistry](./server.modelregistry.md) > [optimize](./server.modelregistry.optimize.md)
|
|
4
|
+
|
|
5
|
+
## ModelRegistry.optimize property
|
|
6
|
+
|
|
7
|
+
Whether to use optimized models when they are loaded.
|
|
8
|
+
|
|
9
|
+
**Signature:**
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
optimize: boolean;
|
|
13
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [server](./server.md) > [ModelRegistry](./server.modelregistry.md) > [optimizeEveryStart](./server.modelregistry.optimizeeverystart.md)
|
|
4
|
+
|
|
5
|
+
## ModelRegistry.optimizeEveryStart property
|
|
6
|
+
|
|
7
|
+
Whether to always run model optimization on server start.
|
|
8
|
+
|
|
9
|
+
**Signature:**
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
optimizeEveryStart: boolean;
|
|
13
|
+
```
|
package/docs/server.playerui.md
CHANGED
|
@@ -48,25 +48,6 @@ Description
|
|
|
48
48
|
</th></tr></thead>
|
|
49
49
|
<tbody><tr><td>
|
|
50
50
|
|
|
51
|
-
[onData?](./server.playerui.ondata.md)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
</td><td>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
</td><td>
|
|
58
|
-
|
|
59
|
-
(playerUI: [PlayerUI](./server.playerui.md)<!-- -->, data: object) => void
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</td><td>
|
|
63
|
-
|
|
64
|
-
_(Optional)_ A function that is called when the player's client UI sends data to the server.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
</td></tr>
|
|
68
|
-
<tr><td>
|
|
69
|
-
|
|
70
51
|
[player](./server.playerui.player.md)
|
|
71
52
|
|
|
72
53
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [server](./server.md) > [PlayerUIEventPayloads](./server.playeruieventpayloads.md) > ["PLAYER\_UI.DATA"](./server.playeruieventpayloads._player_ui.data_.md)
|
|
4
|
+
|
|
5
|
+
## PlayerUIEventPayloads."PLAYER\_UI.DATA" property
|
|
6
|
+
|
|
7
|
+
Emitted when data is received by the server from the player's client UI.
|
|
8
|
+
|
|
9
|
+
**Signature:**
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
[PlayerUIEvent.DATA]: {
|
|
13
|
+
playerUI: PlayerUI;
|
|
14
|
+
data: Record<string, any>;
|
|
15
|
+
};
|
|
16
|
+
```
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
## PlayerUIEventPayloads."PLAYER\_UI.SEND\_DATA" property
|
|
6
6
|
|
|
7
|
-
Emitted when
|
|
7
|
+
Emitted when data is sent from the server to the player's client UI.
|
|
8
8
|
|
|
9
9
|
**Signature:**
|
|
10
10
|
|
|
11
11
|
```typescript
|
|
12
12
|
[PlayerUIEvent.SEND_DATA]: {
|
|
13
13
|
playerUI: PlayerUI;
|
|
14
|
-
data:
|
|
14
|
+
data: Record<string, any>;
|
|
15
15
|
};
|
|
16
16
|
```
|
|
@@ -37,6 +37,25 @@ Description
|
|
|
37
37
|
</th></tr></thead>
|
|
38
38
|
<tbody><tr><td>
|
|
39
39
|
|
|
40
|
+
["PLAYER\_UI.DATA"](./server.playeruieventpayloads._player_ui.data_.md)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
</td><td>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
</td><td>
|
|
47
|
+
|
|
48
|
+
{ playerUI: [PlayerUI](./server.playerui.md)<!-- -->; data: Record<string, any>; }
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
</td><td>
|
|
52
|
+
|
|
53
|
+
Emitted when data is received by the server from the player's client UI.
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
</td></tr>
|
|
57
|
+
<tr><td>
|
|
58
|
+
|
|
40
59
|
["PLAYER\_UI.LOAD"](./server.playeruieventpayloads._player_ui.load_.md)
|
|
41
60
|
|
|
42
61
|
|
|
@@ -83,12 +102,12 @@ Emitted when the player's mouse pointer is locked or unlocked.
|
|
|
83
102
|
|
|
84
103
|
</td><td>
|
|
85
104
|
|
|
86
|
-
{ playerUI: [PlayerUI](./server.playerui.md)<!-- -->; data:
|
|
105
|
+
{ playerUI: [PlayerUI](./server.playerui.md)<!-- -->; data: Record<string, any>; }
|
|
87
106
|
|
|
88
107
|
|
|
89
108
|
</td><td>
|
|
90
109
|
|
|
91
|
-
Emitted when
|
|
110
|
+
Emitted when data is sent from the server to the player's client UI.
|
|
92
111
|
|
|
93
112
|
|
|
94
113
|
</td></tr>
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
Player,
|
|
5
5
|
PlayerEntity,
|
|
6
6
|
PlayerEvent,
|
|
7
|
-
|
|
7
|
+
PlayerUIEvent,
|
|
8
8
|
} from 'hytopia';
|
|
9
9
|
|
|
10
10
|
import worldMap from './assets/map.json';
|
|
@@ -40,7 +40,8 @@ startServer(world => {
|
|
|
40
40
|
|
|
41
41
|
// Handle data sent from player to server by client UI interactions we define.
|
|
42
42
|
// See the ui/index.html file for the UI code that sends the data.
|
|
43
|
-
player.ui.
|
|
43
|
+
player.ui.on(PlayerUIEvent.DATA, ({ playerUI, data }) => {
|
|
44
|
+
console.log('data', data);
|
|
44
45
|
if (data.type === 'teleport') {
|
|
45
46
|
const randomX = Math.random() * 40 - 20; // Random between -20 and 20
|
|
46
47
|
const randomY = Math.random() * 13 + 2; // Random between 2 and 15
|
|
@@ -48,7 +49,7 @@ startServer(world => {
|
|
|
48
49
|
|
|
49
50
|
playerEntity.setPosition({ x: randomX, y: randomY, z: randomZ });
|
|
50
51
|
}
|
|
51
|
-
};
|
|
52
|
+
});
|
|
52
53
|
});
|
|
53
54
|
|
|
54
55
|
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
|
Binary file
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
{
|
|
2
|
+
"asset": {
|
|
3
|
+
"generator": "glTF-Transform v4.1.2",
|
|
4
|
+
"version": "2.0"
|
|
5
|
+
},
|
|
6
|
+
"accessors": [
|
|
7
|
+
{
|
|
8
|
+
"type": "SCALAR",
|
|
9
|
+
"componentType": 5123,
|
|
10
|
+
"count": 132,
|
|
11
|
+
"bufferView": 0,
|
|
12
|
+
"byteOffset": 0
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "SCALAR",
|
|
16
|
+
"componentType": 5123,
|
|
17
|
+
"count": 6,
|
|
18
|
+
"bufferView": 0,
|
|
19
|
+
"byteOffset": 264
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "VEC3",
|
|
23
|
+
"componentType": 5126,
|
|
24
|
+
"count": 96,
|
|
25
|
+
"max": [
|
|
26
|
+
0.0625,
|
|
27
|
+
0.78125,
|
|
28
|
+
0.0625
|
|
29
|
+
],
|
|
30
|
+
"min": [
|
|
31
|
+
-0.0625,
|
|
32
|
+
-0.28125,
|
|
33
|
+
-0.0625
|
|
34
|
+
],
|
|
35
|
+
"bufferView": 1,
|
|
36
|
+
"byteOffset": 0
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "VEC3",
|
|
40
|
+
"componentType": 5126,
|
|
41
|
+
"count": 96,
|
|
42
|
+
"bufferView": 1,
|
|
43
|
+
"byteOffset": 12
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "VEC2",
|
|
47
|
+
"componentType": 5126,
|
|
48
|
+
"count": 96,
|
|
49
|
+
"bufferView": 1,
|
|
50
|
+
"byteOffset": 24
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "VEC3",
|
|
54
|
+
"componentType": 5126,
|
|
55
|
+
"count": 4,
|
|
56
|
+
"max": [
|
|
57
|
+
0.25,
|
|
58
|
+
0,
|
|
59
|
+
0.25
|
|
60
|
+
],
|
|
61
|
+
"min": [
|
|
62
|
+
-0.25,
|
|
63
|
+
0,
|
|
64
|
+
-0.25
|
|
65
|
+
],
|
|
66
|
+
"bufferView": 2,
|
|
67
|
+
"byteOffset": 0
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"type": "VEC3",
|
|
71
|
+
"componentType": 5126,
|
|
72
|
+
"count": 4,
|
|
73
|
+
"bufferView": 2,
|
|
74
|
+
"byteOffset": 12
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"type": "VEC2",
|
|
78
|
+
"componentType": 5126,
|
|
79
|
+
"count": 4,
|
|
80
|
+
"bufferView": 2,
|
|
81
|
+
"byteOffset": 24
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "VEC3",
|
|
85
|
+
"componentType": 5126,
|
|
86
|
+
"count": 4,
|
|
87
|
+
"max": [
|
|
88
|
+
0.78125,
|
|
89
|
+
0,
|
|
90
|
+
0.28125
|
|
91
|
+
],
|
|
92
|
+
"min": [
|
|
93
|
+
-0.78125,
|
|
94
|
+
0,
|
|
95
|
+
-0.28125
|
|
96
|
+
],
|
|
97
|
+
"bufferView": 3,
|
|
98
|
+
"byteOffset": 0
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"type": "VEC2",
|
|
102
|
+
"componentType": 5126,
|
|
103
|
+
"count": 4,
|
|
104
|
+
"bufferView": 3,
|
|
105
|
+
"byteOffset": 12
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"bufferViews": [
|
|
109
|
+
{
|
|
110
|
+
"buffer": 0,
|
|
111
|
+
"byteOffset": 0,
|
|
112
|
+
"byteLength": 276,
|
|
113
|
+
"target": 34963
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"buffer": 0,
|
|
117
|
+
"byteOffset": 276,
|
|
118
|
+
"byteLength": 3072,
|
|
119
|
+
"byteStride": 32,
|
|
120
|
+
"target": 34962
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"buffer": 0,
|
|
124
|
+
"byteOffset": 3348,
|
|
125
|
+
"byteLength": 128,
|
|
126
|
+
"byteStride": 32,
|
|
127
|
+
"target": 34962
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"buffer": 0,
|
|
131
|
+
"byteOffset": 3476,
|
|
132
|
+
"byteLength": 80,
|
|
133
|
+
"byteStride": 20,
|
|
134
|
+
"target": 34962
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"samplers": [
|
|
138
|
+
{
|
|
139
|
+
"magFilter": 9728,
|
|
140
|
+
"minFilter": 9728,
|
|
141
|
+
"wrapS": 33071,
|
|
142
|
+
"wrapT": 33071
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"textures": [
|
|
146
|
+
{
|
|
147
|
+
"source": 0,
|
|
148
|
+
"sampler": 0
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
"images": [
|
|
152
|
+
{
|
|
153
|
+
"mimeType": "image/png",
|
|
154
|
+
"uri": "baseColor.png"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"buffers": [
|
|
158
|
+
{
|
|
159
|
+
"uri": "bullet-named-nodes.bin",
|
|
160
|
+
"byteLength": 3556
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"materials": [
|
|
164
|
+
{
|
|
165
|
+
"alphaMode": "MASK",
|
|
166
|
+
"alphaCutoff": 0.05,
|
|
167
|
+
"doubleSided": true,
|
|
168
|
+
"pbrMetallicRoughness": {
|
|
169
|
+
"metallicFactor": 0,
|
|
170
|
+
"baseColorTexture": {
|
|
171
|
+
"index": 0
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
"meshes": [
|
|
177
|
+
{
|
|
178
|
+
"primitives": [
|
|
179
|
+
{
|
|
180
|
+
"attributes": {
|
|
181
|
+
"POSITION": 2,
|
|
182
|
+
"NORMAL": 3,
|
|
183
|
+
"TEXCOORD_0": 4
|
|
184
|
+
},
|
|
185
|
+
"mode": 4,
|
|
186
|
+
"material": 0,
|
|
187
|
+
"indices": 0
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"primitives": [
|
|
193
|
+
{
|
|
194
|
+
"attributes": {
|
|
195
|
+
"POSITION": 5,
|
|
196
|
+
"NORMAL": 6,
|
|
197
|
+
"TEXCOORD_0": 7
|
|
198
|
+
},
|
|
199
|
+
"mode": 4,
|
|
200
|
+
"material": 0,
|
|
201
|
+
"indices": 1
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"primitives": [
|
|
207
|
+
{
|
|
208
|
+
"attributes": {
|
|
209
|
+
"POSITION": 8,
|
|
210
|
+
"TEXCOORD_0": 9,
|
|
211
|
+
"NORMAL": 6
|
|
212
|
+
},
|
|
213
|
+
"mode": 4,
|
|
214
|
+
"material": 0,
|
|
215
|
+
"indices": 1
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"primitives": [
|
|
221
|
+
{
|
|
222
|
+
"attributes": {
|
|
223
|
+
"POSITION": 8,
|
|
224
|
+
"NORMAL": 6,
|
|
225
|
+
"TEXCOORD_0": 9
|
|
226
|
+
},
|
|
227
|
+
"mode": 4,
|
|
228
|
+
"material": 0,
|
|
229
|
+
"indices": 1
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
],
|
|
234
|
+
"nodes": [
|
|
235
|
+
{
|
|
236
|
+
"name": "beveled_cuboid",
|
|
237
|
+
"translation": [
|
|
238
|
+
0,
|
|
239
|
+
0.1875,
|
|
240
|
+
-0.25
|
|
241
|
+
],
|
|
242
|
+
"rotation": [
|
|
243
|
+
0.7071067811865475,
|
|
244
|
+
0,
|
|
245
|
+
0,
|
|
246
|
+
0.7071067811865476
|
|
247
|
+
],
|
|
248
|
+
"mesh": 0
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "plane",
|
|
252
|
+
"translation": [
|
|
253
|
+
0,
|
|
254
|
+
0.1875,
|
|
255
|
+
0
|
|
256
|
+
],
|
|
257
|
+
"rotation": [
|
|
258
|
+
0.7071067811865475,
|
|
259
|
+
0,
|
|
260
|
+
0,
|
|
261
|
+
0.7071067811865476
|
|
262
|
+
],
|
|
263
|
+
"mesh": 1
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "plane",
|
|
267
|
+
"translation": [
|
|
268
|
+
0,
|
|
269
|
+
0.1875,
|
|
270
|
+
0
|
|
271
|
+
],
|
|
272
|
+
"rotation": [
|
|
273
|
+
0.5,
|
|
274
|
+
-0.4999999999999999,
|
|
275
|
+
0.5,
|
|
276
|
+
0.5000000000000001
|
|
277
|
+
],
|
|
278
|
+
"mesh": 2
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"name": "plane",
|
|
282
|
+
"translation": [
|
|
283
|
+
0,
|
|
284
|
+
0.1875,
|
|
285
|
+
0
|
|
286
|
+
],
|
|
287
|
+
"rotation": [
|
|
288
|
+
0.7071067811865475,
|
|
289
|
+
5.551115123125786e-17,
|
|
290
|
+
0.7071067811865476,
|
|
291
|
+
1.6653345369377348e-16
|
|
292
|
+
],
|
|
293
|
+
"mesh": 3
|
|
294
|
+
}
|
|
295
|
+
],
|
|
296
|
+
"scenes": [
|
|
297
|
+
{
|
|
298
|
+
"name": "blockbench_export",
|
|
299
|
+
"nodes": [
|
|
300
|
+
0,
|
|
301
|
+
1,
|
|
302
|
+
2,
|
|
303
|
+
3
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
],
|
|
307
|
+
"scene": 0
|
|
308
|
+
}
|
|
Binary file
|