@matematrolii/sketchbook
Version:
3D matematrolii playground built on three.js and cannon.js
105 lines (104 loc) • 4.31 kB
TypeScript
import * as THREE from "three";
import * as CANNON from "cannon";
import { KeyBinding } from "../core/KeyBinding";
import { VectorSpringSimulator } from "../physics/spring_simulation/VectorSpringSimulator";
import { RelativeSpringSimulator } from "../physics/spring_simulation/RelativeSpringSimulator";
import { ICharacterAI } from "../interfaces/ICharacterAI";
import { World } from "../world/World";
import { ICharacterState } from "../interfaces/ICharacterState";
import { IWorldEntity } from "../interfaces/IWorldEntity";
import { CapsuleCollider } from "../physics/colliders/CapsuleCollider";
import { GroundImpactData } from "./GroundImpactData";
import { EntityType } from "../enums/EntityType";
import { ModelType } from "../enums/WorldType";
export declare class Character extends THREE.Object3D implements IWorldEntity {
isHit: boolean;
updateOrder: number;
entityType: EntityType;
height: number;
tiltContainer: THREE.Group;
modelContainer: THREE.Group;
materials: THREE.Material[];
mixer: THREE.AnimationMixer;
animations: any[];
acceleration: THREE.Vector3;
velocity: THREE.Vector3;
arcadeVelocityInfluence: THREE.Vector3;
velocityTarget: THREE.Vector3;
arcadeVelocityIsAdditive: boolean;
defaultVelocitySimulatorDamping: number;
defaultVelocitySimulatorMass: number;
velocitySimulator: VectorSpringSimulator;
moveSpeed: number;
angularVelocity: number;
orientation: THREE.Vector3;
orientationTarget: THREE.Vector3;
defaultRotationSimulatorDamping: number;
defaultRotationSimulatorMass: number;
rotationSimulator: RelativeSpringSimulator;
viewVector: THREE.Vector3;
actions: {
[action: string]: KeyBinding;
};
characterCapsule: CapsuleCollider;
rayResult: CANNON.RaycastResult;
rayHasHit: boolean;
rayCastLength: number;
raySafeOffset: number;
wantsToJump: boolean;
initJumpSpeed: number;
groundImpactData: GroundImpactData;
world: World;
charState: ICharacterState;
behaviour: ICharacterAI;
private physicsEnabled;
shootDirection: THREE.Vector3;
shootVelo: number;
raycaster: THREE.Raycaster;
type: ModelType;
private gltf;
private bulletTimePassed;
constructor(gltf: any, texture: string, type: ModelType, name: string);
setAnimations(animations: []): void;
setArcadeVelocityInfluence(x: number, y?: number, z?: number): void;
setViewVector(vector: THREE.Vector3): void;
/**
* Set state to the player. Pass state class (function) name.
* @param {function} State
*/
setState(state: ICharacterState): void;
setPosition(x: number, y: number, z: number): void;
resetVelocity(): void;
setArcadeVelocityTarget(velZ: number, velX?: number, velY?: number): void;
setOrientation(vector: THREE.Vector3, instantly?: boolean): void;
resetOrientation(): void;
setBehaviour(behaviour: ICharacterAI): void;
setPhysicsEnabled(value: boolean): void;
readCharacterData(gltf: any, textureUrl: string): void;
handleKeyboardEvent(event: KeyboardEvent, code: string, pressed: boolean): void;
handleMouseButton(event: MouseEvent, code: string, pressed: boolean): void;
handleMouseMove(event: MouseEvent, deltaX: number, deltaY: number): void;
handleMouseWheel(event: WheelEvent, value: number): void;
triggerAction(actionName: string, value: boolean): void;
takeControl(): void;
resetControls(): void;
update(timeStep: number): void;
inputReceiverInit(): void;
inputReceiverUpdate(timeStep: number): void;
setAnimation(clipName: string, fadeIn: number): number;
springMovement(timeStep: number): void;
springRotation(timeStep: number): void;
getLocalMovementDirection(): THREE.Vector3;
getCameraRelativeMovementVector(): THREE.Vector3;
getCameraRelativeVector(): THREE.Vector3;
setCameraRelativeOrientationTarget(): void;
rotateModel(): void;
jump(initJumpSpeed?: number): void;
findItemToPick(): void;
physicsPreStep(body: CANNON.Body, character: Character): void;
feetRaycast(): void;
physicsPostStep(body: CANNON.Body, character: Character): void;
collideListener(colider: any): void;
addToWorld(world: World): void;
removeFromWorld(world: World): void;
}