From b5adecf94cc3dedb992620cb253dd05f063d77fa Mon Sep 17 00:00:00 2001 From: HelenWalker <91487378+HelenaTheRenegade@users.noreply.github.com> Date: Sat, 7 Mar 2026 12:13:04 -0700 Subject: [PATCH] ss ss --- EndField.fbs | 621 ++++++++++++++++++++++++++++++ EndField.gen0.fbs | 621 ++++++++++++++++++++++++++++++ FBStreamingChunkVariant8.fbs | 16 + FBStreamingChunkVariant8Bytes.fbs | 16 + README.md | 8 + _flatc_probe/fb_init_18880.json | 568 +++++++++++++++++++++++++++ 6 files changed, 1850 insertions(+) create mode 100644 EndField.fbs create mode 100644 EndField.gen0.fbs create mode 100644 FBStreamingChunkVariant8.fbs create mode 100644 FBStreamingChunkVariant8Bytes.fbs create mode 100644 README.md create mode 100644 _flatc_probe/fb_init_18880.json diff --git a/EndField.fbs b/EndField.fbs new file mode 100644 index 0000000..1b58780 --- /dev/null +++ b/EndField.fbs @@ -0,0 +1,621 @@ +namespace DynamicAssets; + +table FBFactorySingleGridRangeData { + OptionStart: int; + HeightMin: short; + HeightMax: short; + Flag: uint8; + OptionNum: uint8; +} + +table FBFactoryChunkData { + status: uint = 0; + Index: [int]; + Nums: [uint8]; + Ranges: [FBFactorySingleGridRangeData]; + AllOptionSpecData: [ulong]; +} + +table FBDynamicSceneGuid { + V0: uint; + V1: uint; + V2: uint; + V3: uint; +} + +table FBDynamicSceneVector3 { + X: float; + Y: float; + Z: float; +} + +table FBDynamicSceneTransform { + posX: float; + posY: float; + posZ: float; + rotX: float; + rotY: float; + rotZ: float; + sclX: float; + sclY: float; + sclZ: float; +} + +table FBDynamicSceneDataIndex { + IsInvalid: bool; + Type: int; + Grid: uint; + Index: int; +} + +table FBDynamicSceneBounds { + CenterX: float; + CenterY: float; + CenterZ: float; + ExtentsX: float; + ExtentsY: float; + ExtentsZ: float; +} + +table FBDynamicSceneModel { + guidV0: uint; + guidV1: uint; + guidV2: uint; + guidV3: uint; + transposX: float; + transposY: float; + transposZ: float; + transrotX: float; + transrotY: float; + transrotZ: float; + transsclX: float; + transsclY: float; + transsclZ: float; + AnimatorMin: uint; + AnimatorMax: uint; + PathHash: long; +} + +table FBDynamicSceneEffect { + Path: int; + Name: int; + Dis: float; + transposX: float; + transposY: float; + transposZ: float; + transrotX: float; + transrotY: float; + transrotZ: float; + transsclX: float; + transsclY: float; + transsclZ: float; + AssetHash: long; + Lod0Grid: uint; + Lod1Grid: uint; + LoopSoundType: int; + LoopSoundKey: int; + SoundStartKey: uint; + SoundEndKey: uint; + UseParticleSound: bool; + UseBBox: bool; + bboxMinX: float; + bboxMinY: float; + bboxMinZ: float; + bboxMaxX: float; + bboxMaxY: float; + bboxMaxZ: float; +} + +table FBDynamicSceneEcs { + Start: int; + Num: int; + Chunk: int; +} + +table FBDynamicSceneEcsModel { + modelIsInvalid: bool; + modelType: int; + modelGrid: uint; + modelIndex: int; + ecsIsInvalid: bool; + ecsType: int; + ecsGrid: uint; + ecsIndex: int; + LGrid: uint; + BGrid: uint; + AlwaysModel: int; +} + +table FBDynamicSceneDataGroup { + indexIsInvalid: bool; + indexType: int; + indexGrid: uint; + indexIndex: int; + Num: int; +} + +table FBDynamicSceneResourceGroupWithStateDesc { + groupindexIsInvalid: bool; + groupindexType: int; + groupindexGrid: uint; + groupindexIndex: int; + groupNum: int; + SceneState: uint; + LogicState: uint; + LevelNum: int; + FactoryIndex: int; +} + +table FBDynamicSceneNavModifyArea { + Area: int; + posX: float; + posY: float; + posZ: float; + rotX: float; + rotY: float; + rotZ: float; + sclX: float; + sclY: float; + sclZ: float; +} + +table FBDynamicSceneMountPair { + Mount: int; + indexIsInvalid: bool; + indexType: int; + indexGrid: uint; + indexIndex: int; +} + +table FBDynamicSceneIntStrMapEntry { + K: int; + V: int; +} + +table FBDynamicSceneMissionCondition { + Id: int; + IsQuest: int; + State: int; + IsSame: int; +} + +table FBDynamicSceneIdComp { + UniqueId: ulong; +} + +table FBDynamicSceneSeatComp { + UseCaptain: int; + LangKey: int; + posX: float; + posY: float; + posZ: float; + rotX: float; + rotY: float; + rotZ: float; +} + +table FBDynamicScenePureFuncComp { + Type: int; +} + +table FBDynamicSceneTriggerComp { + Shape: int; + Radius: float; + centerX: float; + centerY: float; + centerZ: float; + sizeX: float; + sizeY: float; + sizeZ: float; + transposX: float; + transposY: float; + transposZ: float; + transrotX: float; + transrotY: float; + transrotZ: float; + transsclX: float; + transsclY: float; + transsclZ: float; + posListGroupindexIsInvalid: bool; + posListGroupindexType: int; + posListGroupindexGrid: uint; + posListGroupindexIndex: int; + posListGroupNum: int; +} + +table FBDynamicSceneHittableComp { + HitType: int; +} + +table FBDynamicSceneFactoryBlockComp { + Radius: float; + centerX: float; + centerY: float; + centerZ: float; +} + +table FBDynamicSceneDynamicEntityControlComp { + EntityId: ulong; +} + +table FBDynamicSceneNavModifyAreaComp { + groupindexIsInvalid: bool; + groupindexType: int; + groupindexGrid: uint; + groupindexIndex: int; + groupNum: int; +} + +table FBDynamicSceneInteractiveStateComp { + Id: ulong; + ControlLoad: bool; + StateGetter: int; + CompareOperator: int; + CompareTarget: int; + PropertyKey: int; +} + +table FBDynamicSceneViewStateControlComp { + Id: ulong; + ComputeType: int; + entriesindexIsInvalid: bool; + entriesindexType: int; + entriesindexGrid: uint; + entriesindexIndex: int; + entriesNum: int; +} + +table FBDynamicSceneMissionControlComp { + conditionsindexIsInvalid: bool; + conditionsindexType: int; + conditionsindexGrid: uint; + conditionsindexIndex: int; + conditionsNum: int; + CompareType: int; + ToBeTrue: int; +} + +table FBDynamicSceneGlobalVarControlComp { + GlobalKey: int; + ControlLoad: bool; + CompareType: int; + CompareValue: long; + Extra1: int; + Extra2: int; + Extra3: int; + Extra4: int; +} + +table FBDynamicSceneSettlementControlComp { + Id: int; + ControlLoad: bool; + CompareType: int; + CompareValue: int; + IsMain: bool; +} + +table FBDynamicSceneFactoryRegionControlComp { + Level: int; + Index: int; +} + +table FBDynamicSceneScriptControlComp { + DefaultLoad: int; +} + +table FBDynamicSceneResourceComp { + resgroupindexIsInvalid: bool; + resgroupindexType: int; + resgroupindexGrid: uint; + resgroupindexIndex: int; + resgroupNum: int; + resSceneState: uint; + resLogicState: uint; + resLevelNum: int; + resFactoryIndex: int; + mountindexIsInvalid: bool; + mountindexType: int; + mountindexGrid: uint; + mountindexIndex: int; + mountNum: int; + NavState: int; + navDataindexIsInvalid: bool; + navDataindexType: int; + navDataindexGrid: uint; + navDataindexIndex: int; + navDataNum: int; +} + +table FBDynamicSceneRootComp { + Type: int; + State: uint; + compsindexIsInvalid: bool; + compsindexType: int; + compsindexGrid: uint; + compsindexIndex: int; + compsNum: int; +} + +table FBDynamicSceneTreeRootComp { + Tid: int; + NormalModel: long; +} + +table FBDynamicSceneDecorationRootComp { + Control: int; + Important: int; + DecoId: ulong; +} + +table FBDynamicSceneErosionRootComp { + ErosionCoreId: ulong; + posListindexIsInvalid: bool; + posListindexType: int; + posListindexGrid: uint; + posListindexIndex: int; + posListNum: int; + erosionCorePosX: float; + erosionCorePosY: float; + erosionCorePosZ: float; +} + +table FBDynamicSceneModelViewStateControllerNewComp { + ModelIdStrId: int; + UseOldVersion: bool; + keyStateToNameMapindexIsInvalid: bool; + keyStateToNameMapindexType: int; + keyStateToNameMapindexGrid: uint; + keyStateToNameMapindexIndex: int; + keyStateToNameMapNum: int; + KeyState: int; +} + +table FBDynamicSceneConveyorBeltComp { + GroupId: ulong; + IsEntry: bool; + IsExit: bool; +} + +table FBDynamicSceneConveyorBeltBoxComp { + BelongGroupId: ulong; + FixedProgress: int; + LateralOffset: float; +} + +table FBDynamicSceneConveyorBeltGroupComp { + Speed: float; + TotalLength: float; + LevelId: int; + SplineId: int; + pathsindexIsInvalid: bool; + pathsindexType: int; + pathsindexGrid: uint; + pathsindexIndex: int; + pathsNum: int; +} + +table FBDynamicSceneConveyorPath { + Type: uint; + worldStartPointX: float; + worldStartPointY: float; + worldStartPointZ: float; + worldEndPointX: float; + worldEndPointY: float; + worldEndPointZ: float; + Width: float; + Length: float; + Radius: float; + worldCenterX: float; + worldCenterY: float; + worldCenterZ: float; + StartAngle: float; + EndAngle: float; + rotationX: float; + rotationY: float; + rotationZ: float; + IsClockwise: bool; + StartProgress: float; + EndProgress: float; +} + +table FBDynamicScenePureSystemComp { + Type: int; +} + +table FBDynamicSceneNatureResourceComp { + Type: int; +} + +table FBDynamicSceneSludgeComp { + SludgeSize: uint; + SizeY: float; + Thickness: float; + RebornTime: float; + RebornAnimTime: float; + DisappearTime: float; + boundsConvertorWCenterX: float; + boundsConvertorWCenterY: float; + boundsConvertorWCenterZ: float; + boundsConvertorWExtentsX: float; + boundsConvertorWExtentsY: float; + boundsConvertorWExtentsZ: float; + originWX: float; + originWY: float; + originWZ: float; + upX: float; + upY: float; + upZ: float; + rightX: float; + rightY: float; + rightZ: float; + forwardX: float; + forwardY: float; + forwardZ: float; + posX: float; + posY: float; + posZ: float; + MatGuidHash: long; + TexGuidHash: long; + SludgeId: int; + scanPointsindexIsInvalid: bool; + scanPointsindexType: int; + scanPointsindexGrid: uint; + scanPointsindexIndex: int; + scanPointsNum: int; + SludgeType: int; + navMeshPointsindexIsInvalid: bool; + navMeshPointsindexType: int; + navMeshPointsindexGrid: uint; + navMeshPointsindexIndex: int; + navMeshPointsNum: int; + NavMeshMinH: float; + NavMeshMaxH: float; + disappearPointX: float; + disappearPointY: float; + disappearPointZ: float; + wavePointX: float; + wavePointY: float; + wavePointZ: float; + EncodedClipPlane0: uint; + EncodedClipPlane1: uint; +} + +table FBDynamicSceneExtraSceneComp { + minPosX: float; + minPosY: float; + minPosZ: float; + maxPosX: float; + maxPosY: float; + maxPosZ: float; + currentPosX: float; + currentPosY: float; + currentPosZ: float; + Direction: uint; +} + +table FBDynamicSceneSceneGridInfo { + centerX: float; + centerY: float; + centerZ: float; + Len: int; +} + +table FBDynamicSceneRemapSceneComp { + sceneGridInfoListindexIsInvalid: bool; + sceneGridInfoListindexType: int; + sceneGridInfoListindexGrid: uint; + sceneGridInfoListindexIndex: int; + sceneGridInfoListNum: int; +} + +table FBDynamicSceneWaterPipeComp { + InitialAngle: float; + TargetAngle: float; + IsConnectedToWaterWheel: bool; + InteractiveId: ulong; + UpstreamInteractiveId: ulong; + DelayActivateDownStream: float; + HeightToDownStream: float; + HeightToGround: float; + IsOutFall: bool; +} + +table FBDynamicSceneStreamingAreaComp { + AreaId: int; + visibleGroupindexIsInvalid: bool; + visibleGroupindexType: int; + visibleGroupindexGrid: uint; + visibleGroupindexIndex: int; + visibleGroupNum: int; +} + +table FBDynamicSceneNavmeshObstacle { + obstacleposX: float; + obstacleposY: float; + obstacleposZ: float; + obstaclerotX: float; + obstaclerotY: float; + obstaclerotZ: float; + obstaclesclX: float; + obstaclesclY: float; + obstaclesclZ: float; +} + +table FBDynamicSceneMapVarControlComp { + MapKey: int; + ControlLoad: bool; + CompareType: int; + CompareValue: long; + Extra1: int; + Extra2: int; + Extra3: int; + Extra4: int; +} + +table FBDynamicSceneSingleGridDescriptor { + scene: int = 0; + Ranges: [FBDynamicSceneDataGroup]; +} + +table FBDynamicSceneSingleGrid { + uniqueId: uint = 0; + PrimitiveIntList: [int]; + DataIndex: [FBDynamicSceneDataIndex]; + Vector3: [FBDynamicSceneVector3]; + Model: [FBDynamicSceneModel]; + Effect: [FBDynamicSceneEffect]; + Ecs: [FBDynamicSceneEcs]; + EcsModel: [FBDynamicSceneEcsModel]; + DataGroup: [FBDynamicSceneDataGroup]; + ResourceGroupWithStateDesc: [FBDynamicSceneResourceGroupWithStateDesc]; + NavModifyArea: [FBDynamicSceneNavModifyArea]; + MountPair: [FBDynamicSceneMountPair]; + IntStrMapEntry: [FBDynamicSceneIntStrMapEntry]; + MissionCondition: [FBDynamicSceneMissionCondition]; + IdComp: [FBDynamicSceneIdComp]; + SeatComp: [FBDynamicSceneSeatComp]; + PureFuncComp: [FBDynamicScenePureFuncComp]; + TriggerComp: [FBDynamicSceneTriggerComp]; + HittableComp: [FBDynamicSceneHittableComp]; + FactoryBlockComp: [FBDynamicSceneFactoryBlockComp]; + DynamicEntityControlComp: [FBDynamicSceneDynamicEntityControlComp]; + NavModifyAreaComp: [FBDynamicSceneNavModifyAreaComp]; + InteractiveStateComp: [FBDynamicSceneInteractiveStateComp]; + ViewStateControlComp: [FBDynamicSceneViewStateControlComp]; + MissionControlComp: [FBDynamicSceneMissionControlComp]; + GlobalVarControlComp: [FBDynamicSceneGlobalVarControlComp]; + SettlementControlComp: [FBDynamicSceneSettlementControlComp]; + FactoryRegionControlComp: [FBDynamicSceneFactoryRegionControlComp]; + ScriptControlComp: [FBDynamicSceneScriptControlComp]; + ResourceComp: [FBDynamicSceneResourceComp]; + RootComp: [FBDynamicSceneRootComp]; + TreeRootComp: [FBDynamicSceneTreeRootComp]; + DecorationRootComp: [FBDynamicSceneDecorationRootComp]; + ErosionRootComp: [FBDynamicSceneErosionRootComp]; + ModelViewStateControllerNewComp: [FBDynamicSceneModelViewStateControllerNewComp]; + ConveyorBeltComp: [FBDynamicSceneConveyorBeltComp]; + ConveyorBeltBoxComp: [FBDynamicSceneConveyorBeltBoxComp]; + ConveyorBeltGroupComp: [FBDynamicSceneConveyorBeltGroupComp]; + ConveyorPath: [FBDynamicSceneConveyorPath]; + PureSystemComp: [FBDynamicScenePureSystemComp]; + NatureResourceComp: [FBDynamicSceneNatureResourceComp]; + SludgeComp: [FBDynamicSceneSludgeComp]; + Bounds: [FBDynamicSceneBounds]; + ExtraSceneComp: [FBDynamicSceneExtraSceneComp]; + SceneGridInfo: [FBDynamicSceneSceneGridInfo]; + RemapSceneComp: [FBDynamicSceneRemapSceneComp]; + WaterPipeComp: [FBDynamicSceneWaterPipeComp]; + StreamingAreaComp: [FBDynamicSceneStreamingAreaComp]; + NavmeshObstacle: [FBDynamicSceneNavmeshObstacle]; + MapVarControlComp: [FBDynamicSceneMapVarControlComp]; + Desc: [FBDynamicSceneSingleGridDescriptor]; +} + +table FBDynamicSceneChunkData { + version: ulong = 0; + streamingVersion: int = 0; + uniqueId: uint = 0; + Grids: [FBDynamicSceneSingleGrid]; + TotalStr: [string]; +} + diff --git a/EndField.gen0.fbs b/EndField.gen0.fbs new file mode 100644 index 0000000..d9155ea --- /dev/null +++ b/EndField.gen0.fbs @@ -0,0 +1,621 @@ +namespace DynamicAssets; + +table FBFactorySingleGridRangeData { + OptionStart: int; + HeightMin: short; + HeightMax: short; + Flag: uint8; + OptionNum: uint8; +} + +table FBFactoryChunkData { + status: uint; + Index: [int]; + Nums: [uint8]; + Ranges: [FBFactorySingleGridRangeData]; + AllOptionSpecData: [ulong]; +} + +table FBDynamicSceneGuid { + V0: uint; + V1: uint; + V2: uint; + V3: uint; +} + +table FBDynamicSceneVector3 { + X: float; + Y: float; + Z: float; +} + +table FBDynamicSceneTransform { + posX: float; + posY: float; + posZ: float; + rotX: float; + rotY: float; + rotZ: float; + sclX: float; + sclY: float; + sclZ: float; +} + +table FBDynamicSceneDataIndex { + IsInvalid: bool; + Type: int; + Grid: uint; + Index: int; +} + +table FBDynamicSceneBounds { + CenterX: float; + CenterY: float; + CenterZ: float; + ExtentsX: float; + ExtentsY: float; + ExtentsZ: float; +} + +table FBDynamicSceneModel { + guidV0: uint; + guidV1: uint; + guidV2: uint; + guidV3: uint; + transposX: float; + transposY: float; + transposZ: float; + transrotX: float; + transrotY: float; + transrotZ: float; + transsclX: float; + transsclY: float; + transsclZ: float; + AnimatorMin: uint; + AnimatorMax: uint; + PathHash: long; +} + +table FBDynamicSceneEffect { + Path: int; + Name: int; + Dis: float; + transposX: float; + transposY: float; + transposZ: float; + transrotX: float; + transrotY: float; + transrotZ: float; + transsclX: float; + transsclY: float; + transsclZ: float; + AssetHash: long; + Lod0Grid: uint; + Lod1Grid: uint; + LoopSoundType: int; + LoopSoundKey: int; + SoundStartKey: uint; + SoundEndKey: uint; + UseParticleSound: bool; + UseBBox: bool; + bboxMinX: float; + bboxMinY: float; + bboxMinZ: float; + bboxMaxX: float; + bboxMaxY: float; + bboxMaxZ: float; +} + +table FBDynamicSceneEcs { + Start: int; + Num: int; + Chunk: int; +} + +table FBDynamicSceneEcsModel { + modelIsInvalid: bool; + modelType: int; + modelGrid: uint; + modelIndex: int; + ecsIsInvalid: bool; + ecsType: int; + ecsGrid: uint; + ecsIndex: int; + LGrid: uint; + BGrid: uint; + AlwaysModel: int; +} + +table FBDynamicSceneDataGroup { + indexIsInvalid: bool; + indexType: int; + indexGrid: uint; + indexIndex: int; + Num: int; +} + +table FBDynamicSceneResourceGroupWithStateDesc { + groupindexIsInvalid: bool; + groupindexType: int; + groupindexGrid: uint; + groupindexIndex: int; + groupNum: int; + SceneState: uint; + LogicState: uint; + LevelNum: int; + FactoryIndex: int; +} + +table FBDynamicSceneNavModifyArea { + Area: int; + posX: float; + posY: float; + posZ: float; + rotX: float; + rotY: float; + rotZ: float; + sclX: float; + sclY: float; + sclZ: float; +} + +table FBDynamicSceneMountPair { + Mount: int; + indexIsInvalid: bool; + indexType: int; + indexGrid: uint; + indexIndex: int; +} + +table FBDynamicSceneIntStrMapEntry { + K: int; + V: int; +} + +table FBDynamicSceneMissionCondition { + Id: int; + IsQuest: int; + State: int; + IsSame: int; +} + +table FBDynamicSceneIdComp { + UniqueId: ulong; +} + +table FBDynamicSceneSeatComp { + UseCaptain: int; + LangKey: int; + posX: float; + posY: float; + posZ: float; + rotX: float; + rotY: float; + rotZ: float; +} + +table FBDynamicScenePureFuncComp { + Type: int; +} + +table FBDynamicSceneTriggerComp { + Shape: int; + Radius: float; + centerX: float; + centerY: float; + centerZ: float; + sizeX: float; + sizeY: float; + sizeZ: float; + transposX: float; + transposY: float; + transposZ: float; + transrotX: float; + transrotY: float; + transrotZ: float; + transsclX: float; + transsclY: float; + transsclZ: float; + posListGroupindexIsInvalid: bool; + posListGroupindexType: int; + posListGroupindexGrid: uint; + posListGroupindexIndex: int; + posListGroupNum: int; +} + +table FBDynamicSceneHittableComp { + HitType: int; +} + +table FBDynamicSceneFactoryBlockComp { + Radius: float; + centerX: float; + centerY: float; + centerZ: float; +} + +table FBDynamicSceneDynamicEntityControlComp { + EntityId: ulong; +} + +table FBDynamicSceneNavModifyAreaComp { + groupindexIsInvalid: bool; + groupindexType: int; + groupindexGrid: uint; + groupindexIndex: int; + groupNum: int; +} + +table FBDynamicSceneInteractiveStateComp { + Id: ulong; + ControlLoad: bool; + StateGetter: int; + CompareOperator: int; + CompareTarget: int; + PropertyKey: int; +} + +table FBDynamicSceneViewStateControlComp { + Id: ulong; + ComputeType: int; + entriesindexIsInvalid: bool; + entriesindexType: int; + entriesindexGrid: uint; + entriesindexIndex: int; + entriesNum: int; +} + +table FBDynamicSceneMissionControlComp { + conditionsindexIsInvalid: bool; + conditionsindexType: int; + conditionsindexGrid: uint; + conditionsindexIndex: int; + conditionsNum: int; + CompareType: int; + ToBeTrue: int; +} + +table FBDynamicSceneGlobalVarControlComp { + GlobalKey: int; + ControlLoad: bool; + CompareType: int; + CompareValue: long; + Extra1: int; + Extra2: int; + Extra3: int; + Extra4: int; +} + +table FBDynamicSceneSettlementControlComp { + Id: int; + ControlLoad: bool; + CompareType: int; + CompareValue: int; + IsMain: bool; +} + +table FBDynamicSceneFactoryRegionControlComp { + Level: int; + Index: int; +} + +table FBDynamicSceneScriptControlComp { + DefaultLoad: int; +} + +table FBDynamicSceneResourceComp { + resgroupindexIsInvalid: bool; + resgroupindexType: int; + resgroupindexGrid: uint; + resgroupindexIndex: int; + resgroupNum: int; + resSceneState: uint; + resLogicState: uint; + resLevelNum: int; + resFactoryIndex: int; + mountindexIsInvalid: bool; + mountindexType: int; + mountindexGrid: uint; + mountindexIndex: int; + mountNum: int; + NavState: int; + navDataindexIsInvalid: bool; + navDataindexType: int; + navDataindexGrid: uint; + navDataindexIndex: int; + navDataNum: int; +} + +table FBDynamicSceneRootComp { + Type: int; + State: uint; + compsindexIsInvalid: bool; + compsindexType: int; + compsindexGrid: uint; + compsindexIndex: int; + compsNum: int; +} + +table FBDynamicSceneTreeRootComp { + Tid: int; + NormalModel: long; +} + +table FBDynamicSceneDecorationRootComp { + Control: int; + Important: int; + DecoId: ulong; +} + +table FBDynamicSceneErosionRootComp { + ErosionCoreId: ulong; + posListindexIsInvalid: bool; + posListindexType: int; + posListindexGrid: uint; + posListindexIndex: int; + posListNum: int; + erosionCorePosX: float; + erosionCorePosY: float; + erosionCorePosZ: float; +} + +table FBDynamicSceneModelViewStateControllerNewComp { + ModelIdStrId: int; + UseOldVersion: bool; + keyStateToNameMapindexIsInvalid: bool; + keyStateToNameMapindexType: int; + keyStateToNameMapindexGrid: uint; + keyStateToNameMapindexIndex: int; + keyStateToNameMapNum: int; + KeyState: int; +} + +table FBDynamicSceneConveyorBeltComp { + GroupId: ulong; + IsEntry: bool; + IsExit: bool; +} + +table FBDynamicSceneConveyorBeltBoxComp { + BelongGroupId: ulong; + FixedProgress: int; + LateralOffset: float; +} + +table FBDynamicSceneConveyorBeltGroupComp { + Speed: float; + TotalLength: float; + LevelId: int; + SplineId: int; + pathsindexIsInvalid: bool; + pathsindexType: int; + pathsindexGrid: uint; + pathsindexIndex: int; + pathsNum: int; +} + +table FBDynamicSceneConveyorPath { + Type: uint; + worldStartPointX: float; + worldStartPointY: float; + worldStartPointZ: float; + worldEndPointX: float; + worldEndPointY: float; + worldEndPointZ: float; + Width: float; + Length: float; + Radius: float; + worldCenterX: float; + worldCenterY: float; + worldCenterZ: float; + StartAngle: float; + EndAngle: float; + rotationX: float; + rotationY: float; + rotationZ: float; + IsClockwise: bool; + StartProgress: float; + EndProgress: float; +} + +table FBDynamicScenePureSystemComp { + Type: int; +} + +table FBDynamicSceneNatureResourceComp { + Type: int; +} + +table FBDynamicSceneSludgeComp { + SludgeSize: uint; + SizeY: float; + Thickness: float; + RebornTime: float; + RebornAnimTime: float; + DisappearTime: float; + boundsConvertorWCenterX: float; + boundsConvertorWCenterY: float; + boundsConvertorWCenterZ: float; + boundsConvertorWExtentsX: float; + boundsConvertorWExtentsY: float; + boundsConvertorWExtentsZ: float; + originWX: float; + originWY: float; + originWZ: float; + upX: float; + upY: float; + upZ: float; + rightX: float; + rightY: float; + rightZ: float; + forwardX: float; + forwardY: float; + forwardZ: float; + posX: float; + posY: float; + posZ: float; + MatGuidHash: long; + TexGuidHash: long; + SludgeId: int; + scanPointsindexIsInvalid: bool; + scanPointsindexType: int; + scanPointsindexGrid: uint; + scanPointsindexIndex: int; + scanPointsNum: int; + SludgeType: int; + navMeshPointsindexIsInvalid: bool; + navMeshPointsindexType: int; + navMeshPointsindexGrid: uint; + navMeshPointsindexIndex: int; + navMeshPointsNum: int; + NavMeshMinH: float; + NavMeshMaxH: float; + disappearPointX: float; + disappearPointY: float; + disappearPointZ: float; + wavePointX: float; + wavePointY: float; + wavePointZ: float; + EncodedClipPlane0: uint; + EncodedClipPlane1: uint; +} + +table FBDynamicSceneExtraSceneComp { + minPosX: float; + minPosY: float; + minPosZ: float; + maxPosX: float; + maxPosY: float; + maxPosZ: float; + currentPosX: float; + currentPosY: float; + currentPosZ: float; + Direction: uint; +} + +table FBDynamicSceneSceneGridInfo { + centerX: float; + centerY: float; + centerZ: float; + Len: int; +} + +table FBDynamicSceneRemapSceneComp { + sceneGridInfoListindexIsInvalid: bool; + sceneGridInfoListindexType: int; + sceneGridInfoListindexGrid: uint; + sceneGridInfoListindexIndex: int; + sceneGridInfoListNum: int; +} + +table FBDynamicSceneWaterPipeComp { + InitialAngle: float; + TargetAngle: float; + IsConnectedToWaterWheel: bool; + InteractiveId: ulong; + UpstreamInteractiveId: ulong; + DelayActivateDownStream: float; + HeightToDownStream: float; + HeightToGround: float; + IsOutFall: bool; +} + +table FBDynamicSceneStreamingAreaComp { + AreaId: int; + visibleGroupindexIsInvalid: bool; + visibleGroupindexType: int; + visibleGroupindexGrid: uint; + visibleGroupindexIndex: int; + visibleGroupNum: int; +} + +table FBDynamicSceneNavmeshObstacle { + obstacleposX: float; + obstacleposY: float; + obstacleposZ: float; + obstaclerotX: float; + obstaclerotY: float; + obstaclerotZ: float; + obstaclesclX: float; + obstaclesclY: float; + obstaclesclZ: float; +} + +table FBDynamicSceneMapVarControlComp { + MapKey: int; + ControlLoad: bool; + CompareType: int; + CompareValue: long; + Extra1: int; + Extra2: int; + Extra3: int; + Extra4: int; +} + +table FBDynamicSceneSingleGridDescriptor { + scene: int; + Ranges: [FBDynamicSceneDataGroup]; +} + +table FBDynamicSceneSingleGrid { + uniqueId: uint; + PrimitiveIntList: [int]; + DataIndex: [FBDynamicSceneDataIndex]; + Vector3: [FBDynamicSceneVector3]; + Model: [FBDynamicSceneModel]; + Effect: [FBDynamicSceneEffect]; + Ecs: [FBDynamicSceneEcs]; + EcsModel: [FBDynamicSceneEcsModel]; + DataGroup: [FBDynamicSceneDataGroup]; + ResourceGroupWithStateDesc: [FBDynamicSceneResourceGroupWithStateDesc]; + NavModifyArea: [FBDynamicSceneNavModifyArea]; + MountPair: [FBDynamicSceneMountPair]; + IntStrMapEntry: [FBDynamicSceneIntStrMapEntry]; + MissionCondition: [FBDynamicSceneMissionCondition]; + IdComp: [FBDynamicSceneIdComp]; + SeatComp: [FBDynamicSceneSeatComp]; + PureFuncComp: [FBDynamicScenePureFuncComp]; + TriggerComp: [FBDynamicSceneTriggerComp]; + HittableComp: [FBDynamicSceneHittableComp]; + FactoryBlockComp: [FBDynamicSceneFactoryBlockComp]; + DynamicEntityControlComp: [FBDynamicSceneDynamicEntityControlComp]; + NavModifyAreaComp: [FBDynamicSceneNavModifyAreaComp]; + InteractiveStateComp: [FBDynamicSceneInteractiveStateComp]; + ViewStateControlComp: [FBDynamicSceneViewStateControlComp]; + MissionControlComp: [FBDynamicSceneMissionControlComp]; + GlobalVarControlComp: [FBDynamicSceneGlobalVarControlComp]; + SettlementControlComp: [FBDynamicSceneSettlementControlComp]; + FactoryRegionControlComp: [FBDynamicSceneFactoryRegionControlComp]; + ScriptControlComp: [FBDynamicSceneScriptControlComp]; + ResourceComp: [FBDynamicSceneResourceComp]; + RootComp: [FBDynamicSceneRootComp]; + TreeRootComp: [FBDynamicSceneTreeRootComp]; + DecorationRootComp: [FBDynamicSceneDecorationRootComp]; + ErosionRootComp: [FBDynamicSceneErosionRootComp]; + ModelViewStateControllerNewComp: [FBDynamicSceneModelViewStateControllerNewComp]; + ConveyorBeltComp: [FBDynamicSceneConveyorBeltComp]; + ConveyorBeltBoxComp: [FBDynamicSceneConveyorBeltBoxComp]; + ConveyorBeltGroupComp: [FBDynamicSceneConveyorBeltGroupComp]; + ConveyorPath: [FBDynamicSceneConveyorPath]; + PureSystemComp: [FBDynamicScenePureSystemComp]; + NatureResourceComp: [FBDynamicSceneNatureResourceComp]; + SludgeComp: [FBDynamicSceneSludgeComp]; + Bounds: [FBDynamicSceneBounds]; + ExtraSceneComp: [FBDynamicSceneExtraSceneComp]; + SceneGridInfo: [FBDynamicSceneSceneGridInfo]; + RemapSceneComp: [FBDynamicSceneRemapSceneComp]; + WaterPipeComp: [FBDynamicSceneWaterPipeComp]; + StreamingAreaComp: [FBDynamicSceneStreamingAreaComp]; + NavmeshObstacle: [FBDynamicSceneNavmeshObstacle]; + MapVarControlComp: [FBDynamicSceneMapVarControlComp]; + Desc: [FBDynamicSceneSingleGridDescriptor]; +} + +table FBDynamicSceneChunkData { + version: ulong; + streamingVersion: int; + uniqueId: uint; + Grids: [FBDynamicSceneSingleGrid]; + TotalStr: [string]; +} + diff --git a/FBStreamingChunkVariant8.fbs b/FBStreamingChunkVariant8.fbs new file mode 100644 index 0000000..be88045 --- /dev/null +++ b/FBStreamingChunkVariant8.fbs @@ -0,0 +1,16 @@ +namespace DynamicAssetsFallback; + +// Provisional schema inferred from fb_* files that do not pass the +// FBDynamicSceneChunkData (Version==60) gate. +table FBStreamingChunkVariant8 { + tag_or_version64: ulong = 0; + status_or_flags32: int = 0; + vector_a: [uint]; + vector_b: [uint]; + vector_c: [uint]; + vector_d: [uint]; + vector_e: [uint]; + vector_f: [uint]; +} + +root_type FBStreamingChunkVariant8; diff --git a/FBStreamingChunkVariant8Bytes.fbs b/FBStreamingChunkVariant8Bytes.fbs new file mode 100644 index 0000000..eb40040 --- /dev/null +++ b/FBStreamingChunkVariant8Bytes.fbs @@ -0,0 +1,16 @@ +namespace DynamicAssetsFallback; + +// Alternate probe schema for the same 8-field layout, keeping vectors as bytes +// to avoid type assumptions while still allowing robust flatc decode. +table FBStreamingChunkVariant8Bytes { + tag_or_version64: ulong = 0; + status_or_flags32: int = 0; + vector_a: [ubyte]; + vector_b: [ubyte]; + vector_c: [ubyte]; + vector_d: [ubyte]; + vector_e: [ubyte]; + vector_f: [ubyte]; +} + +root_type FBStreamingChunkVariant8Bytes; diff --git a/README.md b/README.md new file mode 100644 index 0000000..e89f62a --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# FBS Working Schemas + +- `EndField.fbs`: baseline schema from extracted game files. +- `EndField.gen0.fbs`: alternate baseline copy from `gen0`. +- `FBStreamingChunkVariant8.fbs`: provisional 8-field fallback schema inferred from `fb_*` files where legacy `FBDynamicSceneChunkData` decode fails the version gate. +- `FBStreamingChunkVariant8Bytes.fbs`: alternate probe schema that keeps all vectors as `ubyte`. + +These variant schemas are intentionally conservative and may be revised as more fields are fully identified. diff --git a/_flatc_probe/fb_init_18880.json b/_flatc_probe/fb_init_18880.json new file mode 100644 index 0000000..ca8debd --- /dev/null +++ b/_flatc_probe/fb_init_18880.json @@ -0,0 +1,568 @@ +{ + tag_or_version64: 18446744069414584365, + status_or_flags32: -1, + vector_a: [ + + ], + vector_b: [ + + ], + vector_c: [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ], + vector_d: [ + 124, + 255, + 1, + 0, + 232, + 249, + 1, + 0, + 216, + 248, + 1, + 0, + 212, + 247, + 1, + 0, + 84, + 242, + 1, + 0, + 68, + 241, + 1, + 0, + 80, + 240, + 1, + 0, + 208, + 234, + 1, + 0, + 176, + 233, + 1, + 0, + 188, + 232, + 1, + 0, + 60, + 227, + 1, + 0, + 44, + 226, + 1, + 0, + 56, + 225, + 1, + 0, + 184, + 219, + 1, + 0, + 168, + 218, + 1, + 0, + 180, + 217, + 1, + 0, + 52, + 212, + 1, + 0, + 36, + 211, + 1, + 0, + 48, + 210, + 1, + 0, + 176, + 204, + 1, + 0, + 160, + 203, + 1, + 0, + 172, + 202, + 1, + 0, + 44, + 197, + 1, + 0, + 28, + 196, + 1, + 0, + 40, + 195, + 1, + 0, + 168, + 189, + 1, + 0, + 152, + 188, + 1, + 0, + 164, + 187, + 1, + 0, + 36, + 182, + 1, + 0, + 20, + 181, + 1, + 0, + 32, + 180, + 1, + 0, + 160, + 174, + 1, + 0, + 144, + 173, + 1, + 0, + 156, + 172, + 1, + 0, + 28, + 167, + 1, + 0, + 12, + 166, + 1, + 0, + 24, + 165, + 1, + 0, + 152, + 159, + 1, + 0, + 136, + 158, + 1, + 0, + 148, + 157, + 1, + 0, + 20, + 152, + 1, + 0, + 4, + 151, + 1, + 0, + 16, + 150, + 1, + 0, + 144, + 144, + 1, + 0, + 128, + 143, + 1, + 0, + 140, + 142, + 1, + 0, + 12, + 137, + 1, + 0, + 252, + 135, + 1, + 0, + 8, + 135, + 1, + 0 + ], + vector_e: [ + + ], + vector_f: [ + 100, + 63, + 1, + 0, + 208, + 59, + 1, + 0, + 204, + 58, + 1, + 0, + 72, + 55, + 1, + 0, + 68, + 54, + 1, + 0, + 192, + 50, + 1, + 0, + 188, + 49, + 1, + 0, + 56, + 46, + 1, + 0, + 52, + 45, + 1, + 0, + 176, + 41, + 1, + 0, + 172, + 40, + 1, + 0, + 40, + 37, + 1, + 0, + 36, + 36, + 1, + 0, + 160, + 32, + 1, + 0, + 156, + 31, + 1, + 0, + 24, + 28, + 1, + 0, + 20, + 27, + 1, + 0, + 144, + 23, + 1, + 0, + 140, + 22, + 1, + 0, + 8, + 19, + 1, + 0, + 4, + 18, + 1, + 0, + 128, + 14, + 1, + 0, + 124, + 13, + 1, + 0, + 248, + 9, + 1, + 0, + 244, + 8, + 1, + 0, + 112, + 5, + 1, + 0, + 108, + 4, + 1, + 0, + 232, + 0, + 1, + 0, + 228, + 255, + 0, + 0, + 96, + 252, + 0, + 0, + 92, + 251, + 0, + 0, + 216, + 247, + 0, + 0, + 212, + 246, + 0, + 0, + 80, + 243, + 0, + 0, + 76, + 242, + 0, + 0, + 200, + 238, + 0, + 0, + 196, + 237, + 0, + 0, + 64, + 234, + 0, + 0, + 60, + 233, + 0, + 0, + 184 + ] +}