@overextended/ox_lib
Version:
JS/TS wrapper for ox_lib exports
48 lines (47 loc) • 1.5 kB
JavaScript
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);
}
}