diff --git a/scripts/gen_typetrees.py b/scripts/gen_typetrees.py index 75f3ad3..dd10f66 100644 --- a/scripts/gen_typetrees.py +++ b/scripts/gen_typetrees.py @@ -59,21 +59,33 @@ ("Adv", "AdvSystem.Rendering", "AdvFieldRendererFeature"), ("App.Runtime", "App.Config", "AppConfigDefaultData"), ("DOTween.dll", "DG.Tweening.Core", "DOTweenSettings"), + ("Fwk", "Fwk.Cam", "CameraManager"), ("Fwk", "Fwk.Localization", "LocalizeManager"), ("Fwk", "Fwk.Rendering", "ScreenCaptureRendererFeature"), ("Fwk", "Fwk.Sound", "SoundVolumeSettings"), + ("Fwk", "Fwk.UI", "UICameraController"), + ("Fwk", "Fwk.UI", "UIInputController"), + ("Fwk", "Fwk.UI", "UIManager"), ("Fwk", "Fwk.UI.Rendering", "UIRendererFeature"), - ("SiriusAsset", "App.GachaAnimation.Blur.DualKawase", "DualKawaseBlurFeature"), + ("Fwk", "Fwk.UI", "UIScreenSizeWatcher"), + ("SiriusAsset", "App.GachaAnimation.PostProcessing", "CameraBlendFeature"), ("SiriusAsset", "App.GachaAnimation.ChromaticAberration", "ChromaticAberrationFeature"), + ("SiriusAsset", "App.GachaAnimation.Blur.DualKawase", "DualKawaseBlurFeature"), ("SiriusAsset", "App.GachaAnimation.Paraffin", "ParaffinFeature"), - ("SiriusAsset", "App.GachaAnimation.PostProcessing", "CameraBlendFeature"), ("SiriusAsset", "App.GachaAnimation.PostProcessing", "RadialBlurFeature"), ("SiriusAsset", "App.UI.Text.DropShadow", "TextDropShadowFeature"), + ("Unity.InputSystem", "UnityEngine.InputSystem.UI", "InputSystemUIInputModule"), ("Unity.RenderPipelines.Universal.Runtime", "UnityEngine.Rendering.Universal", "PostProcessData"), + ("Unity.RenderPipelines.Universal.Runtime", "UnityEngine.Rendering.Universal", "UniversalAdditionalCameraData"), ("Unity.RenderPipelines.Universal.Runtime", "UnityEngine.Rendering.Universal", "UniversalRenderPipelineAsset"), ("Unity.RenderPipelines.Universal.Runtime", "UnityEngine.Rendering.Universal", "UniversalRendererData"), ("Unity.TextMeshPro", "TMPro", "TMP_Settings"), ("Unity.TextMeshPro", "TMPro", "TMP_StyleSheet"), + ("UnityEngine.UI", "UnityEngine.UI", "CanvasScaler"), + ("UnityEngine.UI", "UnityEngine.EventSystems", "EventSystem"), + ("UnityEngine.UI", "UnityEngine.UI", "GraphicRaycaster"), + ("UnityEngine.UI", "UnityEngine.UI", "Image"), + ("UnityEngine.UI", "UnityEngine.EventSystems", "Physics2DRaycaster"), ) DEFAULT_OUT = Path(__file__).resolve().parents[1] / "src" / "nnnotes" / "unity" / "typetrees" diff --git a/src/nnnotes/content/prefabs.py b/src/nnnotes/content/prefabs.py index 7d13e3a..53383eb 100644 --- a/src/nnnotes/content/prefabs.py +++ b/src/nnnotes/content/prefabs.py @@ -137,9 +137,37 @@ def builtin_root(objects: Objects, cls: str) -> str: return hits[0] +# the app manager prefabs: catalog keys of some game versions, root GameObjects of the boot scene of others +BOOT_MANAGERS = ("EmbCommon/Prefab/CameraManager", "EmbCommon/Prefab/UIManager") + + +def boot_managers(catalog: Iterable[str]) -> list[str]: + """The app manager keys that the catalog `catalog` (its keys) lacks: the boot scene holds those managers.""" + held = set(catalog) + return [k for k in BOOT_MANAGERS if k not in held] + + +def boot_builtins(catalog: Iterable[str]) -> list[str]: + """The built-in selectors that bring the boot scene's manager GameObjects into a product ([] when the catalog + lists every manager).""" + return ["GameObject"] if boot_managers(catalog) else [] + + def key_object(objects: Objects, key: str, cls: str) -> str: """The one object of the catalog key `key` of class `cls`: a GameObject with its prefab document, a MonoBehaviour - by its script class, any other object by its class (ValueError otherwise).""" + by its script class, any other object by its class (ValueError otherwise). A manager key (BOOT_MANAGERS) that + is not a key of the table names the root GameObject of the boot scene with the key's last segment as its name.""" + if cls == "GameObject" and key in BOOT_MANAGERS and key not in objects.keys(): + name = key.rsplit("/", 1)[-1] + roots = [ + o + for o in objects.roots + if o in objects and objects.info(o).get("class") == "GameObject" and objects.info(o).get("name") == name + ] + hits = [o for o in roots if has_json(objects, o)] + if len(hits) != 1: + raise ValueError(f"{key}: {len(hits)} boot scene GameObjects named {name}") + return hits[0] def of(oid: str) -> str | None: c = objects.info(oid).get("class") diff --git a/src/nnnotes/content/storyscene.py b/src/nnnotes/content/storyscene.py index b8607c6..0ca2c7e 100644 --- a/src/nnnotes/content/storyscene.py +++ b/src/nnnotes/content/storyscene.py @@ -20,9 +20,11 @@ from __future__ import annotations +from collections.abc import Iterable + from .livenotes import animator_bindings from .livescene import GRAPHICS -from .prefabs import Objects, builtin_root, has_json, key_object, mesh_roles, ref_id, shader_table +from .prefabs import Objects, boot_managers, builtin_root, has_json, key_object, mesh_roles, ref_id, shader_table SCENE_FORMAT = 1 # scene.json "format" SCENE_KEY = "EmbScene/Adv" @@ -39,9 +41,13 @@ } -def keys() -> list[str]: - """The catalog keys of the story scene: the scene key, the prefab keys and the settings keys, sorted.""" - return sorted([SCENE_KEY, *PREFAB_KEYS.values(), *(key for key, _ in SETTINGS_KEYS.values())]) +def keys(catalog: Iterable[str]) -> list[str]: + """The catalog keys of the story scene in the catalog `catalog` (its keys): the scene key, the prefab keys and the + settings keys, sorted; a manager that the boot scene holds is no catalog key.""" + absent = set(boot_managers(catalog)) + return sorted( + [SCENE_KEY, *(k for k in PREFAB_KEYS.values() if k not in absent), *(key for key, _ in SETTINGS_KEYS.values())] + ) def scene(objects: Objects) -> tuple[dict, set[str], dict[str, set[str]]]: diff --git a/src/nnnotes/content/storysimpleui.py b/src/nnnotes/content/storysimpleui.py index 805f444..853b939 100644 --- a/src/nnnotes/content/storysimpleui.py +++ b/src/nnnotes/content/storysimpleui.py @@ -28,7 +28,7 @@ def addresses(catalog) -> dict[str, str]: def keys(catalog) -> list[str]: - return sorted({*addresses(catalog).values(), storyui.UI_MANAGER_KEY}) + return sorted({*addresses(catalog).values(), *(k for k in (storyui.UI_MANAGER_KEY,) if k in set(catalog))}) def ui(objects, language: str, settings) -> tuple[dict, set, dict]: diff --git a/src/nnnotes/content/storyui.py b/src/nnnotes/content/storyui.py index 71204e6..3b5293d 100644 --- a/src/nnnotes/content/storyui.py +++ b/src/nnnotes/content/storyui.py @@ -119,11 +119,12 @@ def window_keys(catalog: Iterable[str]) -> dict[str, str]: def keys(catalog: Iterable[str]) -> list[str]: """The catalog keys of the story UI in the catalog `catalog` (its keys): the widget, the chat widget, UIManager, the letterbox, the master id settings, the dialogs, the animations and the talk windows (window_keys), sorted.""" + held = set(catalog) return sorted( { WIDGET_KEY, CHAT_WIDGET_KEY, - UI_MANAGER_KEY, + *(k for k in (UI_MANAGER_KEY,) if k in held), LETTERBOX_KEY, MASTER_ID_SETTINGS_KEY, *DIALOG_KEYS.values(), diff --git a/src/nnnotes/musicdata/__init__.py b/src/nnnotes/musicdata/__init__.py index 74cf1c5..d5c3161 100644 --- a/src/nnnotes/musicdata/__init__.py +++ b/src/nnnotes/musicdata/__init__.py @@ -1393,7 +1393,7 @@ def record(sid: int) -> dict: "master": { "source": master_source, "version": master_version, - "tables": {t: {"sha256": table_sha[t]} for t in read}, + "tables": {t: {"sha256": table_sha[t]} for t in read if t in table_sha}, }, "exporter": exporter, "deck": deck.info() if deck is not None else None, diff --git a/src/nnnotes/musicdata/deckdata.py b/src/nnnotes/musicdata/deckdata.py index a6f903e..0a6af1d 100644 --- a/src/nnnotes/musicdata/deckdata.py +++ b/src/nnnotes/musicdata/deckdata.py @@ -174,6 +174,10 @@ ) +# Tables a master data version may leave out (no rows then): the master data of newer game versions does not list them. +OPTIONAL_TABLES = frozenset({"MasterArenaMusic"}) + + class DeckDataError(ValueError): """An input the deck data cannot be made from (the message names it).""" @@ -261,10 +265,13 @@ def read(names): def read_master(src: MasterSource, key, tables=None) -> tuple[dict[str, list[dict]], dict[str, str]]: """The rows (`_allData`) of every table of `tables` (default: TABLES) and the SHA-256 of each file as served. + A table of OPTIONAL_TABLES the manifest does not list has no rows and no SHA-256. `key`: a master.MasterKey (unused for decoded master data: None).""" from ..source import master names = {t: f"{t}.bin" for t in (tables if tables is not None else (t for t, _ in TABLES))} + absent = {t for t, n in names.items() if t in OPTIONAL_TABLES and n not in src.hashes} + names = {t: n for t, n in names.items() if t not in absent} unlisted = [t for t, n in names.items() if n not in src.hashes] if unlisted: raise DeckDataError(f"master data {src.where}: {MANIFEST} lists no {', '.join(unlisted)}") @@ -296,6 +303,7 @@ def read_master(src: MasterSource, key, tables=None) -> tuple[dict[str, list[dic if not isinstance(rows, list) or not all(isinstance(r, dict) for r in rows): raise DeckDataError(f"master data {src.where}: {f} has no `_allData` rows") tables[t], shas[t] = rows, sha + tables.update((t, []) for t in absent) return tables, shas diff --git a/src/nnnotes/pipeline/story.py b/src/nnnotes/pipeline/story.py index 1c65123..9593df0 100644 --- a/src/nnnotes/pipeline/story.py +++ b/src/nnnotes/pipeline/story.py @@ -67,6 +67,7 @@ from ..content import ( liveaudio, + prefabs, storyasset, storychat, storyepisode, @@ -261,14 +262,14 @@ class SceneStage(ProductStage): KIND = "StoryScene" def select(self, keys: list[str], env) -> list[str]: - return [DEFAULT] if set(storyscene.keys()) <= set(keys) else [] + return [DEFAULT] if set(storyscene.keys(keys)) <= set(keys) else [] def keys(self, subject: str, env) -> list[str]: _default(subject) - return storyscene.keys() + return storyscene.keys(_catalog(env)) def builtins(self, subject: str, env) -> list[str]: - return sorted(GRAPHICS.values()) + return sorted([*GRAPHICS.values(), *prefabs.boot_builtins(_catalog(env))]) def manifest(self, subject: str) -> str: return f"storyscenes/{_default(subject)}.json" @@ -362,6 +363,11 @@ def _language(subject: str) -> str: return subject +def _catalog(env) -> set[str]: + """The primary keys of the catalog of a planning environment.""" + return {loc["primaryKey"] for loc in env.fact("index")["locations"]} + + class UiStage(FontInputsStage): """story.ui: the ADV story UI in one client language (module documentation).""" @@ -386,7 +392,7 @@ def resources(self, subject: str, env) -> list[str]: def builtins(self, subject: str, env) -> list[str]: _language(subject) - return list(storyui.BUILTINS) + return [*storyui.BUILTINS, *prefabs.boot_builtins(_catalog(env))] def record(self, subject: str, env) -> dict: """The master record of the language: the text of every MasterText row in its text column.""" @@ -490,7 +496,7 @@ def resources(self, subject, env): def builtins(self, subject, env): font_subject(subject) - return list(storyui.BUILTINS) + return [*storyui.BUILTINS, *prefabs.boot_builtins(_catalog(env))] def record(self, subject, env): return UiStage().record(font_subject(subject)[1], env) diff --git a/src/nnnotes/unity/typetrees/6000.3.12f1.json b/src/nnnotes/unity/typetrees/6000.3.12f1.json index c4cde7d..7e8f86c 100644 --- a/src/nnnotes/unity/typetrees/6000.3.12f1.json +++ b/src/nnnotes/unity/typetrees/6000.3.12f1.json @@ -1,20 +1,32 @@ -{"format":1,"gameVersion":"1.0.1","unityVersion":"6000.3.12f1","classes":{ +{"format":1,"gameVersion":"1.1.0","unityVersion":"6000.3.12f1","classes":{ "Adv|AdvSystem.Rendering|AdvFieldRendererFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_alphaBlendShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$Shader>","_characterAlphaBlendShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$Shader>","_blurShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$Shader>","_curvedLensShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","_maxFieldRendererEntryCount",0],[1,"float","_characterBlurIntensityRate",0],[1,"float","_characterBlurScale",0],[1,"float","_backgroundBlurIntensityRate",0],[1,"float","_backgroundBlurScale",0]],"typeHash":"b366a9b62e0f9de433e9ca044d26c9d1"}, "App.Runtime|App.Config|AppConfigDefaultData":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"AppConfigDataModel","_defaultData",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0],[2,"float","k__BackingField",0]],"typeHash":"2b53ff748caf6baa04ce8616a3f29be9"}, "DOTween.dll|DG.Tweening.Core|DOTweenSettings":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","useSafeMode",16384],[1,"SafeModeOptions","safeModeOptions",0],[2,"int","logBehaviour",0],[2,"int","nestedTweenFailureBehaviour",0],[1,"float","timeScale",0],[1,"float","unscaledTimeScale",0],[1,"UInt8","useSmoothDeltaTime",16384],[1,"float","maxSmoothUnscaledTime",0],[1,"int","rewindCallbackMode",0],[1,"UInt8","showUnityEditorReport",16384],[1,"int","logBehaviour",0],[1,"UInt8","drawGizmos",16384],[1,"UInt8","defaultRecyclable",16384],[1,"int","defaultAutoPlay",0],[1,"int","defaultUpdateType",0],[1,"UInt8","defaultTimeScaleIndependent",16384],[1,"int","defaultEaseType",0],[1,"float","defaultEaseOvershootOrAmplitude",0],[1,"float","defaultEasePeriod",0],[1,"UInt8","defaultAutoKill",16384],[1,"int","defaultLoopType",0],[1,"UInt8","debugMode",16384],[1,"UInt8","debugStoreTargetId",16384],[1,"UInt8","showPreviewPanel",16384],[1,"int","storeSettingsLocation",0],[1,"ModulesSetup","modules",0],[2,"UInt8","showPanel",16384],[2,"UInt8","audioEnabled",16384],[2,"UInt8","physicsEnabled",16384],[2,"UInt8","physics2DEnabled",16384],[2,"UInt8","spriteEnabled",16384],[2,"UInt8","uiEnabled",16384],[2,"UInt8","textMeshProEnabled",16384],[2,"UInt8","tk2DEnabled",16384],[2,"UInt8","deAudioEnabled",16384],[2,"UInt8","deUnityExtendedEnabled",16384],[2,"UInt8","epoOutlineEnabled",16384],[1,"UInt8","createASMDEF",16384],[1,"UInt8","showPlayingTweens",16384],[1,"UInt8","showPausedTweens",16384]],"typeHash":"4f1dec93fa2a0b0e7b8b47518da31b1c"}, +"Fwk|Fwk.Cam|CameraManager":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","_dontDestroyOnload",16384],[1,"PPtr<$Camera>","_mainCamera",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$Camera>","_subCamera",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$UniversalAdditionalCameraData>","_mainCameraData",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$UniversalAdditionalCameraData>","_subCameraData",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"9cd71123afe4d42d6ed5fe737ac22f6a"}, "Fwk|Fwk.Localization|LocalizeManager":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","_dontDestroyOnload",16384],[1,"LanguageData","_languageDataList",0],[2,"Array","Array",0],[3,"int","size",0],[3,"LanguageData","data",0],[4,"int","_languageMode",0],[4,"vector","_fontNames",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"string","data",0],[7,"Array","Array",16384],[8,"int","size",0],[8,"char","data",0],[4,"vector","_additionalFontNames",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"string","data",0],[7,"Array","Array",16384],[8,"int","size",0],[8,"char","data",0],[1,"vector","_materialTypeList",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"string","data",0],[4,"Array","Array",16384],[5,"int","size",0],[5,"char","data",0]],"typeHash":"597220768ec4996f80d7cfd5e139645f"}, "Fwk|Fwk.Rendering|ScreenCaptureRendererFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384]],"typeHash":"ce87445dd61732c847969290a1daa3b1"}, "Fwk|Fwk.Sound|SoundVolumeSettings":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"SoundVolumeData","_collection",0],[2,"Array","Array",0],[3,"int","size",0],[3,"SoundVolumeData","data",0],[4,"string","CategoryName",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"float","DefaultVolume",0]],"typeHash":"6fb3a84e8c1ec611fde964d8d6005276"}, "Fwk|Fwk.UI.Rendering|UIRendererFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"BitField","_layerMask",0],[2,"unsigned int","m_Bits",0],[1,"int","_blurIterations",0],[1,"float","_blurOffset",0],[1,"int","_blurDownsample",0],[1,"float","_blurBlendRateMax",0],[1,"PPtr<$Shader>","_dualKawaseBlurShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"12463b61d2af82f284b2248ea336f5f6"}, +"Fwk|Fwk.UI|UICameraController":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"PPtr<$Camera>","_uiCamera",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$UniversalAdditionalCameraData>","_uiCameraData",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"03ef91c0c231ec4801be2d720f2afee5"}, +"Fwk|Fwk.UI|UIInputController":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"PPtr<$GameObject>","_locker",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"ad548357668ee016a21544130c8e4129"}, +"Fwk|Fwk.UI|UIManager":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","_dontDestroyOnload",16384],[1,"PPtr<$Transform>","_container",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$UICameraController>","_cameraController",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$UIInputController>","_inputController",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$UISoundEffectCatalog>","_uiSoundEffectCatalog",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"69351d5f80bb1b303ab066e2a4e5a36b"}, +"Fwk|Fwk.UI|UIScreenSizeWatcher":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0]],"typeHash":"ff2895b01f6c9cc366d81e8d4f564dca"}, "SiriusAsset|App.GachaAnimation.Blur.DualKawase|DualKawaseBlurFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_blurShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"d3a7f8d74210f879c214433da8371fb1"}, "SiriusAsset|App.GachaAnimation.ChromaticAberration|ChromaticAberrationFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_shader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","_injectionPoint",0]],"typeHash":"7cfc6fee683d3cc7ee7724ba19dca473"}, "SiriusAsset|App.GachaAnimation.Paraffin|ParaffinFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_shader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","_injectionPoint",0]],"typeHash":"514dcc098efe1dc5fdbb68299a5ee29c"}, "SiriusAsset|App.GachaAnimation.PostProcessing|CameraBlendFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_blendShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","_injectionPoint",0]],"typeHash":"6538c8022bb4b2f5105b707ccd06ae4d"}, "SiriusAsset|App.GachaAnimation.PostProcessing|RadialBlurFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_blurShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","_injectionPoint",0]],"typeHash":"10c8c66cb44cf8c825fee29edfbfcf5c"}, "SiriusAsset|App.UI.Text.DropShadow|TextDropShadowFeature":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_Active",16384],[1,"PPtr<$Shader>","_silhouetteShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$Shader>","_blurShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$Shader>","_compositeShader",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0]],"typeHash":"85721efe8a16a08cd5d8f51013555270"}, +"Unity.InputSystem|UnityEngine.InputSystem.UI|InputSystemUIInputModule":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_SendPointerHoverToParent",16384],[1,"float","m_MoveRepeatDelay",0],[1,"float","m_MoveRepeatRate",0],[1,"PPtr<$Transform>","m_XRTrackingOrigin",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionAsset>","m_ActionsAsset",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_PointAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_MoveAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_SubmitAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_CancelAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_LeftClickAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_MiddleClickAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_RightClickAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_ScrollWheelAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_TrackedDevicePositionAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$InputActionReference>","m_TrackedDeviceOrientationAction",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_DeselectOnBackgroundClick",16384],[1,"int","m_PointerBehavior",0],[1,"int","m_CursorLockBehavior",0],[1,"float","m_ScrollDeltaPerTick",0]],"typeHash":"daeac1347f8039f61cd4017ff33bd3c6"}, "Unity.RenderPipelines.Universal.Runtime|UnityEngine.Rendering.Universal|PostProcessData":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"ShaderResources","shaders",0],[2,"PPtr<$Shader>","stopNanPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","subpixelMorphologicalAntialiasingPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","gaussianDepthOfFieldPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","bokehDepthOfFieldPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","cameraMotionBlurPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","paniniProjectionPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","lutBuilderLdrPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","lutBuilderHdrPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","bloomPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","temporalAntialiasingPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","LensFlareDataDrivenPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","LensFlareScreenSpacePS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","scalingSetupPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","easuPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","uberPostPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","finalPostPassPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"int","m_ShaderResourcesVersion",0],[1,"TextureResources","textures",0],[2,"vector","blueNoise16LTex",0],[3,"Array","Array",0],[4,"int","size",0],[4,"PPtr<$Texture2D>","data",0],[5,"int","m_FileID",0],[5,"SInt64","m_PathID",0],[2,"vector","filmGrainTex",0],[3,"Array","Array",0],[4,"int","size",0],[4,"PPtr<$Texture2D>","data",0],[5,"int","m_FileID",0],[5,"SInt64","m_PathID",0],[2,"PPtr<$Texture2D>","smaaAreaTex",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Texture2D>","smaaSearchTex",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"int","m_TexturesResourcesVersion",0]],"typeHash":"3fd3a74e10cdfd45658891dfffc27a90"}, +"Unity.RenderPipelines.Universal.Runtime|UnityEngine.Rendering.Universal|UniversalAdditionalCameraData":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_RenderShadows",16384],[1,"int","m_RequiresDepthTextureOption",0],[1,"int","m_RequiresOpaqueTextureOption",0],[1,"int","m_CameraType",0],[1,"vector","m_Cameras",0],[2,"Array","Array",0],[3,"int","size",0],[3,"PPtr<$Camera>","data",0],[4,"int","m_FileID",0],[4,"SInt64","m_PathID",0],[1,"int","m_RendererIndex",0],[1,"BitField","m_VolumeLayerMask",0],[2,"unsigned int","m_Bits",0],[1,"PPtr<$Transform>","m_VolumeTrigger",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","m_VolumeFrameworkUpdateModeOption",0],[1,"UInt8","m_RenderPostProcessing",16384],[1,"int","m_Antialiasing",0],[1,"int","m_AntialiasingQuality",0],[1,"UInt8","m_StopNaN",16384],[1,"UInt8","m_Dithering",16384],[1,"UInt8","m_ClearDepth",16384],[1,"UInt8","m_AllowXRRendering",16384],[1,"UInt8","m_AllowHDROutput",16384],[1,"UInt8","m_UseScreenCoordOverride",16384],[1,"Vector4f","m_ScreenSizeOverride",0],[2,"float","x",0],[2,"float","y",0],[2,"float","z",0],[2,"float","w",0],[1,"Vector4f","m_ScreenCoordScaleBias",0],[2,"float","x",0],[2,"float","y",0],[2,"float","z",0],[2,"float","w",0],[1,"UInt8","m_RequiresDepthTexture",16384],[1,"UInt8","m_RequiresColorTexture",16384],[1,"Settings","m_TaaSettings",0],[2,"int","m_Quality",0],[2,"float","m_FrameInfluence",0],[2,"float","m_JitterScale",0],[2,"float","m_MipBias",0],[2,"float","m_VarianceClampScale",0],[2,"float","m_ContrastAdaptiveSharpening",0],[1,"int","m_Version",0]],"typeHash":"1b32c5551298e17b2b3237d120b9537b"}, "Unity.RenderPipelines.Universal.Runtime|UnityEngine.Rendering.Universal|UniversalRenderPipelineAsset":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"int","k_AssetVersion",0],[1,"int","k_AssetPreviousVersion",0],[1,"int","m_RendererType",0],[1,"PPtr<$ScriptableRendererData>","m_RendererData",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"vector","m_RendererDataList",0],[2,"Array","Array",0],[3,"int","size",0],[3,"PPtr<$ScriptableRendererData>","data",0],[4,"int","m_FileID",0],[4,"SInt64","m_PathID",0],[1,"int","m_DefaultRendererIndex",0],[1,"UInt8","m_RequireDepthTexture",16384],[1,"UInt8","m_RequireOpaqueTexture",16384],[1,"int","m_OpaqueDownsampling",0],[1,"UInt8","m_SupportsTerrainHoles",16384],[1,"UInt8","m_SupportsHDR",16384],[1,"int","m_HDRColorBufferPrecision",0],[1,"int","m_MSAA",0],[1,"float","m_RenderScale",0],[1,"int","m_UpscalingFilter",0],[1,"UInt8","m_FsrOverrideSharpness",16384],[1,"float","m_FsrSharpness",0],[1,"UInt8","m_EnableLODCrossFade",16384],[1,"int","m_LODCrossFadeDitheringType",0],[1,"int","m_ShEvalMode",0],[1,"int","m_LightProbeSystem",0],[1,"int","m_ProbeVolumeMemoryBudget",0],[1,"int","m_ProbeVolumeBlendingMemoryBudget",0],[1,"UInt8","m_SupportProbeVolumeGPUStreaming",16384],[1,"UInt8","m_SupportProbeVolumeDiskStreaming",16384],[1,"UInt8","m_SupportProbeVolumeScenarios",16384],[1,"UInt8","m_SupportProbeVolumeScenarioBlending",16384],[1,"int","m_ProbeVolumeSHBands",0],[1,"int","m_MainLightRenderingMode",0],[1,"UInt8","m_MainLightShadowsSupported",16384],[1,"int","m_MainLightShadowmapResolution",0],[1,"int","m_AdditionalLightsRenderingMode",0],[1,"int","m_AdditionalLightsPerObjectLimit",0],[1,"UInt8","m_AdditionalLightShadowsSupported",16384],[1,"int","m_AdditionalLightsShadowmapResolution",0],[1,"int","m_AdditionalLightsShadowResolutionTierLow",0],[1,"int","m_AdditionalLightsShadowResolutionTierMedium",0],[1,"int","m_AdditionalLightsShadowResolutionTierHigh",0],[1,"UInt8","m_ReflectionProbeBlending",16384],[1,"UInt8","m_ReflectionProbeBoxProjection",16384],[1,"UInt8","m_ReflectionProbeAtlas",16384],[1,"float","m_ShadowDistance",0],[1,"int","m_ShadowCascadeCount",0],[1,"float","m_Cascade2Split",0],[1,"Vector2f","m_Cascade3Split",0],[2,"float","x",0],[2,"float","y",0],[1,"Vector3f","m_Cascade4Split",0],[2,"float","x",0],[2,"float","y",0],[2,"float","z",0],[1,"float","m_CascadeBorder",0],[1,"float","m_ShadowDepthBias",0],[1,"float","m_ShadowNormalBias",0],[1,"UInt8","m_SoftShadowsSupported",16384],[1,"UInt8","m_ConservativeEnclosingSphere",16384],[1,"int","m_NumIterationsEnclosingSphere",0],[1,"int","m_SoftShadowQuality",0],[1,"int","m_AdditionalLightsCookieResolution",0],[1,"int","m_AdditionalLightsCookieFormat",0],[1,"UInt8","m_UseSRPBatcher",16384],[1,"UInt8","m_SupportsDynamicBatching",16384],[1,"UInt8","m_MixedLightingSupported",16384],[1,"UInt8","m_SupportsLightCookies",16384],[1,"UInt8","m_SupportsLightLayers",16384],[1,"int","m_DebugLevel",0],[1,"int","m_StoreActionsOptimization",0],[1,"UInt8","m_UseAdaptivePerformance",16384],[1,"int","m_ColorGradingMode",0],[1,"int","m_ColorGradingLutSize",0],[1,"UInt8","m_AllowPostProcessAlphaOutput",16384],[1,"UInt8","m_UseFastSRGBLinearConversion",16384],[1,"UInt8","m_SupportDataDrivenLensFlare",16384],[1,"UInt8","m_SupportScreenSpaceLensFlare",16384],[1,"UInt8","m_GPUResidentDrawerMode",16384],[1,"float","m_SmallMeshScreenPercentage",0],[1,"UInt8","m_GPUResidentDrawerEnableOcclusionCullingInCameras",16384],[1,"int","m_ShadowType",0],[1,"UInt8","m_LocalShadowsSupported",16384],[1,"int","m_LocalShadowsAtlasResolution",0],[1,"int","m_MaxPixelLights",0],[1,"int","m_ShadowAtlasResolution",0],[1,"int","m_VolumeFrameworkUpdateMode",0],[1,"PPtr<$VolumeProfile>","m_VolumeProfile",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"ProbeVolumeSceneData","apvScenesData",0],[2,"SerializedDictionary`2","obsoleteSceneBounds",0],[3,"vector","m_Keys",0],[4,"Array","Array",16384],[5,"int","size",0],[5,"string","data",0],[6,"Array","Array",16384],[7,"int","size",0],[7,"char","data",0],[3,"vector","m_Values",0],[4,"Array","Array",16384],[5,"int","size",0],[5,"AABB","data",0],[6,"Vector3f","m_Center",0],[7,"float","x",0],[7,"float","y",0],[7,"float","z",0],[6,"Vector3f","m_Extent",0],[7,"float","x",0],[7,"float","y",0],[7,"float","z",0],[2,"SerializedDictionary`2","obsoleteHasProbeVolumes",0],[3,"vector","m_Keys",0],[4,"Array","Array",16384],[5,"int","size",0],[5,"string","data",0],[6,"Array","Array",16384],[7,"int","size",0],[7,"char","data",0],[3,"vector","m_Values",16384],[4,"Array","Array",16384],[5,"int","size",0],[5,"UInt8","data",0],[1,"int","m_ShaderVariantLogLevel",0],[1,"int","m_ShadowCascades",0],[1,"TextureResources","m_Textures",0],[2,"PPtr<$Texture2D>","blueNoise64LTex",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Texture2D>","bayerMatrixTex",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0]],"typeHash":"ea78afb1b30663b7c04c956e9f2acdec"}, "Unity.RenderPipelines.Universal.Runtime|UnityEngine.Rendering.Universal|UniversalRendererData":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"DebugShaderResources","debugShaders",0],[2,"PPtr<$Shader>","debugReplacementPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","hdrDebugViewPS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[1,"ProbeVolumeResources","probeVolumeResources",0],[2,"PPtr<$Shader>","probeVolumeDebugShader",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","probeVolumeFragmentationDebugShader",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","probeVolumeOffsetDebugShader",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Shader>","probeVolumeSamplingDebugShader",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Mesh>","probeSamplingDebugMesh",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$Texture2D>","probeSamplingDebugTexture",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[2,"PPtr<$ComputeShader>","probeVolumeBlendStatesCS",0],[3,"int","m_FileID",0],[3,"SInt64","m_PathID",0],[1,"vector","m_RendererFeatures",0],[2,"Array","Array",0],[3,"int","size",0],[3,"PPtr<$ScriptableRendererFeature>","data",0],[4,"int","m_FileID",0],[4,"SInt64","m_PathID",0],[1,"vector","m_RendererFeatureMap",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"SInt64","data",0],[1,"UInt8","m_UseNativeRenderPass",16384],[1,"PPtr<$XRSystemData>","xrSystemData",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$PostProcessData>","postProcessData",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","m_AssetVersion",0],[1,"BitField","m_PrepassLayerMask",0],[2,"unsigned int","m_Bits",0],[1,"BitField","m_OpaqueLayerMask",0],[2,"unsigned int","m_Bits",0],[1,"BitField","m_TransparentLayerMask",0],[2,"unsigned int","m_Bits",0],[1,"StencilStateData","m_DefaultStencilState",0],[2,"UInt8","overrideStencilState",16384],[2,"int","stencilReference",0],[2,"int","stencilCompareFunction",0],[2,"int","passOperation",0],[2,"int","failOperation",0],[2,"int","zFailOperation",0],[1,"UInt8","m_ShadowTransparentReceive",16384],[1,"int","m_RenderingMode",0],[1,"int","m_DepthPrimingMode",0],[1,"int","m_CopyDepthMode",0],[1,"int","m_DepthAttachmentFormat",0],[1,"int","m_DepthTextureFormat",0],[1,"UInt8","m_AccurateGbufferNormals",16384],[1,"int","m_IntermediateTextureMode",0]],"typeHash":"c5a78730dc24e0c4472a14856758a6b5"}, "Unity.TextMeshPro|TMPro|TMP_Settings":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"string","assetVersion",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"int","m_TextWrappingMode",0],[1,"UInt8","m_enableKerning",16384],[1,"vector","m_ActiveFontFeatures",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"unsigned int","data",0],[1,"UInt8","m_enableExtraPadding",16384],[1,"UInt8","m_enableTintAllSprites",16384],[1,"UInt8","m_enableParseEscapeCharacters",16384],[1,"UInt8","m_EnableRaycastTarget",16384],[1,"UInt8","m_GetFontFeaturesAtRuntime",16384],[1,"int","m_missingGlyphCharacter",0],[1,"UInt8","m_ClearDynamicDataOnBuild",16384],[1,"UInt8","m_warningsDisabled",16384],[1,"PPtr<$TMP_FontAsset>","m_defaultFontAsset",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_defaultFontAssetPath",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"float","m_defaultFontSize",0],[1,"float","m_defaultAutoSizeMinRatio",0],[1,"float","m_defaultAutoSizeMaxRatio",0],[1,"Vector2f","m_defaultTextMeshProTextContainerSize",0],[2,"float","x",0],[2,"float","y",0],[1,"Vector2f","m_defaultTextMeshProUITextContainerSize",0],[2,"float","x",0],[2,"float","y",0],[1,"UInt8","m_autoSizeTextContainer",16384],[1,"UInt8","m_IsTextObjectScaleStatic",16384],[1,"vector","m_fallbackFontAssets",0],[2,"Array","Array",0],[3,"int","size",0],[3,"PPtr<$TMP_FontAsset>","data",0],[4,"int","m_FileID",0],[4,"SInt64","m_PathID",0],[1,"UInt8","m_matchMaterialPreset",16384],[1,"UInt8","m_HideSubTextObjects",16384],[1,"PPtr<$TMP_SpriteAsset>","m_defaultSpriteAsset",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_defaultSpriteAssetPath",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_enableEmojiSupport",16384],[1,"unsigned int","m_MissingCharacterSpriteUnicode",0],[1,"vector","m_EmojiFallbackTextAssets",0],[2,"Array","Array",0],[3,"int","size",0],[3,"PPtr<$TMP_Asset>","data",0],[4,"int","m_FileID",0],[4,"SInt64","m_PathID",0],[1,"string","m_defaultColorGradientPresetsPath",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"PPtr<$TMP_StyleSheet>","m_defaultStyleSheet",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_StyleSheetsResourcePath",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"PPtr<$TextAsset>","m_leadingCharacters",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"PPtr<$TextAsset>","m_followingCharacters",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_UseModernHangulLineBreakingRules",16384]],"typeHash":"bfa9d6dfbc3c74a843a3b197bdcc6639"}, -"Unity.TextMeshPro|TMPro|TMP_StyleSheet":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"TMP_Style","m_StyleList",0],[2,"Array","Array",0],[3,"int","size",0],[3,"TMP_Style","data",0],[4,"string","m_Name",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"int","m_HashCode",0],[4,"string","m_OpeningDefinition",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"string","m_ClosingDefinition",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"vector","m_OpeningTagArray",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"unsigned int","data",0],[4,"vector","m_ClosingTagArray",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"unsigned int","data",0]],"typeHash":"8d5318ed8488b1fe17c08044ce1b8309"} +"Unity.TextMeshPro|TMPro|TMP_StyleSheet":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"TMP_Style","m_StyleList",0],[2,"Array","Array",0],[3,"int","size",0],[3,"TMP_Style","data",0],[4,"string","m_Name",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"int","m_HashCode",0],[4,"string","m_OpeningDefinition",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"string","m_ClosingDefinition",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"char","data",0],[4,"vector","m_OpeningTagArray",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"unsigned int","data",0],[4,"vector","m_ClosingTagArray",0],[5,"Array","Array",16384],[6,"int","size",0],[6,"unsigned int","data",0]],"typeHash":"8d5318ed8488b1fe17c08044ce1b8309"}, +"UnityEngine.UI|UnityEngine.EventSystems|EventSystem":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"PPtr<$GameObject>","m_FirstSelected",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_sendNavigationEvents",16384],[1,"int","m_DragThreshold",0]],"typeHash":"e987953190eb4c12cf19df790566dc2c"}, +"UnityEngine.UI|UnityEngine.EventSystems|Physics2DRaycaster":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"BitField","m_EventMask",0],[2,"unsigned int","m_Bits",0],[1,"int","m_MaxRayIntersections",0]],"typeHash":"e8d390bd9ecacc453a7500b90d0c0292"}, +"UnityEngine.UI|UnityEngine.UI|CanvasScaler":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"int","m_UiScaleMode",0],[1,"float","m_ReferencePixelsPerUnit",0],[1,"float","m_ScaleFactor",0],[1,"Vector2f","m_ReferenceResolution",0],[2,"float","x",0],[2,"float","y",0],[1,"int","m_ScreenMatchMode",0],[1,"float","m_MatchWidthOrHeight",0],[1,"int","m_PhysicalUnit",0],[1,"float","m_FallbackScreenDPI",0],[1,"float","m_DefaultSpriteDPI",0],[1,"float","m_DynamicPixelsPerUnit",0],[1,"UInt8","m_PresetInfoIsWorld",16384]],"typeHash":"540882762544409cc4530e60db00e951"}, +"UnityEngine.UI|UnityEngine.UI|GraphicRaycaster":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"UInt8","m_IgnoreReversedGraphics",16384],[1,"int","m_BlockingObjects",0],[1,"BitField","m_BlockingMask",0],[2,"unsigned int","m_Bits",0]],"typeHash":"5a4aa2850fe11587f47e34c270c7fd22"}, +"UnityEngine.UI|UnityEngine.UI|Image":{"nodes":[[0,"MonoBehaviour","Base",0],[1,"PPtr","m_GameObject",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"UInt8","m_Enabled",16384],[1,"PPtr","m_Script",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"string","m_Name",0],[2,"Array","Array",16384],[3,"int","size",0],[3,"char","data",0],[1,"PPtr<$Material>","m_Material",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"ColorRGBA","m_Color",0],[2,"float","r",0],[2,"float","g",0],[2,"float","b",0],[2,"float","a",0],[1,"UInt8","m_RaycastTarget",16384],[1,"Vector4f","m_RaycastPadding",0],[2,"float","x",0],[2,"float","y",0],[2,"float","z",0],[2,"float","w",0],[1,"UInt8","m_Maskable",16384],[1,"CullStateChangedEvent","m_OnCullStateChanged",0],[2,"PersistentCallGroup","m_PersistentCalls",0],[3,"PersistentCall","m_Calls",0],[4,"Array","Array",0],[5,"int","size",0],[5,"PersistentCall","data",0],[6,"PPtr<$Object>","m_Target",0],[7,"int","m_FileID",0],[7,"SInt64","m_PathID",0],[6,"string","m_TargetAssemblyTypeName",0],[7,"Array","Array",16384],[8,"int","size",0],[8,"char","data",0],[6,"string","m_MethodName",0],[7,"Array","Array",16384],[8,"int","size",0],[8,"char","data",0],[6,"int","m_Mode",0],[6,"ArgumentCache","m_Arguments",0],[7,"PPtr<$Object>","m_ObjectArgument",0],[8,"int","m_FileID",0],[8,"SInt64","m_PathID",0],[7,"string","m_ObjectArgumentAssemblyTypeName",0],[8,"Array","Array",16384],[9,"int","size",0],[9,"char","data",0],[7,"int","m_IntArgument",0],[7,"float","m_FloatArgument",0],[7,"string","m_StringArgument",0],[8,"Array","Array",16384],[9,"int","size",0],[9,"char","data",0],[7,"UInt8","m_BoolArgument",16384],[6,"int","m_CallState",0],[1,"PPtr<$Sprite>","m_Sprite",0],[2,"int","m_FileID",0],[2,"SInt64","m_PathID",0],[1,"int","m_Type",0],[1,"UInt8","m_PreserveAspect",16384],[1,"UInt8","m_FillCenter",16384],[1,"int","m_FillMethod",0],[1,"float","m_FillAmount",0],[1,"UInt8","m_FillClockwise",16384],[1,"int","m_FillOrigin",0],[1,"UInt8","m_UseSpriteMesh",16384],[1,"float","m_PixelsPerUnitMultiplier",0]],"typeHash":"dd9dda1dfd39e605c49e72003342ef5d"} }} diff --git a/tests/content/test_storyscene.py b/tests/content/test_storyscene.py index 2b1572e..cc6d855 100644 --- a/tests/content/test_storyscene.py +++ b/tests/content/test_storyscene.py @@ -132,9 +132,25 @@ def test_two_render_settings_raise_value_error(tmp_path): storyscene.scene(objs) +CATALOG = [storyscene.SCENE_KEY, *storyscene.PREFAB_KEYS.values(), *(k for k, _ in storyscene.SETTINGS_KEYS.values())] + + +def test_a_manager_the_boot_scene_holds_is_no_catalog_key(): + without = [k for k in CATALOG if k != storyscene.PREFAB_KEYS["cameraManager"]] + assert storyscene.keys(without) == sorted(without) and len(storyscene.keys(without)) == 6 + + def test_keys_list_the_seven_keys_sorted(): - ks = storyscene.keys() + ks = storyscene.keys(CATALOG) assert len(ks) == 7 and ks == sorted(ks) assert storyscene.SCENE_KEY in ks assert set(storyscene.PREFAB_KEYS.values()) <= set(ks) assert {key for key, _ in storyscene.SETTINGS_KEYS.values()} <= set(ks) + + +def test_a_manager_of_the_boot_scene_stands_for_its_missing_catalog_key(tmp_path): + held = keys() + del held[storyscene.PREFAB_KEYS["cameraManager"]] + held["builtin"] = [*held["builtin"], CAMERA] + doc, _, _ = storyscene.scene(Objects(table(Depot(tmp_path / "d"), held, objects()), Depot(tmp_path / "d"))) + assert doc["prefabs"]["cameraManager"] == CAMERA diff --git a/tests/musicdata/test_deckdata.py b/tests/musicdata/test_deckdata.py index 36729b6..7546273 100644 --- a/tests/musicdata/test_deckdata.py +++ b/tests/musicdata/test_deckdata.py @@ -443,6 +443,10 @@ def test_master_file_checks(tmp_path): "lists no MasterParameter, MasterEvent", src=deckdata.master_files(master_dir(tmp_path, skip={"MasterEvent", "MasterParameter"}, name="b")), ) + d = master_dir(tmp_path, skip={"MasterArenaMusic"}, name="opt") + tables, shas = deckdata.read_master(deckdata.master_files(d), KEY) + assert tables["MasterArenaMusic"] == [] and "MasterArenaMusic" not in shas + assert deckdata.master_subset(tables)["MasterArenaMusic"] == {"columns": [], "rows": []} d = master_dir(tmp_path, name="c") (d / "MasterBand.bin").unlink() failing(tmp_path, "no file MasterBand.bin", src=deckdata.master_files(d)) diff --git a/tests/musicdata/test_musicdata.py b/tests/musicdata/test_musicdata.py index 8cd8c4d..ac34914 100644 --- a/tests/musicdata/test_musicdata.py +++ b/tests/musicdata/test_musicdata.py @@ -1534,3 +1534,23 @@ def test_aptitude_disabled(tmp_path): assert doc["deck"]["gekisouAptitude"] is None assert all(c["deck"]["gekisouAptitude"] is None for s in doc["songs"] for c in s["charts"]) schema_validator().validate(doc) + + +def test_master_data_without_the_arena_music_table(tmp_path): + d = master_dir(tmp_path) + (d / "MasterArenaMusic.bin").unlink() + manifest = json.loads((d / "MasterManifest.json").read_text(encoding="utf-8")) + manifest["files"] = [f for f in manifest["files"] if f["name"] != "MasterArenaMusic.bin"] + (d / "MasterManifest.json").write_text(json.dumps(manifest), encoding="utf-8") + musicdata.export( + tmp_path / "music.json", + deckdata.master_files(d), + KEY, + CHARTS.__getitem__, + bgm, + **PROV, + deck=musicdata.Deck(module=FakeDeck(), workers=3), + ) + doc = json.loads((tmp_path / "music.json").read_bytes()) + assert "MasterArenaMusic" not in doc["provenance"]["master"]["tables"] + assert "MasterBand" in doc["provenance"]["master"]["tables"] diff --git a/tests/pipeline/test_story.py b/tests/pipeline/test_story.py index 1188421..eee5e2d 100644 --- a/tests/pipeline/test_story.py +++ b/tests/pipeline/test_story.py @@ -2,7 +2,7 @@ import pytest -from nnnotes.content import storychat, storyepisode, storyscene, storyui +from nnnotes.content import prefabs, storychat, storyepisode, storyscene, storyui from nnnotes.formats import crilips from nnnotes.pipeline import assemble, contract, cristages, live, story from nnnotes.pipeline.assemble import Objects @@ -90,13 +90,32 @@ def test_the_crilips_product_has_one_subject_and_reads_the_library(): assert stage.select(["Cri/Sound/a"], None) == [] +class _CatalogEnv: + def __init__(self, keys): + self.keys = keys + + def fact(self, name): + assert name == "index" + return {"locations": [{"primaryKey": k} for k in self.keys]} + + +def test_the_scene_product_of_a_boot_scene_manager_catalog_adds_the_boot_gameobjects(): + stage = SceneStage() + env = _CatalogEnv([]) + assert stage.builtins("default", env) == ["GameObject", "GraphicsSettings", "PlayerSettings", "QualitySettings"] + assert storyscene.PREFAB_KEYS["cameraManager"] not in stage.keys("default", env) + assert stage.select(stage.keys("default", env), None) == ["default"] + + def test_the_scene_product_has_one_subject_its_keys_and_the_graphics_settings(): stage = SceneStage() - assert stage.keys("default", None) == storyscene.keys() and len(storyscene.keys()) == 7 - assert stage.builtins("default", None) == ["GraphicsSettings", "PlayerSettings", "QualitySettings"] + held = [*storyscene.keys(prefabs.BOOT_MANAGERS), *prefabs.BOOT_MANAGERS] + env = _CatalogEnv(held) + assert stage.keys("default", env) == storyscene.keys(held) and len(storyscene.keys(held)) == 7 + assert stage.builtins("default", env) == ["GraphicsSettings", "PlayerSettings", "QualitySettings"] assert stage.manifest("default") == "storyscenes/default.json" - assert stage.select([*storyscene.keys(), "Adv/Stage/bg"], None) == ["default"] - assert stage.select(storyscene.keys()[1:], None) == [] + assert stage.select([*storyscene.keys(held), "Adv/Stage/bg"], None) == ["default"] + assert stage.select(storyscene.keys(held)[1:], None) == [] with pytest.raises(ValueError, match="the only subject is default"): stage.keys("other", None) @@ -380,7 +399,11 @@ def test_the_story_ui_product_has_one_subject_per_client_language(tmp_path): assert stage.ui_keys("zh-Hant", env) == storyui.keys(sui.catalog_keys()) assert stage.keys("ja", env) == sorted([*storyui.keys(sui.catalog_keys()), "Adv/Chat/Prefabs/win_7"]) assert stage.resources("ja", None) == ["DOTweenSettings", "TMP Settings"] - assert stage.builtins("en", None) == ["GraphicsSettings", "MonoBehaviour:LocalizeManager"] + assert stage.builtins("en", env) == [ + "GraphicsSettings", + "MonoBehaviour:LocalizeManager", + *prefabs.boot_builtins(sui.catalog_keys()), + ] assert stage.manifest("zh-Hant") == "storyui/zh-Hant.json" assert PART_STAGES[UI] is UiStage with pytest.raises(ValueError, match="not a client language"):