87 lines
2.2 KiB
TypeScript
87 lines
2.2 KiB
TypeScript
// Content/functions.ts
|
|
|
|
import type {Color, Controller, Float, InputMappingContext, Integer, Vector} from "./types.js";
|
|
|
|
// Math
|
|
export function sin(x: Float): Float {
|
|
return Math.sin(x);
|
|
}
|
|
|
|
export function cos(x: Float): Float {
|
|
return Math.cos(x);
|
|
}
|
|
|
|
export function acos(x: Float): Float {
|
|
return Math.acos(x);
|
|
}
|
|
|
|
export function Dot(v1: Vector, v2: Vector): Float {
|
|
return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
|
}
|
|
|
|
export function D2R(degrees: Float): Float {
|
|
return degrees * (Math.PI / 180);
|
|
}
|
|
|
|
// Utilities
|
|
export function Print(
|
|
message: string = 'Hello',
|
|
printToScreen: boolean = true,
|
|
printToLog: boolean = true,
|
|
textColor: Color = {R: 0.0, G: 0.66, B: 1.0, A: 1.0},
|
|
duration: Float = 2.0): void {
|
|
console.log(message);
|
|
}
|
|
|
|
// Arrays
|
|
|
|
export function SetArrayElem<T>(targetArray: T[], index: Integer, value: T): void {
|
|
targetArray[index] = value;
|
|
}
|
|
|
|
export function AddToArray<T>(targetArray: T[], value: T): void {
|
|
targetArray.push(value);
|
|
}
|
|
|
|
export function GetFromArray<T>(targetArray: T[], index: Integer): T | null {
|
|
return index >= 0 && index < targetArray.length ? targetArray[index] : null;
|
|
}
|
|
|
|
export function RemoveIndexFromArray<T>(targetArray: T[], index: Integer): void {
|
|
if (index >= 0 && index < targetArray.length) {
|
|
targetArray.splice(index, 1);
|
|
}
|
|
}
|
|
|
|
export function RemoveItemFromArray<T>(targetArray: T[], item: T): void {
|
|
const index = targetArray.indexOf(item);
|
|
if (index !== -1) {
|
|
targetArray.splice(index, 1);
|
|
}
|
|
}
|
|
|
|
// UE functions placeholders
|
|
export function CastToPlayController(controller: Controller): Controller {
|
|
return controller;
|
|
}
|
|
|
|
export function EnhancedInputLocalPlayerSubsystem(playerController: Controller): Controller {
|
|
return playerController;
|
|
}
|
|
|
|
export function AddMappingContext(Target: Controller, MappingContext: InputMappingContext, Priority: Integer = 0): void {
|
|
console.log(`Adding mapping context with priority ${Priority} to player controller ${Target}`);
|
|
}
|
|
|
|
export function CreateWidget<T>(widgetClass: T): T {
|
|
return widgetClass;
|
|
}
|
|
|
|
export function IsValid<T>(object: T | null): boolean {
|
|
return object !== null && object !== undefined;
|
|
}
|
|
|
|
export function GetGameTimeInSeconds(): Float {
|
|
return Date.now() / 1000; // Simple placeholder for game time
|
|
}
|