UNPKG

@overextended/ox_lib

Version:
48 lines (47 loc) 1.5 kB
import { Vector3 } from '@overextended/core/vector'; import { StateBag } from '../StateBag'; import { context } from '../..'; const isServer = context === 'server'; export class GameEntity extends StateBag { #handle = 0; type = ''; netId = 0; get handle() { return this.#handle; } setHandle(handle) { this.#handle = handle; // @ts-ignore this.netId = NetworkGetNetworkIdFromEntity(handle); this.statebag = this.netId ? `${this.type === 'Player' ? 'player' : 'entity'}:${this.netId}` : `localEntity:${handle}`; if ((!this.netId || isServer) && this.type !== 'Player') { EnsureEntityStateBag(handle); } } getCoords() { return Vector3.fromArray(GetEntityCoords(this.handle)); } setCoords(x, y, z, deadFlag = false, ragdollFlag = false, clearArea = false) { SetEntityCoords(this.handle, x, y, z, true, deadFlag, ragdollFlag, clearArea); } getModel() { return GetEntityModel(this.handle); } getHeading() { return GetEntityHeading(this.handle); } setHeading(heading) { SetEntityHeading(this.handle, heading); } getRoutingBucket() { return isServer ? GetEntityRoutingBucket(this.handle) : (this.get('bucket') ?? 0); } setRoutingBucket(bucket) { if (!isServer) return; SetEntityRoutingBucket(this.handle, bucket); this.set('bucket', bucket, true); } }