UNPKG

prendy

Version:

Make games with prerendered backdrops using babylonjs and repond

256 lines (255 loc) 9.63 kB
/// <reference types="node" /> import { DepthRenderer, Effect, PostProcess, RenderTargetTexture, Scene, SolidParticleSystem, Texture } from "@babylonjs/core"; import { Point3D } from "chootils/dist/points3d"; import { MyTypes } from "../../declarations"; import { InRangeForDoll } from "../../helpers/prendyUtils/dolls"; export type PrendySaveState = { global: { nowCamName: string; nowPlaceName: string; nowSegmentName: string; heldPickups: string[]; storyOverlayToggled: boolean; alarmTextIsVisible: boolean; alarmText: string; aSpeechBubbleIsShowing: boolean; aConvoIsHappening: boolean; }; dolls: Record<string, { position: Point3D; rotationY: number; isVisible: boolean; toggledMeshes: Record<string, boolean>; inRange: Record<string, InRangeForDoll>; nowAnimation: string; }>; places: Record<string, { toggledWalls: Record<string, boolean>; }>; characters: Record<string, { hasLeftFirstTrigger: boolean; }>; player: { animationNames: { walking: string; idle: string; }; }; miniBubbles: Record<string, { isVisible: boolean; text: string; }>; speechBubbles: Record<string, { isVisible: boolean; goalText: string; nowVideoName: string; font: string; stylesBySpecialText: { [key: string]: { color: string; fontSize: string; fontWeight: string; fontStyle: string; textDecoration: string; }; }; forCharacter: string; typingFinished: boolean; }>; storyState: Record<any, any>; }; export declare const timeStatePath: readonly ["global", "main", "elapsedGameTime"]; export default function global<T_MyTypes extends MyTypes = MyTypes>(prendyAssets: T_MyTypes["Assets"]): { 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: 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: 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, 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: Scene | null; backdropTex: Texture | null; backdropTexDepth: Texture | null; depthRenderer: DepthRenderer | null; depthRenderTarget: RenderTargetTexture | null; backdropPostProcess: PostProcess | null; backdropPostProcessEffect: Effect | null; fxaaPostProcess: PostProcess | null; stretchVideoSize: { x: number; y: number; }; stretchVideoGoalSize: { x: number; y: number; }; stretchSceneSize: { x: number; y: number; }; }; };