UNPKG

@nativewrappers/fivem

Version:

Native wrappers and utilities for use with FiveM.

190 lines (189 loc) 5.37 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); import { Vector3 } from "./common/utils/Vector"; import { GameplayCamera } from "./GameplayCamera"; import { PedBone } from "./models/PedBone"; import { LoadAnimDict } from "./utils/Animations"; class Camera { static { __name(this, "Camera"); } static shakeNames = [ "HAND_SHAKE", "SMALL_EXPLOSION_SHAKE", "MEDIUM_EXPLOSION_SHAKE", "LARGE_EXPLOSION_SHAKE", "JOLT_SHAKE", "VIBRATE_SHAKE", "ROAD_VIBRATION_SHAKE", "DRUNK_SHAKE", "SKY_DIVING_SHAKE", "FAMILY5_DRUG_TRIP_SHAKE", "DEATH_FAIL_IN_EFFECT_SHAKE" ]; handle; constructor(handle) { this.handle = handle; } get Handle() { return this.handle; } get IsActive() { return IsCamActive(this.handle); } set IsActive(active) { SetCamActive(this.handle, active); } get Position() { return Vector3.fromArray(GetCamCoord(this.handle)); } set Position(position) { SetCamCoord(this.handle, position.x, position.y, position.z); } get Rotation() { return Vector3.fromArray(GetCamRot(this.handle, 2)); } set Rotation(rotation) { SetCamRot(this.handle, rotation.x, rotation.y, rotation.z, 2); } // public get Matrix() : Matrix {} /** * Gets the direction the camera is facing. Same as ForwardVector */ get Direction() { return this.ForwardVector; } set Direction(direction) { const dir = direction.normalize(); const vec1 = new Vector3(dir.x, dir.y, 0); const vec2 = new Vector3(dir.z, vec1.distanceSquared(vec1), 0); const vec3 = vec2.normalize(); this.Rotation = new Vector3( Math.atan2(vec3.x, vec3.y) * 57.29577951308232, this.Rotation.y, Math.atan2(dir.x, dir.y) * -57.29577951308232 ); } // public get UpVector() : Vector3 { // return Matrix.Up; // } get ForwardVector() { const rotation = Vector3.multiply(GameplayCamera.Rotation, Math.PI / 180); const normalized = Vector3.normalize( new Vector3( -Math.sin(rotation.z) * Math.abs(Math.cos(rotation.x)), Math.cos(rotation.z) * Math.abs(Math.cos(rotation.x)), Math.sin(rotation.x) ) ); return new Vector3(normalized.x, normalized.y, normalized.z); } // public get RightVector() : Vector3 { // return Matrix.Right; // } // public Vector3 GetOffsetPosition(Vector3 offset) { // return Vector3.TransformCoordinate(offset, Matrix); // } // public Vector3 GetPositionOffset(Vector3 worldCoords) { // return Vector3.TransformCoordinate(worldCoords, Matrix.Invert(Matrix)); // } get FieldOfView() { return GetCamFov(this.handle); } set FieldOfView(fieldOfView) { SetCamFov(this.handle, fieldOfView); } get NearClip() { return GetCamNearClip(this.handle); } set NearClip(nearClip) { SetCamNearClip(this.handle, nearClip); } get FarClip() { return GetCamFarClip(this.handle); } set FarClip(farClip) { SetCamFarClip(this.handle, farClip); } set NearDepthOfField(nearDepthOfField) { SetCamNearDof(this.handle, nearDepthOfField); } get FarDepthOfField() { return GetCamFarDof(this.handle); } set FarDepthOfField(farDepthOfField) { SetCamFarDof(this.handle, farDepthOfField); } set DepthOfFieldStrength(strength) { SetCamDofStrength(this.handle, strength); } set MotionBlurStrength(strength) { SetCamMotionBlurStrength(this.handle, strength); } shake(shakeType, amplitude) { ShakeCam(this.handle, Camera.shakeNames[Number(shakeType)], amplitude); } stopShaking() { StopCamShaking(this.handle, true); } get IsShaking() { return IsCamShaking(this.handle); } set ShakeAmplitude(amplitude) { SetCamShakeAmplitude(this.handle, amplitude); } async playAnim(animName, animDict, position, rotation) { await LoadAnimDict(animDict); PlayCamAnim( this.handle, animName, animDict, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z, false, 2 ); RemoveAnimDict(animDict); } pointAt(target, offset = new Vector3(0, 0, 0)) { if (target instanceof Vector3) { PointCamAtCoord(this.handle, target.x, target.y, target.z); } else if (target instanceof PedBone) { PointCamAtPedBone(this.handle, target.Owner.Handle, target.Index, offset.x, offset.y, offset.z, true); } else { PointCamAtEntity(this.handle, target.Handle, offset.x, offset.y, offset.z, true); } } stopPointing() { StopCamPointing(this.handle); } interpTo(to, duration, easePosition, easeRotation) { SetCamActiveWithInterp(to.handle, this.handle, duration, Number(easePosition), Number(easeRotation)); } get IsInterpolating() { return IsCamInterpolating(this.handle); } attachTo(object, offset) { if (object instanceof PedBone) { AttachCamToPedBone(this.handle, object.Owner.Handle, object.Index, offset.x, offset.y, offset.z, true); } else { AttachCamToEntity(this.handle, object.Handle, offset.x, offset.y, offset.z, true); } } detach() { DetachCam(this.handle); } delete() { DestroyCam(this.handle, false); } exists() { return DoesCamExist(this.handle); } } export { Camera };