import { AbstractMesh, Sound, Vector3 } from "@babylonjs/core"; import { MyTypes } from "./declarations"; import { AllRefs, AllState } from "repond"; import { getUsefulStoryStuff } from "./helpers/prendyRuleMakers/prendyRuleMakers"; export type DollName = MyTypes["Types"]["DollName"]; export type ModelName = MyTypes["Types"]["ModelName"]; export type AnyAnimationName = MyTypes["Types"]["AnyAnimationName"]; export type CameraNameByPlace = MyTypes["Types"]["CameraNameByPlace"]; export type CharacterName = MyTypes["Types"]["CharacterName"]; export type ModelNamesByPlaceLoose = MyTypes["Types"]["ModelNamesByPlaceLoose"]; export type PickupName = MyTypes["Types"]["PickupName"]; export type PlaceName = MyTypes["Types"]["PlaceName"]; export type SegmentNameByPlace = MyTypes["Types"]["SegmentNameByPlace"]; export type SpotNameByPlace = MyTypes["Types"]["SpotNameByPlace"]; export type TriggerNameByPlace = MyTypes["Types"]["TriggerNameByPlace"]; export type AnyTriggerName = MyTypes["Types"]["AnyTriggerName"]; export type PlaceInfoByName = MyTypes["Types"]["PlaceInfoByName"]; export type SpeechVidFiles = MyTypes["Types"]["SpeechVidFiles"]; export type AnyCameraName = MyTypes["Types"]["AnyCameraName"]; export type CharacterOptions = MyTypes["Types"]["CharacterOptions"]; export type SoundspotNameByPlace = MyTypes["Types"]["SoundspotNameByPlace"]; export type WallNameByPlace = MyTypes["Types"]["WallNameByPlace"]; export type FontName = MyTypes["Types"]["FontName"]; export type SpeechVidName = MyTypes["Types"]["SpeechVidName"]; export type AnimationNameByModel = MyTypes["Types"]["AnimationNameByModel"]; export type AnySpotName = MyTypes["Types"]["AnySpotName"]; export type BoneNameByModel = MyTypes["Types"]["BoneNameByModel"]; export type DollOptions = MyTypes["Types"]["DollOptions"]; export type MaterialNameByModel = MyTypes["Types"]["MaterialNameByModel"]; export type MeshNameByModel = MyTypes["Types"]["MeshNameByModel"]; export type ModelNameFromDoll = DollOptions[T_DollName]["model"]; export type MeshNamesFromDoll = MeshNameByModel[ModelNameFromDoll]; export type AnySegmentName = MyTypes["Types"]["AnySegmentName"]; export type SoundName = MyTypes["Types"]["SoundName"]; export type MusicName = MyTypes["Types"]["MusicName"]; export type SegmentNameFromCameraAndPlace = keyof PlaceInfoByName[T_Place]["segmentNamesByCamera"][T_Cam]; export type StoryState = AllState["story"]["main"]; export type StoryRefs = AllRefs["story"]["main"]; export type GlobalState = AllState["global"]["main"]; export type AllPlacesState = AllState["places"]; export type AllPlacesRefs = AllRefs["places"]; export type APlaceRefs = AllPlacesRefs[keyof AllPlacesRefs]; export type APlaceRefsCamsRefs = APlaceRefs["camsRefs"]; export type SpeechBubbleName = keyof AllState["speechBubbles"] extends never ? string : keyof AllState["speechBubbles"]; export type CameraNameFromPlace = keyof PlaceInfoByName[T_Place]["segmentNamesByCamera"]; export type DollNameFromCharacter = CharacterOptions[T_CharacterName]["doll"]; export type ModelNameFromCharacter = ModelNameFromDoll>; export type AnimationNameFromCharacter = AnimationNameByModel[ModelNameFromCharacter]; export type SpotPositions = { [P_SpotName in SpotNameByPlace[T_PlaceName]]: Vector3; }; export type SpotRotations = { [P_SpotName in SpotNameByPlace[T_PlaceName]]: Vector3; }; export type SoundspotSounds = { [P_SoundName in SoundspotNameByPlace[T_PlaceName]]: Sound | null; }; export type TriggerMeshes = { [P_TriggerName in TriggerNameByPlace[T_PlaceName]]: AbstractMesh | null; }; export type WallMeshes = { [P_WallName in WallNameByPlace[T_PlaceName]]: AbstractMesh | null; }; export type StoryCallback = (usefulStuff: ReturnType) => void;