@open-core/framework 0.2.9 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/contracts/IPlatformCapabilities.d.ts +79 -0
- package/dist/adapters/contracts/IPlatformCapabilities.js +31 -0
- package/dist/adapters/contracts/IPlayerInfo.d.ts +1 -1
- package/dist/adapters/contracts/{IPedAppearanceClient.d.ts → client/IPedAppearanceClient.d.ts} +1 -1
- package/dist/adapters/contracts/server/IEntityServer.d.ts +188 -0
- package/dist/adapters/contracts/server/IEntityServer.js +39 -0
- package/dist/adapters/contracts/{IPlayerServer.d.ts → server/IPlayerServer.d.ts} +52 -9
- package/dist/adapters/contracts/server/IPlayerServer.js +39 -0
- package/dist/adapters/contracts/types/identifier.d.ts +67 -0
- package/dist/adapters/contracts/types/identifier.js +64 -0
- package/dist/adapters/contracts/types/index.d.ts +1 -0
- package/dist/{kernel/shared/appearance → adapters/contracts/types}/index.js +1 -1
- package/dist/adapters/fivem/fivem-capabilities.d.ts +18 -0
- package/dist/adapters/fivem/fivem-capabilities.js +67 -0
- package/dist/adapters/fivem/fivem-engine-events.js +17 -4
- package/dist/adapters/fivem/fivem-entity-server.d.ts +6 -2
- package/dist/adapters/fivem/fivem-entity-server.js +14 -1
- package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +1 -1
- package/dist/adapters/fivem/fivem-ped-appearance-client.js +1 -1
- package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +1 -1
- package/dist/adapters/fivem/fivem-ped-appearance-server.js +1 -1
- package/dist/adapters/fivem/fivem-platform.d.ts +5 -0
- package/dist/adapters/fivem/fivem-platform.js +100 -0
- package/dist/adapters/fivem/fivem-player-server.d.ts +7 -1
- package/dist/adapters/fivem/fivem-player-server.js +19 -1
- package/dist/adapters/fivem/fivem-playerinfo.d.ts +1 -1
- package/dist/adapters/fivem/fivem-vehicle-server.d.ts +1 -1
- package/dist/adapters/fivem/fivem-vehicle-server.js +1 -1
- package/dist/adapters/fivem/index.d.ts +13 -0
- package/dist/adapters/fivem/index.js +31 -0
- package/dist/adapters/index.d.ts +8 -7
- package/dist/adapters/index.js +13 -12
- package/dist/adapters/node/index.d.ts +5 -0
- package/dist/adapters/node/index.js +13 -1
- package/dist/adapters/node/node-capabilities.d.ts +19 -0
- package/dist/adapters/node/node-capabilities.js +54 -0
- package/dist/adapters/node/node-entity-server.d.ts +17 -6
- package/dist/adapters/node/node-entity-server.js +41 -15
- package/dist/adapters/node/node-net-transport.js +2 -2
- package/dist/adapters/node/node-ped-appearance-client.d.ts +1 -1
- package/dist/adapters/node/node-ped-appearance-client.js +1 -1
- package/dist/adapters/node/node-ped-appearance-server.d.ts +1 -1
- package/dist/adapters/node/node-ped-appearance-server.js +1 -1
- package/dist/adapters/node/node-platform.d.ts +5 -0
- package/dist/adapters/node/node-platform.js +103 -0
- package/dist/adapters/node/node-player-server.d.ts +19 -3
- package/dist/adapters/node/node-player-server.js +43 -9
- package/dist/adapters/node/node-playerinfo.d.ts +2 -2
- package/dist/adapters/node/node-playerinfo.js +14 -3
- package/dist/adapters/node/node-vehicle-server.d.ts +1 -1
- package/dist/adapters/node/node-vehicle-server.js +1 -1
- package/dist/adapters/platform/index.d.ts +1 -0
- package/dist/{runtime/server/database.js → adapters/platform/index.js} +1 -7
- package/dist/adapters/platform/platform-registry.d.ts +101 -0
- package/dist/adapters/platform/platform-registry.js +122 -0
- package/dist/adapters/register-capabilities.d.ts +52 -2
- package/dist/adapters/register-capabilities.js +69 -130
- package/dist/adapters/register-client-capabilities.js +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +5 -31
- package/dist/kernel/di/container.d.ts +4 -2
- package/dist/kernel/di/container.js +5 -3
- package/dist/kernel/di/metadata.scanner.d.ts +2 -1
- package/dist/kernel/di/metadata.scanner.js +3 -2
- package/dist/kernel/{utils/error → error}/app.error.d.ts +2 -2
- package/dist/kernel/error/common.error-codes.d.ts +1 -0
- package/dist/kernel/error/framework.error-codes.d.ts +12 -0
- package/dist/kernel/error/index.d.ts +4 -0
- package/dist/kernel/error/index.js +18 -0
- package/dist/kernel/{utils/error → error}/security.error.d.ts +1 -1
- package/dist/kernel/error/security.types.js +2 -0
- package/dist/kernel/index.d.ts +4 -5
- package/dist/kernel/index.js +6 -11
- package/dist/kernel/{shared/logger → logger}/core-logger.d.ts +0 -19
- package/dist/kernel/{shared/logger → logger}/core-logger.js +10 -24
- package/dist/kernel/{shared/logger → logger}/logger.env.d.ts +12 -5
- package/dist/kernel/{shared/logger → logger}/logger.env.js +29 -13
- package/dist/kernel/{shared/logger → logger}/logger.service.d.ts +14 -0
- package/dist/kernel/{shared/logger → logger}/logger.service.js +20 -2
- package/dist/kernel/logger/transports/transport.interface.js +2 -0
- package/dist/kernel/shared/index.d.ts +1 -2
- package/dist/kernel/shared/index.js +1 -2
- package/dist/kernel/utils/index.d.ts +0 -2
- package/dist/kernel/utils/index.js +0 -2
- package/dist/kernel/utils/result.d.ts +1 -1
- package/dist/runtime/client/api.d.ts +7 -0
- package/dist/runtime/client/api.js +23 -0
- package/dist/runtime/client/client-bootstrap.js +1 -1
- package/dist/runtime/client/controllers/spawner.controller.d.ts +1 -1
- package/dist/runtime/client/decorators/index.d.ts +2 -2
- package/dist/runtime/client/decorators/index.js +2 -2
- package/dist/runtime/client/decorators/key.d.ts +2 -2
- package/dist/runtime/client/decorators/key.js +3 -3
- package/dist/runtime/client/decorators/localEvent.d.ts +1 -1
- package/dist/runtime/client/decorators/localEvent.js +1 -1
- package/dist/runtime/client/decorators/{tick.d.ts → onTick.d.ts} +1 -1
- package/dist/runtime/client/decorators/{tick.js → onTick.js} +2 -2
- package/dist/runtime/client/decorators/{nui.d.ts → onView.d.ts} +4 -4
- package/dist/runtime/client/decorators/{nui.js → onView.js} +5 -5
- package/dist/runtime/client/index.d.ts +1 -7
- package/dist/runtime/client/index.js +26 -12
- package/dist/runtime/client/player/player.d.ts +1 -1
- package/dist/runtime/client/player/player.loader.js +3 -3
- package/dist/runtime/client/services/appearance.service.d.ts +1 -1
- package/dist/runtime/client/services/appearance.service.js +1 -1
- package/dist/runtime/client/services/blip.service.d.ts +1 -1
- package/dist/runtime/client/services/marker.service.d.ts +1 -1
- package/dist/runtime/client/services/ped.service.d.ts +1 -1
- package/dist/runtime/client/services/spawn.service.d.ts +2 -2
- package/dist/runtime/client/services/spawn.service.js +12 -12
- package/dist/runtime/client/services/textui.service.d.ts +1 -1
- package/dist/runtime/client/services/vehicle-client.service.d.ts +1 -1
- package/dist/runtime/client/services/vehicle.service.d.ts +1 -1
- package/dist/runtime/client/system/processors/export.processor.js +1 -1
- package/dist/runtime/client/system/processors/gameEvent.processor.js +1 -1
- package/dist/runtime/client/system/processors/interval.processor.js +1 -1
- package/dist/runtime/client/system/processors/localEvent.processor.js +1 -1
- package/dist/runtime/client/system/processors/netEvent.processor.js +1 -1
- package/dist/runtime/client/system/processors/nui.processor.js +1 -1
- package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +1 -1
- package/dist/runtime/client/system/processors/tick.processor.js +1 -1
- package/dist/runtime/client/ui-bridge.js +1 -1
- package/dist/runtime/core/entity.d.ts +168 -0
- package/dist/runtime/core/entity.js +226 -0
- package/dist/runtime/core/index.d.ts +3 -0
- package/dist/runtime/core/index.js +19 -0
- package/dist/runtime/core/spatial.d.ts +5 -0
- package/dist/runtime/core/spatial.js +2 -0
- package/dist/runtime/core/world.d.ts +13 -0
- package/dist/runtime/core/world.js +64 -0
- package/dist/runtime/server/api.d.ts +12 -0
- package/dist/runtime/server/api.js +34 -0
- package/dist/runtime/server/bootstrap.js +58 -103
- package/dist/runtime/server/bus/internal-event.bus.js +1 -1
- package/dist/runtime/server/contracts/index.d.ts +1 -2
- package/dist/runtime/server/contracts/index.js +2 -3
- package/dist/runtime/server/contracts/player-persistence.contract.d.ts +16 -18
- package/dist/runtime/server/contracts/player-persistence.contract.js +16 -18
- package/dist/runtime/server/contracts/security/command-error-observer.contract.d.ts +73 -0
- package/dist/runtime/server/contracts/security/command-error-observer.contract.js +9 -0
- package/dist/runtime/server/contracts/security/permission.types.d.ts +2 -2
- package/dist/runtime/server/contracts/security/principal-provider.contract.d.ts +3 -3
- package/dist/runtime/server/contracts/security/principal-provider.contract.js +2 -2
- package/dist/runtime/server/contracts/security/security-handler.contract.d.ts +2 -2
- package/dist/runtime/server/controllers/chat.controller.d.ts +1 -1
- package/dist/runtime/server/controllers/chat.controller.js +5 -0
- package/dist/runtime/server/controllers/command-export.controller.d.ts +12 -3
- package/dist/runtime/server/controllers/command-export.controller.js +81 -25
- package/dist/runtime/server/controllers/player-export.controller.d.ts +2 -2
- package/dist/runtime/server/controllers/player-export.controller.js +5 -0
- package/dist/runtime/server/controllers/principal-export.controller.js +8 -7
- package/dist/runtime/server/controllers/ready.controller.d.ts +5 -0
- package/dist/runtime/server/controllers/ready.controller.js +37 -0
- package/dist/runtime/server/controllers/remote-command-execution.controller.d.ts +10 -1
- package/dist/runtime/server/controllers/remote-command-execution.controller.js +65 -13
- package/dist/runtime/server/controllers/session.controller.d.ts +2 -2
- package/dist/runtime/server/controllers/session.controller.js +25 -17
- package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -38
- package/dist/runtime/server/controllers/vehicle.controller.js +6 -152
- package/dist/runtime/server/decorators/guard.js +2 -2
- package/dist/runtime/server/decorators/index.d.ts +1 -1
- package/dist/runtime/server/decorators/index.js +1 -1
- package/dist/runtime/server/decorators/{onFiveMEvent.d.ts → onRuntimeEvent.d.ts} +5 -4
- package/dist/runtime/server/decorators/{onFiveMEvent.js → onRuntimeEvent.js} +7 -6
- package/dist/runtime/server/decorators/requiresState.js +3 -3
- package/dist/runtime/server/decorators/throttle.d.ts +1 -1
- package/dist/runtime/server/decorators/throttle.js +1 -1
- package/dist/runtime/server/decorators/utils.d.ts +1 -1
- package/dist/runtime/server/decorators/utils.js +1 -1
- package/dist/runtime/server/devmode/dev-mode.service.d.ts +7 -8
- package/dist/runtime/server/devmode/dev-mode.service.js +18 -46
- package/dist/runtime/server/devmode/index.d.ts +1 -3
- package/dist/runtime/server/devmode/index.js +1 -18
- package/dist/runtime/server/devmode/player-simulator.service.js +3 -3
- package/dist/runtime/server/devmode/state-inspector.service.js +2 -2
- package/dist/runtime/server/devmode/types.d.ts +67 -31
- package/dist/runtime/server/devmode/types.js +1 -4
- package/dist/runtime/server/entities/player.d.ts +80 -66
- package/dist/runtime/server/entities/player.js +137 -98
- package/dist/runtime/server/entities/vehicle.d.ts +3 -3
- package/dist/runtime/server/error-handler.js +5 -5
- package/dist/runtime/server/helpers/normalize-app-error.d.ts +9 -0
- package/dist/runtime/server/helpers/normalize-app-error.js +20 -0
- package/dist/runtime/server/helpers/resolve-method.js +3 -3
- package/dist/runtime/server/index.d.ts +1 -13
- package/dist/runtime/server/index.js +25 -23
- package/dist/runtime/server/runtime.d.ts +32 -281
- package/dist/runtime/server/runtime.js +46 -60
- package/dist/runtime/server/services/appearance.service.d.ts +5 -5
- package/dist/runtime/server/services/appearance.service.js +5 -5
- package/dist/runtime/server/services/chat.service.d.ts +5 -3
- package/dist/runtime/server/services/chat.service.js +17 -12
- package/dist/runtime/server/services/core/command.service.d.ts +9 -1
- package/dist/runtime/server/services/core/command.service.js +16 -7
- package/dist/runtime/server/services/core/player.service.d.ts +12 -16
- package/dist/runtime/server/services/core/player.service.js +42 -47
- package/dist/runtime/server/services/core/principal.service.js +5 -5
- package/dist/runtime/server/services/core/session-recovery.service.d.ts +1 -1
- package/dist/runtime/server/services/core/session-recovery.service.js +2 -2
- package/dist/runtime/server/services/default/default-command-error-observer.d.ts +14 -0
- package/dist/runtime/server/services/default/default-command-error-observer.js +43 -0
- package/dist/runtime/server/services/default/default-principal.provider.d.ts +13 -0
- package/dist/runtime/server/services/default/default-principal.provider.js +38 -0
- package/dist/runtime/server/services/default/default-security.handler.d.ts +1 -1
- package/dist/runtime/server/services/default/default-security.handler.js +1 -1
- package/dist/runtime/server/services/index.d.ts +0 -3
- package/dist/runtime/server/services/index.js +1 -6
- package/dist/runtime/server/services/persistence.service.js +3 -3
- package/dist/runtime/server/services/ports/command-execution.port.d.ts +7 -0
- package/dist/runtime/server/services/ports/principal.port.d.ts +1 -1
- package/dist/runtime/server/services/remote/remote-command.service.d.ts +1 -0
- package/dist/runtime/server/services/remote/remote-command.service.js +7 -3
- package/dist/runtime/server/services/remote/remote-player.service.d.ts +2 -2
- package/dist/runtime/server/services/remote/remote-player.service.js +3 -3
- package/dist/runtime/server/services/remote/server-bridge.js +2 -2
- package/dist/runtime/server/services/services.register.d.ts +2 -5
- package/dist/runtime/server/services/services.register.js +29 -41
- package/dist/runtime/server/services/vehicle-modification.service.js +1 -1
- package/dist/runtime/server/services/vehicle.service.d.ts +3 -3
- package/dist/runtime/server/services/vehicle.service.js +5 -5
- package/dist/runtime/server/setup.d.ts +2 -3
- package/dist/runtime/server/setup.js +10 -11
- package/dist/runtime/server/system/metadata-server.keys.d.ts +1 -1
- package/dist/runtime/server/system/metadata-server.keys.js +1 -1
- package/dist/runtime/server/system/processors/command.processor.js +4 -0
- package/dist/runtime/server/system/processors/export.processor.js +1 -1
- package/dist/runtime/server/system/processors/internalEvent.processor.js +1 -1
- package/dist/runtime/server/system/processors/netEvent.processor.js +8 -9
- package/dist/runtime/server/system/processors/{fivemEvent.processor.d.ts → runtimeEvent.processor.d.ts} +1 -1
- package/dist/runtime/server/system/processors/{fivemEvent.processor.js → runtimeEvent.processor.js} +8 -8
- package/dist/runtime/server/system/processors/tick.processor.js +1 -1
- package/dist/runtime/server/system/processors.register.js +16 -11
- package/dist/runtime/server/system/schema-generator.js +2 -2
- package/dist/runtime/server/types/core-exports.d.ts +6 -6
- package/dist/runtime/server/types/index.d.ts +1 -1
- package/dist/runtime/server/types/index.js +1 -1
- package/dist/runtime/server/types/internal-events.d.ts +1 -1
- package/dist/runtime/server/types/vehicle.types.d.ts +1 -1
- package/package.json +7 -15
- package/dist/adapters/contracts/IEntityServer.d.ts +0 -88
- package/dist/adapters/contracts/IEntityServer.js +0 -13
- package/dist/adapters/contracts/IPlayerServer.js +0 -13
- package/dist/adapters/database/oxmysql.adapter.d.ts +0 -89
- package/dist/adapters/database/oxmysql.adapter.js +0 -149
- package/dist/adapters/database/resource.adapter.d.ts +0 -12
- package/dist/adapters/database/resource.adapter.js +0 -68
- package/dist/kernel/shared/appearance/index.d.ts +0 -1
- package/dist/runtime/index.d.ts +0 -2
- package/dist/runtime/index.js +0 -39
- package/dist/runtime/server/bootstrap.validation.d.ts +0 -12
- package/dist/runtime/server/bootstrap.validation.js +0 -104
- package/dist/runtime/server/contracts/auth-provider.contract.d.ts +0 -58
- package/dist/runtime/server/contracts/auth-provider.contract.js +0 -23
- package/dist/runtime/server/contracts/repository/index.d.ts +0 -57
- package/dist/runtime/server/contracts/repository/index.js +0 -61
- package/dist/runtime/server/contracts/repository/repository.contract.d.ts +0 -224
- package/dist/runtime/server/contracts/repository/repository.contract.js +0 -341
- package/dist/runtime/server/contracts/repository/repository.types.d.ts +0 -51
- package/dist/runtime/server/contracts/repository/repository.types.js +0 -7
- package/dist/runtime/server/database/adapter.registry.d.ts +0 -4
- package/dist/runtime/server/database/adapter.registry.js +0 -14
- package/dist/runtime/server/database/database.contract.d.ts +0 -128
- package/dist/runtime/server/database/database.contract.js +0 -29
- package/dist/runtime/server/database/database.service.d.ts +0 -188
- package/dist/runtime/server/database/database.service.js +0 -287
- package/dist/runtime/server/database/index.d.ts +0 -5
- package/dist/runtime/server/database/index.js +0 -25
- package/dist/runtime/server/database/types.d.ts +0 -67
- package/dist/runtime/server/database/types.js +0 -7
- package/dist/runtime/server/database.d.ts +0 -7
- package/dist/runtime/server/devmode/hot-reload.server.d.ts +0 -74
- package/dist/runtime/server/devmode/hot-reload.server.js +0 -261
- package/dist/runtime/server/services/config.service.d.ts +0 -75
- package/dist/runtime/server/services/config.service.js +0 -116
- package/dist/runtime/server/services/http/http.service.d.ts +0 -50
- package/dist/runtime/server/services/http/http.service.js +0 -126
- /package/dist/adapters/contracts/{IPedAppearanceClient.js → client/IPedAppearanceClient.js} +0 -0
- /package/dist/adapters/contracts/{IPedAppearanceServer.d.ts → server/IPedAppearanceServer.d.ts} +0 -0
- /package/dist/adapters/contracts/{IPedAppearanceServer.js → server/IPedAppearanceServer.js} +0 -0
- /package/dist/adapters/contracts/{IVehicleServer.d.ts → server/IVehicleServer.d.ts} +0 -0
- /package/dist/adapters/contracts/{IVehicleServer.js → server/IVehicleServer.js} +0 -0
- /package/dist/kernel/{utils/error → error}/app.error.js +0 -0
- /package/dist/kernel/{shared/logger/transports/transport.interface.js → error/common.error-codes.js} +0 -0
- /package/dist/{runtime/server/types/security.types.js → kernel/error/framework.error-codes.js} +0 -0
- /package/dist/kernel/{utils/error → error}/security.error.js +0 -0
- /package/dist/{runtime/server/types → kernel/error}/security.types.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/index.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/index.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.config.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.config.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.types.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/logger.types.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/buffered.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/console.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/console.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/dev-transport.factory.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/http.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/http.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/index.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/index.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/simple-console.transport.js +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/transport.interface.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.d.ts +0 -0
- /package/dist/kernel/{shared/logger → logger}/transports/websocket.transport.js +0 -0
- /package/dist/kernel/shared/{appearance/appearance.interface.d.ts → player-appearance.types.d.ts} +0 -0
- /package/dist/kernel/shared/{appearance/appearance.interface.js → player-appearance.types.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PlayerAppearance } from '../../../kernel
|
|
2
|
-
import { Vector3 } from '../../../kernel/utils';
|
|
1
|
+
import { PlayerAppearance } from '../../../kernel';
|
|
2
|
+
import { Vector3 } from '../../../kernel/utils/vector3';
|
|
3
3
|
import { AppearanceService } from './appearance.service';
|
|
4
4
|
interface SpawnOptions {
|
|
5
5
|
/** Optional: Apply complete character appearance (RP clothing, face, props, tattoos...) */
|
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.SpawnService = void 0;
|
|
13
13
|
const tsyringe_1 = require("tsyringe");
|
|
14
|
-
const
|
|
14
|
+
const kernel_1 = require("../../../kernel");
|
|
15
15
|
const appearance_service_1 = require("./appearance.service");
|
|
16
16
|
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
17
17
|
const NETWORK_TIMEOUT_MS = 15000;
|
|
@@ -37,7 +37,7 @@ let SpawnService = class SpawnService {
|
|
|
37
37
|
this.spawning = false;
|
|
38
38
|
}
|
|
39
39
|
async init() {
|
|
40
|
-
|
|
40
|
+
kernel_1.loggers.spawn.debug('SpawnService initialized');
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Performs the first spawn of the player.
|
|
@@ -57,7 +57,7 @@ let SpawnService = class SpawnService {
|
|
|
57
57
|
*/
|
|
58
58
|
async spawn(position, model, heading = 0.0, options) {
|
|
59
59
|
if (this.spawning) {
|
|
60
|
-
|
|
60
|
+
kernel_1.loggers.spawn.warn('Spawn requested while a spawn is already in progress');
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
63
|
this.spawning = true;
|
|
@@ -82,13 +82,13 @@ let SpawnService = class SpawnService {
|
|
|
82
82
|
if (!IsScreenFadedIn() && !IsScreenFadingIn()) {
|
|
83
83
|
DoScreenFadeIn(500);
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
kernel_1.loggers.spawn.info('Player spawned successfully (first spawn)', {
|
|
86
86
|
position: { x: position.x, y: position.y, z: position.z },
|
|
87
87
|
model,
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
catch (err) {
|
|
91
|
-
|
|
91
|
+
kernel_1.loggers.spawn.error('Failed to spawn player', {
|
|
92
92
|
error: err instanceof Error ? err.message : String(err),
|
|
93
93
|
});
|
|
94
94
|
throw err;
|
|
@@ -126,7 +126,7 @@ let SpawnService = class SpawnService {
|
|
|
126
126
|
const finalPed = await this.ensurePed();
|
|
127
127
|
await this.setupPedForGameplay(finalPed);
|
|
128
128
|
await this.teleportTo(position, heading);
|
|
129
|
-
|
|
129
|
+
kernel_1.loggers.spawn.info('Player respawned', {
|
|
130
130
|
position: { x: position.x, y: position.y, z: position.z },
|
|
131
131
|
heading,
|
|
132
132
|
});
|
|
@@ -149,7 +149,7 @@ let SpawnService = class SpawnService {
|
|
|
149
149
|
const start = GetGameTimer();
|
|
150
150
|
while (!NetworkIsSessionStarted()) {
|
|
151
151
|
if (GetGameTimer() - start > NETWORK_TIMEOUT_MS) {
|
|
152
|
-
|
|
152
|
+
kernel_1.loggers.spawn.error('Network session did not start in time');
|
|
153
153
|
throw new Error('NETWORK_TIMEOUT');
|
|
154
154
|
}
|
|
155
155
|
await delay(0);
|
|
@@ -168,7 +168,7 @@ let SpawnService = class SpawnService {
|
|
|
168
168
|
async setPlayerModel(model) {
|
|
169
169
|
const modelHash = GetHashKey(model);
|
|
170
170
|
if (!IsModelInCdimage(modelHash) || !IsModelValid(modelHash)) {
|
|
171
|
-
|
|
171
|
+
kernel_1.loggers.spawn.error('Invalid model requested', { model });
|
|
172
172
|
throw new Error('MODEL_INVALID');
|
|
173
173
|
}
|
|
174
174
|
RequestModel(modelHash);
|
|
@@ -187,7 +187,7 @@ let SpawnService = class SpawnService {
|
|
|
187
187
|
let ped = PlayerPedId();
|
|
188
188
|
while (ped === 0) {
|
|
189
189
|
if (GetGameTimer() - start > PED_TIMEOUT_MS) {
|
|
190
|
-
|
|
190
|
+
kernel_1.loggers.spawn.error('PlayerPedId() did not become valid in time');
|
|
191
191
|
throw new Error('PED_TIMEOUT');
|
|
192
192
|
}
|
|
193
193
|
await delay(0);
|
|
@@ -200,7 +200,7 @@ let SpawnService = class SpawnService {
|
|
|
200
200
|
const start = GetGameTimer();
|
|
201
201
|
while (!HasCollisionLoadedAroundEntity(ped)) {
|
|
202
202
|
if (GetGameTimer() - start > COLLISION_TIMEOUT_MS) {
|
|
203
|
-
|
|
203
|
+
kernel_1.loggers.spawn.warn('Collision did not fully load around entity in time', {
|
|
204
204
|
x: position.x,
|
|
205
205
|
y: position.y,
|
|
206
206
|
z: position.z,
|
|
@@ -235,7 +235,7 @@ let SpawnService = class SpawnService {
|
|
|
235
235
|
}
|
|
236
236
|
const validation = this.appearanceService.validateAppearance(appearance);
|
|
237
237
|
if (!validation.valid) {
|
|
238
|
-
|
|
238
|
+
kernel_1.loggers.spawn.warn('Invalid appearance data', { errors: validation.errors });
|
|
239
239
|
SetPedDefaultComponentVariation(ped);
|
|
240
240
|
return;
|
|
241
241
|
}
|
|
@@ -243,7 +243,7 @@ let SpawnService = class SpawnService {
|
|
|
243
243
|
await this.appearanceService.applyAppearance(ped, appearance);
|
|
244
244
|
}
|
|
245
245
|
catch (error) {
|
|
246
|
-
|
|
246
|
+
kernel_1.loggers.spawn.error('Failed to apply appearance, using default variation', {
|
|
247
247
|
error: error instanceof Error ? error.message : String(error),
|
|
248
248
|
});
|
|
249
249
|
SetPedDefaultComponentVariation(ped);
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ClientExportProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
const clientExport = logger_1.coreLogger.child('Export', logger_1.LogDomain.CLIENT);
|
|
14
14
|
let ClientExportProcessor = class ClientExportProcessor {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.GameEventProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const game_events_1 = require("../../types/game-events");
|
|
13
13
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
14
14
|
const clientGameEvent = logger_1.coreLogger.child('GameEvent', logger_1.LogDomain.CLIENT);
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.IntervalProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
const clientInterval = logger_1.coreLogger.child('Interval', logger_1.LogDomain.CLIENT);
|
|
14
14
|
let IntervalProcessor = class IntervalProcessor {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.LocalEventProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
const clientLocalEvent = logger_1.coreLogger.child('LocalEvent', logger_1.LogDomain.CLIENT);
|
|
14
14
|
let LocalEventProcessor = class LocalEventProcessor {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ClientNetEventProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
const clientNetEvent = logger_1.coreLogger.child('NetEvent', logger_1.LogDomain.CLIENT);
|
|
14
14
|
let ClientNetEventProcessor = class ClientNetEventProcessor {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.NuiProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
let NuiProcessor = class NuiProcessor {
|
|
14
14
|
constructor() {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ResourceStopProcessor = exports.ResourceStartProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
const clientLifecycle = logger_1.coreLogger.child('Lifecycle', logger_1.LogDomain.CLIENT);
|
|
14
14
|
let ResourceStartProcessor = class ResourceStartProcessor {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.TickProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../../../kernel/
|
|
11
|
+
const logger_1 = require("../../../../kernel/logger");
|
|
12
12
|
const metadata_client_keys_1 = require("../metadata-client.keys");
|
|
13
13
|
const clientTick = logger_1.coreLogger.child('Tick', logger_1.LogDomain.CLIENT);
|
|
14
14
|
let TickProcessor = class TickProcessor {
|
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.NUI = exports.NuiBridge = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
|
-
const logger_1 = require("../../kernel/
|
|
11
|
+
const logger_1 = require("../../kernel/logger");
|
|
12
12
|
const nuiLogger = logger_1.coreLogger.child('NUI', logger_1.LogDomain.CLIENT);
|
|
13
13
|
/**
|
|
14
14
|
* Type-safe NUI (Native UI) Bridge for client-server communication.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity identifier format: `kind:id`
|
|
3
|
+
* @example 'player:1', 'vehicle:42', 'npc:spawn-1'
|
|
4
|
+
*/
|
|
5
|
+
export type EntityId = `${string}:${string | number}`;
|
|
6
|
+
/**
|
|
7
|
+
* Entity metadata storage type.
|
|
8
|
+
*/
|
|
9
|
+
export type EntityMeta = Record<string, unknown>;
|
|
10
|
+
/**
|
|
11
|
+
* Base entity class for all game entities.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Provides common functionality for all entities in the game world:
|
|
15
|
+
* - Unique identification
|
|
16
|
+
* - State flags (active states like 'dead', 'frozen', etc.)
|
|
17
|
+
* - Metadata storage
|
|
18
|
+
* - Dimension/world support
|
|
19
|
+
*
|
|
20
|
+
* This class is platform-agnostic and should be extended by
|
|
21
|
+
* platform-specific entity implementations.
|
|
22
|
+
*/
|
|
23
|
+
export declare abstract class BaseEntity {
|
|
24
|
+
/**
|
|
25
|
+
* Unique identifier for this entity.
|
|
26
|
+
* Format: `kind:id` (e.g., 'player:1', 'vehicle:42')
|
|
27
|
+
*/
|
|
28
|
+
readonly id: EntityId;
|
|
29
|
+
/**
|
|
30
|
+
* Entity kind extracted from the ID.
|
|
31
|
+
* @example 'player', 'vehicle', 'npc'
|
|
32
|
+
*/
|
|
33
|
+
readonly kind: string;
|
|
34
|
+
/**
|
|
35
|
+
* Active state flags.
|
|
36
|
+
*/
|
|
37
|
+
private state;
|
|
38
|
+
/**
|
|
39
|
+
* Transient metadata storage.
|
|
40
|
+
*/
|
|
41
|
+
private meta;
|
|
42
|
+
/**
|
|
43
|
+
* Current dimension/world ID.
|
|
44
|
+
* 0 is the default shared world.
|
|
45
|
+
*/
|
|
46
|
+
protected _dimension: number;
|
|
47
|
+
/**
|
|
48
|
+
* Stream distance for this entity.
|
|
49
|
+
* Determines how far away players can see this entity.
|
|
50
|
+
*/
|
|
51
|
+
protected _streamDistance: number;
|
|
52
|
+
/**
|
|
53
|
+
* Creates a new entity.
|
|
54
|
+
* @param id - Unique entity identifier in format 'kind:id'
|
|
55
|
+
*/
|
|
56
|
+
constructor(id: EntityId);
|
|
57
|
+
/**
|
|
58
|
+
* Adds a state flag to the entity.
|
|
59
|
+
* @param state - State identifier (e.g., 'dead', 'frozen', 'invisible')
|
|
60
|
+
*/
|
|
61
|
+
add(state: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Checks if the entity has a state flag.
|
|
64
|
+
* @param key - State identifier to check
|
|
65
|
+
*/
|
|
66
|
+
has(key: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Gets all active state flags.
|
|
69
|
+
* @returns Array of state identifiers
|
|
70
|
+
*/
|
|
71
|
+
all(): string[];
|
|
72
|
+
/**
|
|
73
|
+
* Removes a state flag from the entity.
|
|
74
|
+
* @param key - State identifier to remove
|
|
75
|
+
*/
|
|
76
|
+
delete(key: string): void;
|
|
77
|
+
/**
|
|
78
|
+
* Clears all state flags.
|
|
79
|
+
*/
|
|
80
|
+
clearStates(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Toggles a state flag.
|
|
83
|
+
* @param state - State identifier
|
|
84
|
+
* @param force - Optional force value (true = add, false = remove)
|
|
85
|
+
* @returns The new state (true if added, false if removed)
|
|
86
|
+
*/
|
|
87
|
+
toggle(state: string, force?: boolean): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Sets a metadata value.
|
|
90
|
+
* @param key - Metadata key
|
|
91
|
+
* @param value - Value to store
|
|
92
|
+
*/
|
|
93
|
+
setMeta<T = unknown>(key: string, value: T): void;
|
|
94
|
+
/**
|
|
95
|
+
* Gets a metadata value.
|
|
96
|
+
* @param key - Metadata key
|
|
97
|
+
* @returns The stored value or undefined
|
|
98
|
+
*/
|
|
99
|
+
getMeta<T = unknown>(key: string): T | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Checks if a metadata key exists.
|
|
102
|
+
* @param key - Metadata key
|
|
103
|
+
*/
|
|
104
|
+
hasMeta(key: string): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Deletes a metadata value.
|
|
107
|
+
* @param key - Metadata key
|
|
108
|
+
*/
|
|
109
|
+
deleteMeta(key: string): void;
|
|
110
|
+
/**
|
|
111
|
+
* Gets all metadata.
|
|
112
|
+
* @returns Copy of the metadata object
|
|
113
|
+
*/
|
|
114
|
+
getAllMeta(): EntityMeta;
|
|
115
|
+
/**
|
|
116
|
+
* Clears all metadata.
|
|
117
|
+
*/
|
|
118
|
+
clearMeta(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Gets the current dimension/world ID.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* Override this in platform-specific implementations to sync
|
|
124
|
+
* with the actual game engine dimension system.
|
|
125
|
+
*/
|
|
126
|
+
get dimension(): number;
|
|
127
|
+
/**
|
|
128
|
+
* Sets the dimension/world ID.
|
|
129
|
+
*
|
|
130
|
+
* @remarks
|
|
131
|
+
* Override this in platform-specific implementations to sync
|
|
132
|
+
* with the actual game engine dimension system.
|
|
133
|
+
*/
|
|
134
|
+
set dimension(value: number);
|
|
135
|
+
/**
|
|
136
|
+
* Gets the stream distance for this entity.
|
|
137
|
+
*
|
|
138
|
+
* @remarks
|
|
139
|
+
* Stream distance determines how far away players can see this entity.
|
|
140
|
+
* Not all platforms support custom stream distances.
|
|
141
|
+
*/
|
|
142
|
+
get streamDistance(): number;
|
|
143
|
+
/**
|
|
144
|
+
* Sets the stream distance for this entity.
|
|
145
|
+
*/
|
|
146
|
+
set streamDistance(value: number);
|
|
147
|
+
/**
|
|
148
|
+
* Creates a snapshot of the entity state.
|
|
149
|
+
* @returns Plain object with entity data
|
|
150
|
+
*/
|
|
151
|
+
snapshot(): EntitySnapshot;
|
|
152
|
+
/**
|
|
153
|
+
* Restores entity state from a snapshot.
|
|
154
|
+
* @param snapshot - Snapshot to restore from
|
|
155
|
+
*/
|
|
156
|
+
restore(snapshot: Partial<EntitySnapshot>): void;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Entity snapshot for serialization.
|
|
160
|
+
*/
|
|
161
|
+
export interface EntitySnapshot {
|
|
162
|
+
id: EntityId;
|
|
163
|
+
kind: string;
|
|
164
|
+
states: string[];
|
|
165
|
+
meta: EntityMeta;
|
|
166
|
+
dimension: number;
|
|
167
|
+
streamDistance: number;
|
|
168
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseEntity = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Base entity class for all game entities.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Provides common functionality for all entities in the game world:
|
|
9
|
+
* - Unique identification
|
|
10
|
+
* - State flags (active states like 'dead', 'frozen', etc.)
|
|
11
|
+
* - Metadata storage
|
|
12
|
+
* - Dimension/world support
|
|
13
|
+
*
|
|
14
|
+
* This class is platform-agnostic and should be extended by
|
|
15
|
+
* platform-specific entity implementations.
|
|
16
|
+
*/
|
|
17
|
+
class BaseEntity {
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new entity.
|
|
20
|
+
* @param id - Unique entity identifier in format 'kind:id'
|
|
21
|
+
*/
|
|
22
|
+
constructor(id) {
|
|
23
|
+
/**
|
|
24
|
+
* Active state flags.
|
|
25
|
+
*/
|
|
26
|
+
this.state = new Set();
|
|
27
|
+
/**
|
|
28
|
+
* Transient metadata storage.
|
|
29
|
+
*/
|
|
30
|
+
this.meta = {};
|
|
31
|
+
/**
|
|
32
|
+
* Current dimension/world ID.
|
|
33
|
+
* 0 is the default shared world.
|
|
34
|
+
*/
|
|
35
|
+
this._dimension = 0;
|
|
36
|
+
/**
|
|
37
|
+
* Stream distance for this entity.
|
|
38
|
+
* Determines how far away players can see this entity.
|
|
39
|
+
*/
|
|
40
|
+
this._streamDistance = 100;
|
|
41
|
+
this.id = id;
|
|
42
|
+
this.kind = id.split(':')[0];
|
|
43
|
+
}
|
|
44
|
+
// ─────────────────────────────────────────────────────────────────
|
|
45
|
+
// State Management
|
|
46
|
+
// ─────────────────────────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Adds a state flag to the entity.
|
|
49
|
+
* @param state - State identifier (e.g., 'dead', 'frozen', 'invisible')
|
|
50
|
+
*/
|
|
51
|
+
add(state) {
|
|
52
|
+
this.state.add(state);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Checks if the entity has a state flag.
|
|
56
|
+
* @param key - State identifier to check
|
|
57
|
+
*/
|
|
58
|
+
has(key) {
|
|
59
|
+
return this.state.has(key);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Gets all active state flags.
|
|
63
|
+
* @returns Array of state identifiers
|
|
64
|
+
*/
|
|
65
|
+
all() {
|
|
66
|
+
return Array.from(this.state);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Removes a state flag from the entity.
|
|
70
|
+
* @param key - State identifier to remove
|
|
71
|
+
*/
|
|
72
|
+
delete(key) {
|
|
73
|
+
this.state.delete(key);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Clears all state flags.
|
|
77
|
+
*/
|
|
78
|
+
clearStates() {
|
|
79
|
+
this.state.clear();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Toggles a state flag.
|
|
83
|
+
* @param state - State identifier
|
|
84
|
+
* @param force - Optional force value (true = add, false = remove)
|
|
85
|
+
* @returns The new state (true if added, false if removed)
|
|
86
|
+
*/
|
|
87
|
+
toggle(state, force) {
|
|
88
|
+
if (force !== undefined) {
|
|
89
|
+
force ? this.add(state) : this.delete(state);
|
|
90
|
+
return force;
|
|
91
|
+
}
|
|
92
|
+
if (this.has(state)) {
|
|
93
|
+
this.delete(state);
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
this.add(state);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
// ─────────────────────────────────────────────────────────────────
|
|
100
|
+
// Metadata Management
|
|
101
|
+
// ─────────────────────────────────────────────────────────────────
|
|
102
|
+
/**
|
|
103
|
+
* Sets a metadata value.
|
|
104
|
+
* @param key - Metadata key
|
|
105
|
+
* @param value - Value to store
|
|
106
|
+
*/
|
|
107
|
+
setMeta(key, value) {
|
|
108
|
+
this.meta[key] = value;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Gets a metadata value.
|
|
112
|
+
* @param key - Metadata key
|
|
113
|
+
* @returns The stored value or undefined
|
|
114
|
+
*/
|
|
115
|
+
getMeta(key) {
|
|
116
|
+
return this.meta[key];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Checks if a metadata key exists.
|
|
120
|
+
* @param key - Metadata key
|
|
121
|
+
*/
|
|
122
|
+
hasMeta(key) {
|
|
123
|
+
return key in this.meta;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Deletes a metadata value.
|
|
127
|
+
* @param key - Metadata key
|
|
128
|
+
*/
|
|
129
|
+
deleteMeta(key) {
|
|
130
|
+
delete this.meta[key];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Gets all metadata.
|
|
134
|
+
* @returns Copy of the metadata object
|
|
135
|
+
*/
|
|
136
|
+
getAllMeta() {
|
|
137
|
+
return Object.assign({}, this.meta);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Clears all metadata.
|
|
141
|
+
*/
|
|
142
|
+
clearMeta() {
|
|
143
|
+
this.meta = {};
|
|
144
|
+
}
|
|
145
|
+
// ─────────────────────────────────────────────────────────────────
|
|
146
|
+
// Dimension/World Support
|
|
147
|
+
// ─────────────────────────────────────────────────────────────────
|
|
148
|
+
/**
|
|
149
|
+
* Gets the current dimension/world ID.
|
|
150
|
+
*
|
|
151
|
+
* @remarks
|
|
152
|
+
* Override this in platform-specific implementations to sync
|
|
153
|
+
* with the actual game engine dimension system.
|
|
154
|
+
*/
|
|
155
|
+
get dimension() {
|
|
156
|
+
return this._dimension;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Sets the dimension/world ID.
|
|
160
|
+
*
|
|
161
|
+
* @remarks
|
|
162
|
+
* Override this in platform-specific implementations to sync
|
|
163
|
+
* with the actual game engine dimension system.
|
|
164
|
+
*/
|
|
165
|
+
set dimension(value) {
|
|
166
|
+
this._dimension = value;
|
|
167
|
+
}
|
|
168
|
+
// ─────────────────────────────────────────────────────────────────
|
|
169
|
+
// Stream Distance
|
|
170
|
+
// ─────────────────────────────────────────────────────────────────
|
|
171
|
+
/**
|
|
172
|
+
* Gets the stream distance for this entity.
|
|
173
|
+
*
|
|
174
|
+
* @remarks
|
|
175
|
+
* Stream distance determines how far away players can see this entity.
|
|
176
|
+
* Not all platforms support custom stream distances.
|
|
177
|
+
*/
|
|
178
|
+
get streamDistance() {
|
|
179
|
+
return this._streamDistance;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Sets the stream distance for this entity.
|
|
183
|
+
*/
|
|
184
|
+
set streamDistance(value) {
|
|
185
|
+
this._streamDistance = Math.max(0, value);
|
|
186
|
+
}
|
|
187
|
+
// ─────────────────────────────────────────────────────────────────
|
|
188
|
+
// Serialization
|
|
189
|
+
// ─────────────────────────────────────────────────────────────────
|
|
190
|
+
/**
|
|
191
|
+
* Creates a snapshot of the entity state.
|
|
192
|
+
* @returns Plain object with entity data
|
|
193
|
+
*/
|
|
194
|
+
snapshot() {
|
|
195
|
+
return {
|
|
196
|
+
id: this.id,
|
|
197
|
+
kind: this.kind,
|
|
198
|
+
states: this.all(),
|
|
199
|
+
meta: this.getAllMeta(),
|
|
200
|
+
dimension: this._dimension,
|
|
201
|
+
streamDistance: this._streamDistance,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Restores entity state from a snapshot.
|
|
206
|
+
* @param snapshot - Snapshot to restore from
|
|
207
|
+
*/
|
|
208
|
+
restore(snapshot) {
|
|
209
|
+
if (snapshot.states) {
|
|
210
|
+
this.clearStates();
|
|
211
|
+
for (const s of snapshot.states) {
|
|
212
|
+
this.add(s);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (snapshot.meta) {
|
|
216
|
+
this.meta = Object.assign({}, snapshot.meta);
|
|
217
|
+
}
|
|
218
|
+
if (snapshot.dimension !== undefined) {
|
|
219
|
+
this._dimension = snapshot.dimension;
|
|
220
|
+
}
|
|
221
|
+
if (snapshot.streamDistance !== undefined) {
|
|
222
|
+
this._streamDistance = snapshot.streamDistance;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
exports.BaseEntity = BaseEntity;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./entity"), exports);
|
|
18
|
+
__exportStar(require("./spatial"), exports);
|
|
19
|
+
__exportStar(require("./world"), exports);
|