three-game-engine
Version:
Simple light-weight game engine using three.js, three-mesh-ui and rapier
80 lines (79 loc) • 3.54 kB
TypeScript
import * as THREE from 'three';
import RAPIER from '@dimforge/rapier3d-compat';
import Scene from './Scene';
import { GameObjectOptions } from './types';
import Component from './Component';
declare class GameObject {
id: string;
type: string | null;
name: string;
tags: string[];
threeJSGroup: THREE.Group;
parent: Scene | GameObject;
loaded: boolean;
loadPromise: Promise<void>;
options: GameObjectOptions;
components: Component[];
gameObjects: GameObject[];
constructor(parent: Scene | GameObject, options?: GameObjectOptions);
getScene(): Scene;
onGameObjectTypeChange: () => void;
reset(json?: any): void;
setName(name: string): void;
load(): Promise<void>;
_load(): Promise<void>;
isLoaded(): boolean;
hasTag(tag: string): boolean;
getComponent(componentClass: any): Component;
addGameObject(gameObject: GameObject): void;
removeGameObject(gameObject: GameObject): void;
getRootGameObjects(): GameObject[];
forEachGameObject(fn: (gameObject: GameObject) => {}): void;
getGameObject(fn: (gameObject: GameObject) => {}): GameObject | null;
getGameObjects(fn: (gameObject: GameObject) => {}): GameObject[];
getGameObjectWithName(name: string): GameObject | null;
getGameObjectsWithTag(tag: string): GameObject[];
destroy(): void;
afterLoaded(): void;
beforeRender({ deltaTimeInSec }: {
deltaTimeInSec: any;
}): void;
beforeUnloaded(): void;
setPosition(x: number, y: number, z: number): void;
rotateOnAxis(axis: THREE.Vector3, angle: number): void;
rotateOnWorldAxis(axis: THREE.Vector3, angle: number): void;
rotateX(degrees: number): void;
rotateY(degrees: number): void;
rotateZ(degrees: number): void;
setRotationFromAxisAngle(axis: THREE.Vector3, angle: number): void;
setRotationFromEuler(euler: THREE.Euler): void;
setRotationFromMatrix(m: THREE.Matrix4): void;
setRotationFromQuaternion(q: THREE.Quaternion): void;
setRotation(x: number, y: number, z: number, order?: string): void;
setScale(x: number, y: number, z: number): void;
translateOnAxis(axis: THREE.Vector3, distance: number): void;
translateX(distance: number): void;
translateY(distance: number): void;
translateZ(distance: number): void;
traverse(callback: (obj: THREE.Object3D) => {}): void;
traverseVisible(callback: (obj: THREE.Object3D) => {}): void;
traverseAncestors(callback: (obj: THREE.Object3D) => {}): void;
getRapierRigidBody(): RAPIER.RigidBody;
syncWithRigidBody(): void;
resetForces(wakeUp: boolean): void;
resetTorques(wakeUp: boolean): void;
addForce(vector: RAPIER.Vector, wakeUp: boolean): void;
addForceAtPoint(force: RAPIER.Vector, point: RAPIER.Vector, wakeUp: boolean): void;
addTorque(vector: RAPIER.Vector, wakeUp: boolean): void;
applyImpulse(impulse: RAPIER.Vector, wakeUp: boolean): void;
applyImpulseAtPoint(impulse: RAPIER.Vector, point: RAPIER.Vector, wakeUp: boolean): void;
lockTranslations(locked: boolean, wakeUp: boolean): void;
lockRotations(locked: boolean, wakeUp: boolean): void;
setEnabledRotations(enableX: boolean, enableY: boolean, enableZ: boolean, wakeUp: boolean): void;
setLinearDamping(factor: number): void;
setAngularDamping(factor: number): void;
setDominanceGroup(group: number): void;
enableCcd(enabled: boolean): void;
playSound(name: string, delayInSec?: number, detune?: number | null): void;
}
export default GameObject;