prendy
Version:
Make games with prerendered backdrops using babylonjs and repond
157 lines (156 loc) • 7.47 kB
TypeScript
import { AbstractMesh, AnimationGroup, Bone, InstantiatedEntries, Material, Skeleton } from "@babylonjs/core";
import { Point3D } from "chootils/dist/points3d";
import { MyTypes } from "../../declarations";
import { AnimationNameByModel, MeshNameByModel, BoneNameByModel, MaterialNameByModel, DollOptions } from "../../types";
export default function dolls<T_MyTypes extends MyTypes = MyTypes>(prendyAssets: T_MyTypes["Assets"]): {
startStates: {
[x: string]: {
toggledMeshes: Record<string, boolean>;
nowAnimation: string;
animationLoops: boolean;
inRange: Record<string, import("src/helpers/prendyUtils/dolls").InRangeForDoll>;
isVisible: boolean;
animWeights: Record<string, number>;
animWeightsGoal: Record<string, number>;
animWeightsIsMoving: boolean;
animWeightsMoveMode: import("repond-movers/src/types").MoveMode;
animWeightsMoveConfigName: string;
animWeightsMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
nowWalkSpeed: number;
positionOnScreen: import("chootils/dist/points2d").Point2D;
rotationY: number;
rotationYGoal: number;
rotationYIsMoving: boolean;
rotationYMoveMode: import("repond-movers/src/types").MoveMode;
rotationYMoveConfigName: string;
rotationYMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
position: Point3D;
positionGoal: Point3D;
positionIsMoving: boolean;
positionMoveMode: import("repond-movers/src/types").MoveMode;
positionMoveConfigName: string;
positionMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
modelName: any;
goalSpotNameAtNewPlace: string | null;
goalPositionAtNewPlace: Point3D | null;
};
};
getDefaultState: <T_DollName extends string, T_ModelName extends string>(_dollName: T_DollName, modelName?: T_ModelName) => {
toggledMeshes: Record<string, boolean>;
nowAnimation: string;
animationLoops: boolean;
inRange: Record<string, import("src/helpers/prendyUtils/dolls").InRangeForDoll>;
isVisible: boolean;
animWeights: Record<string, number>;
animWeightsGoal: Record<string, number>;
animWeightsIsMoving: boolean;
animWeightsMoveMode: import("repond-movers/src/types").MoveMode;
animWeightsMoveConfigName: string;
animWeightsMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
nowWalkSpeed: number;
positionOnScreen: import("chootils/dist/points2d").Point2D;
rotationY: number;
rotationYGoal: number;
rotationYIsMoving: boolean;
rotationYMoveMode: import("repond-movers/src/types").MoveMode;
rotationYMoveConfigName: string;
rotationYMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
position: Point3D;
positionGoal: Point3D;
positionIsMoving: boolean;
positionMoveMode: import("repond-movers/src/types").MoveMode;
positionMoveConfigName: string;
positionMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
modelName: T_ModelName;
goalSpotNameAtNewPlace: string | null;
goalPositionAtNewPlace: Point3D | null;
};
getDefaultRefs: <T_DollName_1 extends string, T_ModelName_1 extends string>(dollName: T_DollName_1, itemState: {
toggledMeshes: Record<string, boolean>;
nowAnimation: string;
animationLoops: boolean;
inRange: Record<string, import("src/helpers/prendyUtils/dolls").InRangeForDoll>;
isVisible: boolean;
animWeights: Record<string, number>;
animWeightsGoal: Record<string, number>;
animWeightsIsMoving: boolean;
animWeightsMoveMode: import("repond-movers/src/types").MoveMode;
animWeightsMoveConfigName: string;
animWeightsMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
nowWalkSpeed: number;
positionOnScreen: import("chootils/dist/points2d").Point2D;
rotationY: number;
rotationYGoal: number;
rotationYIsMoving: boolean;
rotationYMoveMode: import("repond-movers/src/types").MoveMode;
rotationYMoveConfigName: string;
rotationYMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
position: Point3D;
positionGoal: Point3D;
positionIsMoving: boolean;
positionMoveMode: import("repond-movers/src/types").MoveMode;
positionMoveConfigName: string;
positionMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
modelName: any;
goalSpotNameAtNewPlace: string | null;
goalPositionAtNewPlace: Point3D | null;
}) => {
animWeightsMoverRefs: {
stateNames: {
value: "animWeights";
valueGoal: "animWeightsGoal";
isMoving: "animWeightsIsMoving";
moveMode: "animWeightsMoveMode";
physicsConfigName: "animWeightsMoveConfigName" | undefined;
physicsConfigs: "animWeightsMoveConfigs" | undefined;
};
physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined;
animRefs: Record<string, {
velocity: number;
recentSpeeds: number[];
}>;
animNames: readonly string[];
};
rotationYMoverRefs: {
velocity: number;
recentSpeeds: number[];
stateNames: {
value: "rotationY";
valueGoal: "rotationYGoal";
isMoving: "rotationYIsMoving";
moveMode: "rotationYMoveMode";
physicsConfigName: "rotationYMoveConfigName" | undefined;
physicsConfigs: "rotationYMoveConfigs" | undefined;
};
physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined;
};
positionMoverRefs: {
velocity: Point3D;
recentSpeeds: number[];
averageSpeed: number;
canRunOnSlow: boolean;
stateNames: {
value: "position";
valueGoal: "positionGoal";
isMoving: "positionIsMoving";
moveMode: "positionMoveMode";
physicsConfigName: "positionMoveConfigName" | undefined;
physicsConfigs: "positionMoveConfigs" | undefined;
};
physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined;
};
meshRef: AbstractMesh | null;
otherMeshes: Record<string, AbstractMesh | null>;
entriesRef: InstantiatedEntries | null;
aniGroupsRef: Record<string, AnimationGroup> | null;
assetRefs: {
meshes: Record<string, AbstractMesh>;
skeleton: Skeleton;
bones: Record<string, Bone>;
aniGroups: Record<string, AnimationGroup>;
materials: Record<string, Material>;
} | null;
groundRef: AbstractMesh | null;
canGoThroughWalls: boolean;
};
};