import type { Entity } from '../classes/Entity'; import type { Interior } from '../classes/Interior'; import { Vector2 } from '../types/Vector2'; import { Vector3 } from '../types/Vector3'; import { Vector4 } from '../types/Vector4'; import { Color } from '../types/Color'; import { createFromHandle } from '../types/HandleRegistry'; import { inv, rai, raf, ras, rav, pvi, pvf, pvv, pvii, pvfi, _h, f, int, uint, float, Hash, u8, u16, u32, u64, i8, i16, i32, i64 } from '../types/NativeAliases'; export class InteriorStatics { /** * @param p0 * @param p1 */ static N_0x2533F2AB0EB9C6F9(p0: any, p1: any): void { inv('0x2533F2AB0EB9C6F9', p0, p1); } /** * @returns */ static getInteriorFromPrimaryView(): Interior | null { return createFromHandle('Interior', inv('0xBC8A281FF125C655', rai())); } /** * Returns the handle of the interior that the entity is in. Returns 0 if outside. * * @param entity * @returns */ static getInteriorFromEntity(entity: Entity): Interior | null { return createFromHandle('Interior', inv('0xB417689857646F61', entity.handle, rai())); } /** * Seems to do the exact same as INTERIOR::GET_ROOM_KEY_FROM_ENTITY * * @param entity * @returns */ static getKeyForEntityInRoom(entity: Entity): number { return (inv('0x27D7B6F79E1F4603', entity.handle, rai())) & 0xFFFFFFFF; } static clearRoomForGameViewport(): void { inv('0x951A049765E0D450'); } /** * Hashed version of GET_INTERIOR_AT_COORDS_WITH_TYPE * * @param pos * @param typeHash * @returns */ static getInteriorAtCoordsWithTypehash(pos: Vector3, typeHash: string | number): Interior | null { return createFromHandle('Interior', inv('0x3543AEA1816D1D2B', f(pos.x), f(pos.y), f(pos.z), _h(typeHash), rai())); } /** * @param p0 * @param p1 */ static N_0xFE2B3D5500B1B2E4(p0: any, p1: any): void { inv('0xFE2B3D5500B1B2E4', p0, p1); } /** * Gets the room hash key from the room that the specified entity is in. Each room in every interior has a unique key. Returns 0 if the entity is outside. * * @param entity * @returns */ static getRoomKeyFromEntity(entity: Entity): number { return (inv('0x076E46E0EB52AFC6', entity.handle, rai())) & 0xFFFFFFFF; } /** * Returns true if the collision at the specified coords is marked as being outside (false if there's an interior) * * @param pos * @returns */ static isCollisionMarkedOutside(pos: Vector3): boolean { return !!inv('0xF291396B517E25B2', f(pos.x), f(pos.y), f(pos.z), rai()); } /** * @param entity * @param interior */ static retainEntityInInterior(entity: Entity, interior: Interior): void { inv('0x5BD616735F16BF5C', entity.handle, interior.handle); } /** * @param pos * @param interiorType * @returns */ static getInteriorAtCoordsWithType(pos: Vector3, interiorType: string): Interior | null { return createFromHandle('Interior', inv('0xAAD6170AA33B13C0', f(pos.x), f(pos.y), f(pos.z), interiorType, rai())); } /** * @returns */ static isInteriorScene(): boolean { return !!inv('0x4200F14D6F840A9A', rai()); } /** * @param entity */ static clearRoomForEntity(entity: Entity): void { inv('0xA1762D5BBFCA13A8', entity.handle); } /** * @param entity * @param interior * @param roomHashKey */ static forceRoomForEntity(entity: Entity, interior: Interior, roomHashKey: string | number): void { inv('0xBC29A9894C976945', entity.handle, interior.handle, _h(roomHashKey)); } /** * @param pos * @returns */ static getInteriorAtCoords(pos: Vector3): Interior | null { return createFromHandle('Interior', inv('0xCDD36C9E5C469070', f(pos.x), f(pos.y), f(pos.z), rai())); } /** * @param pos * @returns */ static getInteriorFromCollision(pos: Vector3): int { return inv('0x5054D1A5218FA696', f(pos.x), f(pos.y), f(pos.z), rai()); } /** * @param interiorID * @param roomHashKey */ static forceRoomForGameViewport(interiorID: int, roomHashKey: string | number): void { inv('0x115B4AA8FB28AB43', interiorID, _h(roomHashKey)); } }