UNPKG

prendy

Version:

Make games with prerendered backdrops using babylonjs and repond

628 lines (627 loc) 28.5 kB
/// <reference types="node" /> /// <reference types="react" /> import { MyTypes } from "../declarations"; export declare const prendyStepNames: readonly ["elapsedTimeUpdates", "eventUpdates", "moverUpdates", "updateBackdropFrameInfo", "respondToNewPlace", "respondToNewPlaceStory", "cameraChange", "input", "editPosition", "positionReaction", "checkCollisions", "collisionReaction", "story", "storyReaction", "slatePosition", "slatePositionDontGoOverEdges", "slatePositionStartMovers", "dollAnimation", "dollAnimation2", "dollCorrectRotationAndPosition", "dollAnimationStartMovers", "positionUi", "loadNewPlaceModels", "loadNewPlace", "moversGoal", "moversStart", "default", "rendering", "overlay"]; export type PrendyStepName = (typeof prendyStepNames)[number]; export declare function makePrendyStores<T_MyTypes extends MyTypes = MyTypes>(prendyAssets: T_MyTypes["Assets"]): { keyboards: { startStates: { main: { KeyW: boolean; KeyA: boolean; KeyS: boolean; KeyD: boolean; ArrowLeft: boolean; ArrowRight: boolean; ArrowUp: boolean; ArrowDown: boolean; KeyQ: boolean; KeyE: boolean; ShiftLeft: boolean; ControlLeft: boolean; Space: boolean; Enter: boolean; KeyZ: boolean; KeyM: boolean; KeyP: boolean; }; }; getDefaultState: () => { KeyW: boolean; KeyA: boolean; KeyS: boolean; KeyD: boolean; ArrowLeft: boolean; ArrowRight: boolean; ArrowUp: boolean; ArrowDown: boolean; KeyQ: boolean; KeyE: boolean; ShiftLeft: boolean; ControlLeft: boolean; Space: boolean; Enter: boolean; KeyZ: boolean; KeyM: boolean; KeyP: boolean; }; getDefaultRefs: () => {}; }; miniBubbles: { getDefaultState: <T_ItemName extends string>(_itemId: T_ItemName, options?: { character?: string | undefined; } | undefined) => { isVisible: boolean; isFullyHidden: boolean; text: string; forCharacter: string | null; position: import("chootils/dist/points2d").Point2D; }; getDefaultRefs: () => { bubbleRef: any; textRef: any; videoRef: HTMLVideoElement | null; }; startStates: { [x: string]: { isVisible: boolean; isFullyHidden: boolean; text: string; forCharacter: string | null; position: import("chootils/dist/points2d").Point2D; }; }; }; global: { startStates: { main: { slatePosMoveConfigName: string; isOnVerticalScreen: boolean; zoomMultiplier: number; timeScreenResized: number; interactButtonPressTime: number; heldPickups: string[]; storyOverlayToggled: boolean; alarmTextIsVisible: boolean; alarmText: string; aSpeechBubbleIsShowing: boolean; aConvoIsHappening: boolean; backdropTime: number; backdropFrame: number; frameTick: number; timeMode: "pause" | "game" | "miniGame"; elapsedGameTime: number; elapsedPauseTime: number; elapsedMiniGameTime: number; isGamePaused: boolean; gameTimeSpeed: number; gameIsInBackground: boolean; debugMessage: string; latestSave: import("./global/global").PrendySaveState | null; latestLoadTime: number; slateZoom: number; slateZoomGoal: number; slateZoomIsMoving: boolean; slateZoomMoveMode: import("repond-movers/src/types").MoveMode; slateZoomMoveConfigName: string; slateZoomMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>; slatePos: import("chootils/dist/points2d").Point2D; slatePosGoal: import("chootils/dist/points2d").Point2D; slatePosIsMoving: boolean; slatePosMoveMode: import("repond-movers/src/types").MoveMode; slatePosMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>; nowPlaceName: string; goalPlaceName: string | null; readyToSwapPlace: boolean; isLoadingBetweenPlaces: boolean; loadingOverlayToggled: boolean; loadingOverlayFullyShowing: boolean; goalCamWhenNextPlaceLoads: string | null; goalCamNameAtLoop: string | null; goalCamName: string | null; nowCamName: string; nowSegmentName: string; goalSegmentName: string | null; goalSegmentNameAtLoop: string | null; goalSegmentWhenGoalPlaceLoads: string | null; modelNamesLoaded: string[]; newPlaceModelLoaded: boolean; newPlaceVideosLoaded: boolean; newPlaceProbesLoaded: boolean; playerCharacter: string; gravityValue: number; playerMovingPaused: boolean; focusedDoll: any; focusedDollIsInView: boolean; }; }; getDefaultState: () => { slatePosMoveConfigName: string; isOnVerticalScreen: boolean; zoomMultiplier: number; timeScreenResized: number; interactButtonPressTime: number; heldPickups: string[]; storyOverlayToggled: boolean; alarmTextIsVisible: boolean; alarmText: string; aSpeechBubbleIsShowing: boolean; aConvoIsHappening: boolean; backdropTime: number; backdropFrame: number; frameTick: number; timeMode: "pause" | "game" | "miniGame"; elapsedGameTime: number; elapsedPauseTime: number; elapsedMiniGameTime: number; isGamePaused: boolean; gameTimeSpeed: number; gameIsInBackground: boolean; debugMessage: string; latestSave: import("./global/global").PrendySaveState | null; latestLoadTime: number; slateZoom: number; slateZoomGoal: number; slateZoomIsMoving: boolean; slateZoomMoveMode: import("repond-movers/src/types").MoveMode; slateZoomMoveConfigName: string; slateZoomMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>; slatePos: import("chootils/dist/points2d").Point2D; slatePosGoal: import("chootils/dist/points2d").Point2D; slatePosIsMoving: boolean; slatePosMoveMode: import("repond-movers/src/types").MoveMode; slatePosMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>; nowPlaceName: string; goalPlaceName: string | null; readyToSwapPlace: boolean; isLoadingBetweenPlaces: boolean; loadingOverlayToggled: boolean; loadingOverlayFullyShowing: boolean; goalCamWhenNextPlaceLoads: string | null; goalCamNameAtLoop: string | null; goalCamName: string | null; nowCamName: string; nowSegmentName: string; goalSegmentName: string | null; goalSegmentNameAtLoop: string | null; goalSegmentWhenGoalPlaceLoads: string | null; modelNamesLoaded: string[]; newPlaceModelLoaded: boolean; newPlaceVideosLoaded: boolean; newPlaceProbesLoaded: boolean; playerCharacter: string; gravityValue: number; playerMovingPaused: boolean; focusedDoll: any; focusedDollIsInView: boolean; }; getDefaultRefs: () => { sounds: { [x: string]: import("@babylonjs/core").Sound | null; }; music: { [x: string]: import("@babylonjs/core").Sound | null; }; musicEffects: { lowPass: BiquadFilterNode | null; compress: DynamicsCompressorNode | null; extraGain: GainNode | null; }; solidParticleSystems: Record<string, import("@babylonjs/core").SolidParticleSystem>; timerSpeed: number; aConvoIsHappening_timeout: NodeJS.Timeout | null; camSegmentRulesOptions: Partial<{ [x: string]: Partial<{ [x: string]: (usefulStuff: Record<any, any>) => keyof string[]; }>; }> | null; onPickupButtonClick: ((pickupName: any) => void) | null; slateZoomMoverRefs: { velocity: number; recentSpeeds: number[]; stateNames: { value: "slateZoom"; valueGoal: "slateZoomGoal"; isMoving: "slateZoomIsMoving"; moveMode: "slateZoomMoveMode"; physicsConfigName: "slateZoomMoveConfigName" | undefined; physicsConfigs: "slateZoomMoveConfigs" | undefined; }; physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined; }; slatePosMoverRefs: { velocity: import("chootils/dist/points2d").Point2D; recentSpeeds: number[]; averageSpeed: number; canRunOnSlow: boolean; stateNames: { value: "slatePos"; valueGoal: "slatePosGoal"; isMoving: "slatePosIsMoving"; moveMode: "slatePosMoveMode"; physicsConfigName: "slatePosMoveConfigName" | undefined; physicsConfigs: "slatePosMoveConfigs" | undefined; }; physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined; }; scene: import("@babylonjs/core").Scene | null; backdropTex: import("@babylonjs/core").Texture | null; backdropTexDepth: import("@babylonjs/core").Texture | null; depthRenderer: import("@babylonjs/core").DepthRenderer | null; depthRenderTarget: import("@babylonjs/core").RenderTargetTexture | null; backdropPostProcess: import("@babylonjs/core").PostProcess | null; backdropPostProcessEffect: import("@babylonjs/core").Effect | null; fxaaPostProcess: import("@babylonjs/core").PostProcess | null; stretchVideoSize: { x: number; y: number; }; stretchVideoGoalSize: { x: number; y: number; }; stretchSceneSize: { x: number; y: number; }; }; }; models: { startStates: { [K_ModelName in T_MyTypes["Types"]["ModelName"]]: { wantToLoad: boolean; isLoading: boolean; isLoaded: boolean; }; }; getDefaultState: <T_ModelName extends T_MyTypes["Types"]["ModelName"]>(_modelName: T_ModelName) => { wantToLoad: boolean; isLoading: boolean; isLoaded: boolean; }; getDefaultRefs: <T_ModelName_1 extends T_MyTypes["Types"]["ModelName"]>(_modelName: T_ModelName_1) => { container: import("@babylonjs/core").AssetContainer | null; materialRef: import("@babylonjs/core").PBRMaterial | null; materialRefs: import("@babylonjs/core").PBRMaterial[] | null; }; }; dolls: { 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: import("chootils/dist/points3d").Point3D; positionGoal: import("chootils/dist/points3d").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: import("chootils/dist/points3d").Point3D | null; }; }; getDefaultState: <T_DollName extends string, T_ModelName_2 extends string>(_dollName: T_DollName, modelName?: T_ModelName_2 | undefined) => { 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: import("chootils/dist/points3d").Point3D; positionGoal: import("chootils/dist/points3d").Point3D; positionIsMoving: boolean; positionMoveMode: import("repond-movers/src/types").MoveMode; positionMoveConfigName: string; positionMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>; modelName: T_ModelName_2; goalSpotNameAtNewPlace: string | null; goalPositionAtNewPlace: import("chootils/dist/points3d").Point3D | null; }; getDefaultRefs: <T_DollName_1 extends string, T_ModelName_3 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: import("chootils/dist/points3d").Point3D; positionGoal: import("chootils/dist/points3d").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: import("chootils/dist/points3d").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: import("chootils/dist/points3d").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: import("@babylonjs/core").AbstractMesh | null; otherMeshes: Record<string, import("@babylonjs/core").AbstractMesh | null>; entriesRef: import("@babylonjs/core").InstantiatedEntries | null; aniGroupsRef: Record<string, import("@babylonjs/core").AnimationGroup> | null; assetRefs: { meshes: Record<string, import("@babylonjs/core").AbstractMesh>; skeleton: import("@babylonjs/core").Skeleton; bones: Record<string, import("@babylonjs/core").Bone>; aniGroups: Record<string, import("@babylonjs/core").AnimationGroup>; materials: Record<string, import("@babylonjs/core").Material>; } | null; groundRef: import("@babylonjs/core").AbstractMesh | null; canGoThroughWalls: boolean; }; }; characters: { startStates: { [x: string]: { dollName: any; atTriggers: Partial<Record<string, boolean>>; atCamCubes: Partial<Record<string, boolean>>; hasLeftFirstTrigger: boolean; }; }; getDefaultState: <T_CharacterName extends string, T_DollName_2 extends string>(_characterName: T_CharacterName, dollName?: T_DollName_2 | undefined) => { dollName: T_DollName_2; atTriggers: Partial<Record<string, boolean>>; atCamCubes: Partial<Record<string, boolean>>; hasLeftFirstTrigger: boolean; }; getDefaultRefs: <T_CharacterName_1 extends string>(_characterName: T_CharacterName_1) => { testRef: null; }; }; players: { startStates: { main: { lastSafeInputAngle: number | null; inputVelocity: import("chootils/dist/points2d").Point2D; isJumping: boolean; isOnGround: boolean; canJump: boolean; interactButtonPressTime: number; jumpButtonPressTime: number; jumpButtonReleaseTime: number; pickupButtonPressTime: number; virtualControlsPressTime: number; virtualControlsReleaseTime: number; canShowVirtualButtons: boolean; animationNames: { walking: T_MyTypes["Types"]["AnyAnimationName"]; idle: T_MyTypes["Types"]["AnyAnimationName"]; }; }; }; getDefaultState: () => { lastSafeInputAngle: number | null; inputVelocity: import("chootils/dist/points2d").Point2D; isJumping: boolean; isOnGround: boolean; canJump: boolean; interactButtonPressTime: number; jumpButtonPressTime: number; jumpButtonReleaseTime: number; pickupButtonPressTime: number; virtualControlsPressTime: number; virtualControlsReleaseTime: number; canShowVirtualButtons: boolean; animationNames: { walking: T_MyTypes["Types"]["AnyAnimationName"]; idle: T_MyTypes["Types"]["AnyAnimationName"]; }; }; getDefaultRefs: () => { topWalkSpeed: number; canJumpTimeout: NodeJS.Timeout | null; canShowVirtualButtonsTimeout: NodeJS.Timeout | null; canHideVirtualButtonsTimeout: NodeJS.Timeout | null; }; }; speechBubbles: { getDefaultState: <T_ItemName_1 extends string>(_itemId: T_ItemName_1, options?: { font?: string | undefined; character?: string | undefined; } | undefined) => { isVisible: boolean; isFullyHidden: boolean; goalText: string; visibleLetterAmount: number; typingSpeed: number; stylesBySpecialText: Record<string, import("react").CSSProperties>; _specialTextByLetterIndex: Record<number, string>; _goalTextWordLetterArrays: string[][]; forCharacter: string | null; position: import("chootils/dist/points2d").Point2D; typingFinished: boolean; nowVideoName: string | null; font: string; zIndex: number; }; getDefaultRefs: () => { bubbleRef: any; textRef: any; currentTimeout: NodeJS.Timeout | null; videoRef: HTMLVideoElement | null; }; startStates: { [x: string]: { isVisible: boolean; isFullyHidden: boolean; goalText: string; visibleLetterAmount: number; typingSpeed: number; stylesBySpecialText: Record<string, import("react").CSSProperties>; _specialTextByLetterIndex: Record<number, string>; _goalTextWordLetterArrays: string[][]; forCharacter: string | null; position: import("chootils/dist/points2d").Point2D; typingFinished: boolean; nowVideoName: string | null; font: string; zIndex: number; }; }; }; places: { startStates: { [x: string]: { toggledWalls: Record<string, boolean>; }; }; getDefaultState: <K_PlaceName extends string>(itemId: string | K_PlaceName) => { toggledWalls: Record<string, boolean>; }; getDefaultRefs: <K_PlaceName_1 extends string>(itemId: K_PlaceName_1) => { rootMesh: import("@babylonjs/core").AbstractMesh | null; spotPositions: import("src/types").SpotPositions<string>; spotRotations: import("src/types").SpotRotations<string>; soundspotSounds: import("src/types").SoundspotSounds<string>; triggerMeshes: import("src/types").TriggerMeshes<string>; wallMeshes: import("src/types").WallMeshes<string>; camsRefs: import("./places").CameraRefs<string>; }; }; liveEventsStore: { getDefaultState: () => { id: string; chainId: string; event: import("repond-events").EventNodeLoose; isParallel: boolean; addedBy: string | null; runBy: string | null; nowRunMode: import("repond-events").RunMode | null; runModeOptionsWhenReady: import("repond-events").RunModeOptions | null; runModeBeforePause: import("repond-events").RunMode | null; runModeBeforeSuspend: import("repond-events").RunMode | null; addTime: number | null; readyTime: number | null; startTime: number | null; goalEndTime: number; pauseTime: number | null; suspendTime: number | null; unpauseTime: number | null; unsuspendTime: number | null; elapsedTimePath: import("repond-events").TimePathArray<any, any> | null; }; getDefaultRefs: () => {}; startStates: import("repond").InitialItemsState<() => { id: string; chainId: string; event: import("repond-events").EventNodeLoose; isParallel: boolean; addedBy: string | null; runBy: string | null; nowRunMode: import("repond-events").RunMode | null; runModeOptionsWhenReady: import("repond-events").RunModeOptions | null; runModeBeforePause: import("repond-events").RunMode | null; runModeBeforeSuspend: import("repond-events").RunMode | null; addTime: number | null; readyTime: number | null; startTime: number | null; goalEndTime: number; pauseTime: number | null; suspendTime: number | null; unpauseTime: number | null; unsuspendTime: number | null; elapsedTimePath: import("repond-events").TimePathArray<any, any> | null; }>; }; chainsStore: { getDefaultState: () => { id: string; liveEventIds: string[]; canAutoActivate: boolean; duplicateEventsToAdd: Record<string, import("repond-events").EventInstance>; }; getDefaultRefs: () => {}; startStates: import("repond").InitialItemsState<() => { id: string; liveEventIds: string[]; canAutoActivate: boolean; duplicateEventsToAdd: Record<string, import("repond-events").EventInstance>; }>; }; };