diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml
index 3d7dc858e..6992edf3d 100644
--- a/.github/workflows/build-pr.yml
+++ b/.github/workflows/build-pr.yml
@@ -7,7 +7,7 @@ jobs:
runs-on: windows-latest
strategy:
matrix:
- target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, DMC5, MHRISE, SF6]
+ target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, DMC5, MHRISE, SF6, DD2]
steps:
- name: Checkout
uses: actions/checkout@v3
diff --git a/.github/workflows/dev-release.yml b/.github/workflows/dev-release.yml
index 3c8d4ca3e..a5e502963 100644
--- a/.github/workflows/dev-release.yml
+++ b/.github/workflows/dev-release.yml
@@ -7,7 +7,7 @@ jobs:
runs-on: windows-latest
strategy:
matrix:
- target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, DMC5, MHRISE, SF6]
+ target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, DMC5, MHRISE, SF6, DD2]
steps:
- name: Checkout
uses: actions/checkout@v3
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94719830a..b423f91e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ option(REF_BUILD_RE8_SDK OFF)
option(REF_BUILD_DMC5_SDK OFF)
option(REF_BUILD_MHRISE_SDK OFF)
option(REF_BUILD_SF6_SDK OFF)
+option(REF_BUILD_DD2_SDK OFF)
option(REF_BUILD_FRAMEWORK "Enable building the full REFramework" ON)
option(REF_BUILD_DEPENDENCIES "Enable building dependencies" ON)
@@ -122,13 +123,13 @@ FetchContent_Declare(
)
FetchContent_MakeAvailable(bddisasm)
-message(STATUS "Fetching kananlib (main)...")
+message(STATUS "Fetching kananlib (b0323a0b005fc9e3944e0ea36dcc98eda4b84eea)...")
FetchContent_Declare(
kananlib
GIT_REPOSITORY
https://github.com/cursey/kananlib
GIT_TAG
- main
+ b0323a0b005fc9e3944e0ea36dcc98eda4b84eea
)
FetchContent_MakeAvailable(kananlib)
@@ -579,6 +580,7 @@ if(REF_BUILD_RE2_SDK OR REF_BUILD_FRAMEWORK) # build-re2-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -597,6 +599,109 @@ if(REF_BUILD_RE2_SDK OR REF_BUILD_FRAMEWORK) # build-re2-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -1297,6 +1402,7 @@ if(REF_BUILD_RE2_TDB66SDK OR REF_BUILD_FRAMEWORK) # build-re2tdb66-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -1315,6 +1421,109 @@ if(REF_BUILD_RE2_TDB66SDK OR REF_BUILD_FRAMEWORK) # build-re2tdb66-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -2410,6 +2619,7 @@ if(REF_BUILD_RE3_SDK OR REF_BUILD_FRAMEWORK) # build-re3-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -2428,6 +2638,109 @@ if(REF_BUILD_RE3_SDK OR REF_BUILD_FRAMEWORK) # build-re3-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -3128,6 +3441,7 @@ if(REF_BUILD_RE3_TDB67SDK OR REF_BUILD_FRAMEWORK) # build-re3tdb67-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -3146,6 +3460,109 @@ if(REF_BUILD_RE3_TDB67SDK OR REF_BUILD_FRAMEWORK) # build-re3tdb67-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -4438,6 +4855,7 @@ if(REF_BUILD_RE4_SDK OR REF_BUILD_FRAMEWORK) # build-re4-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -4456,6 +4874,109 @@ if(REF_BUILD_RE4_SDK OR REF_BUILD_FRAMEWORK) # build-re4-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -5158,6 +5679,7 @@ if(REF_BUILD_RE7_SDK OR REF_BUILD_FRAMEWORK) # build-re7-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -5176,6 +5698,109 @@ if(REF_BUILD_RE7_SDK OR REF_BUILD_FRAMEWORK) # build-re7-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -5876,6 +6501,7 @@ if(REF_BUILD_RE7_TDB49SDK OR REF_BUILD_FRAMEWORK) # build-re7tdb49-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -5894,6 +6520,109 @@ if(REF_BUILD_RE7_TDB49SDK OR REF_BUILD_FRAMEWORK) # build-re7tdb49-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -6989,6 +7718,7 @@ if(REF_BUILD_RE8_SDK OR REF_BUILD_FRAMEWORK) # build-re8-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -7007,6 +7737,109 @@ if(REF_BUILD_RE8_SDK OR REF_BUILD_FRAMEWORK) # build-re8-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -7906,6 +8739,7 @@ if(REF_BUILD_DMC5_SDK OR REF_BUILD_FRAMEWORK) # build-dmc5-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -7924,6 +8758,109 @@ if(REF_BUILD_DMC5_SDK OR REF_BUILD_FRAMEWORK) # build-dmc5-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -8821,6 +9758,7 @@ if(REF_BUILD_MHRISE_SDK OR REF_BUILD_FRAMEWORK) # build-mhrise-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -8839,6 +9777,109 @@ if(REF_BUILD_MHRISE_SDK OR REF_BUILD_FRAMEWORK) # build-mhrise-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -9738,6 +10779,7 @@ if(REF_BUILD_SF6_SDK OR REF_BUILD_FRAMEWORK) # build-sf6-sdk
"shared/sdk/REVariableDescriptor.hpp"
"shared/sdk/ReClass.hpp"
"shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
"shared/sdk/ReClass_Internal_DMC5.hpp"
"shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
"shared/sdk/ReClass_Internal_RE3.hpp"
@@ -9756,6 +10798,109 @@ if(REF_BUILD_SF6_SDK OR REF_BUILD_FRAMEWORK) # build-sf6-sdk
"shared/sdk/TDBVer.hpp"
"shared/sdk/helpers/NativeObject.hpp"
"shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
"shared/sdk/regenny/mhrise/via/Capsule.hpp"
"shared/sdk/regenny/mhrise/via/OBB.hpp"
"shared/sdk/regenny/mhrise/via/Sphere.hpp"
@@ -10601,6 +11746,1027 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
unset(CMKR_SOURCES)
endif()
+# Target DD2SDK
+if(REF_BUILD_DD2_SDK OR REF_BUILD_FRAMEWORK) # build-dd2-sdk
+ set(CMKR_TARGET DD2SDK)
+ set(DD2SDK_SOURCES "")
+
+ list(APPEND DD2SDK_SOURCES
+ "shared/sdk/Application.cpp"
+ "shared/sdk/ManagedObject.cpp"
+ "shared/sdk/Memory.cpp"
+ "shared/sdk/MotionFsm2Layer.cpp"
+ "shared/sdk/MurmurHash.cpp"
+ "shared/sdk/REArray.cpp"
+ "shared/sdk/REContext.cpp"
+ "shared/sdk/REGlobals.cpp"
+ "shared/sdk/REManagedObject.cpp"
+ "shared/sdk/RETransform.cpp"
+ "shared/sdk/REType.cpp"
+ "shared/sdk/RETypeDB.cpp"
+ "shared/sdk/RETypeDefinition.cpp"
+ "shared/sdk/RETypes.cpp"
+ "shared/sdk/REVTableHook.cpp"
+ "shared/sdk/Renderer.cpp"
+ "shared/sdk/ResourceManager.cpp"
+ "shared/sdk/SDK.cpp"
+ "shared/sdk/SF6Utility.cpp"
+ "shared/sdk/SceneManager.cpp"
+ "shared/sdk/SystemArray.cpp"
+ "shared/sdk/helpers/NativeObject.cpp"
+ "shared/sdk/renderer/RenderResource.cpp"
+ "shared/sdk/Application.hpp"
+ "shared/sdk/Enums_Internal.hpp"
+ "shared/sdk/ManagedObject.hpp"
+ "shared/sdk/Math.hpp"
+ "shared/sdk/Memory.hpp"
+ "shared/sdk/MotionFsm2Layer.hpp"
+ "shared/sdk/MurmurHash.hpp"
+ "shared/sdk/REArray.hpp"
+ "shared/sdk/REComponent.hpp"
+ "shared/sdk/REContext.hpp"
+ "shared/sdk/REGlobals.hpp"
+ "shared/sdk/REManagedObject.hpp"
+ "shared/sdk/REMath.hpp"
+ "shared/sdk/RENativeArray.hpp"
+ "shared/sdk/REString.hpp"
+ "shared/sdk/RETransform.hpp"
+ "shared/sdk/REType.hpp"
+ "shared/sdk/RETypeCLR.hpp"
+ "shared/sdk/RETypeDB.hpp"
+ "shared/sdk/RETypeDefinition.hpp"
+ "shared/sdk/RETypes.hpp"
+ "shared/sdk/REVTableHook.hpp"
+ "shared/sdk/REVariableDescriptor.hpp"
+ "shared/sdk/ReClass.hpp"
+ "shared/sdk/ReClass_Internal.hpp"
+ "shared/sdk/ReClass_Internal_DD2.hpp"
+ "shared/sdk/ReClass_Internal_DMC5.hpp"
+ "shared/sdk/ReClass_Internal_RE2_TDB70.hpp"
+ "shared/sdk/ReClass_Internal_RE3.hpp"
+ "shared/sdk/ReClass_Internal_RE3_TDB70.hpp"
+ "shared/sdk/ReClass_Internal_RE4.hpp"
+ "shared/sdk/ReClass_Internal_RE7.hpp"
+ "shared/sdk/ReClass_Internal_RE8.hpp"
+ "shared/sdk/ReClass_Internal_SF6.hpp"
+ "shared/sdk/Renderer.hpp"
+ "shared/sdk/ResourceManager.hpp"
+ "shared/sdk/RopewaySweetLightManager.hpp"
+ "shared/sdk/SDK.hpp"
+ "shared/sdk/SF6Utility.hpp"
+ "shared/sdk/SceneManager.hpp"
+ "shared/sdk/SystemArray.hpp"
+ "shared/sdk/TDBVer.hpp"
+ "shared/sdk/helpers/NativeObject.hpp"
+ "shared/sdk/intrusive_ptr.hpp"
+ "shared/sdk/regenny/dd2/BullShit.hpp"
+ "shared/sdk/regenny/dd2/DeserializeSequence.hpp"
+ "shared/sdk/regenny/dd2/ManagedVtable.hpp"
+ "shared/sdk/regenny/dd2/RTInternal.hpp"
+ "shared/sdk/regenny/dd2/RayTrace.hpp"
+ "shared/sdk/regenny/dd2/RenderEntity.hpp"
+ "shared/sdk/regenny/dd2/System/String.hpp"
+ "shared/sdk/regenny/dd2/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/game/IkArmFit.hpp"
+ "shared/sdk/regenny/dd2/game/InputSystem.hpp"
+ "shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Field.hpp"
+ "shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/dd2/tdb71/Property.hpp"
+ "shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TDB.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/dd2/via/BasisPlane.hpp"
+ "shared/sdk/regenny/dd2/via/CameraType.hpp"
+ "shared/sdk/regenny/dd2/via/Capsule.hpp"
+ "shared/sdk/regenny/dd2/via/Color.hpp"
+ "shared/sdk/regenny/dd2/via/Component.hpp"
+ "shared/sdk/regenny/dd2/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/dd2/via/DisplayType.hpp"
+ "shared/sdk/regenny/dd2/via/Folder.hpp"
+ "shared/sdk/regenny/dd2/via/GameObject.hpp"
+ "shared/sdk/regenny/dd2/via/IntArray.hpp"
+ "shared/sdk/regenny/dd2/via/JobSet.hpp"
+ "shared/sdk/regenny/dd2/via/Joint.hpp"
+ "shared/sdk/regenny/dd2/via/JointArray.hpp"
+ "shared/sdk/regenny/dd2/via/JointData.hpp"
+ "shared/sdk/regenny/dd2/via/JointDesc.hpp"
+ "shared/sdk/regenny/dd2/via/JointMap.hpp"
+ "shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/dd2/via/MobileBarState.hpp"
+ "shared/sdk/regenny/dd2/via/Motion.hpp"
+ "shared/sdk/regenny/dd2/via/Object.hpp"
+ "shared/sdk/regenny/dd2/via/Point.hpp"
+ "shared/sdk/regenny/dd2/via/Range.hpp"
+ "shared/sdk/regenny/dd2/via/RenderType.hpp"
+ "shared/sdk/regenny/dd2/via/Scene.hpp"
+ "shared/sdk/regenny/dd2/via/SceneArray.hpp"
+ "shared/sdk/regenny/dd2/via/SceneManager.hpp"
+ "shared/sdk/regenny/dd2/via/SceneView.hpp"
+ "shared/sdk/regenny/dd2/via/Size.hpp"
+ "shared/sdk/regenny/dd2/via/Sphere.hpp"
+ "shared/sdk/regenny/dd2/via/Transform.hpp"
+ "shared/sdk/regenny/dd2/via/UInt8Array.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArray.hpp"
+ "shared/sdk/regenny/dd2/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/dd2/via/Window.hpp"
+ "shared/sdk/regenny/dd2/via/array.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Control.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUI.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/dd2/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/dd2/via/gui/View.hpp"
+ "shared/sdk/regenny/dd2/via/gui/Window.hpp"
+ "shared/sdk/regenny/dd2/via/mat4.hpp"
+ "shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Chain.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/dd2/via/motion/Data.hpp"
+ "shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/dd2/via/vec3.hpp"
+ "shared/sdk/regenny/dd2/via/vec4.hpp"
+ "shared/sdk/regenny/mhrise/via/Capsule.hpp"
+ "shared/sdk/regenny/mhrise/via/OBB.hpp"
+ "shared/sdk/regenny/mhrise/via/Sphere.hpp"
+ "shared/sdk/regenny/mhrise/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/mhrise/via/motion/Chain.hpp"
+ "shared/sdk/regenny/mhrise/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/mhrise/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/mhrise/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/mhrise/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/mhrise/via/vec3.hpp"
+ "shared/sdk/regenny/mhrise/via/vec4.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/Field.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/Property.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/TDB.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/BasisPlane.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/CameraType.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Capsule.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Color.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Component.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/DisplayType.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/IntArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/MobileBarState.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Point.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/RenderType.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Scene.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/SceneView.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Size.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Sphere.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/UInt8Array.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/UIntArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/Window.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/Chain.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/vec3.hpp"
+ "shared/sdk/regenny/mhrise_tdb71/via/vec4.hpp"
+ "shared/sdk/regenny/re2_tdb70/BullShit.hpp"
+ "shared/sdk/regenny/re2_tdb70/DeserializeSequence.hpp"
+ "shared/sdk/regenny/re2_tdb70/ManagedVtable.hpp"
+ "shared/sdk/regenny/re2_tdb70/System/String.hpp"
+ "shared/sdk/regenny/re2_tdb70/TypeDefinition.hpp"
+ "shared/sdk/regenny/re2_tdb70/game/IkArmFit.hpp"
+ "shared/sdk/regenny/re2_tdb70/game/InputSystem.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/AttributeDef.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/Field.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/FieldImpl.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/MethodDefinition.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/MethodImpl.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/ParamList.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/ParameterDef.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/Property.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/PropertyImpl.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/TDB.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/TypeDefinition.hpp"
+ "shared/sdk/regenny/re2_tdb70/tdb67/TypeImpl.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/BasisPlane.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/CameraType.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Capsule.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Color.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Component.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/DisplayType.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Folder.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/GameObject.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/JobSet.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Joint.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/JointArray.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/JointData.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/JointDesc.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/JointMap.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/MobileBarState.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Motion.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/OBB.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Object.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Plane.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Point.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Range.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/RenderType.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Scene.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/SceneArray.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/SceneManager.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/SceneView.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Size.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Sphere.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Transform.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/Window.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/array.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/Control.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/GUI.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/View.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/gui/Window.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/mat4.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/Chain.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/vec3.hpp"
+ "shared/sdk/regenny/re2_tdb70/via/vec4.hpp"
+ "shared/sdk/regenny/re3/DeserializeSequence.hpp"
+ "shared/sdk/regenny/re3/ManagedVtable.hpp"
+ "shared/sdk/regenny/re3/System/String.hpp"
+ "shared/sdk/regenny/re3/TypeDefinition.hpp"
+ "shared/sdk/regenny/re3/game/IkArmFit.hpp"
+ "shared/sdk/regenny/re3/game/InputSystem.hpp"
+ "shared/sdk/regenny/re3/tdb67/MethodDefinition.hpp"
+ "shared/sdk/regenny/re3/tdb67/TDB.hpp"
+ "shared/sdk/regenny/re3/via/BasisPlane.hpp"
+ "shared/sdk/regenny/re3/via/CameraType.hpp"
+ "shared/sdk/regenny/re3/via/Capsule.hpp"
+ "shared/sdk/regenny/re3/via/Color.hpp"
+ "shared/sdk/regenny/re3/via/Component.hpp"
+ "shared/sdk/regenny/re3/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/re3/via/DisplayType.hpp"
+ "shared/sdk/regenny/re3/via/Folder.hpp"
+ "shared/sdk/regenny/re3/via/GameObject.hpp"
+ "shared/sdk/regenny/re3/via/Joint.hpp"
+ "shared/sdk/regenny/re3/via/JointArray.hpp"
+ "shared/sdk/regenny/re3/via/JointData.hpp"
+ "shared/sdk/regenny/re3/via/JointDesc.hpp"
+ "shared/sdk/regenny/re3/via/JointMap.hpp"
+ "shared/sdk/regenny/re3/via/MobileBarState.hpp"
+ "shared/sdk/regenny/re3/via/Motion.hpp"
+ "shared/sdk/regenny/re3/via/OBB.hpp"
+ "shared/sdk/regenny/re3/via/Point.hpp"
+ "shared/sdk/regenny/re3/via/Range.hpp"
+ "shared/sdk/regenny/re3/via/RenderType.hpp"
+ "shared/sdk/regenny/re3/via/Scene.hpp"
+ "shared/sdk/regenny/re3/via/SceneArray.hpp"
+ "shared/sdk/regenny/re3/via/SceneManager.hpp"
+ "shared/sdk/regenny/re3/via/SceneView.hpp"
+ "shared/sdk/regenny/re3/via/Size.hpp"
+ "shared/sdk/regenny/re3/via/Sphere.hpp"
+ "shared/sdk/regenny/re3/via/Transform.hpp"
+ "shared/sdk/regenny/re3/via/Window.hpp"
+ "shared/sdk/regenny/re3/via/array.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/IntArray.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/UInt8Array.hpp"
+ "shared/sdk/regenny/re3/via/behaviortree/UIntArray.hpp"
+ "shared/sdk/regenny/re3/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/re3/via/mat4.hpp"
+ "shared/sdk/regenny/re3/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/re3/via/motion/Chain.hpp"
+ "shared/sdk/regenny/re3/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/re3/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/re3/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/re3/via/motion/Data.hpp"
+ "shared/sdk/regenny/re3/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/re3/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/re3/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/re3/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/re3/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/re3/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/re3/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/re3/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/re3/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/re3/via/vec3.hpp"
+ "shared/sdk/regenny/re3/via/vec4.hpp"
+ "shared/sdk/regenny/re4/BullShit.hpp"
+ "shared/sdk/regenny/re4/DeserializeSequence.hpp"
+ "shared/sdk/regenny/re4/ManagedVtable.hpp"
+ "shared/sdk/regenny/re4/RTInternal.hpp"
+ "shared/sdk/regenny/re4/RayTrace.hpp"
+ "shared/sdk/regenny/re4/RenderEntity.hpp"
+ "shared/sdk/regenny/re4/System/String.hpp"
+ "shared/sdk/regenny/re4/TypeDefinition.hpp"
+ "shared/sdk/regenny/re4/game/IkArmFit.hpp"
+ "shared/sdk/regenny/re4/game/InputSystem.hpp"
+ "shared/sdk/regenny/re4/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/re4/tdb71/Field.hpp"
+ "shared/sdk/regenny/re4/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/re4/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/re4/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/re4/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/re4/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/re4/tdb71/Property.hpp"
+ "shared/sdk/regenny/re4/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/re4/tdb71/TDB.hpp"
+ "shared/sdk/regenny/re4/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/re4/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/re4/via/BasisPlane.hpp"
+ "shared/sdk/regenny/re4/via/CameraType.hpp"
+ "shared/sdk/regenny/re4/via/Capsule.hpp"
+ "shared/sdk/regenny/re4/via/Color.hpp"
+ "shared/sdk/regenny/re4/via/Component.hpp"
+ "shared/sdk/regenny/re4/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/re4/via/DisplayType.hpp"
+ "shared/sdk/regenny/re4/via/Folder.hpp"
+ "shared/sdk/regenny/re4/via/GameObject.hpp"
+ "shared/sdk/regenny/re4/via/IntArray.hpp"
+ "shared/sdk/regenny/re4/via/JobSet.hpp"
+ "shared/sdk/regenny/re4/via/Joint.hpp"
+ "shared/sdk/regenny/re4/via/JointArray.hpp"
+ "shared/sdk/regenny/re4/via/JointData.hpp"
+ "shared/sdk/regenny/re4/via/JointDesc.hpp"
+ "shared/sdk/regenny/re4/via/JointMap.hpp"
+ "shared/sdk/regenny/re4/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/re4/via/MobileBarState.hpp"
+ "shared/sdk/regenny/re4/via/Motion.hpp"
+ "shared/sdk/regenny/re4/via/Object.hpp"
+ "shared/sdk/regenny/re4/via/Point.hpp"
+ "shared/sdk/regenny/re4/via/Range.hpp"
+ "shared/sdk/regenny/re4/via/RenderType.hpp"
+ "shared/sdk/regenny/re4/via/Scene.hpp"
+ "shared/sdk/regenny/re4/via/SceneArray.hpp"
+ "shared/sdk/regenny/re4/via/SceneManager.hpp"
+ "shared/sdk/regenny/re4/via/SceneView.hpp"
+ "shared/sdk/regenny/re4/via/Size.hpp"
+ "shared/sdk/regenny/re4/via/Sphere.hpp"
+ "shared/sdk/regenny/re4/via/Transform.hpp"
+ "shared/sdk/regenny/re4/via/UInt8Array.hpp"
+ "shared/sdk/regenny/re4/via/UIntArray.hpp"
+ "shared/sdk/regenny/re4/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/re4/via/Window.hpp"
+ "shared/sdk/regenny/re4/via/array.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/re4/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/re4/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/re4/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/re4/via/gui/Control.hpp"
+ "shared/sdk/regenny/re4/via/gui/GUI.hpp"
+ "shared/sdk/regenny/re4/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/re4/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/re4/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/re4/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/re4/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/re4/via/gui/View.hpp"
+ "shared/sdk/regenny/re4/via/gui/Window.hpp"
+ "shared/sdk/regenny/re4/via/mat4.hpp"
+ "shared/sdk/regenny/re4/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/re4/via/motion/Chain.hpp"
+ "shared/sdk/regenny/re4/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/re4/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/re4/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/re4/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/re4/via/motion/Data.hpp"
+ "shared/sdk/regenny/re4/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/re4/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/re4/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/re4/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/re4/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/re4/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/re4/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/re4/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/re4/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/re4/via/render/RenderOutput.hpp"
+ "shared/sdk/regenny/re4/via/render/SceneArray2.hpp"
+ "shared/sdk/regenny/re4/via/render/layer/PrepareOutput.hpp"
+ "shared/sdk/regenny/re4/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/re4/via/vec3.hpp"
+ "shared/sdk/regenny/re4/via/vec4.hpp"
+ "shared/sdk/regenny/re7/BullShit.hpp"
+ "shared/sdk/regenny/re7/DeserializeSequence.hpp"
+ "shared/sdk/regenny/re7/ManagedVtable.hpp"
+ "shared/sdk/regenny/re7/RenderDeviceDX11.hpp"
+ "shared/sdk/regenny/re7/StdMap.hpp"
+ "shared/sdk/regenny/re7/StdMapData.hpp"
+ "shared/sdk/regenny/re7/StdMapNode.hpp"
+ "shared/sdk/regenny/re7/System/String.hpp"
+ "shared/sdk/regenny/re7/System/Type.hpp"
+ "shared/sdk/regenny/re7/TypeArray.hpp"
+ "shared/sdk/regenny/re7/TypeDefinition.hpp"
+ "shared/sdk/regenny/re7/Unk.hpp"
+ "shared/sdk/regenny/re7/game/IkArmFit.hpp"
+ "shared/sdk/regenny/re7/game/InputSystem.hpp"
+ "shared/sdk/regenny/re7/tdb49/Event.hpp"
+ "shared/sdk/regenny/re7/tdb49/FieldDefinition.hpp"
+ "shared/sdk/regenny/re7/tdb49/MethodDefinition.hpp"
+ "shared/sdk/regenny/re7/tdb49/MethodParam.hpp"
+ "shared/sdk/regenny/re7/tdb49/Module.hpp"
+ "shared/sdk/regenny/re7/tdb49/PropertyDefinition.hpp"
+ "shared/sdk/regenny/re7/tdb49/TDB.hpp"
+ "shared/sdk/regenny/re7/tdb49/TypeDefinition.hpp"
+ "shared/sdk/regenny/re7/tdb67/MethodDefinition.hpp"
+ "shared/sdk/regenny/re7/tdb67/TDB.hpp"
+ "shared/sdk/regenny/re7/via/Application.hpp"
+ "shared/sdk/regenny/re7/via/BasisPlane.hpp"
+ "shared/sdk/regenny/re7/via/CameraType.hpp"
+ "shared/sdk/regenny/re7/via/Color.hpp"
+ "shared/sdk/regenny/re7/via/Component.hpp"
+ "shared/sdk/regenny/re7/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/re7/via/DisplayType.hpp"
+ "shared/sdk/regenny/re7/via/Entry.hpp"
+ "shared/sdk/regenny/re7/via/Folder.hpp"
+ "shared/sdk/regenny/re7/via/GameObject.hpp"
+ "shared/sdk/regenny/re7/via/JobSet.hpp"
+ "shared/sdk/regenny/re7/via/Joint.hpp"
+ "shared/sdk/regenny/re7/via/JointArray.hpp"
+ "shared/sdk/regenny/re7/via/JointData.hpp"
+ "shared/sdk/regenny/re7/via/JointDesc.hpp"
+ "shared/sdk/regenny/re7/via/JointMap.hpp"
+ "shared/sdk/regenny/re7/via/MobileBarState.hpp"
+ "shared/sdk/regenny/re7/via/Motion.hpp"
+ "shared/sdk/regenny/re7/via/Object.hpp"
+ "shared/sdk/regenny/re7/via/Point.hpp"
+ "shared/sdk/regenny/re7/via/Range.hpp"
+ "shared/sdk/regenny/re7/via/RenderType.hpp"
+ "shared/sdk/regenny/re7/via/Scene.hpp"
+ "shared/sdk/regenny/re7/via/SceneArray.hpp"
+ "shared/sdk/regenny/re7/via/SceneManager.hpp"
+ "shared/sdk/regenny/re7/via/SceneView.hpp"
+ "shared/sdk/regenny/re7/via/Size.hpp"
+ "shared/sdk/regenny/re7/via/Transform.hpp"
+ "shared/sdk/regenny/re7/via/Window.hpp"
+ "shared/sdk/regenny/re7/via/array.hpp"
+ "shared/sdk/regenny/re7/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/re7/via/clr/VM.hpp"
+ "shared/sdk/regenny/re7/via/delegate.hpp"
+ "shared/sdk/regenny/re7/via/dictionary.hpp"
+ "shared/sdk/regenny/re7/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/re7/via/gui/Control.hpp"
+ "shared/sdk/regenny/re7/via/gui/GUI.hpp"
+ "shared/sdk/regenny/re7/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/re7/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/re7/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/re7/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/re7/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/re7/via/gui/View.hpp"
+ "shared/sdk/regenny/re7/via/gui/Window.hpp"
+ "shared/sdk/regenny/re7/via/mat4.hpp"
+ "shared/sdk/regenny/re7/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/re7/via/reflection/Method.hpp"
+ "shared/sdk/regenny/re7/via/reflection/MethodArray.hpp"
+ "shared/sdk/regenny/re7/via/reflection/Property.hpp"
+ "shared/sdk/regenny/re7/via/reflection/PropertyArray.hpp"
+ "shared/sdk/regenny/re7/via/reflection/Reflection.hpp"
+ "shared/sdk/regenny/re7/via/render/LayerList.hpp"
+ "shared/sdk/regenny/re7/via/render/LightRenderer.hpp"
+ "shared/sdk/regenny/re7/via/render/OutputTargetState.hpp"
+ "shared/sdk/regenny/re7/via/render/OutputTargetStateDX11.hpp"
+ "shared/sdk/regenny/re7/via/render/OutputTargetStateDX12.hpp"
+ "shared/sdk/regenny/re7/via/render/RenderLayer.hpp"
+ "shared/sdk/regenny/re7/via/render/RenderResource.hpp"
+ "shared/sdk/regenny/re7/via/render/RenderTargetView.hpp"
+ "shared/sdk/regenny/re7/via/render/RenderTargetViewDX11.hpp"
+ "shared/sdk/regenny/re7/via/render/RenderTargetViewDX12.hpp"
+ "shared/sdk/regenny/re7/via/render/Renderer.hpp"
+ "shared/sdk/regenny/re7/via/render/TargetDescriptorDX11.hpp"
+ "shared/sdk/regenny/re7/via/render/TargetDescriptorDX12.hpp"
+ "shared/sdk/regenny/re7/via/render/layer/Output.hpp"
+ "shared/sdk/regenny/re7/via/typeinfo/DeserializeSequence.hpp"
+ "shared/sdk/regenny/re7/via/typeinfo/Deserializer.hpp"
+ "shared/sdk/regenny/re7/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/re7/via/typeinfo/TypeInfoCLR.hpp"
+ "shared/sdk/regenny/re7/via/vec3.hpp"
+ "shared/sdk/regenny/re7/via/vec4.hpp"
+ "shared/sdk/regenny/re8/DeserializeSequence.hpp"
+ "shared/sdk/regenny/re8/ManagedVtable.hpp"
+ "shared/sdk/regenny/re8/System/String.hpp"
+ "shared/sdk/regenny/re8/TypeDefinition.hpp"
+ "shared/sdk/regenny/re8/game/IkArmFit.hpp"
+ "shared/sdk/regenny/re8/game/InputSystem.hpp"
+ "shared/sdk/regenny/re8/tdb67/MethodDefinition.hpp"
+ "shared/sdk/regenny/re8/tdb67/TDB.hpp"
+ "shared/sdk/regenny/re8/via/BasisPlane.hpp"
+ "shared/sdk/regenny/re8/via/CameraType.hpp"
+ "shared/sdk/regenny/re8/via/Capsule.hpp"
+ "shared/sdk/regenny/re8/via/Color.hpp"
+ "shared/sdk/regenny/re8/via/Component.hpp"
+ "shared/sdk/regenny/re8/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/re8/via/DisplayType.hpp"
+ "shared/sdk/regenny/re8/via/Folder.hpp"
+ "shared/sdk/regenny/re8/via/GameObject.hpp"
+ "shared/sdk/regenny/re8/via/JobSet.hpp"
+ "shared/sdk/regenny/re8/via/Joint.hpp"
+ "shared/sdk/regenny/re8/via/JointArray.hpp"
+ "shared/sdk/regenny/re8/via/JointData.hpp"
+ "shared/sdk/regenny/re8/via/JointDesc.hpp"
+ "shared/sdk/regenny/re8/via/JointMap.hpp"
+ "shared/sdk/regenny/re8/via/MobileBarState.hpp"
+ "shared/sdk/regenny/re8/via/Motion.hpp"
+ "shared/sdk/regenny/re8/via/OBB.hpp"
+ "shared/sdk/regenny/re8/via/Object.hpp"
+ "shared/sdk/regenny/re8/via/Plane.hpp"
+ "shared/sdk/regenny/re8/via/Point.hpp"
+ "shared/sdk/regenny/re8/via/Range.hpp"
+ "shared/sdk/regenny/re8/via/RenderType.hpp"
+ "shared/sdk/regenny/re8/via/Scene.hpp"
+ "shared/sdk/regenny/re8/via/SceneArray.hpp"
+ "shared/sdk/regenny/re8/via/SceneManager.hpp"
+ "shared/sdk/regenny/re8/via/SceneView.hpp"
+ "shared/sdk/regenny/re8/via/Size.hpp"
+ "shared/sdk/regenny/re8/via/Sphere.hpp"
+ "shared/sdk/regenny/re8/via/Transform.hpp"
+ "shared/sdk/regenny/re8/via/Window.hpp"
+ "shared/sdk/regenny/re8/via/array.hpp"
+ "shared/sdk/regenny/re8/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/re8/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/re8/via/gui/Control.hpp"
+ "shared/sdk/regenny/re8/via/gui/GUI.hpp"
+ "shared/sdk/regenny/re8/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/re8/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/re8/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/re8/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/re8/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/re8/via/gui/View.hpp"
+ "shared/sdk/regenny/re8/via/gui/Window.hpp"
+ "shared/sdk/regenny/re8/via/mat4.hpp"
+ "shared/sdk/regenny/re8/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/re8/via/motion/Chain.hpp"
+ "shared/sdk/regenny/re8/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/re8/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/re8/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/re8/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/re8/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/re8/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/re8/via/vec3.hpp"
+ "shared/sdk/regenny/re8/via/vec4.hpp"
+ "shared/sdk/regenny/sf6/BullShit.hpp"
+ "shared/sdk/regenny/sf6/DeserializeSequence.hpp"
+ "shared/sdk/regenny/sf6/ManagedVtable.hpp"
+ "shared/sdk/regenny/sf6/RTInternal.hpp"
+ "shared/sdk/regenny/sf6/RayTrace.hpp"
+ "shared/sdk/regenny/sf6/RenderEntity.hpp"
+ "shared/sdk/regenny/sf6/System/String.hpp"
+ "shared/sdk/regenny/sf6/TypeDefinition.hpp"
+ "shared/sdk/regenny/sf6/game/IkArmFit.hpp"
+ "shared/sdk/regenny/sf6/game/InputSystem.hpp"
+ "shared/sdk/regenny/sf6/tdb71/AttributeDef.hpp"
+ "shared/sdk/regenny/sf6/tdb71/Field.hpp"
+ "shared/sdk/regenny/sf6/tdb71/FieldImpl.hpp"
+ "shared/sdk/regenny/sf6/tdb71/MethodDefinition.hpp"
+ "shared/sdk/regenny/sf6/tdb71/MethodImpl.hpp"
+ "shared/sdk/regenny/sf6/tdb71/ParamList.hpp"
+ "shared/sdk/regenny/sf6/tdb71/ParameterDef.hpp"
+ "shared/sdk/regenny/sf6/tdb71/Property.hpp"
+ "shared/sdk/regenny/sf6/tdb71/PropertyImpl.hpp"
+ "shared/sdk/regenny/sf6/tdb71/TDB.hpp"
+ "shared/sdk/regenny/sf6/tdb71/TypeDefinition.hpp"
+ "shared/sdk/regenny/sf6/tdb71/TypeImpl.hpp"
+ "shared/sdk/regenny/sf6/via/BasisPlane.hpp"
+ "shared/sdk/regenny/sf6/via/CameraType.hpp"
+ "shared/sdk/regenny/sf6/via/Capsule.hpp"
+ "shared/sdk/regenny/sf6/via/Color.hpp"
+ "shared/sdk/regenny/sf6/via/Component.hpp"
+ "shared/sdk/regenny/sf6/via/DeviceOrientation.hpp"
+ "shared/sdk/regenny/sf6/via/DisplayType.hpp"
+ "shared/sdk/regenny/sf6/via/Folder.hpp"
+ "shared/sdk/regenny/sf6/via/GameObject.hpp"
+ "shared/sdk/regenny/sf6/via/IntArray.hpp"
+ "shared/sdk/regenny/sf6/via/JobSet.hpp"
+ "shared/sdk/regenny/sf6/via/Joint.hpp"
+ "shared/sdk/regenny/sf6/via/JointArray.hpp"
+ "shared/sdk/regenny/sf6/via/JointData.hpp"
+ "shared/sdk/regenny/sf6/via/JointDesc.hpp"
+ "shared/sdk/regenny/sf6/via/JointMap.hpp"
+ "shared/sdk/regenny/sf6/via/ManagedObjectArray.hpp"
+ "shared/sdk/regenny/sf6/via/MobileBarState.hpp"
+ "shared/sdk/regenny/sf6/via/Motion.hpp"
+ "shared/sdk/regenny/sf6/via/Object.hpp"
+ "shared/sdk/regenny/sf6/via/Point.hpp"
+ "shared/sdk/regenny/sf6/via/Range.hpp"
+ "shared/sdk/regenny/sf6/via/RenderType.hpp"
+ "shared/sdk/regenny/sf6/via/Scene.hpp"
+ "shared/sdk/regenny/sf6/via/SceneArray.hpp"
+ "shared/sdk/regenny/sf6/via/SceneManager.hpp"
+ "shared/sdk/regenny/sf6/via/SceneView.hpp"
+ "shared/sdk/regenny/sf6/via/Size.hpp"
+ "shared/sdk/regenny/sf6/via/Sphere.hpp"
+ "shared/sdk/regenny/sf6/via/Transform.hpp"
+ "shared/sdk/regenny/sf6/via/UInt8Array.hpp"
+ "shared/sdk/regenny/sf6/via/UIntArray.hpp"
+ "shared/sdk/regenny/sf6/via/UIntArrayArray.hpp"
+ "shared/sdk/regenny/sf6/via/Window.hpp"
+ "shared/sdk/regenny/sf6/via/array.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/BehaviorTree.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/BehaviorTreeCoreHandleArray.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/BehaviorTreeData.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/Condition.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/Core.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/CoreHandle.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/NodeArray.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/NodeArray2.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/NodeStatus.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/Selector.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/SelectorFSM.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/TreeNode.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/TreeNodeData.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/TreeObject.hpp"
+ "shared/sdk/regenny/sf6/via/behaviortree/TreeObjectData.hpp"
+ "shared/sdk/regenny/sf6/via/clr/ManagedObject.hpp"
+ "shared/sdk/regenny/sf6/via/fixed_array_jobs.hpp"
+ "shared/sdk/regenny/sf6/via/gui/Control.hpp"
+ "shared/sdk/regenny/sf6/via/gui/GUI.hpp"
+ "shared/sdk/regenny/sf6/via/gui/GUIManager.hpp"
+ "shared/sdk/regenny/sf6/via/gui/GUIMeshRenderer.hpp"
+ "shared/sdk/regenny/sf6/via/gui/PlayObject.hpp"
+ "shared/sdk/regenny/sf6/via/gui/PrimitiveContext.hpp"
+ "shared/sdk/regenny/sf6/via/gui/TransformObject.hpp"
+ "shared/sdk/regenny/sf6/via/gui/View.hpp"
+ "shared/sdk/regenny/sf6/via/gui/Window.hpp"
+ "shared/sdk/regenny/sf6/via/mat4.hpp"
+ "shared/sdk/regenny/sf6/via/motion/AxisDirection.hpp"
+ "shared/sdk/regenny/sf6/via/motion/Chain.hpp"
+ "shared/sdk/regenny/sf6/via/motion/ChainCollisionArray.hpp"
+ "shared/sdk/regenny/sf6/via/motion/ChainCollisionData.hpp"
+ "shared/sdk/regenny/sf6/via/motion/ChainCollisionTop.hpp"
+ "shared/sdk/regenny/sf6/via/motion/ChainCollisions.hpp"
+ "shared/sdk/regenny/sf6/via/motion/Data.hpp"
+ "shared/sdk/regenny/sf6/via/motion/InterpolationMode.hpp"
+ "shared/sdk/regenny/sf6/via/motion/MotionFsm2.hpp"
+ "shared/sdk/regenny/sf6/via/motion/MotionFsm2Internal.hpp"
+ "shared/sdk/regenny/sf6/via/motion/MotionFsm2Layer.hpp"
+ "shared/sdk/regenny/sf6/via/motion/MotionFsm2RawData.hpp"
+ "shared/sdk/regenny/sf6/via/motion/MotionFsm2Resource.hpp"
+ "shared/sdk/regenny/sf6/via/motion/SecondaryAnimation.hpp"
+ "shared/sdk/regenny/sf6/via/motion/TransitionData.hpp"
+ "shared/sdk/regenny/sf6/via/motion/TransitionMap.hpp"
+ "shared/sdk/regenny/sf6/via/render/RenderOutput.hpp"
+ "shared/sdk/regenny/sf6/via/render/SceneArray2.hpp"
+ "shared/sdk/regenny/sf6/via/render/layer/PrepareOutput.hpp"
+ "shared/sdk/regenny/sf6/via/typeinfo/TypeInfo.hpp"
+ "shared/sdk/regenny/sf6/via/vec3.hpp"
+ "shared/sdk/regenny/sf6/via/vec4.hpp"
+ "shared/sdk/renderer/RenderResource.hpp"
+ )
+
+ list(APPEND DD2SDK_SOURCES
+ cmake.toml
+ )
+
+ set(CMKR_SOURCES ${DD2SDK_SOURCES})
+ add_library(DD2SDK STATIC)
+
+ if(DD2SDK_SOURCES)
+ target_sources(DD2SDK PRIVATE ${DD2SDK_SOURCES})
+ endif()
+
+ target_compile_features(DD2SDK PUBLIC
+ cxx_std_23
+ )
+
+ target_compile_options(DD2SDK PUBLIC
+ "/EHa"
+ )
+
+ target_include_directories(DD2SDK PUBLIC
+ "shared/"
+ "include/"
+ )
+
+ target_link_libraries(DD2SDK PUBLIC
+ glm_static
+ spdlog
+ )
+
+ target_link_libraries(DD2SDK PRIVATE
+ utility
+ )
+
+ target_compile_definitions(DD2SDK PUBLIC
+ DD2
+ REENGINE_PACKED
+ REENGINE_AT
+ )
+
+ unset(CMKR_TARGET)
+ unset(CMKR_SOURCES)
+endif()
+
+# Target DD2
+if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
+ set(CMKR_TARGET DD2)
+ set(DD2_SOURCES "")
+
+ list(APPEND DD2_SOURCES
+ "src/D3D11Hook.cpp"
+ "src/D3D12Hook.cpp"
+ "src/DInputHook.cpp"
+ "src/ExceptionHandler.cpp"
+ "src/HookManager.cpp"
+ "src/Main.cpp"
+ "src/Mods.cpp"
+ "src/REFramework.cpp"
+ "src/WindowFilter.cpp"
+ "src/WindowsMessageHook.cpp"
+ "src/mods/APIProxy.cpp"
+ "src/mods/Camera.cpp"
+ "src/mods/DeveloperTools.cpp"
+ "src/mods/FirstPerson.cpp"
+ "src/mods/FreeCam.cpp"
+ "src/mods/Graphics.cpp"
+ "src/mods/Hooks.cpp"
+ "src/mods/IntegrityCheckBypass.cpp"
+ "src/mods/ManualFlashlight.cpp"
+ "src/mods/PluginLoader.cpp"
+ "src/mods/REFrameworkConfig.cpp"
+ "src/mods/Scene.cpp"
+ "src/mods/ScriptRunner.cpp"
+ "src/mods/VR.cpp"
+ "src/mods/bindings/FS.cpp"
+ "src/mods/bindings/ImGui.cpp"
+ "src/mods/bindings/Json.cpp"
+ "src/mods/bindings/Sdk.cpp"
+ "src/mods/tools/ChainViewer.cpp"
+ "src/mods/tools/GameObjectsDisplay.cpp"
+ "src/mods/tools/ObjectExplorer.cpp"
+ "src/mods/vr/Bindings.cpp"
+ "src/mods/vr/D3D11Component.cpp"
+ "src/mods/vr/D3D12Component.cpp"
+ "src/mods/vr/OverlayComponent.cpp"
+ "src/mods/vr/d3d12/CommandContext.cpp"
+ "src/mods/vr/d3d12/ResourceCopier.cpp"
+ "src/mods/vr/d3d12/TextureContext.cpp"
+ "src/mods/vr/games/RE8VR.cpp"
+ "src/mods/vr/runtimes/OpenVR.cpp"
+ "src/mods/vr/runtimes/OpenXR.cpp"
+ "src/re2-imgui/imgui_impl_dx11.cpp"
+ "src/re2-imgui/imgui_impl_dx12.cpp"
+ "src/re2-imgui/imgui_impl_win32.cpp"
+ "src/utility/ImGui.cpp"
+ "src/D3D11Hook.hpp"
+ "src/D3D12Hook.hpp"
+ "src/DInputHook.hpp"
+ "src/ExceptionHandler.hpp"
+ "src/Genny.hpp"
+ "src/GennyIda.hpp"
+ "src/HookManager.hpp"
+ "src/LicenseStrings.hpp"
+ "src/Mod.hpp"
+ "src/Mods.hpp"
+ "src/REFramework.hpp"
+ "src/Tool.hpp"
+ "src/WindowFilter.hpp"
+ "src/WindowsMessageHook.hpp"
+ "src/mods/APIProxy.hpp"
+ "src/mods/Camera.hpp"
+ "src/mods/DeveloperTools.hpp"
+ "src/mods/FirstPerson.hpp"
+ "src/mods/FreeCam.hpp"
+ "src/mods/Graphics.hpp"
+ "src/mods/Hooks.hpp"
+ "src/mods/IntegrityCheckBypass.hpp"
+ "src/mods/ManualFlashlight.hpp"
+ "src/mods/PluginLoader.hpp"
+ "src/mods/REFrameworkConfig.hpp"
+ "src/mods/Scene.hpp"
+ "src/mods/ScriptRunner.hpp"
+ "src/mods/VR.hpp"
+ "src/mods/bindings/FS.hpp"
+ "src/mods/bindings/ImGui.hpp"
+ "src/mods/bindings/Json.hpp"
+ "src/mods/bindings/Sdk.hpp"
+ "src/mods/tools/ChainViewer.hpp"
+ "src/mods/tools/GameObjectsDisplay.hpp"
+ "src/mods/tools/ObjectExplorer.hpp"
+ "src/mods/vr/D3D11Component.hpp"
+ "src/mods/vr/D3D12Component.hpp"
+ "src/mods/vr/OverlayComponent.hpp"
+ "src/mods/vr/d3d12/ComPtr.hpp"
+ "src/mods/vr/d3d12/CommandContext.hpp"
+ "src/mods/vr/d3d12/ResourceCopier.hpp"
+ "src/mods/vr/d3d12/TextureContext.hpp"
+ "src/mods/vr/games/RE8VR.hpp"
+ "src/mods/vr/runtimes/OpenVR.hpp"
+ "src/mods/vr/runtimes/OpenXR.hpp"
+ "src/mods/vr/runtimes/VRRuntime.hpp"
+ "src/re2-imgui/af_baidu.hpp"
+ "src/re2-imgui/af_faprolight.hpp"
+ "src/re2-imgui/font_robotomedium.hpp"
+ "src/re2-imgui/re2_imconfig.hpp"
+ "src/utility/ImGui.hpp"
+ "src/re2-imgui/af_fadef.h"
+ "src/re2-imgui/imgui_impl_dx11.h"
+ "src/re2-imgui/imgui_impl_dx12.h"
+ "src/re2-imgui/imgui_impl_win32.h"
+ )
+
+ list(APPEND DD2_SOURCES
+ cmake.toml
+ )
+
+ set(CMKR_SOURCES ${DD2_SOURCES})
+ add_library(DD2 SHARED)
+
+ if(DD2_SOURCES)
+ target_sources(DD2 PRIVATE ${DD2_SOURCES})
+ endif()
+
+ target_compile_definitions(DD2 PUBLIC
+ ${CMKR_TARGET}
+ REFRAMEWORK_EXPORTS
+ "REFRAMEWORK_GAME_NAME=\"${CMKR_TARGET}\""
+ )
+
+ if(DEVELOPER_MODE) # developer-mode
+ target_compile_definitions(DD2 PUBLIC
+ DEVELOPER
+ )
+ endif()
+
+ target_compile_features(DD2 PUBLIC
+ cxx_std_23
+ )
+
+ target_compile_options(DD2 PUBLIC
+ "/GS-"
+ "/bigobj"
+ "/EHa"
+ )
+
+ target_include_directories(DD2 PUBLIC
+ "shared/"
+ "src/"
+ "include/"
+ "${OPENXR_SOURCE_DIR}/src"
+ )
+
+ target_link_directories(DD2 PUBLIC
+ "dependencies/openvr/lib/win64/"
+ )
+
+ target_link_libraries(DD2 PUBLIC
+ ${CMKR_TARGET}SDK
+ utility
+ asmjit::asmjit
+ nlohmann_json
+ spdlog
+ lua
+ sol2
+ imgui
+ imguizmo
+ imnodes
+ minhook
+ d3d11
+ glm_static
+ shlwapi
+ openvr
+ openxr_loader
+ delayimp
+ DirectXTK
+ DirectXTK12
+ )
+
+ set_target_properties(DD2 PROPERTIES
+ OUTPUT_NAME
+ dinput8
+ LINK_FLAGS
+ "/DELAYLOAD:openvr_api.dll /DELAYLOAD:openxr_loader.dll /DELAYLOAD:d3d11.dll /DELAYLOAD:d3d12.dll /DELAYLOAD:D3DCOMPILER_47.dll"
+ RUNTIME_OUTPUT_DIRECTORY_RELEASE
+ "${CMAKE_BINARY_DIR}/bin/${CMKR_TARGET}"
+ RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO
+ "${CMAKE_BINARY_DIR}/bin/${CMKR_TARGET}"
+ LIBRARY_OUTPUT_DIRECTORY_RELEASE
+ "${CMAKE_BINARY_DIR}/lib/${CMKR_TARGET}"
+ LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO
+ "${CMAKE_BINARY_DIR}/lib/${CMKR_TARGET}"
+ ARCHIVE_OUTPUT_DIRECTORY_RELEASE
+ "${CMAKE_BINARY_DIR}/lib/${CMKR_TARGET}"
+ ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO
+ "${CMAKE_BINARY_DIR}/lib/${CMKR_TARGET}"
+ )
+
+ unset(CMKR_TARGET)
+ unset(CMKR_SOURCES)
+endif()
+
# Target example_plugin
if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
set(CMKR_TARGET example_plugin)
diff --git a/cmake.toml b/cmake.toml
index fb927ee90..c6d34a4af 100644
--- a/cmake.toml
+++ b/cmake.toml
@@ -44,6 +44,7 @@ REF_BUILD_RE8_SDK = false
REF_BUILD_DMC5_SDK = false
REF_BUILD_MHRISE_SDK = false
REF_BUILD_SF6_SDK = false
+REF_BUILD_DD2_SDK = false
REF_BUILD_FRAMEWORK = { value = true, comment = "Enable building the full REFramework" }
REF_BUILD_DEPENDENCIES = { value = true, comment = "Enable building dependencies" }
@@ -61,6 +62,7 @@ build-re8-sdk = "REF_BUILD_RE8_SDK OR REF_BUILD_FRAMEWORK"
build-dmc5-sdk = "REF_BUILD_DMC5_SDK OR REF_BUILD_FRAMEWORK"
build-mhrise-sdk = "REF_BUILD_MHRISE_SDK OR REF_BUILD_FRAMEWORK"
build-sf6-sdk = "REF_BUILD_SF6_SDK OR REF_BUILD_FRAMEWORK"
+build-dd2-sdk = "REF_BUILD_DD2_SDK OR REF_BUILD_FRAMEWORK"
build-framework-dependencies = "REF_BUILD_DEPENDENCIES AND CMAKE_SIZEOF_VOID_P EQUAL 8"
[fetch-content.asmjit]
@@ -169,7 +171,7 @@ tag = "v1.34.10"
[fetch-content.kananlib]
git = "https://github.com/cursey/kananlib"
-tag = "main"
+tag = "b0323a0b005fc9e3944e0ea36dcc98eda4b84eea"
[target.utility]
type = "static"
@@ -329,6 +331,14 @@ condition = "build-sf6-sdk"
[target.SF6]
type = "game"
+[target.DD2SDK]
+type = "sdk"
+compile-definitions = ["DD2", "REENGINE_PACKED", "REENGINE_AT"]
+condition = "build-dd2-sdk"
+
+[target.DD2]
+type = "game"
+
[template.plugin]
type = "shared"
include-directories = ["include/"]
diff --git a/reversing/apollojustice.genny b/reversing/apollojustice.genny
new file mode 100644
index 000000000..ab400c060
--- /dev/null
+++ b/reversing/apollojustice.genny
@@ -0,0 +1,1052 @@
+type uint64_t 8 [[u64]]
+type int64_t 8 [[i64]]
+type int32_t 4 [[i32]]
+type uint32_t 4 [[u32]]
+type int16_t 2 [[i16]]
+type uint16_t 2 [[u16]]
+type uint8_t 1 [[u8]]
+type float 4 [[f32]]
+type char 1
+type void 0
+type wchar_t 2 [[u16]]
+type bool 1 [[u8]]
+
+namespace regenny{
+struct TypeDefinition{}
+struct ManagedVtable{}
+struct BullShit 0x5000{}
+
+namespace via.typeinfo{
+struct TypeInfo {}
+}
+
+namespace via {
+ struct vec3 {
+ float x;
+ float y;
+ float z;
+ };
+
+ struct vec4 : vec3 {
+ float w;
+ };
+
+ struct mat4 {
+ float m[4][4];
+ };
+
+ struct Object {
+ void* vtable;
+ };
+};
+
+namespace via.clr {
+ struct ManagedObject {
+ ManagedVtable* info
+ uint32_t reference_count
+ uint32_t unk
+ }
+}
+
+
+namespace via {
+ enum class CameraType : uint32_t {
+ Game = 0,
+ Debug = 1,
+ Scene = 2,
+ SceneXY = 3,
+ SceneYZ = 4,
+ SceneXZ = 5,
+ Preview = 6,
+ }
+
+ enum class DisplayType : uint32_t {
+ Fit = 0,
+ Uniform4x3 = 1,
+ Uniform16x9 = 2,
+ Uniform16x10 = 3,
+ Uniform21x9 = 4,
+ Uniform32x9 = 5,
+ Uniform48x9 = 6,
+ Fix480p = 7,
+ Fix720p = 8,
+ Fix1080p = 9,
+ Fix4K = 10,
+ Fix8K = 11,
+ FixResolution = 12,
+ FixResolution16x9 = 13,
+ NintendoSwitch = 14,
+ Fix684x384 = 15,
+ Fix1368x768 = 16,
+ Nexus6P = 17,
+ GalaxyS9 = 18,
+ XperiaZ5Premium = 19,
+ iPhoneX = 20,
+ iPhone7 = 21,
+ ZenPadS8 = 22,
+ }
+
+
+ enum class BasisPlane : uint32_t{
+ XZ = 0,
+ XY = 1,
+ YZ = 2,
+ }
+
+ enum class MobileBarState : uint32_t{None = 0}
+ enum class DeviceOrientation : uint32_t{None = 0}
+ enum class RenderType : uint32_t{None = 0}
+
+ struct Window{}
+ struct Scene{}
+
+ struct Color {
+ uint32_t rgba
+ }
+ struct Size {
+ float w
+ float h
+ }
+
+ struct Point {
+ float x;
+ float y;
+ };
+
+ struct Window 0x100 {
+ void* vtable
+ uint32_t width @ 0x60
+ uint32_t height
+ via.Point cursor_pos;
+ bool show_cursor;
+ via.Size borderless_size @ 0xB8
+ };
+
+ struct SceneView : via.clr.ManagedObject 0xb0 {
+ Window* window @ 0x10
+ Scene* scene
+ via.Color background_color @ 0x20
+ wchar_t* name @ 0x28 [[utf16*]]
+ via.Size size @ 0x30
+ via.Size custom_display_size
+ via.Size present_rect
+ bool draw_develop @ 0x60
+ bool tool_light
+ bool show_icons
+ bool outline_fadeout_enable
+ DisplayType display_type
+ via.BasisPlane basis_plane
+ CameraType camera_type
+ RenderType render_type
+ int32_t icon_size
+ float indicator_scale
+ void* message_function_handle @ 0x90
+ via.DeviceOrientation orientation @ 0x9C
+ via.MobileBarState mobile_status_bar_state
+ via.MobileBarState mobile_nav_bar_state
+ bool fix_mobile_nav_bar_bottom
+ }
+
+ struct Scene : via.clr.ManagedObject{
+ char asdf
+ float timescale @ 0x20
+ }
+
+ struct SceneArray {
+ int32_t count
+ via.Scene** elements @ 0x8
+ }
+}
+
+namespace via {
+ struct SceneManager 0x1D8 {
+ via.SceneView* main_view @ 0x48
+ via.Scene* main_scene @ 0x50
+ via.SceneArray scenes @ 0x78
+ }
+}
+
+namespace via {
+ struct Transform{};
+ struct Folder{};
+
+ struct GameObject : via.clr.ManagedObject 0x50 {
+ bool Update @ 0x12;
+ bool Draw;
+ bool UpdateSelf;
+ bool DrawSelf;
+ via.Transform* Transform +2
+ via.Folder* folder
+
+ float timescale @ 0x4C
+ };
+
+ struct Component : via.clr.ManagedObject {
+ via.GameObject* GameObject;
+ via.Component* ChildComponent;
+ via.Component* PrevComponent;
+ via.Component* NextComponent;
+ };
+
+ struct Folder : via.clr.ManagedObject {
+ };
+
+ struct JointDesc {
+ wchar_t* name [[utf16*]];
+ uint32_t name_hash;
+ int16_t parent_index;
+ int16_t symmetry_index;
+ via.vec4 position;
+ via.vec4 rotation;
+ via.vec4 scale;
+ };
+
+ struct Joint : via.clr.ManagedObject 0x60 {
+ via.Transform* Owner;
+ via.JointDesc* Desc;
+ via.vec4 LocalPosition;
+ via.vec4 LocalRotation;
+ via.vec4 LocalScale
+ int32_t ConstraintJointIndex;
+ int32_t JointIndex;
+ };
+
+ // VMArray/REArray/whatever
+ struct JointArray : via.clr.ManagedObject {
+ via.typeinfo.TypeInfo* array_type
+ int32_t count;
+ int32_t num_allocated;
+ Joint* joints[256];
+ };
+
+ struct Transform : via.Component 0x110 {
+ via.vec4 Position @ 0x30
+ via.vec4 Rotation @ 0x40
+ via.vec4 Scale @ 0x50
+
+ via.Scene* Scene
+ via.Transform* Child @ 0x68
+ via.Transform* Next
+ via.Transform* Parent
+ via.mat4 WorldTransform
+ void* JointHashTbl;
+ int32_t ParentJointIndex
+ int32_t UpdateFrame @ 0xCC
+ bool SameJointsConstraint;
+ bool DirtySelf;
+ bool DirtyUpwards;
+ bool AbsoluteScaling;
+ JointArray* JointTbl + 4
+ via.mat4* JointMatrixTbl;
+ };
+
+ struct JointData
+ {
+ via.vec4 rotation;
+ via.vec4 translation;
+ via.vec4 scale;
+ via.vec4 blend;
+ };
+
+
+ struct JointMap {
+ JointData* joints;
+ int32_t num_joints + 4
+ };
+
+ struct Motion 0x1000 {
+ JointMap jointmap @ 0x200
+ };
+}
+
+namespace via {
+ namespace motion {
+ enum AxisDirection {
+ X = 1,
+ Y = 2,
+ NZ = 7
+ };
+ }
+
+struct Range {
+ float s;
+ float r;
+};
+}
+
+namespace via.typeinfo {
+ struct TypeInfo{
+ void* vfptr
+ uint32_t fqn_hash
+ uint16_t attributes
+ uint16_t type
+ uint64_t fast_class_index
+ uint64_t bsr_fast_class_index
+ char* name [[utf8*]]
+ uint32_t parent_typeid
+ uint32_t size
+ uint32_t crc
+ uint32_t mics_flags
+ via.typeinfo.TypeInfo* parent
+ via.typeinfo.TypeInfo* child
+ via.typeinfo.TypeInfo* next
+ void* reflection
+ TypeDefinition* type_definition
+ }
+}
+
+namespace tdb71 {
+ struct TypeDefinition{}
+}
+
+namespace {
+
+
+struct ManagedVtable {
+ tdb71.TypeDefinition* t
+ void* funcs[32]
+}
+}
+
+namespace {
+struct DeserializeSequence {
+ uint32_t code : 8;
+ uint32_t size : 8;
+ uint32_t align : 8;
+ uint32_t depth : 6;
+ uint32_t is_array : 1;
+ uint32_t is_static : 1;
+
+ uint32_t offset;
+ tdb71.TypeDefinition* native_type;
+};
+}
+
+namespace tdb71 {
+ struct MethodDefinition 0xC {
+ uint32_t declaring_typeid : 19;
+ uint32_t pad : 13
+ uint32_t impl_id : 19;
+ uint32_t params : 13;
+ int32_t offset;
+ }
+
+ struct MethodImpl {
+ uint16_t attributes_id;
+ int16_t vtable_index;
+ uint16_t flags;
+ uint16_t impl_flags;
+ uint32_t name_offset;
+ };
+
+ struct TypeDefinition 0x48 {
+ uint64_t index : 19;
+ uint64_t parent_typeid : 19;
+ uint64_t declaring_typeid : 19;
+ uint64_t underlying_typeid : 7;
+ uint64_t array_typeid : 19;
+ uint64_t element_typeid : 19;
+
+ uint64_t impl_index : 18;
+ //uint64_t object_type : 3;
+ uint64_t system_typeid : 7;
+
+ uint32_t type_flags;
+ uint32_t size;
+ uint32_t fqn_hash;
+ uint32_t type_crc;
+ uint64_t default_ctor : 22;
+ uint64_t member_method : 22;
+ uint64_t member_field : 19;
+ uint32_t num_member_prop : 12;
+ uint32_t member_prop : 19;
+
+ uint32_t unk_data : 26;
+ uint32_t object_type : 3
+
+ int64_t unk_data_before_generics : 26;
+ int64_t generics : 26;
+ int64_t interfaces : 12;
+ via.typeinfo.TypeInfo* type @ 0x38;
+ void** managed_vt;
+ //struct REObjectInfo* managed_vt;
+ };
+
+ struct TypeImpl 0x30 {
+ int32_t name_offset; // 0
+ int32_t namespace_offset; // 4
+ int32_t field_size; // 8
+ int32_t static_field_size; // c
+ //uint32_t module_id; // 10
+ //uint32_t array_rank; // 14
+ uint64_t unk_pad : 33;
+ uint64_t num_member_fields : 24; // 0x10 bitfield
+ uint64_t unk_pad_2 : 7
+ uint16_t num_member_methods; // 0x18
+ int16_t num_native_vtable; // 0x1A
+ int16_t interface_id;
+ //uint16_t num_native_vtable;
+ //uint16_t attributes_id;
+ //uint16_t num_vtable;
+ //uint64_t mark;
+ //uint64_t cycle;
+ };
+
+ struct Field {
+ uint64_t declaring_typeid : 19;
+ uint64_t impl_id : 19;
+ uint64_t field_typeid : 19;
+ uint64_t init_data_hi : 6
+ };
+
+ struct FieldImpl 0xC {
+ uint16_t attributes;
+ uint16_t unk : 1
+ uint16_t flags : 15
+ uint32_t offset : 26;
+ uint32_t init_data_lo : 6
+ uint32_t name_offset : 22
+ uint32_t init_data_mid : 4
+
+ /*uint16_t attributes_id;
+ uint16_t flags;
+ uint32_t unk_pad : 6;
+ uint32_t field_typeid : 19;
+ uint32_t init_data_lo : 14;
+ uint32_t name_offset : 30;*/
+ //uint32_t init_data_hi : 2;
+ };
+
+ struct Property {
+ };
+
+ struct PropertyImpl {
+ };
+
+ struct ParameterDef {
+ uint16_t attributes_id;
+ uint16_t init_data_index;
+ uint32_t name_offset : 30;
+ uint32_t modifier : 2;
+ uint32_t type_id : 18;
+ uint32_t flags : 14;
+ };
+
+ struct AttributeDef {
+ };
+
+ struct ParamList {
+ uint16_t numParams; //0x0000
+ int16_t invokeID; //0x0002
+ uint32_t returnType; //0x0004
+ uint32_t params[256]; //0x0008
+ };
+
+ struct TDB {
+ struct test{}
+ uint32_t magic; // 0x0000
+ uint32_t version; // 0x0004
+ uint32_t initialized; // 0x0008
+ uint32_t numTypes; // 0x000C
+ uint32_t numMethods; // 0x0010
+ uint32_t numFields; // 0x0014
+ uint32_t numTypeImpl; // 0x0018
+ uint32_t numFieldImpl; // 0x001C
+ uint32_t numMethodImpl; // 0x0020
+ uint32_t numPropertyImpl; // 0x0024
+ uint32_t numProperties; // 0x0028
+ uint32_t numEvents; // 0x002C
+ uint32_t numParams; // 0x0030
+ uint32_t numAttributes; // 0x0034
+ int32_t numInitData; // 0x0038
+ uint32_t numAttributes2; // 0x003C
+ uint32_t numInternStrings; // 0x0040
+ uint32_t numModules; // 0x0044
+ int32_t devEntry; // 0x0048
+ int32_t appEntry; // 0x004C
+ uint32_t numStringPool; // 0x0050
+ uint32_t numBytePool; // 0x0054
+ void* modules; // 0x0058
+ TypeDefinition* types;
+ TypeImpl* typesImpl;
+ MethodDefinition* methods;
+ MethodImpl* methodsImpl;
+ Field* fields;
+ FieldImpl* fieldsImpl;
+ Property* properties;
+ PropertyImpl* propertiesImpl;
+ void* events;
+ ParameterDef* params;
+ AttributeDef* attributes;
+ int32_t* initData;
+ void* unk
+ int32_t* attributes2;
+ char* stringPool;
+ uint8_t* bytePool;
+ int32_t* internStrings;
+ }
+}
+
+namespace System {
+ struct String : via.clr.ManagedObject 0x100 {
+ int32_t len
+ char data[256] [[utf16*]]
+ };
+};
+
+namespace game {
+ struct InputSystem : via.clr.ManagedObject 0x170 {
+ };
+
+ struct IkArmFit 0x100 {
+ struct ArmSolver : via.clr.ManagedObject 0x30 {
+ via.Joint* ApplyJoint;
+ via.motion.AxisDirection Dir;
+ via.motion.AxisDirection Up;
+ via.motion.AxisDirection Rot;
+ float L0;
+ float L1;
+ };
+
+ struct ArmData : via.clr.ManagedObject 0x80 {
+ float BlendRate;
+ via.Range ReachRate;
+ System.String* ApplyHandName + 4;
+ bool LeftHand;
+ float DefaultHandAngle + 3
+ via.Range AxisYRange;
+ via.Range AxisZRange
+ via.mat4 TargetMatrix;
+ };
+ }
+}
+
+namespace via {
+ namespace gui {
+ struct GUIManager{}
+ }
+
+ struct array : via.clr.ManagedObject 0x100 {
+ TypeDefinition* contained_type
+ int32_t count
+ int32_t allocated
+ };
+
+ struct JobSet {
+ struct Job{};
+ };
+
+ struct fixed_array_jobs {
+ via.JobSet.Job jobs[8];
+ };
+
+ struct JobSet {
+ struct JobThing 0x100 {
+ void* func;
+ };
+
+ struct Unk 0x100{
+ void** vtable;
+ via.Object* owner;
+ void* func
+ via.Object* owner2 + 8;
+ };
+
+ Unk* data;
+ };
+
+ namespace gui {
+ struct TransformObject {};
+ struct View {};
+
+ struct PrimitiveContext 0x300 {
+ int32_t gui_camera @ 0xEC
+ };
+
+ struct GUIMeshRenderer 0x100 {
+
+ };
+
+ struct GUI : via.Component 0x2D0 {
+ via.SceneView* SceneView;
+ void* GUIResource;
+ void* RtTextureHandle;
+ void* GUISound;
+ bool Enabled @ 0x50
+ bool FailedSetup;
+ uint8_t MaskLayerBits;
+ uint8_t MaskLayerBits2;
+ uint8_t MaskLayerBits3;
+ uint32_t RenderOutputID @ 0x58
+ float PlaySpeed @ 0x5C
+ uint32_t Segment;
+ uint32_t SoftParticleDistType @ 0x64
+ float SoftParticleDist;
+ View* View + 4;
+ };
+
+ struct Control : TransformObject 0x1B0 {
+ uint32_t StatePattern @ 0x124
+ float PlayFrame @ 0x128
+ via.vec4 ColorScale
+ via.vec3 ColorOffset
+ float Saturation
+ bool UseGUISound @ 0x188
+ };
+
+ struct Window : Control 0x1C0 {
+ bool Open
+ };
+
+ struct View : Window 0x1E0 {
+ bool Overlay @ 0x1C0
+ bool DepthTest;
+ bool DetoneMap;
+ bool CoordCorrection;
+ uint32_t ViewType @ 0x1C4;
+ uint32_t ReprojectionType+4;
+ via.Size ScreenSize ;
+ float BaseFps @ 0x1D8
+ bool UseGUICamera
+ };
+
+ struct PlayObject : via.clr.ManagedObject 0x50 {
+ wchar_t* Name [[utf16*]]
+ GUI* Component;
+ Control* Parent @ 0x28
+ PlayObject* Next;
+ PlayObject* Prev;
+
+ uint16_t Priority @ 0x42
+
+ uint8_t pad @ 0x47
+
+ // Render flags
+ uint64_t Visible : 1; // 1
+ uint64_t Visible2 : 1; // 2
+ uint64_t HitVisible : 1; // 3
+ uint64_t ShouldPlay : 1; // 4
+ uint64_t IsPlaying : 1; // 5
+ uint64_t IsInteractive : 1; // 6
+ uint64_t HasName : 1; // 7
+ uint64_t HasTag : 1; // 8
+ uint64_t SequenceAsset : 1; // 9
+ uint64_t IsPNG : 1; // 10
+ uint64_t IsJPG : 1; // 11
+ uint64_t LinearAlphaBlend : 1; // 12
+ uint64_t CompOwnership : 1; // 13
+ uint64_t DuplicateRoot : 1; // 14
+ uint64_t DataBind : 1; // 15
+ uint64_t DataBinding : 1; // 16
+ uint64_t AllocExData : 1; // 17
+ uint64_t NextStateEnable : 1; // 18
+ uint64_t _Unk : 1; // 19
+ uint64_t _Unk2 : 1; // 20
+ uint64_t ResolutionAdjust : 1; // 21
+ uint64_t UniqueVisible : 1; // 22
+ uint64_t EffectAlphaType : 1; // 23
+ uint64_t HasOverrideProp : 1; // 24
+ uint64_t IsCapturable : 1; // 25
+ uint64_t ForceInvisible : 1; // 26
+ uint64_t ClipPlaying : 1; // 27
+ uint64_t BlendType : 2; // 28-29
+ uint64_t MaskType : 3; // 30 - 32
+ uint64_t MaskMode : 3; // 33 - 35
+ uint64_t ColorType : 2; // 36 - 37
+ uint64_t ControlPoint : 4; // 38 - 41
+ uint64_t ResolutionCond : 2; // 42 - 43
+ uint64_t ResolutionScale : 2; // 44 - 45
+ uint64_t UVType : 2; // 46 - 47
+ uint64_t UnkFlags : 17;
+ };
+
+ struct TransformObject : PlayObject 0x120 {
+ };
+
+ struct GUIManager 0x1A0 {
+ via.JobSet update_task @ 0xe0
+ via.JobSet draw_task @ 0x120;
+ };
+ }
+}
+
+namespace via {
+struct Sphere 0x10 {
+ via.vec3 pos;
+ float r;
+};
+
+struct Capsule 0x30 {
+ via.vec4 p0;
+ via.vec4 p1;
+ float r;
+};
+
+namespace motion {
+struct ChainCollisionArray{};
+struct ChainCollisionData{};
+struct ChainCollisionTop{};
+
+struct ChainCollisions 0x180 {
+ uint32_t order;
+ via.Sphere sphere+0xc;
+ via.Capsule capsule;
+ via.vec4 offset @ 0xD0;
+ via.vec4 pair_offset;
+ via.Joint* joint @ 0x130
+ via.Joint* pair_joint
+ ChainCollisionData* data;
+ ChainCollisionTop* owner;
+ float radius;
+ float radius2;
+ int32_t d;
+ float lerp;
+ int32_t pad2;
+ uint32_t flags;
+ float scale;
+ bool valid;
+};
+
+struct ChainCollisionData {
+ void* sub_data;
+ via.vec3 pos;
+ via.vec3 pair_pos;
+ uint32_t joint_hash;
+ uint32_t pair_joint_hash;
+ float radius;
+ float lerp;
+ uint8_t shape_type;
+ uint8_t div;
+ uint8_t num_sub_data;
+ uint8_t unk;
+ uint32_t flags;
+ uint32_t unk;
+};
+
+struct ChainCollisionTop 0x100 {
+ ChainCollisions* collisions;
+ uint32_t num_collisions;
+ uint32_t allocated_collisions
+ void** owner_transform;
+ void* parent_transform;
+ float scale;
+ float parent_scale;
+};
+
+struct ChainCollisionArray {
+ ChainCollisionTop* collisions
+ int32_t num;
+ int32_t num_allocated;
+ int32_t preset_id;
+};
+
+struct SecondaryAnimation : via.Component 0x50 {
+ void* motion
+};
+
+struct Chain : via.motion.SecondaryAnimation 0x390 {
+
+ ChainCollisionArray CollisionData @ 0x140;
+ float BlendRate @ 0x22C
+ float FreezeRate @ 0x230
+ float StepFrame @ 0x280
+ uint32_t CalculateMode @ 0x378
+ uint32_t GravityCoord @ 0x380
+};
+}
+}
+
+struct RenderEntity : via.Component 0x498 {
+};
+
+struct RTInternal 0x1000 {
+ char* name @ 0x168 [[utf8*]]
+ uint32_t unkint @ 0x180
+ uint32_t unkint2
+ uint32_t RayTracingMode @ 0x188
+ uint32_t Spp
+ uint8_t unk2 @ 0x190
+
+ via.vec3 params @ 0x19c
+ bool use_transparent @ 0x1AC
+ bool specular_secondary_bounce @ 0x1Ae
+ bool use_no_movement_depth_comp
+ float normal_compare_thresh
+ bool use_diffuse_bounce_intensity
+ float diffuse_bounce_intensity_mult + 3
+ bool use_specular_bounce_intensity
+ float specular_bounce_intensity + 3
+ bool ray_trace_ambient_occlusion
+ float ray_trace_ratio + 3
+ float unkflooat
+ uint32_t sampling_pattern
+ float surfel_size @ 0x1DC
+ float asdfasdgadsg
+};
+
+struct RayTrace : RenderEntity 0x1000 {
+ RTInternal* impl;
+};
+
+namespace via {
+struct ManagedObjectArray {
+ via.clr.ManagedObject** objects;
+ uint32_t count;
+ uint32_t capacity;
+};
+
+struct UIntArray {
+ uint32_t* data;
+ uint64_t count;
+};
+
+struct UIntArrayArray {
+ UIntArray* data;
+ uint64_t count;
+};
+
+struct UInt8Array {
+ uint8_t* data;
+ uint64_t count;
+};
+
+struct IntArray {
+ int32_t* data;
+ uint64_t count;
+};
+
+namespace behaviortree {
+struct BehaviorTreeCoreHandleArray {};
+struct TreeNode{};
+struct TreeObject {};
+
+struct NodeArray {
+ TreeNode* nodes;
+ uint32_t count
+};
+
+struct NodeArray2 {
+ TreeNode** nodes;
+ uint32_t unk
+ uint32_t count
+};
+
+struct Selector : via.clr.ManagedObject 0x28 {
+ bool late_select @ 0x10
+ bool b2
+ bool b3
+ uint32_t* buf + 5
+ uint32_t bufsize;
+};
+
+struct SelectorFSM : Selector 0x60 {
+ TreeNode* owner_node @ 0x28
+ TreeNode* active_node
+ NodeArray2 next_nodes;
+ NodeArray2 node_choices;
+
+
+ bool illegal @ 0x58
+};
+
+struct Condition : via.clr.ManagedObject {
+};
+
+enum NodeStatus : uint32_t {
+ Off = 0,
+ On = 2
+};
+
+struct TreeNodeData {
+ uint32_t id
+ uint32_t id_2;
+ uint32_t attr
+ bool is_branch
+ bool is_end;
+ bool has_selector;
+
+ uint32_t parent @ 0x34;
+ uint32_t parent_2;
+
+ UIntArray children + 4;
+ UIntArray children2;
+ IntArray conditions;
+ UIntArray states;
+ UIntArray states_2;
+ IntArray transition_conditions;
+ UIntArray transition_ids;
+ UIntArray transition_attributes;
+ UIntArray actions;
+ UIntArray actions_2;
+
+ IntArray start_transitions @ 0x130
+ // aka the first choices when the node activates?
+ UIntArray start_states @ 0x140
+ UIntArray start_states_2
+ UIntArrayArray transition_events
+ UIntArrayArray start_transition_events
+ UIntArrayArray unkarray3
+ UIntArray tags
+
+ wchar_t name[12] @ 0x1a0 [[utf16*]]
+ uint32_t name_len;
+ uint32_t name_capacity;
+ uint32_t name_offset; // offset inside the in-memory structure...?
+ uint32_t name_murmur_hash;
+ uint32_t full_name_murmur_hash;
+ uint32_t pad__;
+};
+
+struct TreeNode 0xD0 {
+ uint64_t id
+ TreeNodeData* data;
+ TreeObject* owner;
+ uint16_t attr;
+ uint16_t unk_flags;
+ uint16_t pad[2];
+ SelectorFSM* selector;
+ Condition* selector_condition;
+ int32_t selector_condition_index;
+ int32_t priority;
+ TreeNode* node_parent;
+ uint32_t num_children
+ uint32_t num_actions + 0xC
+ uint32_t num_selector_callers
+ Condition* parent_condition;
+ int32_t parent_condition_index;
+ NodeStatus status1
+ NodeStatus status2
+
+ wchar_t name[12] + 4 [[utf16*]]
+ uint32_t name_len
+ uint32_t name_capacity
+
+ TreeNode* node_end;
+ TreeNode* node_restart;
+ TreeNode* node_end_notify;
+ TreeNode* node_end_selector;
+ TreeNode* node_active_child;
+};
+
+struct TreeObjectData 0x300 {
+ void* vftable;
+ TreeNodeData* nodes;
+ uint32_t node_count;
+ ManagedObjectArray static_selector_callers+4;
+ ManagedObjectArray static_actions;
+ ManagedObjectArray static_conditions;
+ ManagedObjectArray static_transitions;
+ ManagedObjectArray expression_tree_conditions;
+ ManagedObjectArray actions;
+ ManagedObjectArray conditions;
+ ManagedObjectArray transitions;
+
+ UInt8Array action_methods @ 0xF8;
+ UInt8Array static_action_methods
+};
+
+struct TreeObject 0xD8 {
+ void* vfptr;
+ TreeObjectData* data;
+ NodeArray nodes @ 0x10
+
+ ManagedObjectArray selectors+4
+ ManagedObjectArray actions @ 0x40
+ ManagedObjectArray conditions
+ ManagedObjectArray transitions
+ ManagedObjectArray expression_tree_conditions
+ UIntArray selector_nodes;
+ ManagedObjectArray delayed_actions;
+ ManagedObjectArray delayed_conditions;
+ ManagedObjectArray delayed_transitions;
+ TreeNode* root_node;
+};
+
+struct Core 0x1E0 {
+ void** vftable
+ TreeObject* tree_object
+};
+
+struct CoreHandle : via.clr.ManagedObject 0x220 {
+ Core core @ 0x18
+};
+
+struct BehaviorTreeData 0x100 {
+ void* vftable;
+ bool unk_bool
+ TreeObjectData data @ 0x10
+};
+
+struct BehaviorTree : via.Component {
+ BehaviorTreeCoreHandleArray trees @ 0x98
+};
+
+struct BehaviorTreeCoreHandleArray {
+ via.behaviortree.CoreHandle** handles;
+ uint32_t count;
+};
+}
+
+namespace motion {
+struct MotionFsm2Layer : via.behaviortree.CoreHandle {
+};
+
+struct MotionFsm2 : via.behaviortree.BehaviorTree 0x100 {
+};
+
+struct TransitionMap {
+ uint32_t id;
+ uint32_t index;
+};
+
+enum InterpolationMode : uint32_t {
+ Fuck = 1
+};
+
+struct TransitionData {
+ uint32_t id;
+ uint32_t end_type : 4
+ uint32_t interpolation_mode : 4
+ uint32_t prev_move_to_end : 1
+ uint32_t start_type : 4
+ uint32_t elapsed_time_zero : 1
+ uint32_t cont_on_layer : 1
+ uint32_t cont_on_layer_interp_curve : 4
+ float exit_frame
+ float start_frame
+ float interpolation_frame
+ uint32_t pad
+ uint32_t pad2
+ uint32_t pad3
+ uint32_t pad4
+};
+
+struct Data 0x100 {
+};
+
+struct MotionFsm2RawData {
+ uint8_t hdr[0x10]
+ uint8_t* file_data;
+ TransitionMap* transition_map;
+ TransitionData* transition_data;
+ Data* data;
+ uint32_t transition_map_count;
+ uint32_t transition_data_count;
+ uint32_t transition_data_start;
+};
+
+
+struct MotionFsm2Internal 0x180 {
+ void* vftable
+ MotionFsm2RawData* data;
+ via.behaviortree.BehaviorTreeData bhvt + 8;
+};
+
+struct MotionFsm2Resource 0x220 {
+ MotionFsm2Internal fsm2data @ 0x50
+};
+}
+
+}
+
+}
\ No newline at end of file
diff --git a/reversing/dd2.genny b/reversing/dd2.genny
new file mode 100644
index 000000000..182fe1137
--- /dev/null
+++ b/reversing/dd2.genny
@@ -0,0 +1,1052 @@
+type uint64_t 8 [[u64]]
+type int64_t 8 [[i64]]
+type int32_t 4 [[i32]]
+type uint32_t 4 [[u32]]
+type int16_t 2 [[i16]]
+type uint16_t 2 [[u16]]
+type uint8_t 1 [[u8]]
+type float 4 [[f32]]
+type char 1
+type void 0
+type wchar_t 2 [[u16]]
+type bool 1 [[u8]]
+
+namespace regenny{
+struct TypeDefinition{}
+struct ManagedVtable{}
+struct BullShit 0x5000{}
+
+namespace via.typeinfo{
+struct TypeInfo {}
+}
+
+namespace via {
+ struct vec3 {
+ float x;
+ float y;
+ float z;
+ };
+
+ struct vec4 : vec3 {
+ float w;
+ };
+
+ struct mat4 {
+ float m[4][4];
+ };
+
+ struct Object {
+ void* vtable;
+ };
+};
+
+namespace via.clr {
+ struct ManagedObject {
+ ManagedVtable* info
+ uint32_t reference_count
+ uint32_t unk
+ }
+}
+
+
+namespace via {
+ enum class CameraType : uint32_t {
+ Game = 0,
+ Debug = 1,
+ Scene = 2,
+ SceneXY = 3,
+ SceneYZ = 4,
+ SceneXZ = 5,
+ Preview = 6,
+ }
+
+ enum class DisplayType : uint32_t {
+ Fit = 0,
+ Uniform4x3 = 1,
+ Uniform16x9 = 2,
+ Uniform16x10 = 3,
+ Uniform21x9 = 4,
+ Uniform32x9 = 5,
+ Uniform48x9 = 6,
+ Fix480p = 7,
+ Fix720p = 8,
+ Fix1080p = 9,
+ Fix4K = 10,
+ Fix8K = 11,
+ FixResolution = 12,
+ FixResolution16x9 = 13,
+ NintendoSwitch = 14,
+ Fix684x384 = 15,
+ Fix1368x768 = 16,
+ Nexus6P = 17,
+ GalaxyS9 = 18,
+ XperiaZ5Premium = 19,
+ iPhoneX = 20,
+ iPhone7 = 21,
+ ZenPadS8 = 22,
+ }
+
+
+ enum class BasisPlane : uint32_t{
+ XZ = 0,
+ XY = 1,
+ YZ = 2,
+ }
+
+ enum class MobileBarState : uint32_t{None = 0}
+ enum class DeviceOrientation : uint32_t{None = 0}
+ enum class RenderType : uint32_t{None = 0}
+
+ struct Window{}
+ struct Scene{}
+
+ struct Color {
+ uint32_t rgba
+ }
+ struct Size {
+ float w
+ float h
+ }
+
+ struct Point {
+ float x;
+ float y;
+ };
+
+ struct Window 0x100 {
+ void* vtable
+ uint32_t width @ 0x60
+ uint32_t height
+ via.Point cursor_pos;
+ bool show_cursor;
+ via.Size borderless_size + 0x2F
+ };
+
+ struct SceneView : via.clr.ManagedObject 0xb0 {
+ Window* window @ 0x10
+ Scene* scene
+ via.Color background_color @ 0x20
+ wchar_t* name @ 0x28 [[utf16*]]
+ via.Size size @ 0x30
+ via.Size custom_display_size
+ via.Size present_rect
+ bool draw_develop @ 0x60
+ bool tool_light
+ bool show_icons
+ bool outline_fadeout_enable
+ DisplayType display_type
+ via.BasisPlane basis_plane
+ CameraType camera_type
+ RenderType render_type
+ int32_t icon_size
+ float indicator_scale
+ void* message_function_handle @ 0x90
+ via.DeviceOrientation orientation @ 0x9C
+ via.MobileBarState mobile_status_bar_state
+ via.MobileBarState mobile_nav_bar_state
+ bool fix_mobile_nav_bar_bottom
+ }
+
+ struct Scene : via.clr.ManagedObject{
+ char asdf
+ float timescale @ 0x20
+ }
+
+ struct SceneArray {
+ int32_t count
+ via.Scene** elements @ 0x8
+ }
+}
+
+namespace via {
+ struct SceneManager 0x1D8 {
+ via.SceneView* main_view @ 0x48
+ via.Scene* main_scene @ 0x50
+ via.SceneArray scenes @ 0x78
+ }
+}
+
+namespace via {
+ struct Transform{};
+ struct Folder{};
+
+ struct GameObject : via.clr.ManagedObject 0x50 {
+ bool Update @ 0x12;
+ bool Draw;
+ bool UpdateSelf;
+ bool DrawSelf;
+ via.Transform* Transform +2
+ via.Folder* folder
+
+ float timescale @ 0x4C
+ };
+
+ struct Component : via.clr.ManagedObject {
+ via.GameObject* GameObject;
+ via.Component* ChildComponent;
+ via.Component* PrevComponent;
+ via.Component* NextComponent;
+ };
+
+ struct Folder : via.clr.ManagedObject {
+ };
+
+ struct JointDesc {
+ wchar_t* name [[utf16*]];
+ uint32_t name_hash;
+ int16_t parent_index;
+ int16_t symmetry_index;
+ via.vec4 position;
+ via.vec4 rotation;
+ via.vec4 scale;
+ };
+
+ struct Joint : via.clr.ManagedObject 0x60 {
+ via.Transform* Owner;
+ via.JointDesc* Desc;
+ via.vec4 LocalPosition;
+ via.vec4 LocalRotation;
+ via.vec4 LocalScale
+ int32_t ConstraintJointIndex;
+ int32_t JointIndex;
+ };
+
+ // VMArray/REArray/whatever
+ struct JointArray : via.clr.ManagedObject {
+ via.typeinfo.TypeInfo* array_type
+ int32_t count;
+ int32_t num_allocated;
+ Joint* joints[256];
+ };
+
+ struct Transform : via.Component 0x110 {
+ via.vec4 Position @ 0x30
+ via.vec4 Rotation @ 0x40
+ via.vec4 Scale @ 0x50
+
+ via.Scene* Scene
+ via.Transform* Child @ 0x68
+ via.Transform* Next
+ via.Transform* Parent
+ via.mat4 WorldTransform
+ void* JointHashTbl;
+ int32_t ParentJointIndex
+ int32_t UpdateFrame @ 0xCC
+ bool SameJointsConstraint;
+ bool DirtySelf;
+ bool DirtyUpwards;
+ bool AbsoluteScaling;
+ JointArray* JointTbl + 4
+ via.mat4* JointMatrixTbl;
+ };
+
+ struct JointData
+ {
+ via.vec4 rotation;
+ via.vec4 translation;
+ via.vec4 scale;
+ via.vec4 blend;
+ };
+
+
+ struct JointMap {
+ JointData* joints;
+ int32_t num_joints + 4
+ };
+
+ struct Motion 0x1000 {
+ JointMap jointmap @ 0x200
+ };
+}
+
+namespace via {
+ namespace motion {
+ enum AxisDirection {
+ X = 1,
+ Y = 2,
+ NZ = 7
+ };
+ }
+
+struct Range {
+ float s;
+ float r;
+};
+}
+
+namespace via.typeinfo {
+ struct TypeInfo{
+ void* vfptr
+ uint32_t fqn_hash
+ uint16_t attributes
+ uint16_t type
+ uint64_t fast_class_index
+ uint64_t bsr_fast_class_index
+ char* name [[utf8*]]
+ uint32_t parent_typeid
+ uint32_t size
+ uint32_t crc
+ uint32_t mics_flags
+ via.typeinfo.TypeInfo* parent
+ via.typeinfo.TypeInfo* child
+ via.typeinfo.TypeInfo* next
+ void* reflection
+ TypeDefinition* type_definition
+ }
+}
+
+namespace tdb71 {
+ struct TypeDefinition{}
+}
+
+namespace {
+
+
+struct ManagedVtable {
+ tdb71.TypeDefinition* t
+ void* funcs[32]
+}
+}
+
+namespace {
+struct DeserializeSequence {
+ uint32_t code : 8;
+ uint32_t size : 8;
+ uint32_t align : 8;
+ uint32_t depth : 6;
+ uint32_t is_array : 1;
+ uint32_t is_static : 1;
+
+ uint32_t offset;
+ tdb71.TypeDefinition* native_type;
+};
+}
+
+namespace tdb71 {
+ struct MethodDefinition 0xC {
+ uint32_t declaring_typeid : 19;
+ uint32_t pad : 13
+ uint32_t impl_id : 19;
+ uint32_t params : 13;
+ int32_t offset;
+ }
+
+ struct MethodImpl {
+ uint16_t attributes_id;
+ int16_t vtable_index;
+ uint16_t flags;
+ uint16_t impl_flags;
+ uint32_t name_offset;
+ };
+
+ struct TypeDefinition 0x48 {
+ uint64_t index : 19;
+ uint64_t parent_typeid : 19;
+ uint64_t declaring_typeid : 19;
+ uint64_t underlying_typeid : 7;
+ uint64_t array_typeid : 19;
+ uint64_t element_typeid : 19;
+
+ uint64_t impl_index : 18;
+ //uint64_t object_type : 3;
+ uint64_t system_typeid : 7;
+
+ uint32_t type_flags;
+ uint32_t size;
+ uint32_t fqn_hash;
+ uint32_t type_crc;
+ uint64_t default_ctor : 22;
+ uint64_t member_method : 22;
+ uint64_t member_field : 19;
+ uint32_t num_member_prop : 12;
+ uint32_t member_prop : 19;
+
+ uint32_t unk_data : 26;
+ uint32_t object_type : 3
+
+ int64_t unk_data_before_generics : 26;
+ int64_t generics : 26;
+ int64_t interfaces : 12;
+ via.typeinfo.TypeInfo* type @ 0x38;
+ void** managed_vt;
+ //struct REObjectInfo* managed_vt;
+ };
+
+ struct TypeImpl 0x30 {
+ int32_t name_offset; // 0
+ int32_t namespace_offset; // 4
+ int32_t field_size; // 8
+ int32_t static_field_size; // c
+ //uint32_t module_id; // 10
+ //uint32_t array_rank; // 14
+ uint64_t unk_pad : 33;
+ uint64_t num_member_fields : 24; // 0x10 bitfield
+ uint64_t unk_pad_2 : 7
+ uint16_t num_member_methods; // 0x18
+ int16_t num_native_vtable; // 0x1A
+ int16_t interface_id;
+ //uint16_t num_native_vtable;
+ //uint16_t attributes_id;
+ //uint16_t num_vtable;
+ //uint64_t mark;
+ //uint64_t cycle;
+ };
+
+ struct Field {
+ uint64_t declaring_typeid : 19;
+ uint64_t impl_id : 19;
+ uint64_t field_typeid : 19;
+ uint64_t init_data_hi : 6
+ };
+
+ struct FieldImpl 0xC {
+ uint16_t attributes;
+ uint16_t unk : 1
+ uint16_t flags : 15
+ uint32_t offset : 26;
+ uint32_t init_data_lo : 6
+ uint32_t name_offset : 22
+ uint32_t init_data_mid : 4
+
+ /*uint16_t attributes_id;
+ uint16_t flags;
+ uint32_t unk_pad : 6;
+ uint32_t field_typeid : 19;
+ uint32_t init_data_lo : 14;
+ uint32_t name_offset : 30;*/
+ //uint32_t init_data_hi : 2;
+ };
+
+ struct Property {
+ };
+
+ struct PropertyImpl {
+ };
+
+ struct ParameterDef {
+ uint16_t attributes_id;
+ uint16_t init_data_index;
+ uint32_t name_offset : 30;
+ uint32_t modifier : 2;
+ uint32_t type_id : 18;
+ uint32_t flags : 14;
+ };
+
+ struct AttributeDef {
+ };
+
+ struct ParamList {
+ uint16_t numParams; //0x0000
+ int16_t invokeID; //0x0002
+ uint32_t returnType; //0x0004
+ uint32_t params[256]; //0x0008
+ };
+
+ struct TDB {
+ struct test{}
+ uint32_t magic; // 0x0000
+ uint32_t version; // 0x0004
+ uint32_t initialized; // 0x0008
+ uint32_t numTypes; // 0x000C
+ uint32_t numMethods; // 0x0010
+ uint32_t numFields; // 0x0014
+ uint32_t numTypeImpl; // 0x0018
+ uint32_t numFieldImpl; // 0x001C
+ uint32_t numMethodImpl; // 0x0020
+ uint32_t numPropertyImpl; // 0x0024
+ uint32_t numProperties; // 0x0028
+ uint32_t numEvents; // 0x002C
+ uint32_t numParams; // 0x0030
+ uint32_t numAttributes; // 0x0034
+ int32_t numInitData; // 0x0038
+ uint32_t numAttributes2; // 0x003C
+ uint32_t numInternStrings; // 0x0040
+ uint32_t numModules; // 0x0044
+ int32_t devEntry; // 0x0048
+ int32_t appEntry; // 0x004C
+ uint32_t numStringPool; // 0x0050
+ uint32_t numBytePool; // 0x0054
+ void* modules; // 0x0058
+ TypeDefinition* types;
+ TypeImpl* typesImpl;
+ MethodDefinition* methods;
+ MethodImpl* methodsImpl;
+ Field* fields;
+ FieldImpl* fieldsImpl;
+ Property* properties;
+ PropertyImpl* propertiesImpl;
+ void* events;
+ ParameterDef* params;
+ AttributeDef* attributes;
+ int32_t* initData;
+ void* unk
+ int32_t* attributes2;
+ char* stringPool;
+ uint8_t* bytePool;
+ int32_t* internStrings;
+ }
+}
+
+namespace System {
+ struct String : via.clr.ManagedObject 0x100 {
+ int32_t len
+ char data[256] [[utf16*]]
+ };
+};
+
+namespace game {
+ struct InputSystem : via.clr.ManagedObject 0x170 {
+ };
+
+ struct IkArmFit 0x100 {
+ struct ArmSolver : via.clr.ManagedObject 0x30 {
+ via.Joint* ApplyJoint;
+ via.motion.AxisDirection Dir;
+ via.motion.AxisDirection Up;
+ via.motion.AxisDirection Rot;
+ float L0;
+ float L1;
+ };
+
+ struct ArmData : via.clr.ManagedObject 0x80 {
+ float BlendRate;
+ via.Range ReachRate;
+ System.String* ApplyHandName + 4;
+ bool LeftHand;
+ float DefaultHandAngle + 3
+ via.Range AxisYRange;
+ via.Range AxisZRange
+ via.mat4 TargetMatrix;
+ };
+ }
+}
+
+namespace via {
+ namespace gui {
+ struct GUIManager{}
+ }
+
+ struct array : via.clr.ManagedObject 0x100 {
+ TypeDefinition* contained_type
+ int32_t count
+ int32_t allocated
+ };
+
+ struct JobSet {
+ struct Job{};
+ };
+
+ struct fixed_array_jobs {
+ via.JobSet.Job jobs[8];
+ };
+
+ struct JobSet {
+ struct JobThing 0x100 {
+ void* func;
+ };
+
+ struct Unk 0x100{
+ void** vtable;
+ via.Object* owner;
+ void* func
+ via.Object* owner2 + 8;
+ };
+
+ Unk* data;
+ };
+
+ namespace gui {
+ struct TransformObject {};
+ struct View {};
+
+ struct PrimitiveContext 0x300 {
+ int32_t gui_camera @ 0xEC
+ };
+
+ struct GUIMeshRenderer 0x100 {
+
+ };
+
+ struct GUI : via.Component 0x2D0 {
+ via.SceneView* SceneView;
+ void* GUIResource;
+ void* RtTextureHandle;
+ void* GUISound;
+ bool Enabled @ 0x50
+ bool FailedSetup;
+ uint8_t MaskLayerBits;
+ uint8_t MaskLayerBits2;
+ uint8_t MaskLayerBits3;
+ uint32_t RenderOutputID @ 0x58
+ float PlaySpeed @ 0x5C
+ uint32_t Segment;
+ uint32_t SoftParticleDistType @ 0x64
+ float SoftParticleDist;
+ View* View + 4;
+ };
+
+ struct Control : TransformObject 0x1B0 {
+ uint32_t StatePattern @ 0x124
+ float PlayFrame @ 0x128
+ via.vec4 ColorScale
+ via.vec3 ColorOffset
+ float Saturation
+ bool UseGUISound @ 0x188
+ };
+
+ struct Window : Control 0x1C0 {
+ bool Open
+ };
+
+ struct View : Window 0x1E0 {
+ bool Overlay @ 0x1C0
+ bool DepthTest;
+ bool DetoneMap;
+ bool CoordCorrection;
+ uint32_t ViewType @ 0x1C4;
+ uint32_t ReprojectionType+4;
+ via.Size ScreenSize ;
+ float BaseFps @ 0x1D8
+ bool UseGUICamera
+ };
+
+ struct PlayObject : via.clr.ManagedObject 0x50 {
+ wchar_t* Name [[utf16*]]
+ GUI* Component;
+ Control* Parent @ 0x28
+ PlayObject* Next;
+ PlayObject* Prev;
+
+ uint16_t Priority @ 0x42
+
+ uint8_t pad @ 0x47
+
+ // Render flags
+ uint64_t Visible : 1; // 1
+ uint64_t Visible2 : 1; // 2
+ uint64_t HitVisible : 1; // 3
+ uint64_t ShouldPlay : 1; // 4
+ uint64_t IsPlaying : 1; // 5
+ uint64_t IsInteractive : 1; // 6
+ uint64_t HasName : 1; // 7
+ uint64_t HasTag : 1; // 8
+ uint64_t SequenceAsset : 1; // 9
+ uint64_t IsPNG : 1; // 10
+ uint64_t IsJPG : 1; // 11
+ uint64_t LinearAlphaBlend : 1; // 12
+ uint64_t CompOwnership : 1; // 13
+ uint64_t DuplicateRoot : 1; // 14
+ uint64_t DataBind : 1; // 15
+ uint64_t DataBinding : 1; // 16
+ uint64_t AllocExData : 1; // 17
+ uint64_t NextStateEnable : 1; // 18
+ uint64_t _Unk : 1; // 19
+ uint64_t _Unk2 : 1; // 20
+ uint64_t ResolutionAdjust : 1; // 21
+ uint64_t UniqueVisible : 1; // 22
+ uint64_t EffectAlphaType : 1; // 23
+ uint64_t HasOverrideProp : 1; // 24
+ uint64_t IsCapturable : 1; // 25
+ uint64_t ForceInvisible : 1; // 26
+ uint64_t ClipPlaying : 1; // 27
+ uint64_t BlendType : 2; // 28-29
+ uint64_t MaskType : 3; // 30 - 32
+ uint64_t MaskMode : 3; // 33 - 35
+ uint64_t ColorType : 2; // 36 - 37
+ uint64_t ControlPoint : 4; // 38 - 41
+ uint64_t ResolutionCond : 2; // 42 - 43
+ uint64_t ResolutionScale : 2; // 44 - 45
+ uint64_t UVType : 2; // 46 - 47
+ uint64_t UnkFlags : 17;
+ };
+
+ struct TransformObject : PlayObject 0x120 {
+ };
+
+ struct GUIManager 0x1A0 {
+ via.JobSet update_task @ 0xe0
+ via.JobSet draw_task @ 0x120;
+ };
+ }
+}
+
+namespace via {
+struct Sphere 0x10 {
+ via.vec3 pos;
+ float r;
+};
+
+struct Capsule 0x30 {
+ via.vec4 p0;
+ via.vec4 p1;
+ float r;
+};
+
+namespace motion {
+struct ChainCollisionArray{};
+struct ChainCollisionData{};
+struct ChainCollisionTop{};
+
+struct ChainCollisions 0x180 {
+ uint32_t order;
+ via.Sphere sphere+0xc;
+ via.Capsule capsule;
+ via.vec4 offset @ 0xD0;
+ via.vec4 pair_offset;
+ via.Joint* joint @ 0x130
+ via.Joint* pair_joint
+ ChainCollisionData* data;
+ ChainCollisionTop* owner;
+ float radius;
+ float radius2;
+ int32_t d;
+ float lerp;
+ int32_t pad2;
+ uint32_t flags;
+ float scale;
+ bool valid;
+};
+
+struct ChainCollisionData {
+ void* sub_data;
+ via.vec3 pos;
+ via.vec3 pair_pos;
+ uint32_t joint_hash;
+ uint32_t pair_joint_hash;
+ float radius;
+ float lerp;
+ uint8_t shape_type;
+ uint8_t div;
+ uint8_t num_sub_data;
+ uint8_t unk;
+ uint32_t flags;
+ uint32_t unk;
+};
+
+struct ChainCollisionTop 0x100 {
+ ChainCollisions* collisions;
+ uint32_t num_collisions;
+ uint32_t allocated_collisions
+ void** owner_transform;
+ void* parent_transform;
+ float scale;
+ float parent_scale;
+};
+
+struct ChainCollisionArray {
+ ChainCollisionTop* collisions
+ int32_t num;
+ int32_t num_allocated;
+ int32_t preset_id;
+};
+
+struct SecondaryAnimation : via.Component 0x50 {
+ void* motion
+};
+
+struct Chain : via.motion.SecondaryAnimation 0x390 {
+
+ ChainCollisionArray CollisionData @ 0x140;
+ float BlendRate @ 0x22C
+ float FreezeRate @ 0x230
+ float StepFrame @ 0x280
+ uint32_t CalculateMode @ 0x378
+ uint32_t GravityCoord @ 0x380
+};
+}
+}
+
+struct RenderEntity : via.Component 0x498 {
+};
+
+struct RTInternal 0x1000 {
+ char* name @ 0x168 [[utf8*]]
+ uint32_t unkint @ 0x180
+ uint32_t unkint2
+ uint32_t RayTracingMode @ 0x188
+ uint32_t Spp
+ uint8_t unk2 @ 0x190
+
+ via.vec3 params @ 0x19c
+ bool use_transparent @ 0x1AC
+ bool specular_secondary_bounce @ 0x1Ae
+ bool use_no_movement_depth_comp
+ float normal_compare_thresh
+ bool use_diffuse_bounce_intensity
+ float diffuse_bounce_intensity_mult + 3
+ bool use_specular_bounce_intensity
+ float specular_bounce_intensity + 3
+ bool ray_trace_ambient_occlusion
+ float ray_trace_ratio + 3
+ float unkflooat
+ uint32_t sampling_pattern
+ float surfel_size @ 0x1DC
+ float asdfasdgadsg
+};
+
+struct RayTrace : RenderEntity 0x1000 {
+ RTInternal* impl;
+};
+
+namespace via {
+struct ManagedObjectArray {
+ via.clr.ManagedObject** objects;
+ uint32_t count;
+ uint32_t capacity;
+};
+
+struct UIntArray {
+ uint32_t* data;
+ uint64_t count;
+};
+
+struct UIntArrayArray {
+ UIntArray* data;
+ uint64_t count;
+};
+
+struct UInt8Array {
+ uint8_t* data;
+ uint64_t count;
+};
+
+struct IntArray {
+ int32_t* data;
+ uint64_t count;
+};
+
+namespace behaviortree {
+struct BehaviorTreeCoreHandleArray {};
+struct TreeNode{};
+struct TreeObject {};
+
+struct NodeArray {
+ TreeNode* nodes;
+ uint32_t count
+};
+
+struct NodeArray2 {
+ TreeNode** nodes;
+ uint32_t unk
+ uint32_t count
+};
+
+struct Selector : via.clr.ManagedObject 0x28 {
+ bool late_select @ 0x10
+ bool b2
+ bool b3
+ uint32_t* buf + 5
+ uint32_t bufsize;
+};
+
+struct SelectorFSM : Selector 0x60 {
+ TreeNode* owner_node @ 0x28
+ TreeNode* active_node
+ NodeArray2 next_nodes;
+ NodeArray2 node_choices;
+
+
+ bool illegal @ 0x58
+};
+
+struct Condition : via.clr.ManagedObject {
+};
+
+enum NodeStatus : uint32_t {
+ Off = 0,
+ On = 2
+};
+
+struct TreeNodeData {
+ uint32_t id
+ uint32_t id_2;
+ uint32_t attr
+ bool is_branch
+ bool is_end;
+ bool has_selector;
+
+ uint32_t parent @ 0x34;
+ uint32_t parent_2;
+
+ UIntArray children + 4;
+ UIntArray children2;
+ IntArray conditions;
+ UIntArray states;
+ UIntArray states_2;
+ IntArray transition_conditions;
+ UIntArray transition_ids;
+ UIntArray transition_attributes;
+ UIntArray actions;
+ UIntArray actions_2;
+
+ IntArray start_transitions @ 0x130
+ // aka the first choices when the node activates?
+ UIntArray start_states @ 0x140
+ UIntArray start_states_2
+ UIntArrayArray transition_events
+ UIntArrayArray start_transition_events
+ UIntArrayArray unkarray3
+ UIntArray tags
+
+ wchar_t name[12] @ 0x1a0 [[utf16*]]
+ uint32_t name_len;
+ uint32_t name_capacity;
+ uint32_t name_offset; // offset inside the in-memory structure...?
+ uint32_t name_murmur_hash;
+ uint32_t full_name_murmur_hash;
+ uint32_t pad__;
+};
+
+struct TreeNode 0xD0 {
+ uint64_t id
+ TreeNodeData* data;
+ TreeObject* owner;
+ uint16_t attr;
+ uint16_t unk_flags;
+ uint16_t pad[2];
+ SelectorFSM* selector;
+ Condition* selector_condition;
+ int32_t selector_condition_index;
+ int32_t priority;
+ TreeNode* node_parent;
+ uint32_t num_children
+ uint32_t num_actions + 0xC
+ uint32_t num_selector_callers
+ Condition* parent_condition;
+ int32_t parent_condition_index;
+ NodeStatus status1
+ NodeStatus status2
+
+ wchar_t name[12] + 4 [[utf16*]]
+ uint32_t name_len
+ uint32_t name_capacity
+
+ TreeNode* node_end;
+ TreeNode* node_restart;
+ TreeNode* node_end_notify;
+ TreeNode* node_end_selector;
+ TreeNode* node_active_child;
+};
+
+struct TreeObjectData 0x300 {
+ void* vftable;
+ TreeNodeData* nodes;
+ uint32_t node_count;
+ ManagedObjectArray static_selector_callers+4;
+ ManagedObjectArray static_actions;
+ ManagedObjectArray static_conditions;
+ ManagedObjectArray static_transitions;
+ ManagedObjectArray expression_tree_conditions;
+ ManagedObjectArray actions;
+ ManagedObjectArray conditions;
+ ManagedObjectArray transitions;
+
+ UInt8Array action_methods @ 0xF8;
+ UInt8Array static_action_methods
+};
+
+struct TreeObject 0xD8 {
+ void* vfptr;
+ TreeObjectData* data;
+ NodeArray nodes @ 0x10
+
+ ManagedObjectArray selectors+4
+ ManagedObjectArray actions @ 0x40
+ ManagedObjectArray conditions
+ ManagedObjectArray transitions
+ ManagedObjectArray expression_tree_conditions
+ UIntArray selector_nodes;
+ ManagedObjectArray delayed_actions;
+ ManagedObjectArray delayed_conditions;
+ ManagedObjectArray delayed_transitions;
+ TreeNode* root_node;
+};
+
+struct Core 0x1E0 {
+ void** vftable
+ TreeObject* tree_object
+};
+
+struct CoreHandle : via.clr.ManagedObject 0x220 {
+ Core core @ 0x18
+};
+
+struct BehaviorTreeData 0x100 {
+ void* vftable;
+ bool unk_bool
+ TreeObjectData data @ 0x10
+};
+
+struct BehaviorTree : via.Component {
+ BehaviorTreeCoreHandleArray trees @ 0x98
+};
+
+struct BehaviorTreeCoreHandleArray {
+ via.behaviortree.CoreHandle** handles;
+ uint32_t count;
+};
+}
+
+namespace motion {
+struct MotionFsm2Layer : via.behaviortree.CoreHandle {
+};
+
+struct MotionFsm2 : via.behaviortree.BehaviorTree 0x100 {
+};
+
+struct TransitionMap {
+ uint32_t id;
+ uint32_t index;
+};
+
+enum InterpolationMode : uint32_t {
+ Fuck = 1
+};
+
+struct TransitionData {
+ uint32_t id;
+ uint32_t end_type : 4
+ uint32_t interpolation_mode : 4
+ uint32_t prev_move_to_end : 1
+ uint32_t start_type : 4
+ uint32_t elapsed_time_zero : 1
+ uint32_t cont_on_layer : 1
+ uint32_t cont_on_layer_interp_curve : 4
+ float exit_frame
+ float start_frame
+ float interpolation_frame
+ uint32_t pad
+ uint32_t pad2
+ uint32_t pad3
+ uint32_t pad4
+};
+
+struct Data 0x100 {
+};
+
+struct MotionFsm2RawData {
+ uint8_t hdr[0x10]
+ uint8_t* file_data;
+ TransitionMap* transition_map;
+ TransitionData* transition_data;
+ Data* data;
+ uint32_t transition_map_count;
+ uint32_t transition_data_count;
+ uint32_t transition_data_start;
+};
+
+
+struct MotionFsm2Internal 0x180 {
+ void* vftable
+ MotionFsm2RawData* data;
+ via.behaviortree.BehaviorTreeData bhvt + 8;
+};
+
+struct MotionFsm2Resource 0x220 {
+ MotionFsm2Internal fsm2data @ 0x50
+};
+}
+
+}
+
+}
\ No newline at end of file
diff --git a/reversing/dd2.rcnet b/reversing/dd2.rcnet
new file mode 100644
index 000000000..42cd8d495
--- /dev/null
+++ b/reversing/dd2.rcnet
@@ -0,0 +1,13163 @@
+
+
+
+
+
+
+ bool
+ int8_t
+ int16_t
+ int32_t
+ int64_t
+ ptrdiff_t
+ uint8_t
+ uint16_t
+ uint32_t
+ uint64_t
+ size_t
+ float
+ double
+ Vector2f
+ Vector3f
+ Vector4f
+ Matrix3x3f
+ Matrix3x4f
+ Matrix4x4f
+ char
+ wchar_t
+ char32_t
+ void*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reversing/scripts/ida_namer/ida_namer.py b/reversing/scripts/ida_namer/ida_namer.py
index d7ed5586e..cb4e18ed3 100644
--- a/reversing/scripts/ida_namer/ida_namer.py
+++ b/reversing/scripts/ida_namer/ida_namer.py
@@ -5,7 +5,7 @@
import fire
import os
-def main(il2cpp_path="", out_path=""):
+def main(il2cpp_path=None, out_path=None, imagebase = None, new_imagebase = None):
if il2cpp_path is None:
print("--il2cpp_path not specified")
return
@@ -22,7 +22,7 @@ def main(il2cpp_path="", out_path=""):
il2cpp_dump = json.load(f)
out_str = ""
- bad_chars = ['<', '>', '`', ".", ","]
+ bad_chars = ['<', '>', '`', ".", ",", "[", "]", "|", ' ', '=']
num_methods_found = 0
num_reflection_methods_found = 0
@@ -43,32 +43,49 @@ def main(il2cpp_path="", out_path=""):
for bad_char in bad_chars:
method_name = method_name.replace(bad_char, "_")
- address = method_entry["function"] # is a string not an int
+ #print(hex(int("0x" + method_entry["function"], 16)))
+ address = str(hex(int("0x" + method_entry["function"], 16))) # is a string not an int
if address == "0" or address in seen_functions:
continue
seen_functions.add(address)
- out_str = out_str + "idc.MakeName(0x%s, '%s__%s')\n" % (address, class_name, method_name)
+ if imagebase is not None and new_imagebase is not None:
+ address_int = int("0x" + method_entry["function"], 16)
+ address_int = address_int - imagebase
+ address_int = address_int + new_imagebase
+ address = str(hex(address_int))
+
+ out_str = out_str + "idc.MakeName(%s, '%s__%s')\n" % (address, class_name, method_name)
num_methods_found = num_methods_found + 1
if "reflection_methods" in entry:
- for method_name, method_entry in entry["reflection_methods"].items():
- if method_entry is None:
- continue
-
- for bad_char in bad_chars:
- method_name = method_name.replace(bad_char, "_")
-
- if address == "0" or address in seen_functions:
- continue
-
- seen_functions.add(address)
-
- address = method_entry["function"] # is a string not an int
- out_str = out_str + "idc.MakeName(0x%s, 'reflection_methods_%s')\n" % (address, method_name)
- num_reflection_methods_found = num_reflection_methods_found + 1
+ try:
+ for method_name, method_entry in entry["reflection_methods"].items():
+ if method_entry is None:
+ continue
+
+ for bad_char in bad_chars:
+ method_name = method_name.replace(bad_char, "_")
+
+ address = str(hex(int("0x" + method_entry["function"], 16))) # is a string not an int
+
+ if address == "0" or address in seen_functions:
+ continue
+
+ seen_functions.add(address)
+
+ if imagebase is not None and new_imagebase is not None:
+ address_int = int("0x" + method_entry["function"], 16)
+ address_int = address_int - imagebase
+ address_int = address_int + new_imagebase
+ address = str(hex(address_int))
+
+ out_str = out_str + "idc.MakeName(%s, 'reflection_methods_%s')\n" % (address, method_name)
+ num_reflection_methods_found = num_reflection_methods_found + 1
+ except:
+ continue
except (KeyError, TypeError):
print("Error processing class %s" % class_name)
continue
diff --git a/shared/sdk/ReClass.hpp b/shared/sdk/ReClass.hpp
index bda6823e6..1cb7b33cb 100644
--- a/shared/sdk/ReClass.hpp
+++ b/shared/sdk/ReClass.hpp
@@ -8,6 +8,8 @@
#pragma pack(push, r1, 1)
#ifdef DMC5
#include "ReClass_Internal_DMC5.hpp"
+#elif defined(DD2)
+#include "ReClass_Internal_DD2.hpp" // Copy of SF6
#elif defined(SF6)
#include "ReClass_Internal_SF6.hpp"
#elif defined(MHRISE)
diff --git a/shared/sdk/ReClass_Internal_DD2.hpp b/shared/sdk/ReClass_Internal_DD2.hpp
new file mode 100644
index 000000000..888f77cdc
--- /dev/null
+++ b/shared/sdk/ReClass_Internal_DD2.hpp
@@ -0,0 +1,4063 @@
+// Created with ReClass.NET 1.2 by KN4CK3R
+
+class N0000000A
+{
+public:
+ char pad_0000[24]; //0x0000
+ class N0000005F *N0000000E; //0x0018
+ char pad_0020[280]; //0x0020
+}; //Size: 0x0138
+static_assert(sizeof(N0000000A) == 0x138);
+
+class N0000005F
+{
+public:
+ char pad_0000[16]; //0x0000
+ class N0000007A *N00000062; //0x0010
+ class N00000085 *N00000063; //0x0018
+ char pad_0020[168]; //0x0020
+}; //Size: 0x00C8
+static_assert(sizeof(N0000005F) == 0xC8);
+
+class N0000007A
+{
+public:
+ char pad_0000[40]; //0x0000
+ uint32_t N00000080; //0x0028
+ char pad_002C[28]; //0x002C
+}; //Size: 0x0048
+static_assert(sizeof(N0000007A) == 0x48);
+
+class N00000085
+{
+public:
+ char pad_0000[32]; //0x0000
+ uint32_t N0000008A; //0x0020
+ char pad_0024[36]; //0x0024
+}; //Size: 0x0048
+static_assert(sizeof(N00000085) == 0x48);
+
+class ManagedTypes
+{
+public:
+ class REClassInfo *types[2048]; //0x0000
+}; //Size: 0x4000
+static_assert(sizeof(ManagedTypes) == 0x4000);
+
+class N0000019E
+{
+public:
+ char pad_0000[104]; //0x0000
+ class N00000369 *N000001AC; //0x0068
+ class N000001C9 *N000001AD; //0x0070
+ char pad_0078[208]; //0x0078
+}; //Size: 0x0148
+static_assert(sizeof(N0000019E) == 0x148);
+
+class N000001C9
+{
+public:
+ class N0000019E *parent; //0x0000
+ void* N000001CB; //0x0008
+ char pad_0010[40]; //0x0010
+ void* N000001D1; //0x0038
+ char pad_0040[8]; //0x0040
+ void* N000001D3; //0x0048
+ char pad_0050[16]; //0x0050
+ class N000001FF *N000001D6; //0x0060
+ char pad_0068[8]; //0x0068
+}; //Size: 0x0070
+static_assert(sizeof(N000001C9) == 0x70);
+
+class N000001FF
+{
+public:
+ char pad_0000[120]; //0x0000
+}; //Size: 0x0078
+static_assert(sizeof(N000001FF) == 0x78);
+
+class N0000027C
+{
+public:
+ class N000002D1 *N0000027D; //0x0000
+ char pad_0008[104]; //0x0008
+ class N000002A6 *N0000028B; //0x0070
+ char pad_0078[200]; //0x0078
+}; //Size: 0x0140
+static_assert(sizeof(N0000027C) == 0x140);
+
+class N000002A6
+{
+public:
+ char pad_0000[328]; //0x0000
+}; //Size: 0x0148
+static_assert(sizeof(N000002A6) == 0x148);
+
+class N000002D1
+{
+public:
+ char pad_0000[72]; //0x0000
+}; //Size: 0x0048
+static_assert(sizeof(N000002D1) == 0x48);
+
+class N00000369
+{
+public:
+ class N0000039C *N0000036A; //0x0000
+ char pad_0008[320]; //0x0008
+}; //Size: 0x0148
+static_assert(sizeof(N00000369) == 0x148);
+
+class N0000039C
+{
+public:
+ char pad_0000[72]; //0x0000
+}; //Size: 0x0048
+static_assert(sizeof(N0000039C) == 0x48);
+
+class CameraTypePtr
+{
+public:
+ class REType *N000003AA; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(CameraTypePtr) == 0x8);
+
+class REType
+{
+public:
+ void *N000003B4; //0x0000
+ uint32_t classIndex; //0x0008
+ int16_t flags; //0x000C < 0 == NoneType, 1 == abstract, 2 == concrete, 256 == interface, 16384 == root
+ char pad_000E[2]; //0x000E
+ uint64_t fastClassIndex; //0x0010
+ uint32_t typeIndexProbably; //0x0018
+ char pad_001C[4]; //0x001C
+ char *name; //0x0020
+ char pad_0028[4]; //0x0028
+ uint32_t size; //0x002C
+ uint32_t typeCRC; //0x0030
+ uint32_t miscFlags; //0x0034
+ class REType *super; //0x0038
+ class REType *childType; //0x0040
+ class REType *chainType; //0x0048
+ class REFieldList *fields; //0x0050
+ class REClassInfo *classInfo; //0x0058 is a managed type if this is not null
+}; //Size: 0x0060
+static_assert(sizeof(REType) == 0x60);
+
+class N000003DE
+{
+public:
+ char pad_0000[8]; //0x0000
+ class N000008E5 *N000003E0; //0x0008
+ char pad_0010[312]; //0x0010
+}; //Size: 0x0148
+static_assert(sizeof(N000003DE) == 0x148);
+
+class REObject
+{
+public:
+ class REObjectInfo *info; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(REObject) == 0x8);
+
+class REManagedObject : public REObject
+{
+public:
+ uint32_t referenceCount; //0x0008
+ int16_t N000071AE; //0x000C
+ char pad_000E[2]; //0x000E
+}; //Size: 0x0010
+static_assert(sizeof(REManagedObject) == 0x10);
+
+class REComponent : public REManagedObject
+{
+public:
+ class REGameObject *ownerGameObject; //0x0010
+ class REComponent *childComponent; //0x0018
+ class REComponent *prevComponent; //0x0020
+ class REComponent *nextComponent; //0x0028
+}; //Size: 0x0030
+static_assert(sizeof(REComponent) == 0x30);
+
+class RECamera : public REComponent
+{
+public:
+ float nearClipPlane; //0x0030
+ float farClipPlane; //0x0034
+ float fov; //0x0038
+ float lookAtDistance; //0x003C
+ bool verticalEnable; //0x0040
+ char pad_0041[3]; //0x0041
+ float aspectRatio; //0x0044
+ int32_t N00000451; //0x0048
+ char pad_004C[4]; //0x004C
+ int32_t cameraType; //0x0050
+ char pad_0054[12]; //0x0054
+ wchar_t *cameraName; //0x0060
+ uint32_t N00000455; //0x0068
+ char pad_006C[32]; //0x006C
+ float N00000D40; //0x008C
+ float N0000045A; //0x0090
+ float N00000D43; //0x0094
+ float N0000045B; //0x0098
+ char pad_009C[252]; //0x009C
+}; //Size: 0x0198
+static_assert(sizeof(RECamera) == 0x198);
+
+class REGameObject : public REManagedObject
+{
+public:
+ bool shouldUpdate; //0x0010
+ bool shouldDraw; //0x0011
+ bool shouldUpdateSelf; //0x0012
+ bool shouldDrawSelf; //0x0013
+ bool shouldSelect; //0x0014
+ char pad_0015[3]; //0x0015
+ class RETransform *transform; //0x0018
+ class REFolder *folder; //0x0020
+ class SystemString *name; //0x0028 This can either be a pointer to the name or embedded directly
+ uint32_t N00000DDA; //0x0030
+ float timescale; //0x0034
+}; //Size: 0x0038
+static_assert(sizeof(REGameObject) == 0x38);
+
+class REFieldList
+{
+public:
+ uint32_t unknown; //0x0000
+ char pad_0004[4]; //0x0004
+ class REFieldList *next; //0x0008
+ class FunctionHolder **(*methods)[4000]; //0x0010
+ int32_t num; //0x0018
+ int32_t maxItems; //0x001C
+ class REVariableList *variables; //0x0020
+ void* deserializer; //0x0028
+ uint32_t N00000730; //0x0030
+}; //Size: 0x0034
+static_assert(sizeof(REFieldList) == 0x34);
+
+class N0000074B
+{
+public:
+ class FunctionHolder **N0000074C[2048]; //0x0000
+}; //Size: 0x4000
+static_assert(sizeof(N0000074B) == 0x4000);
+
+class N00000756
+{
+public:
+ class FunctionHolder *func; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(N00000756) == 0x8);
+
+class FunctionHolder
+{
+public:
+ class FunctionDescriptor *descriptor; //0x0000
+ char pad_0008[24]; //0x0008
+}; //Size: 0x0020
+static_assert(sizeof(FunctionHolder) == 0x20);
+
+class FunctionDescriptor
+{
+public:
+ char *name; //0x0000
+ class MethodParamInfo (*params)[256]; //0x0008
+ char pad_0010[4]; //0x0010
+ int32_t numParams; //0x0014
+ void* functionPtr; //0x0018
+ uint32_t returnTypeFlag; //0x0020 AND 1F = via::reflection::TypeKind
+ uint32_t typeIndex; //0x0024
+ char pad_0028[8]; //0x0028
+ char *returnTypeName; //0x0030
+ char pad_0038[72]; //0x0038
+}; //Size: 0x0080
+static_assert(sizeof(FunctionDescriptor) == 0x80);
+
+class REJointArray
+{
+public:
+ class REArrayBase *data; //0x0000
+ class JointMatrices *matrices; //0x0008
+ char pad_0010[256]; //0x0010
+}; //Size: 0x0110
+static_assert(sizeof(REJointArray) == 0x110);
+
+class RETransform : public REComponent
+{
+public:
+ Vector4f position; //0x0030
+ Vector4f angles; //0x0040
+ Vector4f scale; //0x0050
+ class REScene *scene; //0x0060
+ class RETransform *child; //0x0068
+ class RETransform *next; //0x0070
+ class RETransform *parentTransform; //0x0078
+ Matrix4x4f worldTransform; //0x0080
+ class N00007EEE *N000007D8; //0x00C0
+ int32_t N00000804; //0x00C8
+ uint32_t tickCount; //0x00CC
+ bool sameJointsConstraint; //0x00D0
+ bool N0000081A; //0x00D1
+ char pad_00D2[1]; //0x00D2
+ bool absoluteScaling; //0x00D3
+ char pad_00D4[4]; //0x00D4
+ class REJointArray joints; //0x00D8
+ char pad_01E8[8]; //0x01E8
+}; //Size: 0x01F0
+static_assert(sizeof(RETransform) == 0x1F0);
+
+class N0000B6D9
+{
+public:
+ class REManagedObject *object; //0x0000
+ uint32_t v1; //0x0008
+ uint32_t v2; //0x000C
+ uint32_t v3; //0x0010
+ uint32_t v4; //0x0014
+}; //Size: 0x0018
+static_assert(sizeof(N0000B6D9) == 0x18);
+
+class REString
+{
+public:
+ char pad_0000[24]; //0x0000
+ int32_t length; //0x0018 if len >= 12, is a pointer
+ int32_t maxLength; //0x001C
+}; //Size: 0x0020
+static_assert(sizeof(REString) == 0x20);
+
+class REScene : public REManagedObject
+{
+public:
+ char pad_0010[3]; //0x0010
+ bool enabled; //0x0013
+ bool monitor; //0x0014
+ bool mainScene; //0x0015
+ char pad_0016[6]; //0x0016
+ uint32_t frameCount; //0x001C
+ float timescale; //0x0020
+ char pad_0024[4]; //0x0024
+ class N0000B6D9 someHugeArray[65536]; //0x0028
+ char pad_180028[1176]; //0x180028
+ class RETransform *N0000B786; //0x1804C0
+ class REFolder *firstFolder; //0x1804C8
+ class REString name; //0x1804D0
+ char pad_1804F0[720]; //0x1804F0
+ int64_t N0000B7E3; //0x1807C0
+ class REManagedObject *N0000B7E4; //0x1807C8
+}; //Size: 0x1807D0
+static_assert(sizeof(REScene) == 0x1807D0);
+
+class N0000091E
+{
+public:
+ class N0000092A *N00000920; //0x0000
+ char pad_0008[56]; //0x0008
+}; //Size: 0x0040
+static_assert(sizeof(N0000091E) == 0x40);
+
+class N0000092A
+{
+public:
+ char pad_0000[72]; //0x0000
+}; //Size: 0x0048
+static_assert(sizeof(N0000092A) == 0x48);
+
+class N00000965
+{
+public:
+ class REObjectInfo *object; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000965) == 0x48);
+
+class REObjectInfo
+{
+public:
+ class REClassInfo *classInfo; //0x0000
+ void* validator; //0x0008
+ void* N0000246A; //0x0010
+ void* getType; //0x0018
+ void* toString; //0x0020
+ void* copy; //0x0028
+ void* N00000995; //0x0030
+ void* N00000996; //0x0038
+ void* N00000997; //0x0040
+ void* N00000998; //0x0048
+ void* N00000999; //0x0050
+ void* getSize; //0x0058
+ void* N0000099B; //0x0060
+ void* N0000099C; //0x0068
+ void* N0000246C; //0x0070
+ void* N0000246D; //0x0078
+ void* N0000246E; //0x0080
+ void* N0000246F; //0x0088
+ void* N00002470; //0x0090
+ void* N00002471; //0x0098
+ void* N00002472; //0x00A0
+ void* N00002473; //0x00A8
+}; //Size: 0x00B0
+static_assert(sizeof(REObjectInfo) == 0xB0);
+
+class REClassInfo
+{
+public:
+ uint16_t typeIndex; //0x0000 index into global type array
+ char pad_0002[5]; //0x0002
+ uint8_t objectFlags; //0x0007 flags >> 5 == 1 == normal type ? ??
+ uint32_t _; //0x0008
+ uint32_t elementBitField; //0x000C >> 4 is the value type index (RETypeImpl)
+ uint32_t typeFlags; //0x0010 System::Reflection::TypeAttributes or via::clr::TypeFlag
+ uint32_t size; //0x0014
+ uint32_t fqnHash; //0x0018
+ uint32_t typeCRC; //0x001C
+ uint32_t defaultCtor; //0x0020
+ uint32_t vt; //0x0024 vtable byte pool
+ uint32_t memberMethod; //0x0028
+ uint32_t memberField; //0x002C
+ uint32_t memberProp; //0x0030
+ uint32_t memberEvent; //0x0034
+ int32_t interfaces; //0x0038
+ int32_t generics; //0x003C byte pool
+ class RETypeCLR *type; //0x0040
+ class REObjectInfo *parentInfo; //0x0048
+}; //Size: 0x0050
+static_assert(sizeof(REClassInfo) == 0x50);
+
+class N00000CF1
+{
+public:
+ class REObjectInfo *N00000CF2; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000CF1) == 0x48);
+
+class RERenderOutput : public REComponent
+{
+public:
+ char pad_0030[144]; //0x0030
+}; //Size: 0x00C0
+static_assert(sizeof(RERenderOutput) == 0xC0);
+
+class N00000D1D
+{
+public:
+ class REObjectInfo *object; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000D1D) == 0x48);
+
+class REFolder : public REManagedObject
+{
+public:
+ char pad_0010[8]; //0x0010
+ int32_t N00000D4E; //0x0018
+ char pad_001C[8]; //0x001C
+ float N00005BA5; //0x0024
+ class REString name; //0x0028
+ class REString name2; //0x0048
+ class REString name3; //0x0068
+ class REFolder *parentFolder; //0x0088
+ class REFolder *childFolder; //0x0090
+ class REFolder *childFolder2; //0x0098
+ char pad_00A0[40]; //0x00A0
+ class REScene *scene; //0x00C8
+}; //Size: 0x00D0
+static_assert(sizeof(REFolder) == 0xD0);
+
+class N00000D61
+{
+public:
+ class REObjectInfo *N00000D62; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000D61) == 0x48);
+
+class N00000DFF
+{
+public:
+ class REObjectInfo *N00000E00; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000DFF) == 0x48);
+
+class N00000E15
+{
+public:
+ class REObjectInfo *N00000E16; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000E15) == 0x48);
+
+class N00000E2B
+{
+public:
+ class REObjectInfo *N00000E2C; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00000E2B) == 0x48);
+
+class N00004041
+{
+public:
+ class REObjectInfo *N00004042; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00004041) == 0x48);
+
+class ASDF
+{
+public:
+ class RETransform *N0000406D; //0x0000
+ char pad_0008[80]; //0x0008
+}; //Size: 0x0058
+static_assert(sizeof(ASDF) == 0x58);
+
+class SceneObjectList : public ASDF
+{
+public:
+ char pad_0058[48]; //0x0058
+}; //Size: 0x0088
+static_assert(sizeof(SceneObjectList) == 0x88);
+
+class N00004087
+{
+public:
+ class REObjectInfo *N00004089; //0x0000
+ char pad_0008[56]; //0x0008
+}; //Size: 0x0040
+static_assert(sizeof(N00004087) == 0x40);
+
+class REToneMapping : public REComponent
+{
+public:
+ void *N0000410F; //0x0030
+ float N00004110; //0x0038
+ bool enabled; //0x003C
+ char pad_003D[3]; //0x003D
+}; //Size: 0x0040
+static_assert(sizeof(REToneMapping) == 0x40);
+
+class REBehavior : public REComponent
+{
+public:
+ uint8_t N000076CE; //0x0030
+ bool N000017DF; //0x0031
+ bool enabled; //0x0032
+ uint8_t N00000836; //0x0033
+ uint32_t N00007712; //0x0034
+ uint32_t N000076CF; //0x0038
+ uint32_t N0000705D; //0x003C update cost?
+ char pad_0040[8]; //0x0040
+}; //Size: 0x0048
+static_assert(sizeof(REBehavior) == 0x48);
+
+class RECameraParam : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ uint32_t N000076C0; //0x0050
+ float fov; //0x0054 fov
+ float param2; //0x0058
+ float farClip; //0x005C far clip dist
+ bool useParam; //0x0060
+ char pad_0061[15]; //0x0061
+}; //Size: 0x0070
+static_assert(sizeof(RECameraParam) == 0x70);
+
+class RopewayPlayerCameraController : public REBehavior
+{
+public:
+ char pad_0048[24]; //0x0048
+ Vector4f pivotPosition; //0x0060
+ Vector4f pivotRotation; //0x0070
+ Vector4f worldPosition; //0x0080
+ Vector4f worldRotation; //0x0090 quaternion
+ char pad_00A0[24]; //0x00A0
+ class RECamera *activeCamera; //0x00B8
+ class REJoint *joint; //0x00C0
+ class RECameraParam *cameraParam; //0x00C8
+ class ValueTriggerBoolean *N0000772F; //0x00D0
+ char pad_00D8[8]; //0x00D8
+ class REBehavior *cascade; //0x00E0
+ class RECameraParam *cameraParam2; //0x00E8
+ char pad_00F0[8]; //0x00F0
+ class DampingFloat *controlDamping; //0x00F8
+ class DampingFloat *controlDamping2; //0x0100
+ class TwirlerCameraSettings *cameraLimitSettings; //0x0108
+ bool isNotUsingWeapon; //0x0110 IDK, but it gets set to true when not using a weap.
+ char pad_0111[7]; //0x0111
+ float pitch; //0x0118
+ float yaw; //0x011C
+ float pitchVelocity; //0x0120
+ float yawVelocity; //0x0124
+ class DampingFloat *controlDamping3; //0x0128
+ class DampingFloat *controlDamping4; //0x0130
+ char pad_0138[32]; //0x0138
+ class DampingFloat *controlDamping5; //0x0158
+ char pad_0160[16]; //0x0160
+ uint32_t cameraMode; //0x0170 3 == in weapon?
+ char pad_0174[4]; //0x0174
+ class RopewayCameraInterpolationPrame *N0000773F; //0x0178
+ char pad_0180[72]; //0x0180
+ uint32_t N00007748; //0x01C8
+ char pad_01CC[52]; //0x01CC
+ float N00002602; //0x0200
+ char pad_0204[28]; //0x0204
+}; //Size: 0x0220
+static_assert(sizeof(RopewayPlayerCameraController) == 0x220);
+
+class REJoint : public REManagedObject
+{
+public:
+ class RETransform *parentTransform; //0x0010
+ class REJointDesc *info; //0x0018
+ Vector4f posOffset; //0x0020
+ Vector3f anglesOffset; //0x0030
+ float N000026BC; //0x003C
+ float N000026B6; //0x0040
+ float N000026BF; //0x0044
+ float N000026B7; //0x0048
+ char pad_004C[4]; //0x004C
+ int32_t N00006E8E; //0x0050
+ float N00006E97; //0x0054
+ int32_t N00006E8F; //0x0058
+ uint32_t N0000B861; //0x005C
+}; //Size: 0x0060
+static_assert(sizeof(REJoint) == 0x60);
+
+class ValueTriggerBoolean : public REManagedObject
+{
+public:
+ bool current; //0x0010
+ bool old; //0x0011
+ char pad_0012[2]; //0x0012
+ uint32_t N0000785B; //0x0014
+}; //Size: 0x0018
+static_assert(sizeof(ValueTriggerBoolean) == 0x18);
+
+class DampingFloat : public REManagedObject
+{
+public:
+ float current; //0x0010
+ float source; //0x0014
+ float dampingTime; //0x0018
+ float dampingRate; //0x001C
+ char pad_0020[16]; //0x0020
+ uint32_t N00007885; //0x0030
+ float target; //0x0034
+ float N00007886; //0x0038
+ float N00007891; //0x003C
+ float progressRate; //0x0040
+}; //Size: 0x0044
+static_assert(sizeof(DampingFloat) == 0x44);
+
+class TwirlerCameraSettings : public REManagedObject
+{
+public:
+ wchar_t *settingsPath; //0x0010
+ char pad_0018[16]; //0x0018
+ uint32_t N000078BE; //0x0028
+ uint32_t N000078DE; //0x002C
+ float N000078BF; //0x0030
+ char pad_0034[4]; //0x0034
+ class REAnimationCurve *animationCurve; //0x0038
+ class REAnimationCurve *animationCurve2; //0x0040
+ float N000078C2; //0x0048
+ float N000078E4; //0x004C
+ float N000078C3; //0x0050
+ float N000078E7; //0x0054
+ float cameraSensitivity; //0x0058
+ char pad_005C[20]; //0x005C
+ float sensitivityScale; //0x0070
+ char pad_0074[4]; //0x0074
+}; //Size: 0x0078
+static_assert(sizeof(TwirlerCameraSettings) == 0x78);
+
+class REAnimationCurve : public REManagedObject
+{
+public:
+ uint32_t length; //0x0010
+ float loopStartTime; //0x0014
+ float loopEndTime; //0x0018
+ float minValue; //0x001C
+ float maxValue; //0x0020
+ uint16_t loopWrapNo; //0x0024
+ char pad_0026[2]; //0x0026
+ bool enableClamp; //0x0028
+ char pad_0029[3]; //0x0029
+ float N00007918; //0x002C
+ class CurveKeyFrames *keyframes; //0x0030
+ class CurveKeyFrames *keyframes2; //0x0038
+ char pad_0040[16]; //0x0040
+}; //Size: 0x0050
+static_assert(sizeof(REAnimationCurve) == 0x50);
+
+class REActorMotion : public REComponent
+{
+public:
+ class REMotion *motion; //0x0030
+ char pad_0038[16]; //0x0038
+ class N00007A09 *N00007950; //0x0048
+ char pad_0050[32]; //0x0050
+}; //Size: 0x0070
+static_assert(sizeof(REActorMotion) == 0x70);
+
+class REAnimation : public REComponent
+{
+public:
+ char pad_0030[20]; //0x0030
+ uint32_t playState; //0x0044
+ char pad_0048[4]; //0x0048
+ float currentPlaySpeed; //0x004C
+ float secondaryPlaySpeed; //0x0050
+ float unk54; //0x0054
+ char pad_0058[4]; //0x0058
+ float updateIntervalFrame; //0x005C
+ char pad_0060[8]; //0x0060
+ bool enabled; //0x0068
+ bool playReset; //0x0069
+ bool N00002408; //0x006A
+ bool N00002411; //0x006B
+ bool N00002409; //0x006C
+ bool visualUpdate; //0x006D
+ bool skipUpdate; //0x006E
+ bool N000023ED; //0x006F
+ bool N0000B974; //0x0070
+ bool N00002415; //0x0071
+ bool alwaysCallBeginEnd; //0x0072
+ bool N00002402; //0x0073
+ bool afterParentAnimation; //0x0074
+ bool forceSkipUpdate; //0x0075
+ bool enableIntervalUpdateScondaryAnimation; //0x0076
+ char pad_0077[1]; //0x0077
+}; //Size: 0x0078
+static_assert(sizeof(REAnimation) == 0x78);
+
+class REMotion : public REAnimation
+{
+public:
+ char pad_0078[48]; //0x0078
+ class N0000256E *joints; //0x00A8
+ uint32_t numJoints; //0x00B0
+ char pad_00B4[4]; //0x00B4
+ class REGameObject *gameObject; //0x00B8
+ char pad_00C0[89]; //0x00C0
+ bool updateRootOnly; //0x0119
+ char pad_011A[174]; //0x011A
+ class JointList *joints2; //0x01C8
+ int32_t numJoints2; //0x01D0
+ char pad_01D4[512]; //0x01D4
+ float N00002458; //0x03D4
+ char pad_03D8[32]; //0x03D8
+ uint32_t intervalUpdateOption; //0x03F8
+ char pad_03FC[4]; //0x03FC
+}; //Size: 0x0400
+static_assert(sizeof(REMotion) == 0x400);
+
+class N00007A09
+{
+public:
+ class REActorLayer *N00007A0A; //0x0000
+ char pad_0008[64]; //0x0008
+}; //Size: 0x0048
+static_assert(sizeof(N00007A09) == 0x48);
+
+class REActorLayer : public REManagedObject
+{
+public:
+ char pad_0010[56]; //0x0010
+}; //Size: 0x0048
+static_assert(sizeof(REActorLayer) == 0x48);
+
+class JointList
+{
+public:
+ Matrix4x4f joints[2048]; //0x0000
+}; //Size: 0x20000
+static_assert(sizeof(JointList) == 0x20000);
+
+class N00007E99
+{
+public:
+ Matrix4x4f N00007E9A; //0x0000
+}; //Size: 0x0040
+static_assert(sizeof(N00007E99) == 0x40);
+
+class N00007EEE
+{
+public:
+ class N00003730 *N00007EEF; //0x0000
+ char pad_0008[128]; //0x0008
+}; //Size: 0x0088
+static_assert(sizeof(N00007EEE) == 0x88);
+
+class DotNetString_Implementation : public REManagedObject
+{
+public:
+ class REManagedObject *N000036B9; //0x0010
+ char pad_0018[8]; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(DotNetString_Implementation) == 0x20);
+
+class DotNetGenericList : public REManagedObject
+{
+public:
+ class REArrayBase *data; //0x0010
+ char pad_0018[72]; //0x0018
+}; //Size: 0x0060
+static_assert(sizeof(DotNetGenericList) == 0x60);
+
+class N00003730
+{
+public:
+ char pad_0000[136]; //0x0000
+}; //Size: 0x0088
+static_assert(sizeof(N00003730) == 0x88);
+
+class N00003745
+{
+public:
+ class REJoint *joints[2048]; //0x0000
+}; //Size: 0x4000
+static_assert(sizeof(N00003745) == 0x4000);
+
+class N0000379E
+{
+public:
+ Matrix4x4f worldMatrix; //0x0000
+}; //Size: 0x0040
+static_assert(sizeof(N0000379E) == 0x40);
+
+class JointMatrices
+{
+public:
+ class N0000379E data[2048]; //0x0000
+}; //Size: 0x20000
+static_assert(sizeof(JointMatrices) == 0x20000);
+
+class REJointDesc
+{
+public:
+ wchar_t *name; //0x0000
+ uint32_t nameHash; //0x0008
+ int16_t parentJoint; //0x000C minus 1
+ int16_t jointNumber; //0x000E
+ Vector4f offset; //0x0010
+ float N000037B4; //0x0020
+ float N0000377B; //0x0024
+ float N00003770; //0x0028
+ float N0000377E; //0x002C
+ float N00003771; //0x0030
+ float N00003781; //0x0034
+ float N00003772; //0x0038
+ float N00003784; //0x003C
+}; //Size: 0x0040
+static_assert(sizeof(REJointDesc) == 0x40);
+
+class PhysicsCollidableBase : public REComponent
+{
+public:
+ char pad_0030[32]; //0x0030
+}; //Size: 0x0050
+static_assert(sizeof(PhysicsCollidableBase) == 0x50);
+
+class PhysicsCharacterController : public PhysicsCollidableBase
+{
+public:
+ uint32_t N00006EB8; //0x0050
+ int32_t movementFlags; //0x0054
+ float height; //0x0058
+ float radius; //0x005C
+ uint32_t N00006EBA; //0x0060
+ uint32_t N00001828; //0x0064
+ float N00006EBB; //0x0068
+ float slopeLimit; //0x006C
+ float volumeGrowth; //0x0070
+ float movementThreshold; //0x0074
+ float N00006EE9; //0x0078
+ float slideMovementLimit; //0x007C
+ char pad_0080[8]; //0x0080
+ int32_t N00006EEB; //0x0088
+ char pad_008C[4]; //0x008C
+ Vector3f gravityDir; //0x0090
+ char pad_009C[20]; //0x009C
+ uint16_t groupId; //0x00B0
+ char pad_00B2[2]; //0x00B2
+ bool localMode; //0x00B4
+ char pad_00B5[1]; //0x00B5
+ bool ignoreRotation; //0x00B6
+ bool ignoreParentRotation; //0x00B7
+ char pad_00B8[136]; //0x00B8
+ Vector3f position; //0x0140
+ char pad_014C[156]; //0x014C
+ class PhysicsCollidable *collidable; //0x01E8
+ class PhysicsFilterInfo *filterInfo; //0x01F0
+ char pad_01F8[56]; //0x01F8
+}; //Size: 0x0230
+static_assert(sizeof(PhysicsCharacterController) == 0x230);
+
+class RopewayCameraSystem : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ float motionCameraSpeedScale; //0x0050
+ char pad_0054[1]; //0x0054
+ uint8_t N000009D7; //0x0055
+ char pad_0056[2]; //0x0056
+ class DotNetGenericList *cameraControllerInfos; //0x0058
+ class RopewayCameraInterpolateSettings *cameraInterpSettings; //0x0060
+ float rayCastStartOffset; //0x0068
+ float maxViewShieldLength; //0x006C
+ class CollisionSystemAsyncCastRayHandle *castHandleTerrain; //0x0070
+ class CollisionSystemAsyncCastSphereHandle *castHandleCharacter; //0x0078
+ class CollisionSystemAsyncCastRayHandle *castHandleAim; //0x0080
+ class REGameObject *cameraGameObject; //0x0088
+ char pad_0090[8]; //0x0090
+ class RopewayPlayerCameraController *cameraController; //0x0098
+ class RopewayPlayerCameraController *previousController; //0x00A0
+ class REManagedObject *N00006F3D; //0x00A8
+ class DampingFloat *damping; //0x00B0
+ class ValueTriggerBoolean *isExistStickInput; //0x00B8
+ class RECamera *mainCamera; //0x00C0
+ class DotNetGenericList *fixCameraIdentifiers; //0x00C8
+ class DotNetGenericList *cameraGateInfoContainers; //0x00D0
+ class RERenderCaptureToTexture *N00006F43; //0x00D8
+ class REJoint *playerJoint; //0x00E0
+ class RopewayMainCameraController *mainCameraController; //0x00E8
+ bool isUseWideMonitor; //0x00F0
+ char pad_00F1[7]; //0x00F1
+ class REManagedObject *N00003EEC; //0x00F8
+ bool N00003EED; //0x0100
+ char pad_0101[71]; //0x0101
+ class DotNetGenericList *stringList; //0x0148
+ char pad_0150[8]; //0x0150
+}; //Size: 0x0158
+static_assert(sizeof(RopewayCameraSystem) == 0x158);
+
+class N000070F5
+{
+public:
+ Matrix3x4f localMatrix; //0x0000
+}; //Size: 0x0030
+static_assert(sizeof(N000070F5) == 0x30);
+
+class RopewayIkController : public REBehavior
+{
+public:
+ char pad_0048[12]; //0x0048
+ uint8_t updateTiming; //0x0054
+ char pad_0055[3]; //0x0055
+ uint8_t enableIkBits; //0x0058
+ char pad_0059[3]; //0x0059
+ int8_t defaultSkipIkBits; //0x005C
+ char pad_005D[3]; //0x005D
+ class REArrayThing *N000071C9; //0x0060
+ class REArrayThing *N000071CA; //0x0068
+ int32_t ikLegKind; //0x0070
+ float fooatAlignBorderAngle; //0x0074
+ class SystemString *someString; //0x0078
+ bool useSkipIkForLeg; //0x0080
+ char pad_0081[3]; //0x0081
+ int32_t skipIkForLegBits; //0x0084
+ bool useFootLockForLeg; //0x0088
+ bool unlockFootOnAdjustTerrain; //0x0089
+ bool unlockFootOnPressing; //0x008A
+ bool unlockFootOnMotionInterpolating; //0x008B
+ bool unlockFootOnPreventeringPenetrate; //0x008C
+ char pad_008D[3]; //0x008D
+ int16_t monitoringMotionLayerNoForLeg; //0x0090
+ char pad_0092[2]; //0x0092
+ int32_t spineKind; //0x0094
+ char pad_0098[8]; //0x0098
+ class SystemString *someString2; //0x00A0
+ char pad_00A8[40]; //0x00A8
+ class SystemString *someString3; //0x00D0
+ float armDampingRate; //0x00D8
+ float armDampingTime; //0x00DC
+ float defaultArmActivateTime; //0x00E0
+ float defaultArmResetTime; //0x00E4
+ float armRayRadius; //0x00E8
+ float armRayIntervalFrame; //0x00EC
+ int32_t wristKind; //0x00F0
+ char pad_00F4[4]; //0x00F4
+ class N0000A9C1 *armFitIkUserData; //0x00F8
+ char pad_0100[8]; //0x0100
+ int32_t ikWristSolveMode; //0x0108
+ int32_t liftUpWristOnGround; //0x010C
+ bool useSkipIkForWrist; //0x0110
+ char pad_0111[3]; //0x0111
+ int32_t skipIkForWristBits; //0x0114
+ float skipIkDampingRateForWrist; //0x0118
+ bool useFootLockForWrist; //0x011C
+ char pad_011D[3]; //0x011D
+ int32_t footLockOptionBitsForWrist; //0x0120
+ int16_t monitoringMotionLayerNoForWrist; //0x0124
+ char pad_0126[2]; //0x0126
+ bool setupped; //0x0128
+ bool setuppedHumanRetargetIk; //0x0129
+ char pad_012A[2]; //0x012A
+ int32_t legStepStatus; //0x012C
+ bool alignedFoot; //0x0130
+ char pad_0131[3]; //0x0131
+ float alignedFootAngle; //0x0134
+ char pad_0138[4]; //0x0138
+ bool alignedForeFoot; //0x013C
+ char pad_013D[3]; //0x013D
+ float N0000A953; //0x0140
+ int32_t appliedSkipIkForLegBits; //0x0144
+ int32_t appliedFootLockForLegBits; //0x0148
+ char pad_014C[4]; //0x014C
+ void *lookAtTarget; //0x0150
+ bool autoLookAtEnable; //0x0158
+ char pad_0159[15]; //0x0159
+ class REArrayThing *N0000A958; //0x0168
+ int32_t appliedSkipIkForWristBits; //0x0170
+ int32_t appliedFootLockForWristBits; //0x0174
+ class IkControlStatusArray *controlStatuses; //0x0178
+ char pad_0180[16]; //0x0180
+ class REManagedObject *N0000A95D; //0x0190
+ char pad_0198[24]; //0x0198
+ class REManagedObject *N0000A961; //0x01B0
+ class REManagedObject *N0000A962; //0x01B8
+ char pad_01C0[8]; //0x01C0
+ class ObjectPointer *jointPtr; //0x01C8
+ char pad_01D0[216]; //0x01D0
+}; //Size: 0x02A8
+static_assert(sizeof(RopewayIkController) == 0x2A8);
+
+class UserData : public REManagedObject
+{
+public:
+ class REString name; //0x0010
+}; //Size: 0x0030
+static_assert(sizeof(UserData) == 0x30);
+
+class N0000A9C1 : public UserData
+{
+public:
+ class REManagedObject *N0000A9C3; //0x0030
+}; //Size: 0x0038
+static_assert(sizeof(N0000A9C1) == 0x38);
+
+class SystemString : public REManagedObject
+{
+public:
+ int32_t size; //0x0010
+ wchar_t data[256]; //0x0014
+}; //Size: 0x0214
+static_assert(sizeof(SystemString) == 0x214);
+
+class N0000AA93 : public REManagedObject
+{
+public:
+ class REClassInfo *N0000AA95; //0x0010
+ char pad_0018[112]; //0x0018
+}; //Size: 0x0088
+static_assert(sizeof(N0000AA93) == 0x88);
+
+class N0000AAAC : public REManagedObject
+{
+public:
+ char pad_0010[48]; //0x0010
+}; //Size: 0x0040
+static_assert(sizeof(N0000AAAC) == 0x40);
+
+class ObjectPointer : public REManagedObject
+{
+public:
+ class REClassInfo *classInfo; //0x0010
+ uint32_t num1; //0x0018
+ uint32_t num2; //0x001C
+ class REManagedObject *object; //0x0020
+ char pad_0028[112]; //0x0028
+}; //Size: 0x0098
+static_assert(sizeof(ObjectPointer) == 0x98);
+
+class REVariableList
+{
+public:
+ char pad_0000[8]; //0x0000
+ class N0000ADA4 *data; //0x0008
+ int32_t num; //0x0010
+ int32_t maxItems; //0x0014
+}; //Size: 0x0018
+static_assert(sizeof(REVariableList) == 0x18);
+
+class N0000ADA4
+{
+public:
+ class VariableDescriptor *descriptors[256]; //0x0000
+}; //Size: 0x0800
+static_assert(sizeof(N0000ADA4) == 0x800);
+
+class VariableDescriptor
+{
+public:
+ char *name; //0x0000
+ uint32_t nameHash; //0x0008
+ uint16_t flags1; //0x000C
+ uint16_t N00008140; //0x000E
+ void* function; //0x0010
+ int32_t flags; //0x0018 (flags AND 0x1F) gives var type (via::clr::reflection::TypeKind)
+ uint32_t typeFqn; //0x001C
+ char *typeName; //0x0020
+ int32_t getter; //0x0028
+ union //0x002C 1 == pointer? 3 == builtin?
+ {
+ uint32_t variableType; //0x0000
+ uint32_t destructor; //0x0000
+ };
+ class StaticVariableDescriptor *staticVariableData; //0x0030
+ int32_t setter; //0x0038
+ int32_t attributes; //0x003C
+ char pad_0040[8]; //0x0040
+}; //Size: 0x0048
+static_assert(sizeof(VariableDescriptor) == 0x48);
+
+class N0000B627
+{
+public:
+ char pad_0000[8]; //0x0000
+ class N0000B632 *N0000B629; //0x0008
+ char pad_0010[56]; //0x0010
+}; //Size: 0x0048
+static_assert(sizeof(N0000B627) == 0x48);
+
+class N0000B632
+{
+public:
+ char pad_0000[136]; //0x0000
+}; //Size: 0x0088
+static_assert(sizeof(N0000B632) == 0x88);
+
+class REMotionStructure : public REComponent
+{
+public:
+}; //Size: 0x0030
+static_assert(sizeof(REMotionStructure) == 0x30);
+
+class SkeletonResourceHandle
+{
+public:
+ class N0000B89B *N0000B899; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(SkeletonResourceHandle) == 0x8);
+
+class JointDescDTbl
+{
+public:
+ class JointDescData *data; //0x0000
+ uint32_t num; //0x0008
+ char pad_000C[4]; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(JointDescDTbl) == 0x10);
+
+class REMotionDummySkeleton : public REMotionStructure
+{
+public:
+ class SkeletonResourceHandle skeletonResourceHandle; //0x0030
+ class JointDescDTbl jointDescTbl; //0x0038
+ char pad_0048[8]; //0x0048
+}; //Size: 0x0050
+static_assert(sizeof(REMotionDummySkeleton) == 0x50);
+
+class N0000B89B
+{
+public:
+ wchar_t name[64]; //0x0008
+
+ virtual void Function0();
+ virtual void Function1();
+ virtual void Function2();
+ virtual void Function3();
+ virtual void Function4();
+ virtual void Function5();
+ virtual void Function6();
+ virtual void Function7();
+ virtual void Function8();
+ virtual void Function9();
+}; //Size: 0x0088
+static_assert(sizeof(N0000B89B) == 0x88);
+
+class JointDescData
+{
+public:
+ class REJointDesc data[256]; //0x0000
+}; //Size: 0x4000
+static_assert(sizeof(JointDescData) == 0x4000);
+
+class StaticVariableDescriptor
+{
+public:
+ uint16_t ownerTypeIndex; //0x0000
+ char pad_0002[6]; //0x0002
+ uint32_t variableIndex; //0x0008 index into some global array...?
+ uint16_t N00000839; //0x000C
+ int16_t N000009F5; //0x000E
+ uint32_t staticVariableOffset; //0x0010 of
+ char pad_0014[1]; //0x0014
+}; //Size: 0x0015
+static_assert(sizeof(StaticVariableDescriptor) == 0x15);
+
+class REMotionCamera : public REAnimation
+{
+public:
+ char pad_0078[872]; //0x0078
+ Vector4f position; //0x03E0
+ Vector4f orientation; //0x03F0
+ char pad_0400[68]; //0x0400
+}; //Size: 0x0444
+static_assert(sizeof(REMotionCamera) == 0x444);
+
+class RopewayMainCameraController : public REBehavior
+{
+public:
+ char pad_0048[9]; //0x0048
+ bool updateCamera; //0x0051
+ char pad_0052[6]; //0x0052
+ class RopewayCameraStatus *cameraStatus; //0x0058
+ Vector4f cameraObjectPosition; //0x0060
+ Vector4f cameraObjectRotation; //0x0070
+ Vector4f cameraPosition; //0x0080
+ Vector4f cameraRotation; //0x0090
+ char pad_00A0[4]; //0x00A0
+ float fov; //0x00A4
+ bool controllerEnabled; //0x00A8
+ char pad_00A9[3]; //0x00A9
+ float switchBusyTime; //0x00AC
+ float switchInterpolationTime; //0x00B0
+ char pad_00B4[4]; //0x00B4
+ class REAnimationCurve *N00000817; //0x00B8
+ class DotNetGenericList *cameraShakes; //0x00C0
+ class REGameObject *mainCameraObject; //0x00C8
+ class RECamera *mainCamera; //0x00D0
+ class REJoint *N0000081B; //0x00D8
+ class AppliedCameraShakeParam *appliedCameraShakeParam; //0x00E0
+ char pad_00E8[88]; //0x00E8
+}; //Size: 0x0140
+static_assert(sizeof(RopewayMainCameraController) == 0x140);
+
+class N00000878
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(N00000878) == 0x8);
+
+class N0000087A : public N00000878
+{
+public:
+}; //Size: 0x0008
+static_assert(sizeof(N0000087A) == 0x8);
+
+class N000008E5
+{
+public:
+ char pad_0000[328]; //0x0000
+}; //Size: 0x0148
+static_assert(sizeof(N000008E5) == 0x148);
+
+class AppliedCameraShakeParam : public REManagedObject
+{
+public:
+ char pad_0010[48]; //0x0010
+}; //Size: 0x0040
+static_assert(sizeof(AppliedCameraShakeParam) == 0x40);
+
+class FieldInfoPtr
+{
+public:
+ class FieldInfoArray *N00000A1A; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(FieldInfoPtr) == 0x8);
+
+class FieldInfo
+{
+public:
+ uint16_t ownerType; //0x0000
+ int16_t indexIntoSomeOtherArray; //0x0002
+ uint16_t N0000133D; //0x0004
+ uint16_t N00001380; //0x0006
+ char pad_0008[8]; //0x0008
+ uint8_t N0000135D; //0x0010
+ char pad_0011[7]; //0x0011
+ void* get; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(FieldInfo) == 0x20);
+
+class FieldInfoArray
+{
+public:
+ class FieldInfo N00000A1D[2000000]; //0x0000
+}; //Size: 0x3D09000
+static_assert(sizeof(FieldInfoArray) == 0x3D09000);
+
+class TypeListArrayPtr
+{
+public:
+ class TypeListArray *N00000A47; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(TypeListArrayPtr) == 0x8);
+
+class TypeListArray
+{
+public:
+ class REClassInfo N00000A51[100000]; //0x0000
+}; //Size: 0x7A1200
+static_assert(sizeof(TypeListArray) == 0x7A1200);
+
+class GlobalArrayData2
+{
+public:
+ char pad_0000[104]; //0x0000
+ class N00000A8A *N00000A6A; //0x0068
+ class REObjectInfo *objectInfo; //0x0070
+}; //Size: 0x0078
+static_assert(sizeof(GlobalArrayData2) == 0x78);
+
+class N00000A8A
+{
+public:
+ char pad_0000[72]; //0x0000
+}; //Size: 0x0048
+static_assert(sizeof(N00000A8A) == 0x48);
+
+class SomeGlobalArrayThingPtr
+{
+public:
+ class N00000AA4 *N00000A9B; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(SomeGlobalArrayThingPtr) == 0x8);
+
+class N00000CB2
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(N00000CB2) == 0x8);
+
+class N00001242
+{
+public:
+ char pad_0000[56]; //0x0000
+}; //Size: 0x0038
+static_assert(sizeof(N00001242) == 0x38);
+
+class ContainerThing
+{
+public:
+ class N00001283 *data; //0x0000
+ uint32_t size; //0x0008
+ char pad_000C[4]; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(ContainerThing) == 0x10);
+
+class N00000AA4
+{
+public:
+ class N00000CB2 N00000AA7[127]; //0x0008
+ char pad_0400[280]; //0x0400
+ class N00001242 N00000ACB[256]; //0x0518
+ char pad_3D18[88]; //0x3D18
+ class ContainerThing staticVariableLists[6]; //0x3D70
+ char pad_3DD0[15008]; //0x3DD0
+
+ virtual void Function0();
+ virtual void Function1();
+ virtual void Function2();
+ virtual void Function3();
+ virtual void Function4();
+ virtual void Function5();
+ virtual void Function6();
+ virtual void Function7();
+ virtual void Function8();
+ virtual void Function9();
+}; //Size: 0x7870
+static_assert(sizeof(N00000AA4) == 0x7870);
+
+class N00001283
+{
+public:
+ class StaticVariables *N00001284[100000]; //0x0000
+}; //Size: 0xC3500
+static_assert(sizeof(N00001283) == 0xC3500);
+
+class StaticVariables
+{
+public:
+ char pad_0000[72]; //0x0000
+}; //Size: 0x0048
+static_assert(sizeof(StaticVariables) == 0x48);
+
+class StaticVariables_RopewayCameraSystem
+{
+public:
+ int32_t N000012C8; //0x0000
+ int32_t N000012D1; //0x0004
+ float N000012C9; //0x0008
+ float N000012D4; //0x000C
+ float N000012CA; //0x0010
+ float N000012D7; //0x0014
+ float N000012CB; //0x0018
+ char pad_001C[2148]; //0x001C
+}; //Size: 0x0880
+static_assert(sizeof(StaticVariables_RopewayCameraSystem) == 0x880);
+
+class RERenderLayer : public REManagedObject
+{
+public:
+ char pad_0010[104]; //0x0010
+}; //Size: 0x0078
+static_assert(sizeof(RERenderLayer) == 0x78);
+
+class RenderBounds
+{
+public:
+ Vector2f top; //0x0000
+ Vector2f bottom; //0x0008
+}; //Size: 0x0010
+static_assert(sizeof(RenderBounds) == 0x10);
+
+class RERenderLayerScene : public RERenderLayer
+{
+public:
+ class RECamera *camera; //0x0078
+ char pad_0080[8]; //0x0080
+ class RenderTargetState *targetStates[16]; //0x0088
+ char pad_0108[4544]; //0x0108
+ class RenderBounds renderBounds[3]; //0x12C8
+ char pad_12F8[224]; //0x12F8
+}; //Size: 0x13D8
+static_assert(sizeof(RERenderLayerScene) == 0x13D8);
+
+class RenderTargetState
+{
+public:
+ char pad_0008[56]; //0x0008
+
+ virtual void Function0();
+ virtual void Function1();
+ virtual void Function2();
+ virtual void Function3();
+ virtual void Function4();
+ virtual void Function5();
+ virtual void Function6();
+ virtual void Function7();
+ virtual void Function8();
+ virtual void Function9();
+}; //Size: 0x0040
+static_assert(sizeof(RenderTargetState) == 0x40);
+
+class N000026F0
+{
+public:
+ char pad_0000[76]; //0x0000
+ float N0000270E; //0x004C
+ class REJoint *joint; //0x0050
+ char pad_0058[48]; //0x0058
+}; //Size: 0x0088
+static_assert(sizeof(N000026F0) == 0x88);
+
+class RopewaySystemRingBufferController : public REBehavior
+{
+public:
+ char pad_0048[128]; //0x0048
+}; //Size: 0x00C8
+static_assert(sizeof(RopewaySystemRingBufferController) == 0xC8);
+
+class RopewayIlluminationManagerPtr
+{
+public:
+ class RopewayIlluminationManager *N000013CC; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(RopewayIlluminationManagerPtr) == 0x8);
+
+class RopewayIlluminationManager : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class REManagedObject *N000013E2; //0x0050
+ class DotNetGenericDictionary *mapIdsToIlluminationContainer; //0x0058
+ uint32_t shouldUseFlashlight; //0x0060
+ uint32_t someCounter; //0x0064
+ bool shouldUseFlashlight2; //0x0068
+ char pad_0069[7]; //0x0069
+ class REManagedObject *N000013FB; //0x0070
+ class DotNetGenericList *N000013F4; //0x0078
+}; //Size: 0x0080
+static_assert(sizeof(RopewayIlluminationManager) == 0x80);
+
+class RopewayStayAreaController : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ uint32_t N00001410; //0x0050
+ uint32_t N00001444; //0x0054
+ uint32_t areaId; //0x0058
+ uint32_t N0000143A; //0x005C
+ uint32_t N00001412; //0x0060
+ uint32_t N00001446; //0x0064
+ uint32_t previousAreaId; //0x0068
+ uint32_t N0000143D; //0x006C
+ uint32_t areaId3; //0x0070
+ uint32_t N00001441; //0x0074
+ uint32_t areaId4; //0x0078
+ char pad_007C[116]; //0x007C
+}; //Size: 0x00F0
+static_assert(sizeof(RopewayStayAreaController) == 0xF0);
+
+class RopewayCameraSystemPtr
+{
+public:
+ class RopewayCameraSystem *N000013EC; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(RopewayCameraSystemPtr) == 0x8);
+
+class CameraControllerList : public REManagedObject
+{
+public:
+ char pad_0010[16]; //0x0010
+ class RopewayCameraControllerInfo *N00001407[64]; //0x0020
+}; //Size: 0x0220
+static_assert(sizeof(CameraControllerList) == 0x220);
+
+class RopewayCameraControllerInfo : public REManagedObject
+{
+public:
+ char pad_0010[8]; //0x0010
+ class REGameObject *controllerObject; //0x0018
+ char pad_0020[8]; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(RopewayCameraControllerInfo) == 0x28);
+
+class DotNetGenericDictionary : public REManagedObject
+{
+public:
+ class REArrayBase *keys; //0x0010
+ class REArrayBase *values; //0x0018
+ char pad_0020[16]; //0x0020
+ class REManagedObject *equalityComparer; //0x0030
+}; //Size: 0x0038
+static_assert(sizeof(DotNetGenericDictionary) == 0x38);
+
+class N00001440 : public REManagedObject
+{
+public:
+ char pad_0010[64]; //0x0010
+}; //Size: 0x0050
+static_assert(sizeof(N00001440) == 0x50);
+
+class N0000144E : public REManagedObject
+{
+public:
+ char pad_0010[64]; //0x0010
+}; //Size: 0x0050
+static_assert(sizeof(N0000144E) == 0x50);
+
+class RopewayCameraInterpolationPrame : public REManagedObject
+{
+public:
+ class REGameObject *owner; //0x0010
+ class RopewayCameraPositionParam *posParam1; //0x0018
+ class RopewayCameraPositionParam *posParam2; //0x0020
+ class DampingFloat *dampingFloat; //0x0028
+}; //Size: 0x0030
+static_assert(sizeof(RopewayCameraInterpolationPrame) == 0x30);
+
+class RopewayCameraPositionParam : public REManagedObject
+{
+public:
+ class REGameObject *attachedOwner; //0x0010
+ class REJoint *attachedJoint; //0x0018
+ class RopewayCameraTransitionParam *transitionParam; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(RopewayCameraPositionParam) == 0x28);
+
+class RopewayCameraTransitionParam : public REManagedObject
+{
+public:
+ class RopewayPlayerCameraParam *playerCameraParam; //0x0010
+ char pad_0018[136]; //0x0018
+}; //Size: 0x00A0
+static_assert(sizeof(RopewayCameraTransitionParam) == 0xA0);
+
+class RopewayPlayerCameraParam : public REManagedObject
+{
+public:
+ class REAnimationCurve *curve1; //0x0010
+ Vector2f vec; //0x0018
+ class REAnimationCurve *curve2; //0x0020
+ class REAnimationCurve *curve3; //0x0028
+ class SystemString *name; //0x0030
+ char pad_0038[104]; //0x0038
+}; //Size: 0x00A0
+static_assert(sizeof(RopewayPlayerCameraParam) == 0xA0);
+
+class RopewaySetPostEffectParam : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ uint32_t N0000156E; //0x0050
+ uint32_t N000015AE; //0x0054
+ char pad_0058[24]; //0x0058
+ class DotNetGenericDictionary *N00001572; //0x0070
+ char pad_0078[56]; //0x0078
+}; //Size: 0x00B0
+static_assert(sizeof(RopewaySetPostEffectParam) == 0xB0);
+
+class RopewayPostEffectController : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class REAnimationCurve *curve1; //0x0050
+ class REAnimationCurve *curve2; //0x0058
+ class DotNetGenericList *N000015B6; //0x0060
+ char pad_0068[24]; //0x0068
+}; //Size: 0x0080
+static_assert(sizeof(RopewayPostEffectController) == 0x80);
+
+class RESecondaryAnimation : public REComponent
+{
+public:
+ class REMotion *motion; //0x0030
+ char pad_0038[4]; //0x0038
+ int16_t priority; //0x003C
+ char pad_003E[2]; //0x003E
+ int32_t updateTiming; //0x0040
+ bool enabled; //0x0044
+ char pad_0045[3]; //0x0045
+}; //Size: 0x0048
+static_assert(sizeof(RESecondaryAnimation) == 0x48);
+
+class ActorLayerList
+{
+public:
+ class N00001630 *data; //0x0000
+ uint32_t numLayers; //0x0008
+ uint32_t numAllocated; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(ActorLayerList) == 0x10);
+
+class REActorMotionCamera : public RESecondaryAnimation
+{
+public:
+ class ActorLayerList layers; //0x0048
+}; //Size: 0x0058
+static_assert(sizeof(REActorMotionCamera) == 0x58);
+
+class N00001630
+{
+public:
+ class REActorLayer *layers[2048]; //0x0000
+}; //Size: 0x4000
+static_assert(sizeof(N00001630) == 0x4000);
+
+class RopewaySweetLightController : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ uint32_t N00001470; //0x0050
+ uint32_t N0000152A; //0x0054
+ uint32_t N00001471; //0x0058
+ uint32_t N0000152D; //0x005C
+ class RERenderSpotLight *renderSpotLight; //0x0060
+ class RERenderProjectionSpotlight *renderProjectionSpotLight; //0x0068
+ class RopewaySpotLightParam *param1; //0x0070
+ class RopewaySpotLightParam *param2; //0x0078
+ char pad_0080[8]; //0x0080
+}; //Size: 0x0088
+static_assert(sizeof(RopewaySweetLightController) == 0x88);
+
+class RERenderLight : public REComponent
+{
+public:
+ Vector4f color; //0x0030
+ char pad_0040[24]; //0x0040
+ float brightness; //0x0058
+ float bounceIntensity; //0x005C
+ float tempature; //0x0060
+ float minRoughness; //0x0064
+ char pad_0068[4]; //0x0068
+ uint32_t importantLevel; //0x006C
+ char pad_0070[48]; //0x0070
+ Vector3f activeColor; //0x00A0
+ float N00001546; //0x00AC
+ char pad_00B0[82]; //0x00B0
+ bool forceShadowCacheEnable; //0x0102
+ char pad_0103[1]; //0x0103
+ bool blackBodyRadiation; //0x0104
+ char pad_0105[107]; //0x0105
+}; //Size: 0x0170
+static_assert(sizeof(RERenderLight) == 0x170);
+
+class RERenderSpotLight : public RERenderLight
+{
+public:
+ char pad_0170[9]; //0x0170
+ bool shadowEnable; //0x0179
+ char pad_017A[22]; //0x017A
+ int32_t shadowCastFlags; //0x0190
+ char pad_0194[420]; //0x0194
+ float N0000150F; //0x0338
+ float N00001597; //0x033C
+ float radius; //0x0340
+ float illuminanceThreshold; //0x0344
+ float cone; //0x0348
+ float N0000159D; //0x034C
+ float N00001512; //0x0350
+ float shadowNearPlane; //0x0354
+ float detailShadow; //0x0358
+ bool N00002304; //0x035C
+ char pad_035D[3]; //0x035D
+ int32_t N00001514; //0x0360
+ char pad_0364[28]; //0x0364
+}; //Size: 0x0380
+static_assert(sizeof(RERenderSpotLight) == 0x380);
+
+class RERenderProjectionSpotlight : public RERenderSpotLight
+{
+public:
+ char pad_0380[16]; //0x0380
+}; //Size: 0x0390
+static_assert(sizeof(RERenderProjectionSpotlight) == 0x390);
+
+class RopewaySpotLightParam : public REManagedObject
+{
+public:
+ char pad_0010[80]; //0x0010
+ uint32_t N00002282; //0x0060
+ char pad_0064[92]; //0x0064
+ float N000022BD; //0x00C0
+ float N000022DF; //0x00C4
+ float N000022BE; //0x00C8
+ float N000022E3; //0x00CC
+ float N000022BF; //0x00D0
+ float N000022E5; //0x00D4
+ char pad_00D8[184]; //0x00D8
+}; //Size: 0x0190
+static_assert(sizeof(RopewaySpotLightParam) == 0x190);
+
+class RopewaySweetLightManager : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class SweetLightContextContainer *contexts; //0x0050
+ class RopewaySweetLightParam *param1; //0x0058
+ class RopewaySweetLightParam *param2; //0x0060
+ uint8_t N0000154E; //0x0068
+ char pad_0069[7]; //0x0069
+ class REManagedObject *N0000154F; //0x0070
+}; //Size: 0x0078
+static_assert(sizeof(RopewaySweetLightManager) == 0x78);
+
+class RopewaySweetLightParam : public REManagedObject
+{
+public:
+ class RopewaySpotLightParam *spotlight; //0x0010
+}; //Size: 0x0018
+static_assert(sizeof(RopewaySweetLightParam) == 0x18);
+
+class RopewaySweetLightManagerContext : public REManagedObject
+{
+public:
+ class RopewaySweetLightController *controller; //0x0010
+ class RopewaySpotLightParam *param1; //0x0018
+ class RopewaySpotLightParam *param2; //0x0020
+ char pad_0028[8]; //0x0028
+ class DotNetGenericList *N000015B1; //0x0030
+ class RopewaySpotLightParam *param3; //0x0038
+ char pad_0040[8]; //0x0040
+}; //Size: 0x0048
+static_assert(sizeof(RopewaySweetLightManagerContext) == 0x48);
+
+class REArrayBase : public REManagedObject
+{
+public:
+ class REClassInfo *containedType; //0x0010
+ int32_t num1; //0x0018
+ int32_t numElements; //0x001C
+}; //Size: 0x0020
+static_assert(sizeof(REArrayBase) == 0x20);
+
+class SweetLightContextContainer : public REArrayBase
+{
+public:
+ class RopewaySweetLightManagerContext *data[2]; //0x0020
+}; //Size: 0x0030
+static_assert(sizeof(SweetLightContextContainer) == 0x30);
+
+class REArrayThing : public REArrayBase
+{
+public:
+ char pad_0020[1096]; //0x0020
+}; //Size: 0x0468
+static_assert(sizeof(REArrayThing) == 0x468);
+
+class RopewaySurvivorCharacterController : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ class REJoint *constJoint; //0x0058
+ class DampingFloat *radius; //0x0060
+ class DampingFloat *height; //0x0068
+ class DampingVec3 *offset; //0x0070
+ uint32_t offsetType; //0x0078
+ char pad_007C[4]; //0x007C
+ class DotNetGenericList *controllerRequests; //0x0080
+ char pad_0088[8]; //0x0088
+ class PhysicsCharacterController *physicsCharacterController; //0x0090
+ class PhysicsRequestSetCollider *physicsRequestSetCollider; //0x0098
+ class RopewaySurvivorCharacterControllerUserData *userData; //0x00A0
+ float N00001647; //0x00A8
+ char pad_00AC[4]; //0x00AC
+ class PhysicsCollider *collider; //0x00B0
+}; //Size: 0x00B8
+static_assert(sizeof(RopewaySurvivorCharacterController) == 0xB8);
+
+class DampingVec3 : public REManagedObject
+{
+public:
+ Vector3f N000015BC; //0x0010
+ char pad_001C[20]; //0x001C
+ float N000015BF; //0x0030
+ float N000015DB; //0x0034
+ char pad_0038[16]; //0x0038
+ uint32_t N000015C2; //0x0048
+ char pad_004C[4]; //0x004C
+ Vector3f target; //0x0050
+ char pad_005C[4]; //0x005C
+ float N000015C4; //0x0060
+ float N000015EA; //0x0064
+ char pad_0068[8]; //0x0068
+ float N000015C8; //0x0070
+ char pad_0074[4]; //0x0074
+}; //Size: 0x0078
+static_assert(sizeof(DampingVec3) == 0x78);
+
+class PhysicsRequestSetCollider : public PhysicsCollidableBase
+{
+public:
+ char pad_0050[56]; //0x0050
+}; //Size: 0x0088
+static_assert(sizeof(PhysicsRequestSetCollider) == 0x88);
+
+class RopewaySurvivorCharacterControllerUserData : public UserData // what a NAME
+{
+public:
+ class REPtrArray *data; //0x0030
+ float N00001634; //0x0038
+ float N0000165B; //0x003C
+}; //Size: 0x0040
+static_assert(sizeof(RopewaySurvivorCharacterControllerUserData) == 0x40);
+
+class REPtrArray : public REArrayBase
+{
+public:
+ class REManagedObject *data[2048]; //0x0020
+}; //Size: 0x4020
+static_assert(sizeof(REPtrArray) == 0x4020);
+
+class SurvivorCharacterControllerUserDataParam : public REManagedObject
+{
+public:
+ char pad_0010[8]; //0x0010
+ class SystemString *string1; //0x0018
+ char pad_0020[8]; //0x0020
+ class SystemString *string2; //0x0028
+ class SurvivorControllerUserDataShape *shape; //0x0030
+}; //Size: 0x0038
+static_assert(sizeof(SurvivorCharacterControllerUserDataParam) == 0x38);
+
+class SurvivorControllerUserDataShape : public REManagedObject
+{
+public:
+ class SystemString *jointName; //0x0010
+ uint32_t N000016B6; //0x0018
+ char pad_001C[20]; //0x001C
+ float f1; //0x0030
+ float f2; //0x0034
+ uint32_t N000016BA; //0x0038
+ char pad_003C[4]; //0x003C
+}; //Size: 0x0040
+static_assert(sizeof(SurvivorControllerUserDataShape) == 0x40);
+
+class PhysicsColliderVector
+{
+public:
+ class N000017C9 *data; //0x0000
+ uint32_t numElements; //0x0008
+ uint32_t numAllocated; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(PhysicsColliderVector) == 0x10);
+
+class PhysicsCollidable : public REManagedObject
+{
+public:
+ uint32_t N000016F4; //0x0010
+ char pad_0014[4]; //0x0014
+ class PhysicsCapsuleShape *shape1; //0x0018
+ class PhysicsCapsuleShape *shape2; //0x0020
+ char pad_0028[8]; //0x0028
+ class PhysicsFilterInfo *filterInfo; //0x0030
+ char pad_0038[8]; //0x0038
+ class REGameObject *owner; //0x0040
+ uint32_t N000016FB; //0x0048
+ uint32_t N000017B7; //0x004C
+ uint32_t N000016FC; //0x0050
+ char pad_0054[4]; //0x0054
+ class PhysicsColliderVector colliderControllers; //0x0058 interesting
+ char pad_0068[16]; //0x0068
+}; //Size: 0x0078
+static_assert(sizeof(PhysicsCollidable) == 0x78);
+
+class PhysicsCollider : public PhysicsCollidable
+{
+public:
+ char pad_0078[288]; //0x0078
+}; //Size: 0x0198
+static_assert(sizeof(PhysicsCollider) == 0x198);
+
+class PhysicsShape : public REManagedObject
+{
+public:
+ char pad_0010[24]; //0x0010
+ class PhysicsCollider *parentCollider; //0x0028
+ char pad_0030[16]; //0x0030
+ Vector4f vec1; //0x0040
+ Vector4f vec2; //0x0050
+}; //Size: 0x0060
+static_assert(sizeof(PhysicsShape) == 0x60);
+
+class PhysicsConvexShape : public PhysicsShape
+{
+public:
+}; //Size: 0x0060
+static_assert(sizeof(PhysicsConvexShape) == 0x60);
+
+class PhysicsCapsuleShape : public PhysicsConvexShape
+{
+public:
+ Vector4f vec3; //0x0060
+ Vector4f vec4; //0x0070
+ float radius; //0x0080
+ float N0000176C; //0x0084
+ float N00001734; //0x0088
+ char pad_008C[4]; //0x008C
+}; //Size: 0x0090
+static_assert(sizeof(PhysicsCapsuleShape) == 0x90);
+
+class PhysicsFilterInfo : public REManagedObject
+{
+public:
+ uint32_t layer; //0x0010
+ uint32_t group; //0x0014
+ uint32_t subGroup; //0x0018
+ uint32_t ignoreSubGroup; //0x001C
+ int32_t maskBits; //0x0020
+ char pad_0024[12]; //0x0024
+}; //Size: 0x0030
+static_assert(sizeof(PhysicsFilterInfo) == 0x30);
+
+class N000017C9
+{
+public:
+ class REBehavior *element[2048]; //0x0000
+}; //Size: 0x4000
+static_assert(sizeof(N000017C9) == 0x4000);
+
+class RopewaySurvivorTargetBankController : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ class REMotion *motion; //0x0058
+ char pad_0060[32]; //0x0060
+ class RopewaySurvivorPlayerCondition *playerCondition; //0x0080
+}; //Size: 0x0088
+static_assert(sizeof(RopewaySurvivorTargetBankController) == 0x88);
+
+class RopewaySurvivorPlayerCondition : public REBehavior
+{
+public:
+ char pad_0048[12]; //0x0048
+ int32_t survivorType; //0x0054
+ bool ignoreBlow; //0x0058
+ bool ignoreGrapple; //0x0059
+ char pad_005A[6]; //0x005A
+ class RopewaySurvivorDefineDamageParam *damageParam; //0x0060
+ bool isEvent; //0x0068
+ bool isLight; //0x0069
+ bool isCombat; //0x006A
+ bool isTension; //0x006B
+ bool isTense; //0x006C
+ bool isForceCaution; //0x006D
+ bool isForceDanger; //0x006E
+ char pad_006F[5]; //0x006F
+ bool enableFPSCamera; //0x0074
+ char pad_0075[7]; //0x0075
+ bool useTranceiver; //0x007C
+ char pad_007D[1]; //0x007D
+ bool forceUseFlashlight; //0x007E
+ bool manuallyLight; //0x007F
+ float autoHealStartTimer; //0x0080
+ float autoHealTimer; //0x0084
+ float poisonTimer; //0x0088
+ float poisonAutoRecoveryTimer; //0x008C
+ float combatTimer; //0x0090
+ float coughTimer; //0x0094
+ float warmTimer; //0x0098
+ float unknownfloat; //0x009C
+ class RopewayTimer *lightSwitchTimer; //0x00A0
+ class RopewayTimer *burnTimer; //0x00A8
+ class SurvivorConditionTimerTrigger *wetTimerTrigger; //0x00B0
+ class SurvivorConditionTimerTrigger *dryTimerTrigger; //0x00B8
+ char pad_00C0[16]; //0x00C0
+ class REGameObject *flashlight; //0x00D0
+ char pad_00D8[88]; //0x00D8
+ void *N0000828D; //0x0130
+ void *N0000828E; //0x0138
+ void *N0000828F; //0x0140
+ void *N00008290; //0x0148
+ void *N00008291; //0x0150
+ bool exceptional; //0x0158
+ char pad_0159[3]; //0x0159
+ int32_t wallMaterial; //0x015C
+ class REJoint *playerJoint; //0x0160
+ char pad_0168[8]; //0x0168
+ class SystemAction *actionVital; //0x0170
+ class RopewaySurvivorPlayerController *playerController; //0x0178
+ class RopewaySurvivorPlayerActionOrderer *actionOrderer; //0x0180
+ char pad_0188[16]; //0x0188
+ class RopewaySurvivorInventory *inventory; //0x0198
+ class RopewaySurvivorEquipment *equipment; //0x01A0
+ class REMotion *playerMotion; //0x01A8
+ char pad_01B0[136]; //0x01B0
+ class ActionTriggerInt *hitPointVitalTrigger; //0x0238
+ class ActionTriggerInt *situationTrigger; //0x0240
+ bool onFlashlight; //0x0248
+ bool N00005FF6; //0x0249
+ char pad_024A[134]; //0x024A
+ bool isPoison; //0x02D0
+ char pad_02D1[3]; //0x02D1
+ float dopingTimer; //0x02D4
+ char pad_02D8[64]; //0x02D8
+}; //Size: 0x0318
+static_assert(sizeof(RopewaySurvivorPlayerCondition) == 0x318);
+
+class RopewayHandHeldItem : public REBehavior
+{
+public:
+ char pad_0048[64]; //0x0048
+}; //Size: 0x0088
+static_assert(sizeof(RopewayHandHeldItem) == 0x88);
+
+class RopewayFlashLight : public RopewayHandHeldItem
+{
+public:
+ char pad_0088[168]; //0x0088
+ Vector4f targetPosition; //0x0130
+ char pad_0140[60]; //0x0140
+}; //Size: 0x017C
+static_assert(sizeof(RopewayFlashLight) == 0x17C);
+
+class RopewayTimerBase : public REManagedObject
+{
+public:
+ int32_t mode; //0x0010
+ float timeLimit; //0x0014
+}; //Size: 0x0018
+static_assert(sizeof(RopewayTimerBase) == 0x18);
+
+class RopewayTimer : public RopewayTimerBase
+{
+public:
+ bool completeTrigger; //0x0018
+ char pad_0019[3]; //0x0019
+ int32_t functionType; //0x001C
+ float transitTime; //0x0020
+ bool completed; //0x0024
+ char pad_0025[3]; //0x0025
+ int16_t completedCount; //0x0028
+ char pad_002A[2]; //0x002A
+}; //Size: 0x002C
+static_assert(sizeof(RopewayTimer) == 0x2C);
+
+class RopewaySurvivorInventory : public REBehavior
+{
+public:
+ char pad_0048[64]; //0x0048
+ class RopewaySurvivorPlayerCondition *parentCondition; //0x0088
+ char pad_0090[56]; //0x0090
+}; //Size: 0x00C8
+static_assert(sizeof(RopewaySurvivorInventory) == 0xC8);
+
+class RopewaySurvivorEquipment : public REBehavior
+{
+public:
+ int32_t equipPartsForm; //0x0048
+ char pad_004C[8]; //0x004C
+ int32_t equipType; //0x0054
+ int32_t forceEquipType; //0x0058
+ char pad_005C[4]; //0x005C
+ class RopewayImplementArm *mainWeapon; //0x0060
+ class RopewayImplementArm *subWeapon; //0x0068
+ class RopewayImplementGun *equippedWeapon; //0x0070
+ class RopewayArmList *arms; //0x0078
+ int32_t rapidFireNumber; //0x0080
+ char pad_0084[12]; //0x0084
+ class REManagedObject *valTrigger; //0x0090
+ char pad_0098[104]; //0x0098
+ class RopewaySurvivorPlayerCondition *parentCondition; //0x0100
+ char pad_0108[24]; //0x0108
+ float currentAccuracy; //0x0120 ReticleFitPoint
+ bool isPerfectAccuracy; //0x0124 IsReticleFit
+ char pad_0125[3]; //0x0125
+}; //Size: 0x0128
+static_assert(sizeof(RopewaySurvivorEquipment) == 0x128);
+
+class RopewayArmList : public REManagedObject
+{
+public:
+ class RopewayArmList_Impl *data; //0x0010
+}; //Size: 0x0018
+static_assert(sizeof(RopewayArmList) == 0x18);
+
+class RopewayArmList_Impl : public REArrayBase
+{
+public:
+ class RopewayImplementArm *arms[2048]; //0x0020
+}; //Size: 0x4020
+static_assert(sizeof(RopewayArmList_Impl) == 0x4020);
+
+class RopewayImplement : public REBehavior
+{
+public:
+ char pad_0048[56]; //0x0048
+ class REJoint *joint; //0x0080
+ class RopewayImplementVirtualJoint *virtualJoint; //0x0088
+ class RERenderMesh *mesh; //0x0090
+ class REMotion *implementMotion; //0x0098
+ class REMotion *parentMotion; //0x00A0
+ class RopewayStayAreaController *stayAreaController; //0x00A8
+ class RopewayIkController *ikController; //0x00B0
+ class RopewayCharacterHandler *characterHandler; //0x00B8
+ class RopewayMotionEventHandler *implementMotionHandler; //0x00C0
+ class RopewayMotionEventHandler *parentMotionHandler; //0x00C8
+ class RopewayWwiseContainerApp *wwiseContainerApp; //0x00D0
+ char pad_00D8[8]; //0x00D8
+ class RopewaySurvivorEquipment *parentEquipment; //0x00E0
+ class UserData *implementUserData; //0x00E8
+}; //Size: 0x00F0
+static_assert(sizeof(RopewayImplement) == 0xF0);
+
+class RopewayImplementArm : public RopewayImplement
+{
+public:
+ char pad_00F0[88]; //0x00F0
+}; //Size: 0x0148
+static_assert(sizeof(RopewayImplementArm) == 0x148);
+
+class RopewayCharacterHandler : public REBehavior
+{
+public:
+ char pad_0048[184]; //0x0048
+ class DotNetGenericDictionary *N00001A9D; //0x0100
+ class DotNetGenericDictionary *N00001A9E; //0x0108
+ class DotNetGenericDictionary *N00001A9F; //0x0110
+ class DotNetGenericDictionary *N00001AA0; //0x0118
+ char pad_0120[16]; //0x0120
+ class PhysicsRequestSetCollider *requestSetCollider; //0x0130
+ class RopewayIkController *ikController; //0x0138
+ class RopewayPressController *pressController; //0x0140
+ class RopewayGroundFixer *groundFixer; //0x0148
+ class RopewayPlRainEffect *rainEffect; //0x0150
+ char pad_0158[8]; //0x0158
+ class REDynamicsRagdoll *ragdoll; //0x0160
+ char pad_0168[24]; //0x0168
+}; //Size: 0x0180
+static_assert(sizeof(RopewayCharacterHandler) == 0x180);
+
+class RopewayPressController : public REBehavior
+{
+public:
+ char pad_0048[88]; //0x0048
+}; //Size: 0x00A0
+static_assert(sizeof(RopewayPressController) == 0xA0);
+
+class RopewayGroundFixer : public REBehavior
+{
+public:
+ char pad_0048[280]; //0x0048
+}; //Size: 0x0160
+static_assert(sizeof(RopewayGroundFixer) == 0x160);
+
+class RopewayPlRainEffect : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ uint8_t N00001B98; //0x0050
+ bool isInRain; //0x0051
+ char pad_0052[2]; //0x0052
+ float N00001BC7; //0x0054
+ float N00001B99; //0x0058
+ float N00001BCA; //0x005C
+ float wetAmount; //0x0060
+ float N00001BC3; //0x0064
+ char pad_0068[48]; //0x0068
+ uint32_t wetState; //0x0098
+ char pad_009C[4]; //0x009C
+}; //Size: 0x00A0
+static_assert(sizeof(RopewayPlRainEffect) == 0xA0);
+
+class REDynamicsComponentBase : public REComponent
+{
+public:
+ class REDynamicsWorld *world; //0x0030
+ char pad_0038[8]; //0x0038
+}; //Size: 0x0040
+static_assert(sizeof(REDynamicsComponentBase) == 0x40);
+
+class REDynamicsRigidBodySet : public REDynamicsComponentBase
+{
+public:
+ char pad_0040[144]; //0x0040
+}; //Size: 0x00D0
+static_assert(sizeof(REDynamicsRigidBodySet) == 0xD0);
+
+class REDynamicsRagdoll : public REDynamicsRigidBodySet
+{
+public:
+ char pad_00D0[32]; //0x00D0
+ class REString name; //0x00F0
+ char pad_0110[200]; //0x0110
+}; //Size: 0x01D8
+static_assert(sizeof(REDynamicsRagdoll) == 0x1D8);
+
+class REDynamicsWorld : public REManagedObject
+{
+public:
+ char pad_0010[152]; //0x0010
+ class REScene *scene; //0x00A8
+ char pad_00B0[4448]; //0x00B0
+ class REDynamicsWorld *world; //0x1210
+ char pad_1218[504]; //0x1218
+}; //Size: 0x1410
+static_assert(sizeof(REDynamicsWorld) == 0x1410);
+
+class RERenderMesh : public REComponent
+{
+public:
+ char pad_0030[736]; //0x0030
+}; //Size: 0x0310
+static_assert(sizeof(RERenderMesh) == 0x310);
+
+class RopewayExtraJoint : public REManagedObject
+{
+public:
+ char pad_0010[8]; //0x0010
+ class REMotion *motion; //0x0018
+ char pad_0020[8]; //0x0020
+ class REManagedObject *param; //0x0028
+ int32_t N00002152; //0x0030
+ char pad_0034[4]; //0x0034
+}; //Size: 0x0038
+static_assert(sizeof(RopewayExtraJoint) == 0x38);
+
+class RopewayImplementVirtualJoint : public RopewayExtraJoint
+{
+public:
+}; //Size: 0x0038
+static_assert(sizeof(RopewayImplementVirtualJoint) == 0x38);
+
+class RopewayMotionEventHandler : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ class REMotion *motion; //0x0058
+ class REManagedObject *N00002175; //0x0060
+ class REPtrArray *layers; //0x0068
+}; //Size: 0x0070
+static_assert(sizeof(RopewayMotionEventHandler) == 0x70);
+
+class N000021BE : public REBehavior
+{
+public:
+}; //Size: 0x0048
+static_assert(sizeof(N000021BE) == 0x48);
+
+class WwiseContainer : public N000021BE
+{
+public:
+ char pad_0048[456]; //0x0048
+}; //Size: 0x0210
+static_assert(sizeof(WwiseContainer) == 0x210);
+
+class RopewayWwiseContainerApp : public WwiseContainer
+{
+public:
+ char pad_0210[32]; //0x0210
+ class REPtrArray *autoTriggerReceivers; //0x0230
+}; //Size: 0x0238
+static_assert(sizeof(RopewayWwiseContainerApp) == 0x238);
+
+class RopewayImplementGun : public RopewayImplementArm
+{
+public:
+ char pad_0148[184]; //0x0148
+}; //Size: 0x0200
+static_assert(sizeof(RopewayImplementGun) == 0x200);
+
+class RopewaySurvivorDefineDamageParam : public REManagedObject
+{
+public:
+ int32_t damageType; //0x0010
+ bool isDead; //0x0014
+ char pad_0015[3]; //0x0015
+}; //Size: 0x0018
+static_assert(sizeof(RopewaySurvivorDefineDamageParam) == 0x18);
+
+class RopewaySurvivorActionOrderer : public REBehavior
+{
+public:
+ char pad_0048[12]; //0x0048
+ uint32_t petient; //0x0054
+ char pad_0058[8]; //0x0058
+ Vector4f charDir; //0x0060
+ Vector4f moveDir; //0x0070
+ Vector4f watchDir; //0x0080
+ char pad_0090[80]; //0x0090
+}; //Size: 0x00E0
+static_assert(sizeof(RopewaySurvivorActionOrderer) == 0xE0);
+
+class RopewaySurvivorPlayerActionOrderer : public RopewaySurvivorActionOrderer
+{
+public:
+ class RopewayTimer *timer1; //0x00E0
+ class RopewayTimer *timer2; //0x00E8
+ class RopewayTimer *timer3; //0x00F0
+ char pad_00F8[8]; //0x00F8
+ class RopewaySurvivorPlayerCondition *parentCondition; //0x0100
+}; //Size: 0x0108
+static_assert(sizeof(RopewaySurvivorPlayerActionOrderer) == 0x108);
+
+class RopewaySurvivorController : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ class DampingRangeFloat *charAngle; //0x0058
+ class DampingRangeFloat *moveAngle; //0x0060
+ class DampingRangeFloat *watchAngle; //0x0068
+ class DampingRangeFloat *watchAngleX; //0x0070
+ class DampingRangeFloat *wheelBlendRate; //0x0078
+ class DampingRangeFloat *wheelSpeed; //0x0080
+ class REAnimationCurve *wheelBlendRateCurve; //0x0088
+ class REAnimationCurve *wheelSpeedCurve; //0x0090
+ bool autoUpdateCharDir; //0x0098
+ bool autoUpdateMoveDir; //0x0099
+ bool autoUpdateWatchDir; //0x009A
+ bool autoUpdateWheel; //0x009B
+ char pad_009C[4]; //0x009C
+ class REAnimationCurve *stairToSlopeCurve; //0x00A0
+ class DampingFloat *dampingStairValue; //0x00A8
+ class RopewaySurvivorControllerStepCheck *stepChecker; //0x00B0
+ char pad_00B8[8]; //0x00B8
+ class RopewaySurvivorPlayerCondition *parentCondition; //0x00C0
+}; //Size: 0x00C8
+static_assert(sizeof(RopewaySurvivorController) == 0xC8);
+
+class RopewaySurvivorPlayerController : public RopewaySurvivorController
+{
+public:
+ float N00002361; //0x00C8
+ float N00002390; //0x00CC
+ float charDirDampingRate; //0x00D0
+ float N00002393; //0x00D4
+ float N00002363; //0x00D8
+ float N00002396; //0x00DC
+ float N00002364; //0x00E0
+ float N00002399; //0x00E4
+ class RopewaySurvivorPlayerCondition *parentCondition_; //0x00E8
+}; //Size: 0x00F0
+static_assert(sizeof(RopewaySurvivorPlayerController) == 0xF0);
+
+class RopewaySurvivorControllerStepCheck : public REManagedObject
+{
+public:
+ Vector4f footLPos; //0x0010
+ Vector4f footRPos; //0x0020
+ float footDistance; //0x0030
+ float weight; //0x0034
+ class REJoint *leftJoint; //0x0038
+ class REJoint *rightJoint; //0x0040
+ class SystemString *leftName; //0x0048
+ class SystemString *rightName; //0x0050
+ char pad_0058[8]; //0x0058
+}; //Size: 0x0060
+static_assert(sizeof(RopewaySurvivorControllerStepCheck) == 0x60);
+
+class DampingRangeFloat : public DampingFloat
+{
+public:
+ float low; //0x0044
+ float high; //0x0048
+ bool isLoop; //0x004C
+ char pad_004D[3]; //0x004D
+ float divertPriority; //0x0050
+}; //Size: 0x0054
+static_assert(sizeof(DampingRangeFloat) == 0x54);
+
+class N000024E5
+{
+public:
+ float value; //0x0000
+ int16_t N000024EA; //0x0004
+ int16_t N000024F1; //0x0006
+ char pad_0008[8]; //0x0008
+}; //Size: 0x0010
+static_assert(sizeof(N000024E5) == 0x10);
+
+class CurveKeyFrames
+{
+public:
+ class N000024E5 data[2048]; //0x0000
+}; //Size: 0x8000
+static_assert(sizeof(CurveKeyFrames) == 0x8000);
+
+class N000024E0
+{
+public:
+ Vector4f N000024E1; //0x0000
+}; //Size: 0x0010
+static_assert(sizeof(N000024E0) == 0x10);
+
+class RopewayInputSystem : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class RopewayInputSystemButtonMaskBit *maskbit1; //0x0050
+ class RopewayInputSystemButtonMaskBit *maskbit2; //0x0058
+ class DotNetGenericList *commandList; //0x0060
+ float N00001E29; //0x0068
+ float N00003AE0; //0x006C
+ float N00001E2A; //0x0070
+ char pad_0074[4]; //0x0074
+ class DotNetGenericList *defineList; //0x0078
+ class DotNetGenericList *lightBarColorParams; //0x0080
+ class DotNetGenericList *keyAssignUserData; //0x0088
+ char pad_0090[40]; //0x0090
+ class HIDJoypadDevice *joypadDevice; //0x00B8
+ class RopewayInputSystemAnalogStick *analogStick; //0x00C0
+ class InputSystemButton *button; //0x00C8
+ char pad_00D0[32]; //0x00D0
+ Vector2f cameraSensitivity; //0x00F0
+ char pad_00F8[64]; //0x00F8
+ int16_t mouseMoveRingBufferSize; //0x0138
+ char pad_013A[2]; //0x013A
+ float mouseDelta; //0x013C
+ float mouseMoveThreshold; //0x0140
+ char pad_0144[44]; //0x0144
+}; //Size: 0x0170
+static_assert(sizeof(RopewayInputSystem) == 0x170);
+
+class RopewayInputSystemButtonMaskBit : public REManagedObject
+{
+public:
+ int64_t bits; //0x0010
+ bool reset; //0x0018
+ char pad_0019[7]; //0x0019
+}; //Size: 0x0020
+static_assert(sizeof(RopewayInputSystemButtonMaskBit) == 0x20);
+
+class InputSystemButton : public REManagedObject
+{
+public:
+ char pad_0010[24]; //0x0010
+}; //Size: 0x0028
+static_assert(sizeof(InputSystemButton) == 0x28);
+
+class HIDNativeDeviceBase : public REManagedObject
+{
+public:
+ char pad_0010[120]; //0x0010
+ bool connecting; //0x0088
+ char pad_0089[7]; //0x0089
+ class REString name; //0x0090
+ char pad_00B0[80]; //0x00B0
+ uint32_t button; //0x0100 via.hid.GamePadButton
+ char pad_0104[4]; //0x0104
+ uint32_t buttonDown; //0x0108
+ uint32_t buttonUp; //0x010C
+ uint32_t buttonRepeat; //0x0110
+ char pad_0114[12]; //0x0114
+}; //Size: 0x0120
+static_assert(sizeof(HIDNativeDeviceBase) == 0x120);
+
+class HIDGamePadDevice : public HIDNativeDeviceBase
+{
+public:
+ char pad_0120[160]; //0x0120
+ Vector2f rawAxisL; //0x01C0
+ char pad_01C8[8]; //0x01C8
+ Vector2f rawAxisR; //0x01D0
+ char pad_01D8[8]; //0x01D8
+ Vector2f axisL; //0x01E0
+ char pad_01E8[8]; //0x01E8
+ Vector2f axisR; //0x01F0
+ char pad_01F8[8]; //0x01F8
+ float analogL; //0x0200
+ float analogR; //0x0204
+ char pad_0208[24]; //0x0208
+ Vector3f acceleration; //0x0220
+ char pad_022C[4]; //0x022C
+ Vector3f angularVelocity; //0x0230
+ char pad_023C[116]; //0x023C
+}; //Size: 0x02B0
+static_assert(sizeof(HIDGamePadDevice) == 0x2B0);
+
+class HIDJoypadDevice : public HIDGamePadDevice
+{
+public:
+ char pad_02B0[16]; //0x02B0
+}; //Size: 0x02C0
+static_assert(sizeof(HIDJoypadDevice) == 0x2C0);
+
+class RopewayInputSystemAnalogStick : public REManagedObject
+{
+public:
+ Vector2f axis; //0x0010
+ char pad_0018[8]; //0x0018
+ Vector2f axisOld; //0x0020
+ char pad_0028[8]; //0x0028
+ Vector2f rawAxis; //0x0030
+ char pad_0038[24]; //0x0038
+ float angle; //0x0050
+ float angleOld; //0x0054
+ float angularVelocity; //0x0058
+ float magnitude; //0x005C
+ int32_t power; //0x0060
+ int32_t powerH; //0x0064
+ int32_t powerV; //0x0068
+ float N00001F51; //0x006C
+ int32_t N00001F58; //0x0070
+ char pad_0074[12]; //0x0074
+}; //Size: 0x0080
+static_assert(sizeof(RopewayInputSystemAnalogStick) == 0x80);
+
+class RopewaySurvivorManager : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class RopewaySurvivorPlayerCondition *playerCondition; //0x0050
+ char pad_0058[8]; //0x0058
+ class RopewaySurvivorCastingRequest *castingRequest; //0x0060
+ class DotNetGenericList *instantiateRequests; //0x0068
+ class DotNetGenericList *survivorPrefabInfo; //0x0070
+ class DotNetGenericDictionary *survivorTypesToConditions; //0x0078 SurvivorType->ActorCondition
+ class SystemAction *actionPlayerCondition; //0x0080
+ class SystemAction *actionNpcCondition; //0x0088
+ char pad_0090[8]; //0x0090
+ class SystemAction *survivorTypeAction1; //0x0098
+ class SystemAction *survivorTypeAction2; //0x00A0
+ char pad_00A8[8]; //0x00A8
+ class RopewaySurvivorCastingRequest *castingRequest2; //0x00B0
+ void *uservarAccessor_Survivor; //0x00B8
+ char pad_00C0[8]; //0x00C0
+ class RopewaySettingFolder *playerFolder; //0x00C8
+ class RopewaySettingFolder *npcFolder; //0x00D0
+ class RopewaySettingFolder *actorFolder; //0x00D8
+ class UserData *conditionSettingUserData; //0x00E0
+ class DotNetGenericDictionary *survivorTypeToExistSurvivorInfo; //0x00E8
+ class DotNetGenericList *existSurvivorInfos; //0x00F0
+ class REManagedObject *N000058DF; //0x00F8
+}; //Size: 0x0100
+static_assert(sizeof(RopewaySurvivorManager) == 0x100);
+
+class RopewaySurvivorCastingRequest : public REManagedObject
+{
+public:
+ char pad_0010[24]; //0x0010
+}; //Size: 0x0028
+static_assert(sizeof(RopewaySurvivorCastingRequest) == 0x28);
+
+class SystemDelegate : public REManagedObject
+{
+public:
+}; //Size: 0x0010
+static_assert(sizeof(SystemDelegate) == 0x10);
+
+class DelegateElement
+{
+public:
+ class REManagedObject *obj; //0x0000
+ void* funcPtr; //0x0008
+}; //Size: 0x0010
+static_assert(sizeof(DelegateElement) == 0x10);
+
+class SystemMulticastDelegate : public SystemDelegate
+{
+public:
+ int32_t numElements; //0x0010
+ int32_t N00005A07; //0x0014
+ class DelegateElement delegates[2048]; //0x0018
+}; //Size: 0x8018
+static_assert(sizeof(SystemMulticastDelegate) == 0x8018);
+
+class SystemAction : public SystemMulticastDelegate
+{
+public:
+}; //Size: 0x8018
+static_assert(sizeof(SystemAction) == 0x8018);
+
+class RopewaySettingFolder : public REManagedObject
+{
+public:
+ class REFolder *folder; //0x0010
+ class SystemString *name; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(RopewaySettingFolder) == 0x20);
+
+class SurvivorConditionTimerTrigger : public REManagedObject
+{
+public:
+ float old; //0x0010
+ float current; //0x0014
+ float threshold; //0x0018
+}; //Size: 0x001C
+static_assert(sizeof(SurvivorConditionTimerTrigger) == 0x1C);
+
+class RERangeI
+{
+public:
+ int32_t min; //0x0000
+ int32_t max; //0x0004
+}; //Size: 0x0008
+static_assert(sizeof(RERangeI) == 0x8);
+
+class RopewayEnemyController : public REBehavior
+{
+public:
+ char pad_0048[44]; //0x0048
+ float baseMotionSpeed; //0x0074
+ int32_t lod; //0x0078
+ class RERangeI renderLodRange; //0x007C
+ char pad_0084[12]; //0x0084
+ class DotNetGenericList *temporaryEventStorage; //0x0090
+ class RopewayEnemyEmSaveData *enemySaveData; //0x0098
+ char pad_00A0[64]; //0x00A0
+ float N00001E0B; //0x00E0
+ float N00001E80; //0x00E4
+ char pad_00E8[8]; //0x00E8
+ Vector4f firstAvailablePos; //0x00F0
+ char pad_0100[40]; //0x0100
+ class SystemAction *thinkAction; //0x0128
+ char pad_0130[16]; //0x0130
+ class RopewayEnemyContextController *enemyContextController; //0x0140
+ class RopewayEnemyEmCommonContext *enemyContext; //0x0148
+ class RopewayBitFlag *conditionStateBitFlag; //0x0150
+ class RopewayBitFlag *conditionStateBitFlag2; //0x0158
+ char pad_0160[4]; //0x0160
+ int32_t N0000201A; //0x0164
+ class DotNetGenericList *meshes; //0x0168
+ char pad_0170[8]; //0x0170
+ class REManagedObject *N00001EB1; //0x0178
+ class CollisionSystemAsyncCastRayHandle *castRayHandle; //0x0180
+ char pad_0188[4]; //0x0188
+ float attackAuthorityKeepRange; //0x018C
+ Vector4f attackAuthorityRangeBasePositionOffset; //0x0190
+ class RERenderMesh *mesh; //0x01A0
+ class REMotion *motion; //0x01A8
+ class REActorMotion *actorMotion; //0x01B0
+ char pad_01B8[304]; //0x01B8
+}; //Size: 0x02E8
+static_assert(sizeof(RopewayEnemyController) == 0x2E8);
+
+class RopewayEnemyContextController : public REBehavior
+{
+public:
+ char pad_0048[12]; //0x0048
+ int32_t initialKindId; //0x0054
+ char pad_0058[16]; //0x0058
+}; //Size: 0x0068
+static_assert(sizeof(RopewayEnemyContextController) == 0x68);
+
+class RopewayEnemyEmCommonContext : public REBehavior
+{
+public:
+ char pad_0048[32]; //0x0048
+ class REGameObject *enemyGameObject; //0x0068
+ bool spawnStandby; //0x0070
+ bool requestedPrefabStandby; //0x0071
+ bool requestedSpawn; //0x0072
+ bool isStayStandbyArea; //0x0073
+ bool isStayActiveArea; //0x0074
+ bool isEliminated; //0x0075
+ bool N00002016; //0x0076
+ bool N00002014; //0x0077
+ int32_t instanceStatus; //0x0078 app.ropeway.enemy.EmCommonContext.InstanceStatus
+ char pad_007C[44]; //0x007C
+}; //Size: 0x00A8
+static_assert(sizeof(RopewayEnemyEmCommonContext) == 0xA8);
+
+class SystemGuid
+{
+public:
+ char pad_0000[16]; //0x0000
+}; //Size: 0x0010
+static_assert(sizeof(SystemGuid) == 0x10);
+
+class RopewayEnemyEmSaveData : public REManagedObject
+{
+public:
+ uint32_t dataVersion; //0x0010
+ char pad_0014[4]; //0x0014
+ class SystemGuid guid; //0x0018
+ int16_t inheritId; //0x0028
+ char pad_002A[2]; //0x002A
+ int32_t kindId; //0x002C
+ float birthedTime; //0x0030
+ float unloadedTime; //0x0034
+ char pad_0038[72]; //0x0038
+}; //Size: 0x0080
+static_assert(sizeof(RopewayEnemyEmSaveData) == 0x80);
+
+class RopewayBitFlag : public REManagedObject
+{
+public:
+ int32_t flag; //0x0010
+ char pad_0014[4]; //0x0014
+}; //Size: 0x0018
+static_assert(sizeof(RopewayBitFlag) == 0x18);
+
+class CollisionSystemAsyncCastHandleBase : public REManagedObject
+{
+public:
+ bool isFinish; //0x0010
+ char pad_0011[7]; //0x0011
+ class REGameObject *owner; //0x0018
+ int32_t castType; //0x0020
+ int16_t id; //0x0024
+ char pad_0026[10]; //0x0026
+ Vector4f startPos; //0x0030
+ Vector4f endPos; //0x0040
+ class PhysicsFilterInfo *filterInfo; //0x0050
+ uint32_t N00002199; //0x0058
+ float period; //0x005C
+ int16_t priority; //0x0060
+ char pad_0062[2]; //0x0062
+ bool isSkip; //0x0064
+ char pad_0065[3]; //0x0065
+ class AsyncCastHandleResultData *lastResultData; //0x0068
+ char pad_0070[16]; //0x0070
+}; //Size: 0x0080
+static_assert(sizeof(CollisionSystemAsyncCastHandleBase) == 0x80);
+
+class CollisionSystemAsyncCastRayHandle : public CollisionSystemAsyncCastHandleBase
+{
+public:
+}; //Size: 0x0080
+static_assert(sizeof(CollisionSystemAsyncCastRayHandle) == 0x80);
+
+class RopewayEnemyManager : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class DotNetGenericList *enemyInfos; //0x0050 app.ropeway.EnemyManager.RegisterEnemyInfo
+ class DotNetGenericList *enemyControllers; //0x0058
+ class DotNetGenericList *gameObjects; //0x0060
+ bool isExistEnemyObject; //0x0068
+ char pad_0069[3]; //0x0069
+ float dataLoadAttackThroughSec; //0x006C
+ bool isPausing; //0x0070
+ bool isInvisible; //0x0071
+ bool isTimelinePausing; //0x0072
+ char pad_0073[5]; //0x0073
+ class RopewayEnemyController *grapplingOwner; //0x0078
+ float N00001F82; //0x0080
+ char pad_0084[4]; //0x0084
+ class RopewayEnemyLODSettingUserData *lodSettings; //0x0088
+ float totalEnemyCost; //0x0090
+ char pad_0094[4]; //0x0094
+ class SystemAction *N00001F25; //0x0098
+ class SystemAction *N00001F53; //0x00A0
+ bool hasActiveEnemyUpdateRequest; //0x00A8
+ char pad_00A9[7]; //0x00A9
+ class REManagedObject *N00001F55; //0x00B0
+ class RopewayCameraStatus *cameraStatus; //0x00B8
+ class REManagedObject *N00001F57; //0x00C0
+ class DotNetGenericList *instantiateRequests; //0x00C8
+ class DotNetGenericList *destroyRequests; //0x00D0
+ class DotNetGenericDictionary *mapIdsToSceneLoadStatus; //0x00D8
+ char pad_00E0[8]; //0x00E0
+ class DotNetGenericList *sceneLoadStatuses; //0x00E8
+ class DotNetGenericList *mapIds; //0x00F0
+ class REPtrArray *gameObjectsToControllers; //0x00F8 list of dictionaries
+ class DotNetGenericList *em6200ChaserControllers; //0x0100
+ class REManagedObject *N00002224; //0x0108
+ char pad_0110[8]; //0x0110
+ class RopewayEnemyManagerFrameTimer *frameTimers[6]; //0x0118 ThinkOffTimer, NoAttackTimer, AttackThroughTimer, NoHoldTimerEm4000, NoBackHoldTimerEm4000, NoAttackTimerEm4000
+ class DotNetGenericDictionary *guidsToSaveData; //0x0148
+ uint32_t totalEnemyKillCount; //0x0150
+ char pad_0154[4]; //0x0154
+ class REManagedObject *N0000222A; //0x0158
+ class REManagedObject *N0000222B; //0x0160
+ class REManagedObject *N0000222C; //0x0168
+ class REManagedObject *N0000222D; //0x0170
+ char pad_0178[8]; //0x0178
+}; //Size: 0x0180
+static_assert(sizeof(RopewayEnemyManager) == 0x180);
+
+class RopewayEnemyLODSettingUserData : public UserData
+{
+public:
+ float distanceLevels[5]; //0x0030
+}; //Size: 0x0044
+static_assert(sizeof(RopewayEnemyLODSettingUserData) == 0x44);
+
+class RopewayEnemyManagerFrameTimer : public REManagedObject
+{
+public:
+ bool run; //0x0010
+ char pad_0011[7]; //0x0011
+ uint64_t delayFrame; //0x0018
+ uint64_t endFrame; //0x0020
+ uint64_t frameCount; //0x0028
+}; //Size: 0x0030
+static_assert(sizeof(RopewayEnemyManagerFrameTimer) == 0x30);
+
+class RENativeArray // via.array
+{
+public:
+ class RENativeArrayData *data; //0x0000
+ int32_t size; //0x0008
+ int32_t numAllocated; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(RENativeArray) == 0x10);
+
+class RENativeArrayData
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(RENativeArrayData) == 0x8);
+
+class RopewayCameraStatus : public REManagedObject
+{
+public:
+ char pad_0010[384]; //0x0010
+}; //Size: 0x0190
+static_assert(sizeof(RopewayCameraStatus) == 0x190);
+
+class RopewayCameraInterpolateSettings : public UserData
+{
+public:
+ void *curveParamTable; //0x0030
+}; //Size: 0x0038
+static_assert(sizeof(RopewayCameraInterpolateSettings) == 0x38);
+
+class CollisionSystemAsyncCastSphereHandle : public CollisionSystemAsyncCastHandleBase
+{
+public:
+ class RESphere *sphere; //0x0080
+}; //Size: 0x0088
+static_assert(sizeof(CollisionSystemAsyncCastSphereHandle) == 0x88);
+
+class RESphere
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(RESphere) == 0x8);
+
+class RERenderCaptureToTexture : public REComponent
+{
+public:
+ bool N00004053; //0x0030
+ bool N00004069; //0x0031
+ bool enableAlphaChannel; //0x0032
+ char pad_0033[45]; //0x0033
+ bool enableReplayScene; //0x0060
+ char pad_0061[39]; //0x0061
+ float N0000405E; //0x0088
+ float N00004074; //0x008C
+}; //Size: 0x0090
+static_assert(sizeof(RERenderCaptureToTexture) == 0x90);
+
+class AsyncCastHandleResultData : public REManagedObject
+{
+public:
+ char pad_0010[32]; //0x0010
+ Vector4f startPos; //0x0030
+ Vector4f endPos; //0x0040
+ char pad_0050[16]; //0x0050
+}; //Size: 0x0060
+static_assert(sizeof(AsyncCastHandleResultData) == 0x60);
+
+class ValueTriggerInt : public REManagedObject
+{
+public:
+ int32_t current; //0x0010
+ int32_t old; //0x0014
+ int32_t lastFrame; //0x0018
+}; //Size: 0x001C
+static_assert(sizeof(ValueTriggerInt) == 0x1C);
+
+class ActionTriggerInt : public ValueTriggerInt
+{
+public:
+ char pad_001C[4]; //0x001C
+ class SystemAction *action; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(ActionTriggerInt) == 0x28);
+
+class IkControlStatusArray : public REArrayBase
+{
+public:
+ class RopewayIkControlStatus *N00004982[6]; //0x0020
+}; //Size: 0x0050
+static_assert(sizeof(IkControlStatusArray) == 0x50);
+
+class RopewayIkControlStatus : public REManagedObject
+{
+public:
+ int32_t ikKind; //0x0010
+ float currentBlendRate; //0x0014
+ bool hasChild; //0x0018
+ bool activeAnyChild; //0x0019
+ char pad_001A[14]; //0x001A
+ bool hasExtraBlendRate; //0x0028
+ char pad_0029[3]; //0x0029
+ float currentExtraBlendRate; //0x002C
+ float extraBlendLerpTime; //0x0030
+ int32_t N00004A6E; //0x0034
+ class RopewayIkWrapper *ik; //0x0038
+ int32_t N00004ACF; //0x0040
+ char pad_0044[4]; //0x0044
+ class DotNetGenericDictionary *N00004A98; //0x0048
+ class RopewayRangeLerpFloat *rangeLerp1; //0x0050
+ class RopewayRangeLerpFloat *rangeLerp2; //0x0058
+ class RopewayRangeLerpFloat *rangeLerp3; //0x0060
+ void *N00004A9A; //0x0068
+ void *N00004AD5; //0x0070
+ int32_t N00004A45; //0x0078
+ float N00004DBD; //0x007C
+}; //Size: 0x0080
+static_assert(sizeof(RopewayIkControlStatus) == 0x80);
+
+class RopewayIkWrapper : public REManagedObject
+{
+public:
+ bool setupped; //0x0010
+ char pad_0011[7]; //0x0011
+ class REMotionIkLeg *N00004B67; //0x0018
+ char pad_0020[88]; //0x0020
+}; //Size: 0x0078
+static_assert(sizeof(RopewayIkWrapper) == 0x78);
+
+class REMotionIkLeg : public RESecondaryAnimation
+{
+public:
+ char pad_0048[1904]; //0x0048
+ float heelHeight; //0x07B8
+ float toeHeight; //0x07BC
+ float groundContactUpDistance; //0x07C0
+ float groundContactDownDistance; //0x07C4
+ float groundContactRotationAdjustDistance; //0x07C8
+ char pad_07CC[4]; //0x07CC
+ int32_t effectorTarget; //0x07D0
+ int32_t centerAdjust; //0x07D4
+ char pad_07D8[32]; //0x07D8
+ int32_t toeControlOption; //0x07F8
+ int32_t rayCastSkipOption; //0x07FC
+ float blendRate; //0x0800
+ float adjustFootRotRate; //0x0804
+ float adjustFootDamping; //0x0808
+ float N00004EF8; //0x080C
+ float adjustFootBottomRate; //0x0810
+ float adjustFootUpwardRate; //0x0814
+ float N00004CB3; //0x0818
+ float centerAdjustRate; //0x081C
+ float centerDampingRate; //0x0820
+ float N00004EFE; //0x0824
+ float centerRXAdjustRate; //0x0828
+ float centerRZAdjustRate; //0x082C
+ float distanceLimitRate; //0x0830
+ float centerAdjustUpwardRate; //0x0834
+ float wallLimitAngle; //0x0838
+ float N00004EF0; //0x083C
+ float footRollLimit; //0x0840
+ float N00004EF2; //0x0844
+ int32_t jointNumBetweenHeelAndToe; //0x0848
+ int32_t rayCastInterval; //0x084C
+ char pad_0850[210]; //0x0850
+ bool enabledGroundAdjust; //0x0922
+ char pad_0923[2]; //0x0923
+ bool skipIkIfNoHitDetail; //0x0925
+ bool useIkSpine; //0x0926
+ char pad_0927[361]; //0x0927
+}; //Size: 0x0A90
+static_assert(sizeof(REMotionIkLeg) == 0xA90);
+
+class RopewayRangeLerpFloat : public REManagedObject
+{
+public:
+ float lerpSpeed; //0x0010
+ float min; //0x0014
+ float max; //0x0018
+ bool isLoop; //0x001C
+ char pad_001D[3]; //0x001D
+ float loopPriority; //0x0020
+ bool isInterpolating; //0x0024
+ char pad_0025[3]; //0x0025
+ float target; //0x0028
+ float current; //0x002C
+}; //Size: 0x0030
+static_assert(sizeof(RopewayRangeLerpFloat) == 0x30);
+
+class RopewayEquipmentManager : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class DotNetGenericList *prefabInfoList; //0x0050
+ class DotNetGenericList *characterMotionPrefabInfoList; //0x0058
+ class DotNetGenericList *equipments; //0x0060
+ class DotNetGenericList *instantiateRequestList; //0x0068
+ class RopewayWeaponEquippedPositionUserData *weaponEquippedPositionData; //0x0070
+ class RopewayWeaponBulletUserData *weaponBulletData; //0x0078
+ char pad_0080[16]; //0x0080
+}; //Size: 0x0090
+static_assert(sizeof(RopewayEquipmentManager) == 0x90);
+
+class RopewayWeaponBulletUserData : public UserData
+{
+public:
+ char pad_0030[8]; //0x0030
+ bool enableDebug; //0x0038
+ char pad_0039[3]; //0x0039
+ int32_t debugWeaponType; //0x003C
+ int32_t debugWeaponParts; //0x0040
+ char pad_0044[4]; //0x0044
+}; //Size: 0x0048
+static_assert(sizeof(RopewayWeaponBulletUserData) == 0x48);
+
+class RopewayWeaponEquippedPositionUserData : public UserData
+{
+public:
+ char pad_0030[8]; //0x0030
+}; //Size: 0x0038
+static_assert(sizeof(RopewayWeaponEquippedPositionUserData) == 0x38);
+
+class RopewayGameMaster : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+ class UserData *difficultySettings; //0x0050
+ class UserData *continueRankPoint; //0x0058
+ bool isWindows10; //0x0060
+ char pad_0061[3]; //0x0061
+ int32_t machine; //0x0064
+ int32_t machineDetail; //0x0068
+ int32_t operatingSystem; //0x006C
+ int32_t servicePlatform; //0x0070
+ int32_t criticalRateController; //0x0074
+}; //Size: 0x0078
+static_assert(sizeof(RopewayGameMaster) == 0x78);
+
+class ManagedEnumValuesPtr
+{
+public:
+ char *(*names)[8192]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(ManagedEnumValuesPtr) == 0x8);
+
+class REEnumMap
+{
+public:
+ class REEnumNode *first; //0x0000
+ int32_t num; //0x0008
+ char pad_000C[4]; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(REEnumMap) == 0x10);
+
+class ManagedEnums : public REEnumMap
+{
+public:
+ class RENativeArray enumValues; //0x0010
+}; //Size: 0x0020
+static_assert(sizeof(ManagedEnums) == 0x20);
+
+class N00006DF9
+{
+public:
+ char pad_0000[16]; //0x0000
+ class RENativeArray enumValues; //0x0010
+ char pad_0020[304]; //0x0020
+}; //Size: 0x0150
+static_assert(sizeof(N00006DF9) == 0x150);
+
+class N00006EE3
+{
+public:
+ class REEnumDescriptor *N00006EE4; //0x0000
+ class N00006F33 *N00006EE5; //0x0008
+ class N00006F56 *N00006EE6; //0x0010
+ char pad_0018[8]; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(N00006EE3) == 0x20);
+
+class REEnumNode
+{
+public:
+ class REEnumDescriptor *N00007017; //0x0000
+ class REEnumDescriptor *N0000702A; //0x0008
+ class REEnumDescriptor *N0000702B; //0x0010
+ char pad_0018[8]; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(REEnumNode) == 0x20);
+
+class REEnumData
+{
+public:
+ char *name; //0x0000
+ bool N000070A2; //0x0008
+ char pad_0009[7]; //0x0009
+ class REEnumValueNode *values; //0x0010
+ void *N000070A4; //0x0018
+ char pad_0020[24]; //0x0020
+}; //Size: 0x0038
+static_assert(sizeof(REEnumData) == 0x38);
+
+class REEnumPair
+{
+public:
+ uint32_t first; //0x0000
+ char pad_0004[4]; //0x0004
+ class REEnumData second; //0x0008
+}; //Size: 0x0040
+static_assert(sizeof(REEnumPair) == 0x40);
+
+class REEnumDescriptor : public REEnumNode
+{
+public:
+ class REEnumPair data; //0x0020
+ char pad_0060[332]; //0x0060
+}; //Size: 0x01AC
+static_assert(sizeof(REEnumDescriptor) == 0x1AC);
+
+class N00006F33
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(N00006F33) == 0x8);
+
+class N00006F56
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(N00006F56) == 0x8);
+
+class REEnumValueNode
+{
+public:
+ char *name; //0x0000
+ int64_t value; //0x0008
+ class REEnumValueNode *next; //0x0010
+}; //Size: 0x0018
+static_assert(sizeof(REEnumValueNode) == 0x18);
+
+class StdMap
+{
+public:
+ class StdMapNode *_MyHead; //0x0000
+ int32_t _MySize; //0x0008
+ char pad_000C[4]; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(StdMap) == 0x10);
+
+class StdMapData
+{
+public:
+ char pad_0000[120]; //0x0000
+}; //Size: 0x0078
+static_assert(sizeof(StdMapData) == 0x78);
+
+class StdMapNode
+{
+public:
+ class StdMapNode *N00008173; //0x0000
+ class StdMapNode *N00008174; //0x0008
+ class StdMapNode *N00008175; //0x0010
+ char pad_0018[8]; //0x0018
+ class StdMapData data; //0x0020
+}; //Size: 0x0098
+static_assert(sizeof(StdMapNode) == 0x98);
+
+class TypeList // RENativeArray
+{
+public:
+ class REType *(*data)[50000]; //0x0000
+ int32_t size; //0x0008
+ int32_t numAllocated; //0x000C
+ char pad_0010[120]; //0x0010
+}; //Size: 0x0088
+static_assert(sizeof(TypeList) == 0x88);
+
+class MethodParamInfo
+{
+public:
+ char pad_0000[8]; //0x0000
+ char *paramName; //0x0008
+ uint32_t paramTypeFlag; //0x0010 AND 1f
+ uint32_t typeIndex; //0x0014
+ char *typeName; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(MethodParamInfo) == 0x20);
+
+class RopewayScriptEffectManager : public REBehavior
+{
+public:
+ char pad_0048[9]; //0x0048
+ bool isDisableAllEffect; //0x0051
+ char pad_0052[182]; //0x0052
+}; //Size: 0x0108
+static_assert(sizeof(RopewayScriptEffectManager) == 0x108);
+
+class RERenderDepthOfField : public REComponent
+{
+public:
+ char pad_0030[24]; //0x0030
+ bool enabled; //0x0048
+ char pad_0049[15]; //0x0049
+}; //Size: 0x0058
+static_assert(sizeof(RERenderDepthOfField) == 0x58);
+
+class RopewayPostEffectControllerBase : public REBehavior
+{
+public:
+ char pad_0048[32]; //0x0048
+ class REComponent *effectComponent; //0x0068
+ class RopewayPostEffectFilterParamBase *param1; //0x0070
+ class RopewayPostEffectFilterParamBase *param2; //0x0078
+ class REGameObject *cameraObject; //0x0080
+ char pad_0088[8]; //0x0088
+ class RopewayPostEffectCascade *cascade; //0x0090
+ class REGameObject *cameraObject2; //0x0098
+ char pad_00A0[8]; //0x00A0
+ class RopewayPostEffectFilterParamBase *param3; //0x00A8
+ class RopewayFilterSettingBase *filterSetting; //0x00B0
+ class RopewayPostEffectFilterParamBase *param4; //0x00B8
+ char pad_00C0[24]; //0x00C0
+}; //Size: 0x00D8
+static_assert(sizeof(RopewayPostEffectControllerBase) == 0xD8);
+
+class RopewayFilterSettingBase : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ class RopewayPostEffectFilterParamBase *param; //0x0058
+ float interpolationSpan; //0x0060
+ int32_t layerApplyType; //0x0064 app::ropeway::posteffect::setting::FilterSettingRoot::ApplyType
+ class RopewayPostEffectFilterParamBase *currentParam; //0x0068
+ class RopewayPostEffectFilterParamBase *param1; //0x0070
+ class RopewayPostEffectFilterParamBase *param2; //0x0078
+ char pad_0080[8]; //0x0080
+}; //Size: 0x0088
+static_assert(sizeof(RopewayFilterSettingBase) == 0x88);
+
+class RopewayPostEffectFilterParamBase : public REManagedObject
+{
+public:
+ char pad_0010[32]; //0x0010
+}; //Size: 0x0030
+static_assert(sizeof(RopewayPostEffectFilterParamBase) == 0x30);
+
+class RopewayPostEffectCascade : public REBehavior
+{
+public:
+ char pad_0048[48]; //0x0048
+}; //Size: 0x0078
+static_assert(sizeof(RopewayPostEffectCascade) == 0x78);
+
+class RopewayFilterParamAccessable : public RopewayPostEffectFilterParamBase
+{
+public:
+ char pad_0030[16]; //0x0030
+ bool timelineOverwrite; //0x0040
+ char pad_0041[11]; //0x0041
+ float timelineBlendRate; //0x004C
+}; //Size: 0x0050
+static_assert(sizeof(RopewayFilterParamAccessable) == 0x50);
+
+class RopewayPostEffectToneMapping : public RopewayFilterParamAccessable
+{
+public:
+ bool enabled; //0x0050
+ char pad_0051[3]; //0x0051
+ float ev; //0x0054
+ float maxWhitePoint; //0x0058
+ float minWhitePoint; //0x005C
+ float whiteRange; //0x0060
+ float tonemapRange; //0x0064
+ float preTonemapRange; //0x0068
+ float brightAdaptationRate; //0x006C
+ float darkAdaptationRate; //0x0070
+ int32_t vignetting; //0x0074 via::render::ToneMapping::Vignetting
+ int32_t autoExposure; //0x0078 via::render::ToneMapping::AutoExposure
+ float kerareBeginAngle; //0x007C kerare = vignetting in japanese
+ float linearSectionBegin; //0x0080
+ float linearSectionLength; //0x0084
+ float sdrToe; //0x0088
+ float hdrToe; //0x008C
+ float kerareEndAngle; //0x0090
+ char pad_0094[4]; //0x0094
+ void *textureResource; //0x0098
+ char pad_00A0[8]; //0x00A0
+ int32_t temporalAAAlgorithm; //0x00A8 via::render::ToneMapping::TemporalAAAlgorithm
+ int32_t temporalAA; //0x00AC via::render::ToneMapping::TemporalAA
+ bool echoEnabled; //0x00B0
+ char pad_00B1[3]; //0x00B1
+ float antiAliasingBlendRate; //0x00B4
+ float temporalJitterScale; //0x00B8
+ float sharpness; //0x00BC
+}; //Size: 0x00C0
+static_assert(sizeof(RopewayPostEffectToneMapping) == 0xC0);
+
+class REInstantiationDescriptor
+{
+public:
+ class REObjectInfo *type; //0x0000
+ uint32_t N00008AC9; //0x0008
+ uint32_t N00008B38; //0x000C
+ uint32_t size; //0x0010
+ uint32_t N00008B3A; //0x0014
+ char pad_0018[40]; //0x0018
+}; //Size: 0x0040
+static_assert(sizeof(REInstantiationDescriptor) == 0x40);
+
+class MethodParams
+{
+public:
+ char pad_0000[48]; //0x0000
+ void ***in_data; //0x0030 can point to data
+ void **out_data; //0x0038 can be whatever, can be a dword, can point to data
+ void *object_ptr; //0x0040 aka "this" pointer
+}; //Size: 0x0048
+static_assert(sizeof(MethodParams) == 0x48);
+
+class REThreadContext
+{
+public:
+ char pad_0000[80]; //0x0000
+ class UnkThreadContextObject *unkPtr; //0x0050
+ char pad_0058[32]; //0x0058
+ int32_t referenceCount; //0x0078
+ char pad_007C[4]; //0x007C
+}; //Size: 0x0080
+static_assert(sizeof(REThreadContext) == 0x80);
+
+class UnkThreadContextObject
+{
+public:
+ char pad_0000[24]; //0x0000
+ void *unkPtr; //0x0018
+ char pad_0020[240]; //0x0020
+}; //Size: 0x0110
+static_assert(sizeof(UnkThreadContextObject) == 0x110);
+
+class N0000256E
+{
+public:
+ char pad_0000[264]; //0x0000
+}; //Size: 0x0108
+static_assert(sizeof(N0000256E) == 0x108);
+
+class TrialManager : public REManagedObject
+{
+public:
+ char pad_0010[24]; //0x0010
+ class N00002CDC *N00002C19; //0x0028
+ char pad_0030[56]; //0x0030
+ class N00002C87 *N00002C24; //0x0068
+ char pad_0070[216]; //0x0070
+}; //Size: 0x0148
+static_assert(sizeof(TrialManager) == 0x148);
+
+class N00002C87 : public REManagedObject
+{
+public:
+ char pad_0010[64]; //0x0010
+}; //Size: 0x0050
+static_assert(sizeof(N00002C87) == 0x50);
+
+class N00002CDC : public REManagedObject
+{
+public:
+ char pad_0010[112]; //0x0010
+}; //Size: 0x0080
+static_assert(sizeof(N00002CDC) == 0x80);
+
+class N00003CA1 : public REManagedObject
+{
+public:
+ char pad_0010[16]; //0x0010
+}; //Size: 0x0020
+static_assert(sizeof(N00003CA1) == 0x20);
+
+class N00003CB3 : public REManagedObject
+{
+public:
+ char pad_0010[360]; //0x0010
+ class N00003D23 *N00003CE5; //0x0178
+ char pad_0180[200]; //0x0180
+}; //Size: 0x0248
+static_assert(sizeof(N00003CB3) == 0x248);
+
+class N00003D23 : public REManagedObject
+{
+public:
+ char pad_0010[16]; //0x0010
+ int32_t N00003D2A; //0x0020
+ char pad_0024[4]; //0x0024
+ uint32_t N00003D2B; //0x0028
+ char pad_002C[4]; //0x002C
+}; //Size: 0x0030
+static_assert(sizeof(N00003D23) == 0x30);
+
+class N00003D34 : public REManagedObject
+{
+public:
+ char pad_0010[8]; //0x0010
+ int32_t N00003D37; //0x0018
+ char pad_001C[4]; //0x001C
+ bool enabled; //0x0020
+ char pad_0021[7]; //0x0021
+}; //Size: 0x0028
+static_assert(sizeof(N00003D34) == 0x28);
+
+class CountdownTimerController : public REManagedObject
+{
+public:
+ float N00003D4A; //0x0010
+ float N00003D55; //0x0014
+ float N00003D4B; //0x0018
+ float N00003D57; //0x001C
+ char pad_0020[8]; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(CountdownTimerController) == 0x28);
+
+class SceneActivateManager : public REBehavior
+{
+public:
+ char pad_0048[72]; //0x0048
+}; //Size: 0x0090
+static_assert(sizeof(SceneActivateManager) == 0x90);
+
+class RenderSwingWind : public REComponent
+{
+public:
+ bool Enabled; //0x0030
+ char pad_0031[7]; //0x0031
+ class N00009C0D *WindParameter; //0x0038
+}; //Size: 0x0040
+static_assert(sizeof(RenderSwingWind) == 0x40);
+
+class N00009C0D
+{
+public:
+ char pad_0000[264]; //0x0000
+}; //Size: 0x0108
+static_assert(sizeof(N00009C0D) == 0x108);
+
+class N00009D2E
+{
+public:
+ char pad_0000[112]; //0x0000
+}; //Size: 0x0070
+static_assert(sizeof(N00009D2E) == 0x70);
+
+class REArraySystemInt32 : public REArrayBase
+{
+public:
+ class N00009D2E N00009D02[256]; //0x0020
+}; //Size: 0x7020
+static_assert(sizeof(REArraySystemInt32) == 0x7020);
+
+class DotNetGenericHashSet : public REManagedObject
+{
+public:
+ char pad_0010[16]; //0x0010
+ class REManagedObject *equalityComparer; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(DotNetGenericHashSet) == 0x28);
+
+class AppPropsManager : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ class REGameObject *player; //0x0058
+ class RECamera *camera; //0x0060
+ class AppFlotageProcess *flotageProcess; //0x0068
+ class AppSwingRopeProcess *swingRopeProcess; //0x0070
+ char pad_0078[8]; //0x0078
+}; //Size: 0x0080
+static_assert(sizeof(AppPropsManager) == 0x80);
+
+class AppObjectApp : public REManagedObject
+{
+public:
+}; //Size: 0x0010
+static_assert(sizeof(AppObjectApp) == 0x10);
+
+class AppPropsManagerToyProcess : public AppObjectApp
+{
+public:
+ bool isDebugDraw; //0x0010
+ char pad_0011[15]; //0x0011
+ class DotNetGenericList *behaviorList; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(AppPropsManagerToyProcess) == 0x28);
+
+class AppFlotageProcess : public AppPropsManagerToyProcess
+{
+public:
+ int32_t flotageId; //0x0028
+ int32_t turnCounter; //0x002C
+ float maxDistance; //0x0030
+ float N0000A33D; //0x0034
+}; //Size: 0x0038
+static_assert(sizeof(AppFlotageProcess) == 0x38);
+
+class AppSwingRopeProcess : public AppPropsManagerToyProcess
+{
+public:
+}; //Size: 0x0028
+static_assert(sizeof(AppSwingRopeProcess) == 0x28);
+
+class AppBehaviorApp : public REBehavior
+{
+public:
+ char pad_0048[8]; //0x0048
+}; //Size: 0x0050
+static_assert(sizeof(AppBehaviorApp) == 0x50);
+
+class AppPlayerHandLight : public AppBehaviorApp
+{
+public:
+ char pad_0050[1]; //0x0050
+ bool IsContinuousOn; //0x0051
+ char pad_0052[6]; //0x0052
+ class AppHandLightPowerController *handLightPowerController; //0x0058
+ char pad_0060[16]; //0x0060
+ void *nightVision; //0x0070
+ char pad_0078[8]; //0x0078
+ void *playerStatus; //0x0080
+ void *wwise; //0x0088
+}; //Size: 0x0090
+static_assert(sizeof(AppPlayerHandLight) == 0x90);
+
+class AppCharacterUpdater : public AppBehaviorApp
+{
+public:
+ void *referenceContainer; //0x0050
+ void *agentsPriorityContainer; //0x0058
+}; //Size: 0x0060
+static_assert(sizeof(AppCharacterUpdater) == 0x60);
+
+class AppPlayerUpdater : public AppCharacterUpdater
+{
+public:
+ void *playerConfigure; //0x0060
+ class AppPlayerReferenceContainer *playerReferenceContainer; //0x0068
+ char pad_0070[8]; //0x0070
+}; //Size: 0x0078
+static_assert(sizeof(AppPlayerUpdater) == 0x78);
+
+class N0000B498 : public REManagedObject
+{
+public:
+}; //Size: 0x0010
+static_assert(sizeof(N0000B498) == 0x10);
+
+class AppCharacterReferenceContainer : public N0000B498
+{
+public:
+ void *N0000B49D; //0x0010
+ void *N0000B49E; //0x0018
+ void *N0000B49F; //0x0020
+ void *N0000B4A0; //0x0028
+ void *N0000B4A1; //0x0030
+ void *N0000B4A2; //0x0038
+ void *N0000B4A3; //0x0040
+ class AppInputInputUpdater *inputUpdater; //0x0048
+ char pad_0050[200]; //0x0050
+}; //Size: 0x0118
+static_assert(sizeof(AppCharacterReferenceContainer) == 0x118);
+
+class AppPlayerReferenceContainer : public AppCharacterReferenceContainer
+{
+public:
+ char pad_0118[232]; //0x0118
+}; //Size: 0x0200
+static_assert(sizeof(AppPlayerReferenceContainer) == 0x200);
+
+class AppDemiAgent : public AppObjectApp
+{
+public:
+ class REGameObject *gameObject; //0x0010
+}; //Size: 0x0018
+static_assert(sizeof(AppDemiAgent) == 0x18);
+
+class AppAgent : public AppDemiAgent
+{
+public:
+ class AppAgentCostWatch *costWatch1; //0x0018
+ class AppAgentCostWatch *costWatch2; //0x0020
+}; //Size: 0x0028
+static_assert(sizeof(AppAgent) == 0x28);
+
+class AppInputInputUpdater : public AppAgent
+{
+public:
+ char pad_0028[8]; //0x0028
+ class DotNetGenericDictionary *inputDictionary; //0x0030
+ char pad_0038[72]; //0x0038
+}; //Size: 0x0080
+static_assert(sizeof(AppInputInputUpdater) == 0x80);
+
+class AppAgentCostWatch : public REManagedObject
+{
+public:
+ float N0000B612; //0x0010
+ bool isWait; //0x0014
+ char pad_0015[3]; //0x0015
+ class SystemDiagnosticsStopwatch *stopwatch; //0x0018
+ char pad_0020[4]; //0x0020
+ float averageCost; //0x0024
+ float minUpdateCost; //0x0028
+ float maxUpdateCost; //0x002C
+ char pad_0030[8]; //0x0030
+}; //Size: 0x0038
+static_assert(sizeof(AppAgentCostWatch) == 0x38);
+
+class SystemDiagnosticsStopwatch : public REManagedObject
+{
+public:
+ char pad_0010[24]; //0x0010
+}; //Size: 0x0028
+static_assert(sizeof(SystemDiagnosticsStopwatch) == 0x28);
+
+class AppHandLightPowerController
+{
+public:
+ char pad_0000[120]; //0x0000
+ class IESLight *renderIESLight; //0x0078
+}; //Size: 0x0080
+static_assert(sizeof(AppHandLightPowerController) == 0x80);
+
+class IESLight
+{
+public:
+ char pad_0000[417]; //0x0000
+ bool ShadowEnable; //0x01A1
+ char pad_01A2[414]; //0x01A2
+ float Radius; //0x0340
+}; //Size: 0x0344
+static_assert(sizeof(IESLight) == 0x344);
+
+class AppGamePadDevice
+{
+public:
+ char pad_0000[560]; //0x0000
+ Vector3f N0000BCA8; //0x0230
+ char pad_023C[1548]; //0x023C
+}; //Size: 0x0848
+static_assert(sizeof(AppGamePadDevice) == 0x848);
+
+class ValueTypeDescriptor
+{
+public:
+ char pad_0000[8]; //0x0000
+ uint32_t size; //0x0008
+ char pad_000C[36]; //0x000C
+}; //Size: 0x0030
+static_assert(sizeof(ValueTypeDescriptor) == 0x30);
+
+class REValueTypes
+{
+public:
+ class ValueTypeDescriptor types[10000]; //0x0000
+}; //Size: 0x75300
+static_assert(sizeof(REValueTypes) == 0x75300);
+
+class DictionaryEntryUInt32Ptr
+{
+public:
+ int32_t hashCode; //0x0000
+ int32_t next; //0x0004
+ uint32_t key; //0x0008
+ char pad_000C[4]; //0x000C
+ void *value; //0x0010
+}; //Size: 0x0018
+static_assert(sizeof(DictionaryEntryUInt32Ptr) == 0x18);
+
+class SystemClassDescriptor
+{
+public:
+ char *name_space; //0x0000
+ char *class_name; //0x0008
+ uint32_t num_methods; //0x0010
+ char pad_0014[4]; //0x0014
+ class SystemMethodDescriptor (*methods)[256]; //0x0018
+}; //Size: 0x0020
+static_assert(sizeof(SystemClassDescriptor) == 0x20);
+
+class SystemClasses
+{
+public:
+ class SystemClassDescriptor N0000CB08[256]; //0x0000
+}; //Size: 0x2000
+static_assert(sizeof(SystemClasses) == 0x2000);
+
+class SystemMethodDescriptor
+{
+public:
+ char *name; //0x0000
+ void* func; //0x0008
+ char pad_0010[64]; //0x0010
+}; //Size: 0x0050
+static_assert(sizeof(SystemMethodDescriptor) == 0x50);
+
+class N0000CBBC
+{
+public:
+ class REClassInfo *class_infos[256]; //0x0000
+}; //Size: 0x0800
+static_assert(sizeof(N0000CBBC) == 0x800);
+
+class AppHIDPadManager : public REBehavior
+{
+public:
+ char pad_0048[16]; //0x0048
+ void *userdata; //0x0058
+ class AppHIDPad *pad1; //0x0060
+ class N0000CD1C *pad2; //0x0068
+ void *delegate1; //0x0070
+ void *delegate2; //0x0078
+ class DotNetGenericList *pads; //0x0080
+ class DotNetGenericList *padDevices; //0x0088
+}; //Size: 0x0090
+static_assert(sizeof(AppHIDPadManager) == 0x90);
+
+class AppHIDPad : public AppObjectApp
+{
+public:
+ void *delegate1; //0x0010
+ class HIDGamePadDevice *device; //0x0018
+ char pad_0020[16]; //0x0020
+ class REArrayBase *array1; //0x0030
+ class REArrayBase *array2; //0x0038
+ char pad_0040[96]; //0x0040
+ class DotNetGenericDictionary *dictionary1; //0x00A0
+ char pad_00A8[8]; //0x00A8
+}; //Size: 0x00B0
+static_assert(sizeof(AppHIDPad) == 0xB0);
+
+class N0000CD1C
+{
+public:
+ char pad_0000[8]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(N0000CD1C) == 0x8);
+
+class AppHIDUser : public REManagedObject
+{
+public:
+ int32_t N0000D337; //0x0010
+ int32_t N0000D340; //0x0014
+ char pad_0018[4]; //0x0018
+}; //Size: 0x001C
+static_assert(sizeof(AppHIDUser) == 0x1C);
+
+class AppMouse : public AppHIDUser
+{
+public:
+ float x; //0x001C
+ float y; //0x0020
+}; //Size: 0x0024
+static_assert(sizeof(AppMouse) == 0x24);
+
+class AppKeyboard : public AppHIDUser
+{
+public:
+}; //Size: 0x001C
+static_assert(sizeof(AppKeyboard) == 0x1C);
+
+class RETypeDB
+{
+public:
+ uint32_t magic; //0x0000
+ uint32_t version; //0x0004
+ uint32_t initialized; //0x0008
+ uint32_t numTypes; //0x000C
+ uint32_t numMethods; //0x0010
+ uint32_t numFields; //0x0014
+ uint32_t numTypeImpl; //0x0018
+ uint32_t numFieldImpl; //0x001C
+ uint32_t numMethodImpl; //0x0020
+ uint32_t numPropertyImpl; //0x0024
+ uint32_t numProperties; //0x0028
+ uint32_t numEvents; //0x002C
+ uint32_t numParams; //0x0030
+ uint32_t numAttributes; //0x0034
+ int32_t numInitData; //0x0038
+ uint32_t numAttributes2; //0x003C
+ uint32_t numInternStrings; //0x0040
+ uint32_t numModules; //0x0044
+ int32_t devEntry; //0x0048
+ int32_t appEntry; //0x004C
+ uint32_t numStringPool; //0x0050
+ uint32_t numBytePool; //0x0054
+ void *modules; //0x0058
+ class REClassInfo (*types)[93788]; //0x0060
+ class RETypeImpl (*typesImpl)[256]; //0x0068
+ class REMethodDefinition (*methods)[703558]; //0x0070
+ class REMethodImpl (*methodsImpl)[56756]; //0x0078
+ class REField (*fields)[1]; //0x0080
+ class REFieldImpl (*fieldsImpl)[1]; //0x0088
+ class REProperty (*properties)[256]; //0x0090
+ class REPropertyImpl (*propertiesImpl)[1]; //0x0098
+ void *events; //0x00A0
+ class REParameterDef (*params)[10000]; //0x00A8
+ class REAttributeDef (*attributes)[2000]; //0x00B0
+ int32_t (*initData)[19890]; //0x00B8
+ int32_t (*attributes2)[256]; //0x00C0
+ void *stringPool; //0x00C8
+ uint8_t (*bytePool)[256]; //0x00D0
+ int32_t (*internStrings)[14154]; //0x00D8
+}; //Size: 0x00E0
+static_assert(sizeof(RETypeDB) == 0xE0);
+
+class RETypeImpl
+{
+public:
+ int32_t nameThing; //0x0000
+ int32_t namespaceThing; //0x0004
+ int32_t fieldSize; //0x0008
+ int32_t staticFieldSize; //0x000C
+ uint8_t moduleId; //0x0010
+ uint8_t arrayRank; //0x0011
+ uint16_t numMemberMethods; //0x0012
+ int32_t numMemberFields; //0x0014
+ int16_t interfaceID; //0x0018
+ uint16_t numNativeVtable; //0x001A
+ uint16_t attributesID; //0x001C
+ uint16_t numVtable; //0x001E
+ uint64_t mark; //0x0020
+ uint64_t cycle; //0x0028
+}; //Size: 0x0030
+static_assert(sizeof(RETypeImpl) == 0x30);
+
+class REMethodDefinition
+{
+public:
+ uint64_t data; //0x0000 bitfield, 0-17 == declaring typeid, 18-37==impl id, 38-63 == parameters id
+ void* function; //0x0008
+}; //Size: 0x0010
+static_assert(sizeof(REMethodDefinition) == 0x10);
+
+class REMethodImpl
+{
+public:
+ uint16_t attributesIndex; //0x0000
+ int16_t vtableIndex; //0x0002
+ uint16_t flags; //0x0004
+ uint16_t implFlags; //0x0006
+ uint32_t nameOffset; //0x0008 offset into stringPool
+}; //Size: 0x000C
+static_assert(sizeof(REMethodImpl) == 0xC);
+
+class REField
+{
+public:
+ uint64_t data; //0x0000 bitfield, 0-17 == declaring typeid, 18-37==impl id, 38-63 == field offset
+}; //Size: 0x0008
+static_assert(sizeof(REField) == 0x8);
+
+class REFieldImpl
+{
+public:
+ uint16_t attributesIndex; //0x0000
+ uint16_t flags; //0x0002
+ uint32_t bitfield1; //0x0004 0-17 == field type ID
+ uint32_t bitfield2; //0x0008 0-29 == string pool name index, 30-31 == idk
+}; //Size: 0x000C
+static_assert(sizeof(REFieldImpl) == 0xC);
+
+class REProperty
+{
+public:
+ uint64_t data; //0x0000 0-19 = impl index, 20-41 == getter index, 42-63 == setter index
+}; //Size: 0x0008
+static_assert(sizeof(REProperty) == 0x8);
+
+class REPropertyImpl
+{
+public:
+ uint16_t flags; //0x0000
+ uint16_t attributesIndex; //0x0002
+ int32_t nameOffset; //0x0004
+}; //Size: 0x0008
+static_assert(sizeof(REPropertyImpl) == 0x8);
+
+class REParameterDef
+{
+public:
+ uint16_t attributesIndex; //0x0000
+ uint16_t initData; //0x0002
+ uint32_t nameAndModifer; //0x0004 0-29 = name index, 30-31 = modifier
+ uint32_t typeAndFlags; //0x0008 0-17 = type index, 18-31 = flags
+}; //Size: 0x000C
+static_assert(sizeof(REParameterDef) == 0xC);
+
+class RENativeArray_SystemRuntimeType
+{
+public:
+ class SystemRuntimeType *(*entries)[93788]; //0x0000
+ uint32_t num; //0x0008
+ char pad_000C[4]; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(RENativeArray_SystemRuntimeType) == 0x10);
+
+class RENativeArray_Static
+{
+public:
+ class N00004CB2 *(*N00002F64)[93788]; //0x0000
+ uint64_t num; //0x0008
+}; //Size: 0x0010
+static_assert(sizeof(RENativeArray_Static) == 0x10);
+
+class N0000306B
+{
+public:
+ char pad_0000[448]; //0x0000
+}; //Size: 0x01C0
+static_assert(sizeof(N0000306B) == 0x1C0);
+
+class REVM
+{
+public:
+ char pad_0000[13616]; //0x0000
+ int64_t perfCounter[8]; //0x3530
+ bool N00002F5E; //0x3570
+ char pad_3571[3]; //0x3571
+ uint32_t N000030CA; //0x3574
+ char pad_3578[32]; //0x3578
+ class RENativeArray_SystemRuntimeType typeTbl; //0x3598
+ class RENativeArray_Static staticTbl; //0x35A8
+ char pad_35B8[32]; //0x35B8
+ class RETypeDB *typeDb; //0x35D8
+ class N00003030 *N00002F73; //0x35E0
+ class N0000306B jobs[256]; //0x35E8
+ char pad_1F5E8[40]; //0x1F5E8
+}; //Size: 0x1F610
+static_assert(sizeof(REVM) == 0x1F610);
+
+class N00003030
+{
+public:
+ char pad_0000[136]; //0x0000
+}; //Size: 0x0088
+static_assert(sizeof(N00003030) == 0x88);
+
+class REVMPtr
+{
+public:
+ class REVM *N000030D2; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(REVMPtr) == 0x8);
+
+class SystemRuntimeType : public REManagedObject
+{
+public:
+ class REClassInfo *runtimeTypeHandle; //0x0010
+ int32_t kind; //0x0018
+ int32_t number; //0x001C
+}; //Size: 0x0020
+static_assert(sizeof(SystemRuntimeType) == 0x20);
+
+class REAttributeDef
+{
+public:
+ int32_t methodIndex; //0x0000
+ int32_t blob; //0x0004
+}; //Size: 0x0008
+static_assert(sizeof(REAttributeDef) == 0x8);
+
+class REParamList
+{
+public:
+ uint16_t numParams; //0x0000
+ uint16_t invokeID; //0x0002
+ uint32_t returnType; //0x0004
+ uint32_t params[1]; //0x0008
+}; //Size: 0x000C
+static_assert(sizeof(REParamList) == 0xC);
+
+class ArrayDeserializeSequence
+{
+public:
+ class DeserializeSequence (*deserializers)[256]; //0x0000
+ uint32_t num; //0x0008
+ uint32_t numAllocated; //0x000C
+}; //Size: 0x0010
+static_assert(sizeof(ArrayDeserializeSequence) == 0x10);
+
+class RETypeCLR : public REType
+{
+public:
+ class ArrayDeserializeSequence deserializeThing; //0x0060
+ class REType *nativeType; //0x0070
+ char *name2; //0x0078
+}; //Size: 0x0080
+static_assert(sizeof(RETypeCLR) == 0x80);
+
+class DeserializeSequence
+{
+public:
+ int32_t data; //0x0000
+ uint32_t offset; //0x0004
+ class REClassInfo *nativeType; //0x0008
+}; //Size: 0x0010
+static_assert(sizeof(DeserializeSequence) == 0x10);
+
+class InternStrings
+{
+public:
+ class SystemString *(*N00004B5E)[20000]; //0x0000
+}; //Size: 0x0008
+static_assert(sizeof(InternStrings) == 0x8);
+
+class N00004CB2
+{
+public:
+ char pad_0000[136]; //0x0000
+}; //Size: 0x0088
+static_assert(sizeof(N00004CB2) == 0x88);
+
+class REAttribute : public REObject
+{
+public:
+ char pad_0008[8]; //0x0008
+ class REAttribute *next; //0x0010
+}; //Size: 0x0018
+static_assert(sizeof(REAttribute) == 0x18);
+
+class N0000301D
+{
+public:
+ char pad_0000[136]; //0x0000
+}; //Size: 0x0088
+static_assert(sizeof(N0000301D) == 0x88);
\ No newline at end of file
diff --git a/shared/sdk/Renderer.hpp b/shared/sdk/Renderer.hpp
index 1b7d82af5..8f406e511 100644
--- a/shared/sdk/Renderer.hpp
+++ b/shared/sdk/Renderer.hpp
@@ -97,7 +97,7 @@ class RenderTargetView : public RenderResource {
private:
Desc m_desc;
-#if TDB_VER == 71
+#if TDB_VER >= 71 // untested on 73
static constexpr inline auto s_texture_d3d12_offset = 0x98;
#elif TDB_VER == 70
static constexpr inline auto s_texture_d3d12_offset = 0x90;
diff --git a/shared/sdk/TDBVer.hpp b/shared/sdk/TDBVer.hpp
index 4e9bff9c7..7980afac7 100644
--- a/shared/sdk/TDBVer.hpp
+++ b/shared/sdk/TDBVer.hpp
@@ -2,6 +2,8 @@
#ifdef DMC5
#define TDB_VER 67
+#elif defined(DD2)
+#define TDB_VER 73
#elif defined(SF6)
#define TDB_VER 71
#elif defined (RE4)
@@ -46,7 +48,10 @@ struct REMethodDefinition;
struct REProperty;
struct RETypeDefinition;
-#if defined(SF6)
+#if defined(DD2)
+#define TYPE_INDEX_BITS 19
+using RETypeDefinition_ = sdk::RETypeDefVersion71; // same thing for now
+#elif defined(SF6)
#define TYPE_INDEX_BITS 19
using RETypeDefinition_ = sdk::RETypeDefVersion71;
#elif defined(RE4)
diff --git a/shared/sdk/regenny/dd2/BullShit.hpp b/shared/sdk/regenny/dd2/BullShit.hpp
new file mode 100644
index 000000000..f05b55b95
--- /dev/null
+++ b/shared/sdk/regenny/dd2/BullShit.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny {
+#pragma pack(push, 1)
+struct BullShit {
+ private: char pad_0[0x5000]; public:
+}; // Size: 0x5000
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/DeserializeSequence.hpp b/shared/sdk/regenny/dd2/DeserializeSequence.hpp
new file mode 100644
index 000000000..0032eddef
--- /dev/null
+++ b/shared/sdk/regenny/dd2/DeserializeSequence.hpp
@@ -0,0 +1,18 @@
+#pragma once
+namespace regenny::tdb71 {
+struct TypeDefinition;
+}
+namespace regenny {
+#pragma pack(push, 1)
+struct DeserializeSequence {
+ uint32_t code : 8; // 0x0
+ uint32_t size : 8; // 0x0
+ uint32_t align : 8; // 0x0
+ uint32_t depth : 6; // 0x0
+ uint32_t is_array : 1; // 0x0
+ uint32_t is_static : 1; // 0x0
+ uint32_t offset; // 0x4
+ regenny::tdb71::TypeDefinition* native_type; // 0x8
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/ManagedVtable.hpp b/shared/sdk/regenny/dd2/ManagedVtable.hpp
new file mode 100644
index 000000000..d058fcfe7
--- /dev/null
+++ b/shared/sdk/regenny/dd2/ManagedVtable.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::tdb71 {
+struct TypeDefinition;
+}
+namespace regenny {
+#pragma pack(push, 1)
+struct ManagedVtable {
+ regenny::tdb71::TypeDefinition* t; // 0x0
+ void* funcs[32]; // 0x8
+}; // Size: 0x108
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/RTInternal.hpp b/shared/sdk/regenny/dd2/RTInternal.hpp
new file mode 100644
index 000000000..11b0ea086
--- /dev/null
+++ b/shared/sdk/regenny/dd2/RTInternal.hpp
@@ -0,0 +1,40 @@
+#pragma once
+#include "via\vec3.hpp"
+namespace regenny {
+#pragma pack(push, 1)
+struct RTInternal {
+ private: char pad_0[0x168]; public:
+ // Metadata: utf8*
+ char* name; // 0x168
+ private: char pad_170[0x10]; public:
+ uint32_t unkint; // 0x180
+ uint32_t unkint2; // 0x184
+ uint32_t RayTracingMode; // 0x188
+ uint32_t Spp; // 0x18c
+ uint8_t unk2; // 0x190
+ private: char pad_191[0xb]; public:
+ regenny::via::vec3 params; // 0x19c
+ private: char pad_1a8[0x4]; public:
+ bool use_transparent; // 0x1ac
+ private: char pad_1ad[0x1]; public:
+ bool specular_secondary_bounce; // 0x1ae
+ bool use_no_movement_depth_comp; // 0x1af
+ float normal_compare_thresh; // 0x1b0
+ bool use_diffuse_bounce_intensity; // 0x1b4
+ private: char pad_1b5[0x3]; public:
+ float diffuse_bounce_intensity_mult; // 0x1b8
+ bool use_specular_bounce_intensity; // 0x1bc
+ private: char pad_1bd[0x3]; public:
+ float specular_bounce_intensity; // 0x1c0
+ bool ray_trace_ambient_occlusion; // 0x1c4
+ private: char pad_1c5[0x3]; public:
+ float ray_trace_ratio; // 0x1c8
+ float unkflooat; // 0x1cc
+ uint32_t sampling_pattern; // 0x1d0
+ private: char pad_1d4[0x8]; public:
+ float surfel_size; // 0x1dc
+ float asdfasdgadsg; // 0x1e0
+ private: char pad_1e4[0xe1c]; public:
+}; // Size: 0x1000
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/RayTrace.hpp b/shared/sdk/regenny/dd2/RayTrace.hpp
new file mode 100644
index 000000000..42f1f37c4
--- /dev/null
+++ b/shared/sdk/regenny/dd2/RayTrace.hpp
@@ -0,0 +1,13 @@
+#pragma once
+#include "RenderEntity.hpp"
+namespace regenny {
+struct RTInternal;
+}
+namespace regenny {
+#pragma pack(push, 1)
+struct RayTrace : public RenderEntity {
+ regenny::RTInternal* impl; // 0x498
+ private: char pad_4a0[0xb60]; public:
+}; // Size: 0x1000
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/RenderEntity.hpp b/shared/sdk/regenny/dd2/RenderEntity.hpp
new file mode 100644
index 000000000..7d5edae25
--- /dev/null
+++ b/shared/sdk/regenny/dd2/RenderEntity.hpp
@@ -0,0 +1,9 @@
+#pragma once
+#include "via\Component.hpp"
+namespace regenny {
+#pragma pack(push, 1)
+struct RenderEntity : public via::Component {
+ private: char pad_30[0x468]; public:
+}; // Size: 0x498
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/System/String.hpp b/shared/sdk/regenny/dd2/System/String.hpp
new file mode 100644
index 000000000..d8481b27e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/System/String.hpp
@@ -0,0 +1,11 @@
+#pragma once
+#include "..\via\clr\ManagedObject.hpp"
+namespace regenny::System {
+#pragma pack(push, 1)
+struct String : public regenny::via::clr::ManagedObject {
+ int32_t len; // 0x10
+ // Metadata: utf16*
+ char data[256]; // 0x14
+}; // Size: 0x114
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/TypeDefinition.hpp b/shared/sdk/regenny/dd2/TypeDefinition.hpp
new file mode 100644
index 000000000..a63f19ffd
--- /dev/null
+++ b/shared/sdk/regenny/dd2/TypeDefinition.hpp
@@ -0,0 +1,7 @@
+#pragma once
+namespace regenny {
+#pragma pack(push, 1)
+struct TypeDefinition {
+}; // Size: 0x0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/game/IkArmFit.hpp b/shared/sdk/regenny/dd2/game/IkArmFit.hpp
new file mode 100644
index 000000000..6e37cec81
--- /dev/null
+++ b/shared/sdk/regenny/dd2/game/IkArmFit.hpp
@@ -0,0 +1,41 @@
+#pragma once
+#include "..\via\Range.hpp"
+#include "..\via\clr\ManagedObject.hpp"
+#include "..\via\mat4.hpp"
+#include "..\via\motion\AxisDirection.hpp"
+namespace regenny::via {
+struct Joint;
+}
+namespace regenny::System {
+struct String;
+}
+namespace regenny::game {
+#pragma pack(push, 1)
+struct IkArmFit {
+ struct ArmSolver : public regenny::via::clr::ManagedObject {
+ regenny::via::Joint* ApplyJoint; // 0x10
+ regenny::via::motion::AxisDirection Dir; // 0x18
+ regenny::via::motion::AxisDirection Up; // 0x1c
+ regenny::via::motion::AxisDirection Rot; // 0x20
+ float L0; // 0x24
+ float L1; // 0x28
+ private: char pad_2c[0x4]; public:
+ }; // Size: 0x30
+
+ struct ArmData : public regenny::via::clr::ManagedObject {
+ float BlendRate; // 0x10
+ regenny::via::Range ReachRate; // 0x14
+ private: char pad_1c[0x4]; public:
+ regenny::System::String* ApplyHandName; // 0x20
+ bool LeftHand; // 0x28
+ private: char pad_29[0x3]; public:
+ float DefaultHandAngle; // 0x2c
+ regenny::via::Range AxisYRange; // 0x30
+ regenny::via::Range AxisZRange; // 0x38
+ regenny::via::mat4 TargetMatrix; // 0x40
+ }; // Size: 0x80
+
+ private: char pad_0[0x100]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/game/InputSystem.hpp b/shared/sdk/regenny/dd2/game/InputSystem.hpp
new file mode 100644
index 000000000..d5c4db425
--- /dev/null
+++ b/shared/sdk/regenny/dd2/game/InputSystem.hpp
@@ -0,0 +1,9 @@
+#pragma once
+#include "..\via\clr\ManagedObject.hpp"
+namespace regenny::game {
+#pragma pack(push, 1)
+struct InputSystem : public regenny::via::clr::ManagedObject {
+ private: char pad_10[0x160]; public:
+}; // Size: 0x170
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp b/shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp
new file mode 100644
index 000000000..7ad327cfc
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/AttributeDef.hpp
@@ -0,0 +1,7 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct AttributeDef {
+}; // Size: 0x0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/Field.hpp b/shared/sdk/regenny/dd2/tdb71/Field.hpp
new file mode 100644
index 000000000..5c8d38b8c
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/Field.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct Field {
+ uint64_t declaring_typeid : 19; // 0x0
+ uint64_t impl_id : 19; // 0x0
+ uint64_t field_typeid : 19; // 0x0
+ uint64_t init_data_hi : 6; // 0x0
+ private: uint64_t pad_bitfield_0_3f : 1; public:
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp b/shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp
new file mode 100644
index 000000000..d80acff88
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/FieldImpl.hpp
@@ -0,0 +1,15 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct FieldImpl {
+ uint16_t attributes; // 0x0
+ uint16_t unk : 1; // 0x2
+ uint16_t flags : 15; // 0x2
+ uint32_t offset : 26; // 0x4
+ uint32_t init_data_lo : 6; // 0x4
+ uint32_t name_offset : 22; // 0x8
+ uint32_t init_data_mid : 4; // 0x8
+ private: uint32_t pad_bitfield_8_1a : 6; public:
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp b/shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp
new file mode 100644
index 000000000..f71406e6e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/MethodDefinition.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct MethodDefinition {
+ uint32_t declaring_typeid : 19; // 0x0
+ uint32_t pad : 13; // 0x0
+ uint32_t impl_id : 19; // 0x4
+ uint32_t params : 13; // 0x4
+ int32_t offset; // 0x8
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp b/shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp
new file mode 100644
index 000000000..2fceafaa3
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/MethodImpl.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct MethodImpl {
+ uint16_t attributes_id; // 0x0
+ int16_t vtable_index; // 0x2
+ uint16_t flags; // 0x4
+ uint16_t impl_flags; // 0x6
+ uint32_t name_offset; // 0x8
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/ParamList.hpp b/shared/sdk/regenny/dd2/tdb71/ParamList.hpp
new file mode 100644
index 000000000..2a4c1e647
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/ParamList.hpp
@@ -0,0 +1,11 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct ParamList {
+ uint16_t numParams; // 0x0
+ int16_t invokeID; // 0x2
+ uint32_t returnType; // 0x4
+ uint32_t params[256]; // 0x8
+}; // Size: 0x408
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp b/shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp
new file mode 100644
index 000000000..dde8fc6d0
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/ParameterDef.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct ParameterDef {
+ uint16_t attributes_id; // 0x0
+ uint16_t init_data_index; // 0x2
+ uint32_t name_offset : 30; // 0x4
+ uint32_t modifier : 2; // 0x4
+ uint32_t type_id : 18; // 0x8
+ uint32_t flags : 14; // 0x8
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/Property.hpp b/shared/sdk/regenny/dd2/tdb71/Property.hpp
new file mode 100644
index 000000000..10edad1bc
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/Property.hpp
@@ -0,0 +1,7 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct Property {
+}; // Size: 0x0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp b/shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp
new file mode 100644
index 000000000..ad16f9586
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/PropertyImpl.hpp
@@ -0,0 +1,7 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct PropertyImpl {
+}; // Size: 0x0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/TDB.hpp b/shared/sdk/regenny/dd2/tdb71/TDB.hpp
new file mode 100644
index 000000000..8728752ec
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/TDB.hpp
@@ -0,0 +1,80 @@
+#pragma once
+namespace regenny::tdb71 {
+struct Field;
+}
+namespace regenny::tdb71 {
+struct TypeDefinition;
+}
+namespace regenny::tdb71 {
+struct PropertyImpl;
+}
+namespace regenny::tdb71 {
+struct MethodImpl;
+}
+namespace regenny::tdb71 {
+struct TypeImpl;
+}
+namespace regenny::tdb71 {
+struct MethodDefinition;
+}
+namespace regenny::tdb71 {
+struct FieldImpl;
+}
+namespace regenny::tdb71 {
+struct Property;
+}
+namespace regenny::tdb71 {
+struct ParameterDef;
+}
+namespace regenny::tdb71 {
+struct AttributeDef;
+}
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct TDB {
+ struct test {
+ }; // Size: 0x0
+
+ uint32_t magic; // 0x0
+ uint32_t version; // 0x4
+ uint32_t initialized; // 0x8
+ uint32_t numTypes; // 0xc
+ uint32_t numMethods; // 0x10
+ uint32_t numFields; // 0x14
+ uint32_t numTypeImpl; // 0x18
+ uint32_t numFieldImpl; // 0x1c
+ uint32_t numMethodImpl; // 0x20
+ uint32_t numPropertyImpl; // 0x24
+ uint32_t numProperties; // 0x28
+ uint32_t numEvents; // 0x2c
+ uint32_t numParams; // 0x30
+ uint32_t numAttributes; // 0x34
+ int32_t numInitData; // 0x38
+ uint32_t numAttributes2; // 0x3c
+ uint32_t numInternStrings; // 0x40
+ uint32_t numModules; // 0x44
+ int32_t devEntry; // 0x48
+ int32_t appEntry; // 0x4c
+ uint32_t numStringPool; // 0x50
+ uint32_t numBytePool; // 0x54
+ void* modules; // 0x58
+ regenny::tdb71::TypeDefinition* types; // 0x60
+ regenny::tdb71::TypeImpl* typesImpl; // 0x68
+ regenny::tdb71::MethodDefinition* methods; // 0x70
+ regenny::tdb71::MethodImpl* methodsImpl; // 0x78
+ regenny::tdb71::Field* fields; // 0x80
+ regenny::tdb71::FieldImpl* fieldsImpl; // 0x88
+ regenny::tdb71::Property* properties; // 0x90
+ regenny::tdb71::PropertyImpl* propertiesImpl; // 0x98
+ void* events; // 0xa0
+ regenny::tdb71::ParameterDef* params; // 0xa8
+ regenny::tdb71::AttributeDef* attributes; // 0xb0
+ int32_t* initData; // 0xb8
+ void* unk; // 0xc0
+ int32_t* attributes2; // 0xc8
+ char* stringPool; // 0xd0
+ uint8_t* bytePool; // 0xd8
+ int32_t* internStrings; // 0xe0
+}; // Size: 0xe8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp b/shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp
new file mode 100644
index 000000000..bd690a147
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/TypeDefinition.hpp
@@ -0,0 +1,38 @@
+#pragma once
+namespace regenny::via::typeinfo {
+struct TypeInfo;
+}
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct TypeDefinition {
+ uint64_t index : 19; // 0x0
+ uint64_t parent_typeid : 19; // 0x0
+ uint64_t declaring_typeid : 19; // 0x0
+ uint64_t underlying_typeid : 7; // 0x0
+ uint64_t array_typeid : 19; // 0x8
+ uint64_t element_typeid : 19; // 0x8
+ uint64_t impl_index : 18; // 0x8
+ uint64_t system_typeid : 7; // 0x8
+ private: uint64_t pad_bitfield_8_3f : 1; public:
+ uint32_t type_flags; // 0x10
+ uint32_t size; // 0x14
+ uint32_t fqn_hash; // 0x18
+ uint32_t type_crc; // 0x1c
+ uint64_t default_ctor : 22; // 0x20
+ uint64_t member_method : 22; // 0x20
+ uint64_t member_field : 19; // 0x20
+ private: uint64_t pad_bitfield_20_3f : 1; public:
+ uint32_t num_member_prop : 12; // 0x28
+ uint32_t member_prop : 19; // 0x28
+ private: uint32_t pad_bitfield_28_1f : 1; public:
+ uint32_t unk_data : 26; // 0x2c
+ uint32_t object_type : 3; // 0x2c
+ private: uint32_t pad_bitfield_2c_1d : 3; public:
+ int64_t unk_data_before_generics : 26; // 0x30
+ int64_t generics : 26; // 0x30
+ int64_t interfaces : 12; // 0x30
+ regenny::via::typeinfo::TypeInfo* type; // 0x38
+ void** managed_vt; // 0x40
+}; // Size: 0x48
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp b/shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp
new file mode 100644
index 000000000..b12e51115
--- /dev/null
+++ b/shared/sdk/regenny/dd2/tdb71/TypeImpl.hpp
@@ -0,0 +1,18 @@
+#pragma once
+namespace regenny::tdb71 {
+#pragma pack(push, 1)
+struct TypeImpl {
+ int32_t name_offset; // 0x0
+ int32_t namespace_offset; // 0x4
+ int32_t field_size; // 0x8
+ int32_t static_field_size; // 0xc
+ uint64_t unk_pad : 33; // 0x10
+ uint64_t num_member_fields : 24; // 0x10
+ uint64_t unk_pad_2 : 7; // 0x10
+ uint16_t num_member_methods; // 0x18
+ int16_t num_native_vtable; // 0x1a
+ int16_t interface_id; // 0x1c
+ private: char pad_1e[0x12]; public:
+}; // Size: 0x30
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/BasisPlane.hpp b/shared/sdk/regenny/dd2/via/BasisPlane.hpp
new file mode 100644
index 000000000..345431a7a
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/BasisPlane.hpp
@@ -0,0 +1,10 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+enum class BasisPlane : uint32_t {
+ XZ = 0,
+ XY = 1,
+ YZ = 2,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/CameraType.hpp b/shared/sdk/regenny/dd2/via/CameraType.hpp
new file mode 100644
index 000000000..202616d41
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/CameraType.hpp
@@ -0,0 +1,14 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+enum class CameraType : uint32_t {
+ Game = 0,
+ Debug = 1,
+ Scene = 2,
+ SceneXY = 3,
+ SceneYZ = 4,
+ SceneXZ = 5,
+ Preview = 6,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Capsule.hpp b/shared/sdk/regenny/dd2/via/Capsule.hpp
new file mode 100644
index 000000000..153e0c069
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Capsule.hpp
@@ -0,0 +1,12 @@
+#pragma once
+#include "vec4.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Capsule {
+ regenny::via::vec4 p0; // 0x0
+ regenny::via::vec4 p1; // 0x10
+ float r; // 0x20
+ private: char pad_24[0xc]; public:
+}; // Size: 0x30
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Color.hpp b/shared/sdk/regenny/dd2/via/Color.hpp
new file mode 100644
index 000000000..c07ea6d7e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Color.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Color {
+ uint32_t rgba; // 0x0
+}; // Size: 0x4
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Component.hpp b/shared/sdk/regenny/dd2/via/Component.hpp
new file mode 100644
index 000000000..dcb2e6ea5
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Component.hpp
@@ -0,0 +1,15 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+namespace regenny::via {
+struct GameObject;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Component : public clr::ManagedObject {
+ regenny::via::GameObject* GameObject; // 0x10
+ regenny::via::Component* ChildComponent; // 0x18
+ regenny::via::Component* PrevComponent; // 0x20
+ regenny::via::Component* NextComponent; // 0x28
+}; // Size: 0x30
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/DeviceOrientation.hpp b/shared/sdk/regenny/dd2/via/DeviceOrientation.hpp
new file mode 100644
index 000000000..490ab2890
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/DeviceOrientation.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+enum class DeviceOrientation : uint32_t {
+ None = 0,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/DisplayType.hpp b/shared/sdk/regenny/dd2/via/DisplayType.hpp
new file mode 100644
index 000000000..6d1f83a99
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/DisplayType.hpp
@@ -0,0 +1,30 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+enum class DisplayType : uint32_t {
+ Fit = 0,
+ Uniform4x3 = 1,
+ Uniform16x9 = 2,
+ Uniform16x10 = 3,
+ Uniform21x9 = 4,
+ Uniform32x9 = 5,
+ Uniform48x9 = 6,
+ Fix480p = 7,
+ Fix720p = 8,
+ Fix1080p = 9,
+ Fix4K = 10,
+ Fix8K = 11,
+ FixResolution = 12,
+ FixResolution16x9 = 13,
+ NintendoSwitch = 14,
+ Fix684x384 = 15,
+ Fix1368x768 = 16,
+ Nexus6P = 17,
+ GalaxyS9 = 18,
+ XperiaZ5Premium = 19,
+ iPhoneX = 20,
+ iPhone7 = 21,
+ ZenPadS8 = 22,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Folder.hpp b/shared/sdk/regenny/dd2/via/Folder.hpp
new file mode 100644
index 000000000..a5f9a1ac2
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Folder.hpp
@@ -0,0 +1,8 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Folder : public clr::ManagedObject {
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/GameObject.hpp b/shared/sdk/regenny/dd2/via/GameObject.hpp
new file mode 100644
index 000000000..e84b7eaa2
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/GameObject.hpp
@@ -0,0 +1,24 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+namespace regenny::via {
+struct Transform;
+}
+namespace regenny::via {
+struct Folder;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct GameObject : public clr::ManagedObject {
+ private: char pad_10[0x2]; public:
+ bool Update; // 0x12
+ bool Draw; // 0x13
+ bool UpdateSelf; // 0x14
+ bool DrawSelf; // 0x15
+ private: char pad_16[0x2]; public:
+ regenny::via::Transform* Transform; // 0x18
+ regenny::via::Folder* folder; // 0x20
+ private: char pad_28[0x24]; public:
+ float timescale; // 0x4c
+}; // Size: 0x50
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/IntArray.hpp b/shared/sdk/regenny/dd2/via/IntArray.hpp
new file mode 100644
index 000000000..715d82327
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/IntArray.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct IntArray {
+ int32_t* data; // 0x0
+ uint64_t count; // 0x8
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/JobSet.hpp b/shared/sdk/regenny/dd2/via/JobSet.hpp
new file mode 100644
index 000000000..6c02f4f7e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/JobSet.hpp
@@ -0,0 +1,28 @@
+#pragma once
+namespace regenny::via {
+struct Object;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct JobSet {
+ struct Job {
+ }; // Size: 0x0
+
+ struct JobThing {
+ void* func; // 0x0
+ private: char pad_8[0xf8]; public:
+ }; // Size: 0x100
+
+ struct Unk {
+ void** vtable; // 0x0
+ regenny::via::Object* owner; // 0x8
+ void* func; // 0x10
+ private: char pad_18[0x8]; public:
+ regenny::via::Object* owner2; // 0x20
+ private: char pad_28[0xd8]; public:
+ }; // Size: 0x100
+
+ Unk* data; // 0x0
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Joint.hpp b/shared/sdk/regenny/dd2/via/Joint.hpp
new file mode 100644
index 000000000..a12dedb13
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Joint.hpp
@@ -0,0 +1,23 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+#include "vec4.hpp"
+namespace regenny::via {
+struct Transform;
+}
+namespace regenny::via {
+struct JointDesc;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Joint : public clr::ManagedObject {
+ regenny::via::Transform* Owner; // 0x10
+ regenny::via::JointDesc* Desc; // 0x18
+ regenny::via::vec4 LocalPosition; // 0x20
+ regenny::via::vec4 LocalRotation; // 0x30
+ regenny::via::vec4 LocalScale; // 0x40
+ int32_t ConstraintJointIndex; // 0x50
+ int32_t JointIndex; // 0x54
+ private: char pad_58[0x8]; public:
+}; // Size: 0x60
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/JointArray.hpp b/shared/sdk/regenny/dd2/via/JointArray.hpp
new file mode 100644
index 000000000..a091c4eb5
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/JointArray.hpp
@@ -0,0 +1,18 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+namespace regenny::via::typeinfo {
+struct TypeInfo;
+}
+namespace regenny::via {
+struct Joint;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct JointArray : public clr::ManagedObject {
+ regenny::via::typeinfo::TypeInfo* array_type; // 0x10
+ int32_t count; // 0x18
+ int32_t num_allocated; // 0x1c
+ regenny::via::Joint* joints[256]; // 0x20
+}; // Size: 0x820
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/JointData.hpp b/shared/sdk/regenny/dd2/via/JointData.hpp
new file mode 100644
index 000000000..ce22e31eb
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/JointData.hpp
@@ -0,0 +1,12 @@
+#pragma once
+#include "vec4.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct JointData {
+ regenny::via::vec4 rotation; // 0x0
+ regenny::via::vec4 translation; // 0x10
+ regenny::via::vec4 scale; // 0x20
+ regenny::via::vec4 blend; // 0x30
+}; // Size: 0x40
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/JointDesc.hpp b/shared/sdk/regenny/dd2/via/JointDesc.hpp
new file mode 100644
index 000000000..965708c6a
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/JointDesc.hpp
@@ -0,0 +1,16 @@
+#pragma once
+#include "vec4.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct JointDesc {
+ // Metadata: utf16*
+ wchar_t* name; // 0x0
+ uint32_t name_hash; // 0x8
+ int16_t parent_index; // 0xc
+ int16_t symmetry_index; // 0xe
+ regenny::via::vec4 position; // 0x10
+ regenny::via::vec4 rotation; // 0x20
+ regenny::via::vec4 scale; // 0x30
+}; // Size: 0x40
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/JointMap.hpp b/shared/sdk/regenny/dd2/via/JointMap.hpp
new file mode 100644
index 000000000..790c37c71
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/JointMap.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny::via {
+struct JointData;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct JointMap {
+ regenny::via::JointData* joints; // 0x0
+ private: char pad_8[0x4]; public:
+ int32_t num_joints; // 0xc
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp b/shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp
new file mode 100644
index 000000000..eef04f561
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/ManagedObjectArray.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny::via::clr {
+struct ManagedObject;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct ManagedObjectArray {
+ regenny::via::clr::ManagedObject** objects; // 0x0
+ uint32_t count; // 0x8
+ uint32_t capacity; // 0xc
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/MobileBarState.hpp b/shared/sdk/regenny/dd2/via/MobileBarState.hpp
new file mode 100644
index 000000000..bbaa5c9e4
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/MobileBarState.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+enum class MobileBarState : uint32_t {
+ None = 0,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Motion.hpp b/shared/sdk/regenny/dd2/via/Motion.hpp
new file mode 100644
index 000000000..c22e7f8a3
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Motion.hpp
@@ -0,0 +1,11 @@
+#pragma once
+#include "JointMap.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Motion {
+ private: char pad_0[0x200]; public:
+ regenny::via::JointMap jointmap; // 0x200
+ private: char pad_210[0xdf0]; public:
+}; // Size: 0x1000
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Object.hpp b/shared/sdk/regenny/dd2/via/Object.hpp
new file mode 100644
index 000000000..304509e15
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Object.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Object {
+ void* vtable; // 0x0
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Point.hpp b/shared/sdk/regenny/dd2/via/Point.hpp
new file mode 100644
index 000000000..0de3ea1ab
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Point.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Point {
+ float x; // 0x0
+ float y; // 0x4
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Range.hpp b/shared/sdk/regenny/dd2/via/Range.hpp
new file mode 100644
index 000000000..400f93bf6
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Range.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Range {
+ float s; // 0x0
+ float r; // 0x4
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/RenderType.hpp b/shared/sdk/regenny/dd2/via/RenderType.hpp
new file mode 100644
index 000000000..03e617b3e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/RenderType.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+enum class RenderType : uint32_t {
+ None = 0,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Scene.hpp b/shared/sdk/regenny/dd2/via/Scene.hpp
new file mode 100644
index 000000000..5328c0d0e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Scene.hpp
@@ -0,0 +1,11 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Scene : public clr::ManagedObject {
+ char asdf; // 0x10
+ private: char pad_11[0xf]; public:
+ float timescale; // 0x20
+}; // Size: 0x24
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/SceneArray.hpp b/shared/sdk/regenny/dd2/via/SceneArray.hpp
new file mode 100644
index 000000000..cf6847ba4
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/SceneArray.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny::via {
+struct Scene;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct SceneArray {
+ int32_t count; // 0x0
+ private: char pad_4[0x4]; public:
+ regenny::via::Scene** elements; // 0x8
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/SceneManager.hpp b/shared/sdk/regenny/dd2/via/SceneManager.hpp
new file mode 100644
index 000000000..a9339b68b
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/SceneManager.hpp
@@ -0,0 +1,20 @@
+#pragma once
+#include "SceneArray.hpp"
+namespace regenny::via {
+struct SceneView;
+}
+namespace regenny::via {
+struct Scene;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct SceneManager {
+ private: char pad_0[0x48]; public:
+ regenny::via::SceneView* main_view; // 0x48
+ regenny::via::Scene* main_scene; // 0x50
+ private: char pad_58[0x20]; public:
+ regenny::via::SceneArray scenes; // 0x78
+ private: char pad_88[0x150]; public:
+}; // Size: 0x1d8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/SceneView.hpp b/shared/sdk/regenny/dd2/via/SceneView.hpp
new file mode 100644
index 000000000..984c22c90
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/SceneView.hpp
@@ -0,0 +1,50 @@
+#pragma once
+#include "BasisPlane.hpp"
+#include "CameraType.hpp"
+#include "Color.hpp"
+#include "DeviceOrientation.hpp"
+#include "DisplayType.hpp"
+#include "MobileBarState.hpp"
+#include "RenderType.hpp"
+#include "Size.hpp"
+#include "clr\ManagedObject.hpp"
+namespace regenny::via {
+struct Window;
+}
+namespace regenny::via {
+struct Scene;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct SceneView : public clr::ManagedObject {
+ regenny::via::Window* window; // 0x10
+ regenny::via::Scene* scene; // 0x18
+ regenny::via::Color background_color; // 0x20
+ private: char pad_24[0x4]; public:
+ // Metadata: utf16*
+ wchar_t* name; // 0x28
+ regenny::via::Size size; // 0x30
+ regenny::via::Size custom_display_size; // 0x38
+ regenny::via::Size present_rect; // 0x40
+ private: char pad_48[0x18]; public:
+ bool draw_develop; // 0x60
+ bool tool_light; // 0x61
+ bool show_icons; // 0x62
+ bool outline_fadeout_enable; // 0x63
+ regenny::via::DisplayType display_type; // 0x64
+ regenny::via::BasisPlane basis_plane; // 0x68
+ regenny::via::CameraType camera_type; // 0x6c
+ regenny::via::RenderType render_type; // 0x70
+ int32_t icon_size; // 0x74
+ float indicator_scale; // 0x78
+ private: char pad_7c[0x14]; public:
+ void* message_function_handle; // 0x90
+ private: char pad_98[0x4]; public:
+ regenny::via::DeviceOrientation orientation; // 0x9c
+ regenny::via::MobileBarState mobile_status_bar_state; // 0xa0
+ regenny::via::MobileBarState mobile_nav_bar_state; // 0xa4
+ bool fix_mobile_nav_bar_bottom; // 0xa8
+ private: char pad_a9[0x7]; public:
+}; // Size: 0xb0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Size.hpp b/shared/sdk/regenny/dd2/via/Size.hpp
new file mode 100644
index 000000000..0ab4a53a0
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Size.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Size {
+ float w; // 0x0
+ float h; // 0x4
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Sphere.hpp b/shared/sdk/regenny/dd2/via/Sphere.hpp
new file mode 100644
index 000000000..4f3021552
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Sphere.hpp
@@ -0,0 +1,10 @@
+#pragma once
+#include "vec3.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Sphere {
+ regenny::via::vec3 pos; // 0x0
+ float r; // 0xc
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Transform.hpp b/shared/sdk/regenny/dd2/via/Transform.hpp
new file mode 100644
index 000000000..c49ca1c8b
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Transform.hpp
@@ -0,0 +1,35 @@
+#pragma once
+#include "Component.hpp"
+#include "mat4.hpp"
+#include "vec4.hpp"
+namespace regenny::via {
+struct Scene;
+}
+namespace regenny::via {
+struct JointArray;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Transform : public Component {
+ regenny::via::vec4 Position; // 0x30
+ regenny::via::vec4 Rotation; // 0x40
+ regenny::via::vec4 Scale; // 0x50
+ regenny::via::Scene* Scene; // 0x60
+ regenny::via::Transform* Child; // 0x68
+ regenny::via::Transform* Next; // 0x70
+ regenny::via::Transform* Parent; // 0x78
+ regenny::via::mat4 WorldTransform; // 0x80
+ void* JointHashTbl; // 0xc0
+ int32_t ParentJointIndex; // 0xc8
+ int32_t UpdateFrame; // 0xcc
+ bool SameJointsConstraint; // 0xd0
+ bool DirtySelf; // 0xd1
+ bool DirtyUpwards; // 0xd2
+ bool AbsoluteScaling; // 0xd3
+ private: char pad_d4[0x4]; public:
+ regenny::via::JointArray* JointTbl; // 0xd8
+ regenny::via::mat4* JointMatrixTbl; // 0xe0
+ private: char pad_e8[0x28]; public:
+}; // Size: 0x110
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/UInt8Array.hpp b/shared/sdk/regenny/dd2/via/UInt8Array.hpp
new file mode 100644
index 000000000..6df5099d0
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/UInt8Array.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct UInt8Array {
+ uint8_t* data; // 0x0
+ uint64_t count; // 0x8
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/UIntArray.hpp b/shared/sdk/regenny/dd2/via/UIntArray.hpp
new file mode 100644
index 000000000..5b04bcea7
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/UIntArray.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct UIntArray {
+ uint32_t* data; // 0x0
+ uint64_t count; // 0x8
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/UIntArrayArray.hpp b/shared/sdk/regenny/dd2/via/UIntArrayArray.hpp
new file mode 100644
index 000000000..19bb3febb
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/UIntArrayArray.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::via {
+struct UIntArray;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct UIntArrayArray {
+ regenny::via::UIntArray* data; // 0x0
+ uint64_t count; // 0x8
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/Window.hpp b/shared/sdk/regenny/dd2/via/Window.hpp
new file mode 100644
index 000000000..9d661cedb
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/Window.hpp
@@ -0,0 +1,18 @@
+#pragma once
+#include "Point.hpp"
+#include "Size.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct Window {
+ void* vtable; // 0x0
+ private: char pad_8[0x58]; public:
+ uint32_t width; // 0x60
+ uint32_t height; // 0x64
+ regenny::via::Point cursor_pos; // 0x68
+ bool show_cursor; // 0x70
+ private: char pad_71[0x2f]; public:
+ regenny::via::Size borderless_size; // 0xa0
+ private: char pad_a8[0x58]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/array.hpp b/shared/sdk/regenny/dd2/via/array.hpp
new file mode 100644
index 000000000..7a9f2785c
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/array.hpp
@@ -0,0 +1,15 @@
+#pragma once
+#include "clr\ManagedObject.hpp"
+namespace regenny {
+struct TypeDefinition;
+}
+namespace regenny::via {
+#pragma pack(push, 1)
+struct array : public clr::ManagedObject {
+ regenny::TypeDefinition* contained_type; // 0x10
+ int32_t count; // 0x18
+ int32_t allocated; // 0x1c
+ private: char pad_20[0xe0]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp b/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp
new file mode 100644
index 000000000..8e45ebf7f
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTree.hpp
@@ -0,0 +1,11 @@
+#pragma once
+#include "..\Component.hpp"
+#include "BehaviorTreeCoreHandleArray.hpp"
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct BehaviorTree : public regenny::via::Component {
+ private: char pad_30[0x68]; public:
+ regenny::via::behaviortree::BehaviorTreeCoreHandleArray trees; // 0x98
+}; // Size: 0xa4
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp b/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp
new file mode 100644
index 000000000..3538abe43
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeCoreHandleArray.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::via::behaviortree {
+struct CoreHandle;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct BehaviorTreeCoreHandleArray {
+ regenny::via::behaviortree::CoreHandle** handles; // 0x0
+ uint32_t count; // 0x8
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp b/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp
new file mode 100644
index 000000000..1675d854c
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/BehaviorTreeData.hpp
@@ -0,0 +1,12 @@
+#pragma once
+#include "TreeObjectData.hpp"
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct BehaviorTreeData {
+ void* vftable; // 0x0
+ bool unk_bool; // 0x8
+ private: char pad_9[0x7]; public:
+ regenny::via::behaviortree::TreeObjectData data; // 0x10
+}; // Size: 0x310
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp b/shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp
new file mode 100644
index 000000000..0fb3d26fa
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/Condition.hpp
@@ -0,0 +1,8 @@
+#pragma once
+#include "..\clr\ManagedObject.hpp"
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct Condition : public regenny::via::clr::ManagedObject {
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/Core.hpp b/shared/sdk/regenny/dd2/via/behaviortree/Core.hpp
new file mode 100644
index 000000000..b58a90be3
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/Core.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny::via::behaviortree {
+struct TreeObject;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct Core {
+ void** vftable; // 0x0
+ regenny::via::behaviortree::TreeObject* tree_object; // 0x8
+ private: char pad_10[0x1d0]; public:
+}; // Size: 0x1e0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp b/shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp
new file mode 100644
index 000000000..a85e5081b
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/CoreHandle.hpp
@@ -0,0 +1,12 @@
+#pragma once
+#include "Core.hpp"
+#include "..\clr\ManagedObject.hpp"
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct CoreHandle : public regenny::via::clr::ManagedObject {
+ private: char pad_10[0x8]; public:
+ regenny::via::behaviortree::Core core; // 0x18
+ private: char pad_1f8[0x28]; public:
+}; // Size: 0x220
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp b/shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp
new file mode 100644
index 000000000..e34c5379c
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/NodeArray.hpp
@@ -0,0 +1,12 @@
+#pragma once
+namespace regenny::via::behaviortree {
+struct TreeNode;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct NodeArray {
+ regenny::via::behaviortree::TreeNode* nodes; // 0x0
+ uint32_t count; // 0x8
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp b/shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp
new file mode 100644
index 000000000..ab248950e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/NodeArray2.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny::via::behaviortree {
+struct TreeNode;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct NodeArray2 {
+ regenny::via::behaviortree::TreeNode** nodes; // 0x0
+ uint32_t unk; // 0x8
+ uint32_t count; // 0xc
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp b/shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp
new file mode 100644
index 000000000..897951418
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/NodeStatus.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+enum NodeStatus : uint32_t {
+ Off = 0,
+ On = 2,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp b/shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp
new file mode 100644
index 000000000..337af35ae
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/Selector.hpp
@@ -0,0 +1,15 @@
+#pragma once
+#include "..\clr\ManagedObject.hpp"
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct Selector : public regenny::via::clr::ManagedObject {
+ bool late_select; // 0x10
+ bool b2; // 0x11
+ bool b3; // 0x12
+ private: char pad_13[0x5]; public:
+ uint32_t* buf; // 0x18
+ uint32_t bufsize; // 0x20
+ private: char pad_24[0x4]; public:
+}; // Size: 0x28
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp b/shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp
new file mode 100644
index 000000000..cf6c15bc5
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/SelectorFSM.hpp
@@ -0,0 +1,18 @@
+#pragma once
+#include "NodeArray2.hpp"
+#include "Selector.hpp"
+namespace regenny::via::behaviortree {
+struct TreeNode;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct SelectorFSM : public Selector {
+ regenny::via::behaviortree::TreeNode* owner_node; // 0x28
+ regenny::via::behaviortree::TreeNode* active_node; // 0x30
+ regenny::via::behaviortree::NodeArray2 next_nodes; // 0x38
+ regenny::via::behaviortree::NodeArray2 node_choices; // 0x48
+ bool illegal; // 0x58
+ private: char pad_59[0x7]; public:
+}; // Size: 0x60
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp b/shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp
new file mode 100644
index 000000000..85deea7e6
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/TreeNode.hpp
@@ -0,0 +1,50 @@
+#pragma once
+#include "NodeStatus.hpp"
+namespace regenny::via::behaviortree {
+struct TreeNodeData;
+}
+namespace regenny::via::behaviortree {
+struct TreeObject;
+}
+namespace regenny::via::behaviortree {
+struct SelectorFSM;
+}
+namespace regenny::via::behaviortree {
+struct Condition;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct TreeNode {
+ uint64_t id; // 0x0
+ regenny::via::behaviortree::TreeNodeData* data; // 0x8
+ regenny::via::behaviortree::TreeObject* owner; // 0x10
+ uint16_t attr; // 0x18
+ uint16_t unk_flags; // 0x1a
+ uint16_t pad[2]; // 0x1c
+ regenny::via::behaviortree::SelectorFSM* selector; // 0x20
+ regenny::via::behaviortree::Condition* selector_condition; // 0x28
+ int32_t selector_condition_index; // 0x30
+ int32_t priority; // 0x34
+ regenny::via::behaviortree::TreeNode* node_parent; // 0x38
+ uint32_t num_children; // 0x40
+ private: char pad_44[0xc]; public:
+ uint32_t num_actions; // 0x50
+ uint32_t num_selector_callers; // 0x54
+ regenny::via::behaviortree::Condition* parent_condition; // 0x58
+ int32_t parent_condition_index; // 0x60
+ regenny::via::behaviortree::NodeStatus status1; // 0x64
+ regenny::via::behaviortree::NodeStatus status2; // 0x68
+ private: char pad_6c[0x4]; public:
+ // Metadata: utf16*
+ wchar_t name[12]; // 0x70
+ uint32_t name_len; // 0x88
+ uint32_t name_capacity; // 0x8c
+ regenny::via::behaviortree::TreeNode* node_end; // 0x90
+ regenny::via::behaviortree::TreeNode* node_restart; // 0x98
+ regenny::via::behaviortree::TreeNode* node_end_notify; // 0xa0
+ regenny::via::behaviortree::TreeNode* node_end_selector; // 0xa8
+ regenny::via::behaviortree::TreeNode* node_active_child; // 0xb0
+ private: char pad_b8[0x18]; public:
+}; // Size: 0xd0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp b/shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp
new file mode 100644
index 000000000..34a477d8a
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/TreeNodeData.hpp
@@ -0,0 +1,46 @@
+#pragma once
+#include "..\IntArray.hpp"
+#include "..\UIntArray.hpp"
+#include "..\UIntArrayArray.hpp"
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct TreeNodeData {
+ uint32_t id; // 0x0
+ uint32_t id_2; // 0x4
+ uint32_t attr; // 0x8
+ bool is_branch; // 0xc
+ bool is_end; // 0xd
+ bool has_selector; // 0xe
+ private: char pad_f[0x25]; public:
+ uint32_t parent; // 0x34
+ uint32_t parent_2; // 0x38
+ private: char pad_3c[0x4]; public:
+ regenny::via::UIntArray children; // 0x40
+ regenny::via::UIntArray children2; // 0x50
+ regenny::via::IntArray conditions; // 0x60
+ regenny::via::UIntArray states; // 0x70
+ regenny::via::UIntArray states_2; // 0x80
+ regenny::via::IntArray transition_conditions; // 0x90
+ regenny::via::UIntArray transition_ids; // 0xa0
+ regenny::via::UIntArray transition_attributes; // 0xb0
+ regenny::via::UIntArray actions; // 0xc0
+ regenny::via::UIntArray actions_2; // 0xd0
+ private: char pad_e0[0x50]; public:
+ regenny::via::IntArray start_transitions; // 0x130
+ regenny::via::UIntArray start_states; // 0x140
+ regenny::via::UIntArray start_states_2; // 0x150
+ regenny::via::UIntArrayArray transition_events; // 0x160
+ regenny::via::UIntArrayArray start_transition_events; // 0x170
+ regenny::via::UIntArrayArray unkarray3; // 0x180
+ regenny::via::UIntArray tags; // 0x190
+ // Metadata: utf16*
+ wchar_t name[12]; // 0x1a0
+ uint32_t name_len; // 0x1b8
+ uint32_t name_capacity; // 0x1bc
+ uint32_t name_offset; // 0x1c0
+ uint32_t name_murmur_hash; // 0x1c4
+ uint32_t full_name_murmur_hash; // 0x1c8
+ uint32_t pad__; // 0x1cc
+}; // Size: 0x1d0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp b/shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp
new file mode 100644
index 000000000..19f9d7977
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/TreeObject.hpp
@@ -0,0 +1,32 @@
+#pragma once
+#include "..\ManagedObjectArray.hpp"
+#include "..\UIntArray.hpp"
+#include "NodeArray.hpp"
+namespace regenny::via::behaviortree {
+struct TreeObjectData;
+}
+namespace regenny::via::behaviortree {
+struct TreeNode;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct TreeObject {
+ void* vfptr; // 0x0
+ regenny::via::behaviortree::TreeObjectData* data; // 0x8
+ regenny::via::behaviortree::NodeArray nodes; // 0x10
+ private: char pad_1c[0x4]; public:
+ regenny::via::ManagedObjectArray selectors; // 0x20
+ private: char pad_30[0x10]; public:
+ regenny::via::ManagedObjectArray actions; // 0x40
+ regenny::via::ManagedObjectArray conditions; // 0x50
+ regenny::via::ManagedObjectArray transitions; // 0x60
+ regenny::via::ManagedObjectArray expression_tree_conditions; // 0x70
+ regenny::via::UIntArray selector_nodes; // 0x80
+ regenny::via::ManagedObjectArray delayed_actions; // 0x90
+ regenny::via::ManagedObjectArray delayed_conditions; // 0xa0
+ regenny::via::ManagedObjectArray delayed_transitions; // 0xb0
+ regenny::via::behaviortree::TreeNode* root_node; // 0xc0
+ private: char pad_c8[0x10]; public:
+}; // Size: 0xd8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp b/shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp
new file mode 100644
index 000000000..36aa0869a
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/behaviortree/TreeObjectData.hpp
@@ -0,0 +1,28 @@
+#pragma once
+#include "..\ManagedObjectArray.hpp"
+#include "..\UInt8Array.hpp"
+namespace regenny::via::behaviortree {
+struct TreeNodeData;
+}
+namespace regenny::via::behaviortree {
+#pragma pack(push, 1)
+struct TreeObjectData {
+ void* vftable; // 0x0
+ regenny::via::behaviortree::TreeNodeData* nodes; // 0x8
+ uint32_t node_count; // 0x10
+ private: char pad_14[0x4]; public:
+ regenny::via::ManagedObjectArray static_selector_callers; // 0x18
+ regenny::via::ManagedObjectArray static_actions; // 0x28
+ regenny::via::ManagedObjectArray static_conditions; // 0x38
+ regenny::via::ManagedObjectArray static_transitions; // 0x48
+ regenny::via::ManagedObjectArray expression_tree_conditions; // 0x58
+ regenny::via::ManagedObjectArray actions; // 0x68
+ regenny::via::ManagedObjectArray conditions; // 0x78
+ regenny::via::ManagedObjectArray transitions; // 0x88
+ private: char pad_98[0x60]; public:
+ regenny::via::UInt8Array action_methods; // 0xf8
+ regenny::via::UInt8Array static_action_methods; // 0x108
+ private: char pad_118[0x1e8]; public:
+}; // Size: 0x300
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp b/shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp
new file mode 100644
index 000000000..6b0d2b579
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/clr/ManagedObject.hpp
@@ -0,0 +1,13 @@
+#pragma once
+namespace regenny {
+struct ManagedVtable;
+}
+namespace regenny::via::clr {
+#pragma pack(push, 1)
+struct ManagedObject {
+ regenny::ManagedVtable* info; // 0x0
+ uint32_t reference_count; // 0x8
+ uint32_t unk; // 0xc
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp b/shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp
new file mode 100644
index 000000000..a58fcb786
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/fixed_array_jobs.hpp
@@ -0,0 +1,8 @@
+#pragma once
+#include "JobSet.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct fixed_array_jobs {
+}; // Size: 0x0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/Control.hpp b/shared/sdk/regenny/dd2/via/gui/Control.hpp
new file mode 100644
index 000000000..311eb4d9c
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/Control.hpp
@@ -0,0 +1,19 @@
+#pragma once
+#include "TransformObject.hpp"
+#include "..\vec3.hpp"
+#include "..\vec4.hpp"
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct Control : public TransformObject {
+ private: char pad_120[0x4]; public:
+ uint32_t StatePattern; // 0x124
+ float PlayFrame; // 0x128
+ regenny::via::vec4 ColorScale; // 0x12c
+ regenny::via::vec3 ColorOffset; // 0x13c
+ float Saturation; // 0x148
+ private: char pad_14c[0x3c]; public:
+ bool UseGUISound; // 0x188
+ private: char pad_189[0x27]; public:
+}; // Size: 0x1b0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/GUI.hpp b/shared/sdk/regenny/dd2/via/gui/GUI.hpp
new file mode 100644
index 000000000..0ed45e573
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/GUI.hpp
@@ -0,0 +1,32 @@
+#pragma once
+#include "..\Component.hpp"
+namespace regenny::via {
+struct SceneView;
+}
+namespace regenny::via::gui {
+struct View;
+}
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct GUI : public regenny::via::Component {
+ regenny::via::SceneView* SceneView; // 0x30
+ void* GUIResource; // 0x38
+ void* RtTextureHandle; // 0x40
+ void* GUISound; // 0x48
+ bool Enabled; // 0x50
+ bool FailedSetup; // 0x51
+ uint8_t MaskLayerBits; // 0x52
+ uint8_t MaskLayerBits2; // 0x53
+ uint8_t MaskLayerBits3; // 0x54
+ private: char pad_55[0x3]; public:
+ uint32_t RenderOutputID; // 0x58
+ float PlaySpeed; // 0x5c
+ uint32_t Segment; // 0x60
+ uint32_t SoftParticleDistType; // 0x64
+ float SoftParticleDist; // 0x68
+ private: char pad_6c[0x4]; public:
+ regenny::via::gui::View* View; // 0x70
+ private: char pad_78[0x258]; public:
+}; // Size: 0x2d0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/GUIManager.hpp b/shared/sdk/regenny/dd2/via/gui/GUIManager.hpp
new file mode 100644
index 000000000..d3048d1fd
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/GUIManager.hpp
@@ -0,0 +1,13 @@
+#pragma once
+#include "..\JobSet.hpp"
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct GUIManager {
+ private: char pad_0[0xe0]; public:
+ regenny::via::JobSet update_task; // 0xe0
+ private: char pad_e8[0x38]; public:
+ regenny::via::JobSet draw_task; // 0x120
+ private: char pad_128[0x78]; public:
+}; // Size: 0x1a0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp b/shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp
new file mode 100644
index 000000000..33ab95e87
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/GUIMeshRenderer.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct GUIMeshRenderer {
+ private: char pad_0[0x100]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/PlayObject.hpp b/shared/sdk/regenny/dd2/via/gui/PlayObject.hpp
new file mode 100644
index 000000000..def291730
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/PlayObject.hpp
@@ -0,0 +1,61 @@
+#pragma once
+#include "..\clr\ManagedObject.hpp"
+namespace regenny::via::gui {
+struct GUI;
+}
+namespace regenny::via::gui {
+struct Control;
+}
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct PlayObject : public regenny::via::clr::ManagedObject {
+ // Metadata: utf16*
+ wchar_t* Name; // 0x10
+ regenny::via::gui::GUI* Component; // 0x18
+ private: char pad_20[0x8]; public:
+ regenny::via::gui::Control* Parent; // 0x28
+ regenny::via::gui::PlayObject* Next; // 0x30
+ regenny::via::gui::PlayObject* Prev; // 0x38
+ private: char pad_40[0x2]; public:
+ uint16_t Priority; // 0x42
+ private: char pad_44[0x3]; public:
+ uint8_t pad; // 0x47
+ uint64_t Visible : 1; // 0x48
+ uint64_t Visible2 : 1; // 0x48
+ uint64_t HitVisible : 1; // 0x48
+ uint64_t ShouldPlay : 1; // 0x48
+ uint64_t IsPlaying : 1; // 0x48
+ uint64_t IsInteractive : 1; // 0x48
+ uint64_t HasName : 1; // 0x48
+ uint64_t HasTag : 1; // 0x48
+ uint64_t SequenceAsset : 1; // 0x48
+ uint64_t IsPNG : 1; // 0x48
+ uint64_t IsJPG : 1; // 0x48
+ uint64_t LinearAlphaBlend : 1; // 0x48
+ uint64_t CompOwnership : 1; // 0x48
+ uint64_t DuplicateRoot : 1; // 0x48
+ uint64_t DataBind : 1; // 0x48
+ uint64_t DataBinding : 1; // 0x48
+ uint64_t AllocExData : 1; // 0x48
+ uint64_t NextStateEnable : 1; // 0x48
+ uint64_t _Unk : 1; // 0x48
+ uint64_t _Unk2 : 1; // 0x48
+ uint64_t ResolutionAdjust : 1; // 0x48
+ uint64_t UniqueVisible : 1; // 0x48
+ uint64_t EffectAlphaType : 1; // 0x48
+ uint64_t HasOverrideProp : 1; // 0x48
+ uint64_t IsCapturable : 1; // 0x48
+ uint64_t ForceInvisible : 1; // 0x48
+ uint64_t ClipPlaying : 1; // 0x48
+ uint64_t BlendType : 2; // 0x48
+ uint64_t MaskType : 3; // 0x48
+ uint64_t MaskMode : 3; // 0x48
+ uint64_t ColorType : 2; // 0x48
+ uint64_t ControlPoint : 4; // 0x48
+ uint64_t ResolutionCond : 2; // 0x48
+ uint64_t ResolutionScale : 2; // 0x48
+ uint64_t UVType : 2; // 0x48
+ uint64_t UnkFlags : 17; // 0x48
+}; // Size: 0x50
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp b/shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp
new file mode 100644
index 000000000..6301f0a4a
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/PrimitiveContext.hpp
@@ -0,0 +1,10 @@
+#pragma once
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct PrimitiveContext {
+ private: char pad_0[0xec]; public:
+ int32_t gui_camera; // 0xec
+ private: char pad_f0[0x210]; public:
+}; // Size: 0x300
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/TransformObject.hpp b/shared/sdk/regenny/dd2/via/gui/TransformObject.hpp
new file mode 100644
index 000000000..f07752ef4
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/TransformObject.hpp
@@ -0,0 +1,9 @@
+#pragma once
+#include "PlayObject.hpp"
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct TransformObject : public PlayObject {
+ private: char pad_50[0xd0]; public:
+}; // Size: 0x120
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/View.hpp b/shared/sdk/regenny/dd2/via/gui/View.hpp
new file mode 100644
index 000000000..0a8d5ea4c
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/View.hpp
@@ -0,0 +1,20 @@
+#pragma once
+#include "..\Size.hpp"
+#include "Window.hpp"
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct View : public Window {
+ bool Overlay; // 0x1c0
+ bool DepthTest; // 0x1c1
+ bool DetoneMap; // 0x1c2
+ bool CoordCorrection; // 0x1c3
+ uint32_t ViewType; // 0x1c4
+ private: char pad_1c8[0x4]; public:
+ uint32_t ReprojectionType; // 0x1cc
+ regenny::via::Size ScreenSize; // 0x1d0
+ float BaseFps; // 0x1d8
+ bool UseGUICamera; // 0x1dc
+ private: char pad_1dd[0x3]; public:
+}; // Size: 0x1e0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/gui/Window.hpp b/shared/sdk/regenny/dd2/via/gui/Window.hpp
new file mode 100644
index 000000000..4a7922cb9
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/gui/Window.hpp
@@ -0,0 +1,10 @@
+#pragma once
+#include "Control.hpp"
+namespace regenny::via::gui {
+#pragma pack(push, 1)
+struct Window : public Control {
+ bool Open; // 0x1b0
+ private: char pad_1b1[0xf]; public:
+}; // Size: 0x1c0
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/mat4.hpp b/shared/sdk/regenny/dd2/via/mat4.hpp
new file mode 100644
index 000000000..e3e010629
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/mat4.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct mat4 {
+ float m[4][4]; // 0x0
+}; // Size: 0x40
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp b/shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp
new file mode 100644
index 000000000..7d7e8aff8
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/AxisDirection.hpp
@@ -0,0 +1,10 @@
+#pragma once
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+enum AxisDirection {
+ X = 1,
+ Y = 2,
+ NZ = 7,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/Chain.hpp b/shared/sdk/regenny/dd2/via/motion/Chain.hpp
new file mode 100644
index 000000000..fc0b3b865
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/Chain.hpp
@@ -0,0 +1,21 @@
+#pragma once
+#include "ChainCollisionArray.hpp"
+#include "SecondaryAnimation.hpp"
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct Chain : public SecondaryAnimation {
+ private: char pad_50[0xf0]; public:
+ regenny::via::motion::ChainCollisionArray CollisionData; // 0x140
+ private: char pad_154[0xd8]; public:
+ float BlendRate; // 0x22c
+ float FreezeRate; // 0x230
+ private: char pad_234[0x4c]; public:
+ float StepFrame; // 0x280
+ private: char pad_284[0xf4]; public:
+ uint32_t CalculateMode; // 0x378
+ private: char pad_37c[0x4]; public:
+ uint32_t GravityCoord; // 0x380
+ private: char pad_384[0xc]; public:
+}; // Size: 0x390
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp b/shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp
new file mode 100644
index 000000000..627596133
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/ChainCollisionArray.hpp
@@ -0,0 +1,14 @@
+#pragma once
+namespace regenny::via::motion {
+struct ChainCollisionTop;
+}
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct ChainCollisionArray {
+ regenny::via::motion::ChainCollisionTop* collisions; // 0x0
+ int32_t num; // 0x8
+ int32_t num_allocated; // 0xc
+ int32_t preset_id; // 0x10
+}; // Size: 0x14
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp b/shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp
new file mode 100644
index 000000000..c2afa7231
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/ChainCollisionData.hpp
@@ -0,0 +1,21 @@
+#pragma once
+#include "..\vec3.hpp"
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct ChainCollisionData {
+ void* sub_data; // 0x0
+ regenny::via::vec3 pos; // 0x8
+ regenny::via::vec3 pair_pos; // 0x14
+ uint32_t joint_hash; // 0x20
+ uint32_t pair_joint_hash; // 0x24
+ float radius; // 0x28
+ float lerp; // 0x2c
+ uint8_t shape_type; // 0x30
+ uint8_t div; // 0x31
+ uint8_t num_sub_data; // 0x32
+ private: char pad_33[0x1]; public:
+ uint32_t flags; // 0x34
+ uint32_t unk; // 0x38
+}; // Size: 0x3c
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp b/shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp
new file mode 100644
index 000000000..8b285ba21
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/ChainCollisionTop.hpp
@@ -0,0 +1,18 @@
+#pragma once
+namespace regenny::via::motion {
+struct ChainCollisions;
+}
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct ChainCollisionTop {
+ regenny::via::motion::ChainCollisions* collisions; // 0x0
+ uint32_t num_collisions; // 0x8
+ uint32_t allocated_collisions; // 0xc
+ void** owner_transform; // 0x10
+ void* parent_transform; // 0x18
+ float scale; // 0x20
+ float parent_scale; // 0x24
+ private: char pad_28[0xd8]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp b/shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp
new file mode 100644
index 000000000..647d7eacd
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/ChainCollisions.hpp
@@ -0,0 +1,40 @@
+#pragma once
+#include "..\Capsule.hpp"
+#include "..\Sphere.hpp"
+#include "..\vec4.hpp"
+namespace regenny::via {
+struct Joint;
+}
+namespace regenny::via::motion {
+struct ChainCollisionData;
+}
+namespace regenny::via::motion {
+struct ChainCollisionTop;
+}
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct ChainCollisions {
+ uint32_t order; // 0x0
+ private: char pad_4[0xc]; public:
+ regenny::via::Sphere sphere; // 0x10
+ regenny::via::Capsule capsule; // 0x20
+ private: char pad_50[0x80]; public:
+ regenny::via::vec4 offset; // 0xd0
+ regenny::via::vec4 pair_offset; // 0xe0
+ private: char pad_f0[0x40]; public:
+ regenny::via::Joint* joint; // 0x130
+ regenny::via::Joint* pair_joint; // 0x138
+ regenny::via::motion::ChainCollisionData* data; // 0x140
+ regenny::via::motion::ChainCollisionTop* owner; // 0x148
+ float radius; // 0x150
+ float radius2; // 0x154
+ int32_t d; // 0x158
+ float lerp; // 0x15c
+ int32_t pad2; // 0x160
+ uint32_t flags; // 0x164
+ float scale; // 0x168
+ bool valid; // 0x16c
+ private: char pad_16d[0x13]; public:
+}; // Size: 0x180
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/Data.hpp b/shared/sdk/regenny/dd2/via/motion/Data.hpp
new file mode 100644
index 000000000..69b927014
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/Data.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct Data {
+ private: char pad_0[0x100]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp b/shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp
new file mode 100644
index 000000000..ff4c9da92
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/InterpolationMode.hpp
@@ -0,0 +1,8 @@
+#pragma once
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+enum InterpolationMode : uint32_t {
+ Fuck = 1,
+};
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp b/shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp
new file mode 100644
index 000000000..74323a7aa
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/MotionFsm2.hpp
@@ -0,0 +1,9 @@
+#pragma once
+#include "..\behaviortree\BehaviorTree.hpp"
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct MotionFsm2 : public regenny::via::behaviortree::BehaviorTree {
+ private: char pad_a4[0x5c]; public:
+}; // Size: 0x100
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp b/shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp
new file mode 100644
index 000000000..0ec138879
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/MotionFsm2Internal.hpp
@@ -0,0 +1,15 @@
+#pragma once
+#include "..\behaviortree\BehaviorTreeData.hpp"
+namespace regenny::via::motion {
+struct MotionFsm2RawData;
+}
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct MotionFsm2Internal {
+ void* vftable; // 0x0
+ regenny::via::motion::MotionFsm2RawData* data; // 0x8
+ private: char pad_10[0x8]; public:
+ regenny::via::behaviortree::BehaviorTreeData bhvt; // 0x18
+}; // Size: 0x328
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp b/shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp
new file mode 100644
index 000000000..1ea388f44
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/MotionFsm2Layer.hpp
@@ -0,0 +1,8 @@
+#pragma once
+#include "..\behaviortree\CoreHandle.hpp"
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct MotionFsm2Layer : public regenny::via::behaviortree::CoreHandle {
+}; // Size: 0x220
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp b/shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp
new file mode 100644
index 000000000..022e7450f
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/MotionFsm2RawData.hpp
@@ -0,0 +1,24 @@
+#pragma once
+namespace regenny::via::motion {
+struct TransitionMap;
+}
+namespace regenny::via::motion {
+struct TransitionData;
+}
+namespace regenny::via::motion {
+struct Data;
+}
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct MotionFsm2RawData {
+ uint8_t hdr[16]; // 0x0
+ uint8_t* file_data; // 0x10
+ regenny::via::motion::TransitionMap* transition_map; // 0x18
+ regenny::via::motion::TransitionData* transition_data; // 0x20
+ regenny::via::motion::Data* data; // 0x28
+ uint32_t transition_map_count; // 0x30
+ uint32_t transition_data_count; // 0x34
+ uint32_t transition_data_start; // 0x38
+}; // Size: 0x3c
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp b/shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp
new file mode 100644
index 000000000..95e736dda
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/MotionFsm2Resource.hpp
@@ -0,0 +1,10 @@
+#pragma once
+#include "MotionFsm2Internal.hpp"
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct MotionFsm2Resource {
+ private: char pad_0[0x50]; public:
+ regenny::via::motion::MotionFsm2Internal fsm2data; // 0x50
+}; // Size: 0x378
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp b/shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp
new file mode 100644
index 000000000..0f7c5635b
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/SecondaryAnimation.hpp
@@ -0,0 +1,10 @@
+#pragma once
+#include "..\Component.hpp"
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct SecondaryAnimation : public regenny::via::Component {
+ void* motion; // 0x30
+ private: char pad_38[0x18]; public:
+}; // Size: 0x50
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/TransitionData.hpp b/shared/sdk/regenny/dd2/via/motion/TransitionData.hpp
new file mode 100644
index 000000000..9b4b5531a
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/TransitionData.hpp
@@ -0,0 +1,23 @@
+#pragma once
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct TransitionData {
+ uint32_t id; // 0x0
+ uint32_t end_type : 4; // 0x4
+ uint32_t interpolation_mode : 4; // 0x4
+ uint32_t prev_move_to_end : 1; // 0x4
+ uint32_t start_type : 4; // 0x4
+ uint32_t elapsed_time_zero : 1; // 0x4
+ uint32_t cont_on_layer : 1; // 0x4
+ uint32_t cont_on_layer_interp_curve : 4; // 0x4
+ private: uint32_t pad_bitfield_4_13 : 13; public:
+ float exit_frame; // 0x8
+ float start_frame; // 0xc
+ float interpolation_frame; // 0x10
+ uint32_t pad; // 0x14
+ uint32_t pad2; // 0x18
+ uint32_t pad3; // 0x1c
+ uint32_t pad4; // 0x20
+}; // Size: 0x24
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp b/shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp
new file mode 100644
index 000000000..00d0f0c6e
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/motion/TransitionMap.hpp
@@ -0,0 +1,9 @@
+#pragma once
+namespace regenny::via::motion {
+#pragma pack(push, 1)
+struct TransitionMap {
+ uint32_t id; // 0x0
+ uint32_t index; // 0x4
+}; // Size: 0x8
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp b/shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp
new file mode 100644
index 000000000..f5896a6cf
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/typeinfo/TypeInfo.hpp
@@ -0,0 +1,27 @@
+#pragma once
+namespace regenny {
+struct TypeDefinition;
+}
+namespace regenny::via::typeinfo {
+#pragma pack(push, 1)
+struct TypeInfo {
+ void* vfptr; // 0x0
+ uint32_t fqn_hash; // 0x8
+ uint16_t attributes; // 0xc
+ uint16_t type; // 0xe
+ uint64_t fast_class_index; // 0x10
+ uint64_t bsr_fast_class_index; // 0x18
+ // Metadata: utf8*
+ char* name; // 0x20
+ uint32_t parent_typeid; // 0x28
+ uint32_t size; // 0x2c
+ uint32_t crc; // 0x30
+ uint32_t mics_flags; // 0x34
+ regenny::via::typeinfo::TypeInfo* parent; // 0x38
+ regenny::via::typeinfo::TypeInfo* child; // 0x40
+ regenny::via::typeinfo::TypeInfo* next; // 0x48
+ void* reflection; // 0x50
+ regenny::TypeDefinition* type_definition; // 0x58
+}; // Size: 0x60
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/vec3.hpp b/shared/sdk/regenny/dd2/via/vec3.hpp
new file mode 100644
index 000000000..7c2e9cbe0
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/vec3.hpp
@@ -0,0 +1,10 @@
+#pragma once
+namespace regenny::via {
+#pragma pack(push, 1)
+struct vec3 {
+ float x; // 0x0
+ float y; // 0x4
+ float z; // 0x8
+}; // Size: 0xc
+#pragma pack(pop)
+}
diff --git a/shared/sdk/regenny/dd2/via/vec4.hpp b/shared/sdk/regenny/dd2/via/vec4.hpp
new file mode 100644
index 000000000..686e03359
--- /dev/null
+++ b/shared/sdk/regenny/dd2/via/vec4.hpp
@@ -0,0 +1,9 @@
+#pragma once
+#include "vec3.hpp"
+namespace regenny::via {
+#pragma pack(push, 1)
+struct vec4 : public vec3 {
+ float w; // 0xc
+}; // Size: 0x10
+#pragma pack(pop)
+}
diff --git a/src/D3D12Hook.cpp b/src/D3D12Hook.cpp
index 0dc6d0f10..baea8a8ac 100644
--- a/src/D3D12Hook.cpp
+++ b/src/D3D12Hook.cpp
@@ -1,10 +1,13 @@
#include
#include
#include
+#include
#include
#include
#include
+#include
+#include
#include "REFramework.hpp"
@@ -224,6 +227,25 @@ bool D3D12Hook::hook() {
return false;
}
+ const auto ti = utility::rtti::get_type_info(swap_chain1);
+
+ try {
+ const auto swapchain_classname = ti != nullptr ? std::string_view{ti->name()} : "unknown";
+
+ if (swapchain_classname.contains("interposer::DXGISwapChain")) { // DLSS3
+ spdlog::info("Found Streamline (DLSSFG) swapchain during dummy initialization: {:x}", (uintptr_t)swap_chain1);
+ m_using_frame_generation_swapchain = true;
+ } else if (swapchain_classname.contains("FrameInterpolationSwapChain")) { // FSR3
+ spdlog::info("Found FSR3 swapchain during dummy initialization: {:x}", (uintptr_t)swap_chain1);
+ m_using_frame_generation_swapchain = true;
+ }
+ } catch (const std::exception& e) {
+ spdlog::error("Failed to get type info: {}", e.what());
+ } catch (...) {
+ spdlog::error("Failed to get type info: unknown exception");
+ }
+
+
spdlog::info("Finding command queue offset");
// Find the command queue offset in the swapchain
@@ -244,9 +266,13 @@ bool D3D12Hook::hook() {
}
}
+ auto target_swapchain = swap_chain;
+
// Scan throughout the swapchain for a valid pointer to scan through
// this is usually only necessary for Proton
if (m_command_queue_offset == 0) {
+ bool should_break = false;
+
for (auto base = 0; base < 512 * sizeof(void*); base += sizeof(void*)) {
const auto pre_scan_base = (uintptr_t)swap_chain1 + base;
@@ -271,9 +297,21 @@ bool D3D12Hook::hook() {
auto data = *(ID3D12CommandQueue**)pre_data;
if (data == command_queue) {
- m_using_proton_swapchain = true;
+ // If we hook Streamline's Swapchain, the menu fails to render correctly/flickers
+ // So we switch out the swapchain with the internal one owned by Streamline
+ // Side note: Even though we are scanning for Proton here,
+ // this doubles as an offset scanner for the real swapchain inside Streamline (or FSR3)
+ if (m_using_frame_generation_swapchain) {
+ target_swapchain = (IDXGISwapChain3*)scan_base;
+ }
+
+ if (!m_using_frame_generation_swapchain) {
+ m_using_proton_swapchain = true;
+ }
+
m_command_queue_offset = i;
m_proton_swapchain_offset = base;
+ should_break = true;
spdlog::info("Proton potentially detected");
spdlog::info("Found command queue offset: {:x}", i);
@@ -281,7 +319,7 @@ bool D3D12Hook::hook() {
}
}
- if (m_using_proton_swapchain) {
+ if (m_using_proton_swapchain || should_break) {
break;
}
}
@@ -302,7 +340,7 @@ bool D3D12Hook::hook() {
m_is_phase_1 = true;
- auto& present_fn = (*(void***)swap_chain)[8]; // Present
+ auto& present_fn = (*(void***)target_swapchain)[8]; // Present
m_present_hook = std::make_unique(&present_fn, (void*)&D3D12Hook::present);
m_hooked = true;
} catch (const std::exception& e) {
@@ -475,6 +513,21 @@ HRESULT WINAPI D3D12Hook::resize_buffers(IDXGISwapChain3* swap_chain, UINT buffe
spdlog::info("D3D12 resize buffers called");
spdlog::info(" Parameters: buffer_count {} width {} height {} new_format {} swap_chain_flags {}", buffer_count, width, height, new_format, swap_chain_flags);
+ // Walk the callstack and print out module names
+ try {
+ std::string callstack_str{};
+ for (const auto& entry : std::stacktrace::current()) {
+ //spdlog::info(" {}", entry.description());
+ callstack_str += entry.description() + "\n";
+ }
+
+ spdlog::info("callstack: \n{}", callstack_str); // because this can be running on a different thread and get garbled in the middle of the log
+ } catch (const std::exception& e) {
+ spdlog::error("Failed to print callstack: {}", e.what());
+ } catch(...) {
+ spdlog::error("Failed to print callstack: unknown exception");
+ }
+
auto d3d12 = g_d3d12_hook;
//auto& hook = d3d12->m_resize_buffers_hook;
//auto resize_buffers_fn = hook->get_original();
@@ -545,6 +598,21 @@ HRESULT WINAPI D3D12Hook::resize_target(IDXGISwapChain3* swap_chain, const DXGI_
spdlog::info("D3D12 resize target called");
spdlog::info(" Parameters: new_target_parameters {:x}", (uintptr_t)new_target_parameters);
+ // Walk the callstack and print out module names
+ try {
+ std::string callstack_str{};
+ for (const auto& entry : std::stacktrace::current()) {
+ //spdlog::info(" {}", entry.description());
+ callstack_str += entry.description() + "\n";
+ }
+
+ spdlog::info("callstack: \n{}", callstack_str); // because this can be running on a different thread and get garbled in the middle of the log
+ } catch (const std::exception& e) {
+ spdlog::error("Failed to print callstack: {}", e.what());
+ } catch(...) {
+ spdlog::error("Failed to print callstack: unknown exception");
+ }
+
auto d3d12 = g_d3d12_hook;
//auto resize_target_fn = d3d12->m_resize_target_hook->get_original();
diff --git a/src/D3D12Hook.hpp b/src/D3D12Hook.hpp
index f4da0782b..1a3315ac8 100644
--- a/src/D3D12Hook.hpp
+++ b/src/D3D12Hook.hpp
@@ -89,6 +89,10 @@ class D3D12Hook
return m_using_proton_swapchain;
}
+ bool is_framegen_swapchain() const {
+ return m_using_frame_generation_swapchain;
+ }
+
void ignore_next_present() {
m_ignore_next_present = true;
}
@@ -108,6 +112,7 @@ class D3D12Hook
uint32_t m_proton_swapchain_offset{};
bool m_using_proton_swapchain{ false };
+ bool m_using_frame_generation_swapchain{ false };
bool m_hooked{ false };
bool m_is_phase_1{ true };
bool m_inside_present{false};
diff --git a/src/REFramework.cpp b/src/REFramework.cpp
index 181dc2a1a..b6f4049e4 100644
--- a/src/REFramework.cpp
+++ b/src/REFramework.cpp
@@ -662,6 +662,19 @@ void REFramework::on_frame_d3d12() {
return;
}
+ auto swapchain = m_d3d12_hook->get_swap_chain();
+ const auto bb_index = swapchain->GetCurrentBackBufferIndex();
+
+ // Test if our RT for this index is valid.
+ if (m_d3d12.get_rt((D3D12::RTV)bb_index) == nullptr) {
+ spdlog::error("RTV for index {} is null, reinitializing...", bb_index);
+ deinit_d3d12();
+ m_has_frame = false;
+ m_first_initialize = false;
+ m_initialized = false;
+ return;
+ }
+
cmd_ctx->wait(INFINITE);
{
std::scoped_lock _{ cmd_ctx->mtx };
@@ -692,8 +705,6 @@ void REFramework::on_frame_d3d12() {
cmd_ctx->cmd_list->ResourceBarrier(1, &barrier);
// Draw to the back buffer.
- auto swapchain = m_d3d12_hook->get_swap_chain();
- auto bb_index = swapchain->GetCurrentBackBufferIndex();
barrier.Transition.pResource = m_d3d12.rts[bb_index].Get();
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
@@ -1672,6 +1683,21 @@ bool REFramework::first_frame_initialize() {
m_mods_fully_initialized = true;
}
+ // Troubleshooting by logging loaded modules
+ // helps us figure out if someone has conflicting software running
+ try {
+ spdlog::info("Logging loaded modules...");
+
+ const auto loaded_modules = utility::get_loaded_module_names();
+
+ for (const auto& name : loaded_modules) {
+ spdlog::info("Loaded module: {}", utility::narrow(name));
+ }
+ } catch(...) {
+ spdlog::error("Failed to get loaded modules.");
+ }
+
+
return true;
}
@@ -1845,12 +1871,20 @@ bool REFramework::init_d3d12() {
if (SUCCEEDED(swapchain->GetBuffer(i, IID_PPV_ARGS(&m_d3d12.rts[i])))) {
device->CreateRenderTargetView(m_d3d12.rts[i].Get(), nullptr, m_d3d12.get_cpu_rtv(device, (D3D12::RTV)i));
} else {
- spdlog::error("[D3D12] Failed to get back buffer for rtv.");
+ spdlog::error("[D3D12] Failed to get back buffer for rtv {}", i);
+ m_d3d12.rts[i].Reset(); // just in case
}
}
// Create our imgui and blank rts.
auto& backbuffer = m_d3d12.get_rt(D3D12::RTV::BACKBUFFER_0);
+
+ if (backbuffer == nullptr) {
+ spdlog::error("[D3D12] Failed to get first back buffer RTV.");
+ deinit_d3d12();
+ return false;
+ }
+
auto desc = backbuffer->GetDesc();
spdlog::info("[D3D12] Back buffer format is {}", desc.Format);
diff --git a/src/REFramework.hpp b/src/REFramework.hpp
index 3b066bbd6..691a1f57d 100644
--- a/src/REFramework.hpp
+++ b/src/REFramework.hpp
@@ -98,6 +98,8 @@ class REFramework {
return "mhrise";
#elif defined(SF6)
return "sf6";
+ #elif defined(DD2)
+ return "dd2";
#else
return "unknown";
#endif
diff --git a/src/WindowFilter.cpp b/src/WindowFilter.cpp
index d32d3a8bc..38c4af6fb 100644
--- a/src/WindowFilter.cpp
+++ b/src/WindowFilter.cpp
@@ -1,3 +1,5 @@
+#include
+
#include "WindowFilter.hpp"
// To prevent usage of statics (TLS breaks the present thread...?)
@@ -27,6 +29,11 @@ WindowFilter::WindowFilter() {
std::scoped_lock _{m_mutex};
for (const auto hwnd : m_window_jobs) {
+ char window_name[256]{};
+ if (GetWindowTextA(hwnd, window_name, sizeof(window_name)) != 0) {
+ spdlog::info("[WindowFilter] Encountered new window: {}", window_name);
+ }
+
if (is_filtered_nocache(hwnd)) {
filter_window(hwnd);
}
diff --git a/src/mods/Graphics.cpp b/src/mods/Graphics.cpp
index 3ac49bfa2..ff6770941 100644
--- a/src/mods/Graphics.cpp
+++ b/src/mods/Graphics.cpp
@@ -22,6 +22,9 @@
#elif defined(RE4)
#include "sdk/regenny/re4/via/Window.hpp"
#include "sdk/regenny/re4/via/SceneView.hpp"
+#elif defined(DD2)
+#include "sdk/regenny/dd2/via/Window.hpp"
+#include "sdk/regenny/dd2/via/SceneView.hpp"
#else
#include "sdk/regenny/mhrise_tdb71/via/Window.hpp"
#include "sdk/regenny/mhrise_tdb71/via/SceneView.hpp"
@@ -278,7 +281,7 @@ bool Graphics::on_pre_gui_draw_element(REComponent* gui_element, void* primitive
}
void Graphics::on_view_get_size(REManagedObject* scene_view, float* result) {
-#if defined(SF6) || defined(DMC5)
+#if defined(SF6) || defined(DMC5) || TDB_VER >= 73
if (m_ultrawide_fix->value()) {
auto regenny_view = (regenny::via::SceneView*)scene_view;
auto window = regenny_view->window;
diff --git a/src/mods/IntegrityCheckBypass.cpp b/src/mods/IntegrityCheckBypass.cpp
index d43c8ee4d..ff51a1ede 100644
--- a/src/mods/IntegrityCheckBypass.cpp
+++ b/src/mods/IntegrityCheckBypass.cpp
@@ -307,12 +307,13 @@ void IntegrityCheckBypass::ignore_application_entries() {
void IntegrityCheckBypass::immediate_patch_re8() {
// Apparently patching this in SF6 causes some bugs like chat not showing up and being unable to view replays.
// Disabling it for now as the game still seems to work fine without it.
-#ifdef SF6
+#ifdef SF6
if (true) {
return;
}
#endif
+#if TDB_VER < 73
// We have to immediately patch this at startup in RE8 unlike MHRise
// because the game immediately starts checking the integrity of the executable
// on the first execution of this callback, unlike MHRise which was delayed.
@@ -415,6 +416,7 @@ void IntegrityCheckBypass::immediate_patch_re8() {
} else {
spdlog::error("[IntegrityCheckBypass]: Could not find sussy_result_4!");
}
+#endif
}
void IntegrityCheckBypass::immediate_patch_re4() {
diff --git a/src/mods/VR.cpp b/src/mods/VR.cpp
index 6cd0c95b3..5115861d2 100644
--- a/src/mods/VR.cpp
+++ b/src/mods/VR.cpp
@@ -26,6 +26,9 @@
#elif defined(RE4)
#include "sdk/regenny/re4/via/Window.hpp"
#include "sdk/regenny/re4/via/SceneView.hpp"
+#elif defined(DD2)
+#include "sdk/regenny/dd2/via/Window.hpp"
+#include "sdk/regenny/dd2/via/SceneView.hpp"
#else
#include "sdk/regenny/mhrise_tdb71/via/Window.hpp"
#include "sdk/regenny/mhrise_tdb71/via/SceneView.hpp"
@@ -176,7 +179,7 @@ void VR::on_view_get_size(REManagedObject* scene_view, float* result) {
wanted_height = (float)window_height;
// Might be usable in other games too
-#if defined(SF6)
+#if defined(SF6) || TDB_VER >= 73
if (!is_gng) {
window->borderless_size.w = (float)window_width;
window->borderless_size.h = (float)window_height;
@@ -1169,6 +1172,7 @@ std::optional VR::hijack_camera() {
std::optional VR::hijack_wwise_listeners() {
#ifndef RE4
#ifndef SF6
+#if TDB_VER < 73
spdlog::info("[VR] Hijacking WwiseListener");
const auto t = sdk::find_type_definition("via.wwise.WwiseListener");
@@ -1232,6 +1236,7 @@ std::optional VR::hijack_wwise_listeners() {
return "VR init failed: via.wwise.WwiseListener update native function hook failed.";
}
#endif
+#endif
#endif
return std::nullopt;
diff --git a/src/mods/bindings/ImGui.cpp b/src/mods/bindings/ImGui.cpp
index 9bf86fa8f..85d83a96a 100644
--- a/src/mods/bindings/ImGui.cpp
+++ b/src/mods/bindings/ImGui.cpp
@@ -1,4 +1,5 @@
#include
+#include
#include
#include "../ScriptRunner.hpp"
@@ -1104,6 +1105,28 @@ float calc_item_width() {
return ImGui::CalcItemWidth();
}
+void item_size(sol::object pos, sol::object size, sol::object text_baseline_y) {
+ if (text_baseline_y.is()) {
+ ImGui::ItemSize(ImRect{create_imvec2(pos), create_imvec2(size)}, text_baseline_y.as());
+ } else {
+ ImGui::ItemSize(ImRect{create_imvec2(pos), create_imvec2(size)});
+ }
+}
+
+bool item_add(const char* label, sol::object pos, sol::object size) {
+ if (label == nullptr) {
+ label = "";
+ }
+
+ const auto window = ImGui::GetCurrentWindow();
+
+ if (window == nullptr) {
+ return false;
+ }
+
+ return ImGui::ItemAdd(ImRect{create_imvec2(pos), create_imvec2(size)}, window->GetID(label));
+}
+
void push_style_color(int style_color, sol::object color_obj) {
if (color_obj.is()) {
ImGui::PushStyleColor((ImGuiCol)style_color, (ImU32)color_obj.as());
@@ -1187,6 +1210,14 @@ const char* get_clipboard() {
return ImGui::GetClipboardText();
}
+void progress_bar(float progress, sol::object size, const char* overlay ){
+ if (overlay == nullptr) {
+ overlay = "";
+ }
+
+ ImGui::ProgressBar(progress, create_imvec2(size), overlay);
+}
+
bool begin_table(const char* str_id, int column, sol::object flags_obj, sol::object outer_size_obj, sol::object inner_width_obj) {
if (str_id == nullptr) {
str_id = "";
@@ -1282,6 +1313,26 @@ void table_set_bg_color_vec4(ImGuiTableBgTarget target, Vector4f color, sol::obj
ImGuiTableSortSpecs* table_get_sort_specs() {
return ImGui::TableGetSortSpecs();
}
+
+// Window Drawlist
+void draw_list_path_clear() {
+ if (auto dl = ImGui::GetWindowDrawList(); dl != nullptr) {
+ dl->PathClear();
+ }
+}
+
+void draw_list_path_line_to(sol::object pos_obj) {
+ auto pos = create_imvec2(pos_obj);
+ if (auto dl = ImGui::GetWindowDrawList(); dl != nullptr) {
+ dl->PathLineTo(pos);
+ }
+}
+
+void draw_list_path_stroke(ImU32 color, bool closed, float thickness) {
+ if (auto dl = ImGui::GetWindowDrawList(); dl != nullptr) {
+ dl->PathStroke(color, closed, thickness);
+ }
+}
} // namespace api::imgui
namespace api::draw {
@@ -1964,10 +2015,15 @@ void bindings::open_imgui(ScriptState* s) {
imgui["end_menu"] = api::imgui::end_menu;
imgui["menu_item"] = api::imgui::menu_item;
imgui["get_display_size"] = api::imgui::get_display_size;
+
+ // Item
imgui["push_item_width"] = api::imgui::push_item_width;
imgui["pop_item_width"] = api::imgui::pop_item_width;
imgui["set_next_item_width"] = api::imgui::set_next_item_width;
imgui["calc_item_width"] = api::imgui::calc_item_width;
+ imgui["item_add"] = api::imgui::item_add;
+ imgui["item_size"] = api::imgui::item_size;
+
imgui["push_style_color"] = api::imgui::push_style_color;
imgui["pop_style_color"] = api::imgui::pop_style_color;
imgui["push_style_var"] = api::imgui::push_style_var;
@@ -1980,6 +2036,13 @@ void bindings::open_imgui(ScriptState* s) {
imgui["set_item_default_focus"] = api::imgui::set_item_default_focus;
imgui["set_clipboard"] = api::imgui::set_clipboard;
imgui["get_clipboard"] = api::imgui::get_clipboard;
+ imgui["progress_bar"] = api::imgui::progress_bar;
+
+ // Draw list
+ imgui["draw_list_path_clear"] = api::imgui::draw_list_path_clear;
+ imgui["draw_list_path_line_to"] = api::imgui::draw_list_path_line_to;
+ imgui["draw_list_path_stroke"] = api::imgui::draw_list_path_stroke;
+
// TABLE APIS
imgui["begin_table"] = api::imgui::begin_table;
diff --git a/src/mods/vr/D3D12Component.cpp b/src/mods/vr/D3D12Component.cpp
index aa130dfe1..2bb4e8066 100644
--- a/src/mods/vr/D3D12Component.cpp
+++ b/src/mods/vr/D3D12Component.cpp
@@ -47,6 +47,9 @@ vr::EVRCompositorError D3D12Component::on_frame(VR* vr) {
// Copy current backbuffer into our copy so we can use it as an SRV.
m_backbuffer_copy.commands.copy(backbuffer.Get(), m_backbuffer_copy.texture.Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_PRESENT);
+ float clear_color[4]{0.0f, 0.0f, 0.0f, 0.0f};
+ m_backbuffer_copy.commands.clear_rtv(m_converted_eye_tex, clear_color, D3D12_RESOURCE_STATE_PRESENT);
+
// Convert the backbuffer to 8-bit.
render_srv_to_rtv(command_list, m_backbuffer_copy, m_converted_eye_tex, D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);