tengri/Content/functions.ts

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
}