Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.09 KB | None | 0 0
  1. #pragma once
  2. #include "Tags.hpp"
  3.  
  4. namespace Blam
  5. {
  6. namespace Tags
  7. {
  8. struct ModelAnimationGraph : Tag<'jmad'>
  9. {
  10. struct SkeletonNode;
  11. struct SoundReference;
  12. struct EffectReference;
  13. struct BlendScreen;
  14. struct Leg;
  15. struct Animation;
  16. struct Mode;
  17. struct VehicleSuspension;
  18. struct ObjectOverlay;
  19. struct InheritanceList;
  20. struct WeaponList;
  21. struct ResourceGroup;
  22.  
  23. TagReference ParentAnimationGraph;
  24. uint8_t InheritanceFlags;
  25. uint8_t PrivateFlags;
  26. int16_t AnimationCodecPack;
  27. TagBlock<SkeletonNode> SkeletonNodes;
  28. TagBlock<SoundReference> SoundReferences;
  29. TagBlock<EffectReference> EffectReferences;
  30. TagBlock<BlendScreen> BlendScreens;
  31. TagBlock<Leg> Legs;
  32. TagBlock<Animation> Animations;
  33. TagBlock<Mode> Modes;
  34. TagBlock<VehicleSuspension> VehicleSuspension2;
  35. TagBlock<ObjectOverlay> ObjectOverlays;
  36. TagBlock<InheritanceList> InheritanceList2;
  37. TagBlock<WeaponList> WeaponList2;
  38. uint32_t UnknownArmNodes1;
  39. uint32_t UnknownArmNodes2;
  40. uint32_t UnknownArmNodes3;
  41. uint32_t UnknownArmNodes4;
  42. uint32_t UnknownArmNodes5;
  43. uint32_t UnknownArmNodes6;
  44. uint32_t UnknownArmNodes7;
  45. uint32_t UnknownArmNodes8;
  46. uint32_t UnknownNodes1;
  47. uint32_t UnknownNodes2;
  48. uint32_t UnknownNodes3;
  49. uint32_t UnknownNodes4;
  50. uint32_t UnknownNodes5;
  51. uint32_t UnknownNodes6;
  52. uint32_t UnknownNodes7;
  53. uint32_t UnknownNodes8;
  54. DataReference<uint8_t> LastImportResults;
  55. uint32_t Unknown;
  56. uint32_t Unknown2;
  57. uint32_t Unknown3;
  58. TagBlock<ResourceGroup> ResourceGroups;
  59.  
  60. struct SkeletonNode
  61. {
  62. int32_t Name;
  63. int16_t NextSiblingNodeIndex;
  64. int16_t FirstChildNodeIndex;
  65. int16_t ParentNodeIndex;
  66. uint8_t ModelFlags;
  67. uint8_t NodeJointFlags;
  68. float BaseVectorI;
  69. float BaseVectorJ;
  70. float BaseVectorK;
  71. float VectorRange;
  72. float ZPosition;
  73. };
  74. TAG_STRUCT_SIZE_ASSERT(SkeletonNode, 0x20);
  75.  
  76. struct SoundReference
  77. {
  78. TagReference Sound;
  79. uint16_t Flags;
  80. int16_t Unknown;
  81. };
  82. TAG_STRUCT_SIZE_ASSERT(SoundReference, 0x14);
  83.  
  84. struct EffectReference
  85. {
  86. TagReference Effect;
  87. uint16_t Flags;
  88. int16_t Unknown;
  89. };
  90. TAG_STRUCT_SIZE_ASSERT(EffectReference, 0x14);
  91.  
  92. struct BlendScreen
  93. {
  94. int32_t Label;
  95. float RightYawPerFrame;
  96. float LeftYawPerFrame;
  97. int16_t RightFrameCount;
  98. int16_t LeftFrameCount;
  99. float DownPitchPerFrame;
  100. float UpPitchPerFrame;
  101. int16_t DownPitchFrameCount;
  102. int16_t UpPitchFrameCount;
  103. };
  104. TAG_STRUCT_SIZE_ASSERT(BlendScreen, 0x1C);
  105.  
  106. struct Leg
  107. {
  108. int32_t FootMarker;
  109. float FootMin;
  110. float FootMax;
  111. int32_t AnkleMarker;
  112. float AnkleMin;
  113. float AnkleMax;
  114. int16_t Anchors;
  115. int16_t Unknown;
  116. };
  117. TAG_STRUCT_SIZE_ASSERT(Leg, 0x1C);
  118.  
  119. struct Animation
  120. {
  121. struct FrameEvent;
  122. struct SoundEvent;
  123. struct EffectEvent;
  124. struct Unknown3;
  125. struct ObjectSpaceParentNode;
  126. struct LegAnchoring;
  127.  
  128. int32_t Name;
  129. float Weight;
  130. int16_t LoopFrameIndex;
  131. uint16_t PlaybackFlags;
  132. int8_t BlendScreen;
  133. int8_t DesiredCompression;
  134. int8_t CurrentCompression;
  135. int8_t NodeCount;
  136. int16_t FrameCount;
  137. int8_t Type;
  138. int8_t FrameInfoType;
  139. uint16_t ProductionFlags;
  140. uint16_t InternalFlags;
  141. int32_t NodeListChecksum;
  142. int32_t ProductionChecksum;
  143. int16_t Unknown;
  144. int16_t Unknown2;
  145. int16_t PreviousVariantSibling;
  146. int16_t NextVariantSibling;
  147. int16_t RawInformationGroupIndex;
  148. int16_t RawInformationMemberIndex;
  149. TagBlock<FrameEvent> FrameEvents;
  150. TagBlock<SoundEvent> SoundEvents;
  151. TagBlock<EffectEvent> EffectEvents;
  152. TagBlock<Unknown3> Unknown4;
  153. TagBlock<ObjectSpaceParentNode> ObjectSpaceParentNodes;
  154. TagBlock<LegAnchoring> LegAnchoring2;
  155. float Unknown5;
  156. float Unknown6;
  157. float Unknown7;
  158. float Unknown8;
  159. float Unknown9;
  160.  
  161. struct FrameEvent
  162. {
  163. int16_t Type;
  164. int16_t Frame;
  165. };
  166. TAG_STRUCT_SIZE_ASSERT(FrameEvent, 0x4);
  167.  
  168. struct SoundEvent
  169. {
  170. int16_t Sound;
  171. int16_t Frame;
  172. int32_t MarkerName;
  173. };
  174. TAG_STRUCT_SIZE_ASSERT(SoundEvent, 0x8);
  175.  
  176. struct EffectEvent
  177. {
  178. int16_t Effect;
  179. int16_t Frame;
  180. int32_t MarkerName;
  181. };
  182. TAG_STRUCT_SIZE_ASSERT(EffectEvent, 0x8);
  183.  
  184. struct Unknown3
  185. {
  186. int16_t Unknown;
  187. int16_t Unknown2;
  188. };
  189. TAG_STRUCT_SIZE_ASSERT(Unknown3, 0x4);
  190.  
  191. struct ObjectSpaceParentNode
  192. {
  193. int16_t NodeIndex;
  194. uint16_t ComponentFlags;
  195. int16_t RotationX;
  196. int16_t RotationY;
  197. int16_t RotationZ;
  198. int16_t RotationW;
  199. float DefaultTranslationX;
  200. float DefaultTranslationY;
  201. float DefaultTranslationZ;
  202. float DefaultScale;
  203. };
  204. TAG_STRUCT_SIZE_ASSERT(ObjectSpaceParentNode, 0x1C);
  205.  
  206. struct LegAnchoring
  207. {
  208. struct Unknown2;
  209.  
  210. int16_t LegIndex;
  211. int16_t Unknown;
  212. TagBlock<Unknown2> Unknown3;
  213.  
  214. struct Unknown2
  215. {
  216. int16_t Frame1a;
  217. int16_t Frame2a;
  218. int16_t Frame1b;
  219. int16_t Frame2b;
  220. uint32_t Unknown;
  221. uint32_t Unknown2;
  222. uint32_t Unknown3;
  223. };
  224. TAG_STRUCT_SIZE_ASSERT(Unknown2, 0x14);
  225. };
  226. TAG_STRUCT_SIZE_ASSERT(LegAnchoring, 0x10);
  227. };
  228. TAG_STRUCT_SIZE_ASSERT(Animation, 0x88);
  229.  
  230. struct Mode
  231. {
  232. struct WeaponClass;
  233. struct ModeIk;
  234.  
  235. int32_t Label;
  236. TagBlock<WeaponClass> WeaponClass2;
  237. TagBlock<ModeIk> ModeIk2;
  238. uint32_t Unknown;
  239. uint32_t Unknown2;
  240. uint32_t Unknown3;
  241.  
  242. struct WeaponClass
  243. {
  244. struct WeaponType;
  245. struct WeaponIk;
  246. struct SyncAction;
  247.  
  248. int32_t Label;
  249. TagBlock<WeaponType> WeaponType2;
  250. TagBlock<WeaponIk> WeaponIk2;
  251. TagBlock<SyncAction> SyncActions;
  252.  
  253. struct WeaponType
  254. {
  255. struct Action;
  256. struct Overlay;
  257. struct DeathAndDamage;
  258. struct Transition;
  259.  
  260. int32_t Label;
  261. TagBlock<Action> Actions;
  262. TagBlock<Overlay> Overlays;
  263. TagBlock<DeathAndDamage> DeathAndDamage2;
  264. TagBlock<Transition> Transitions;
  265.  
  266. struct Action
  267. {
  268. int32_t Label;
  269. int16_t GraphIndex;
  270. int16_t Animation;
  271. };
  272. TAG_STRUCT_SIZE_ASSERT(Action, 0x8);
  273.  
  274. struct Overlay
  275. {
  276. int32_t Label;
  277. int16_t GraphIndex;
  278. int16_t Animation;
  279. };
  280. TAG_STRUCT_SIZE_ASSERT(Overlay, 0x8);
  281.  
  282. struct DeathAndDamage
  283. {
  284. struct Direction;
  285.  
  286. int32_t Label;
  287. TagBlock<Direction> Directions;
  288.  
  289. struct Direction
  290. {
  291. struct Region;
  292.  
  293. TagBlock<Region> Regions;
  294.  
  295. struct Region
  296. {
  297. int16_t GraphIndex;
  298. int16_t Animation;
  299. };
  300. TAG_STRUCT_SIZE_ASSERT(Region, 0x4);
  301. };
  302. TAG_STRUCT_SIZE_ASSERT(Direction, 0xC);
  303. };
  304. TAG_STRUCT_SIZE_ASSERT(DeathAndDamage, 0x10);
  305.  
  306. struct Transition
  307. {
  308. struct Destination;
  309.  
  310. int32_t FullName;
  311. int32_t StateName;
  312. int16_t Unknown;
  313. int8_t IndexA;
  314. int8_t IndexB;
  315. TagBlock<Destination> Destinations;
  316.  
  317. struct Destination
  318. {
  319. int32_t FullName;
  320. int32_t ModeName;
  321. int32_t StateName;
  322. int8_t FrameEventLink;
  323. int8_t Unknown;
  324. int8_t IndexA;
  325. int8_t IndexB;
  326. int16_t GraphIndex;
  327. int16_t Animation;
  328. };
  329. TAG_STRUCT_SIZE_ASSERT(Destination, 0x14);
  330. };
  331. TAG_STRUCT_SIZE_ASSERT(Transition, 0x18);
  332. };
  333. TAG_STRUCT_SIZE_ASSERT(WeaponType, 0x34);
  334.  
  335. struct WeaponIk
  336. {
  337. int32_t Marker;
  338. int32_t AttachToMarker;
  339. };
  340. TAG_STRUCT_SIZE_ASSERT(WeaponIk, 0x8);
  341.  
  342. struct SyncAction
  343. {
  344. struct Class;
  345.  
  346. int32_t Label;
  347. TagBlock<Class> Class2;
  348.  
  349. struct Class
  350. {
  351. struct Unknown;
  352. struct SyncBiped;
  353.  
  354. int32_t Label;
  355. TagBlock<Unknown> Unknown2;
  356. TagBlock<SyncBiped> SyncBiped2;
  357.  
  358. struct Unknown
  359. {
  360. int32_t Unknown;
  361. int16_t GraphIndex;
  362. int16_t Animation;
  363. uint32_t Unknown2;
  364. uint32_t Unknown3;
  365. uint32_t Unknown4;
  366. uint32_t Unknown5;
  367. uint32_t Unknown6;
  368. uint32_t Unknown7;
  369. uint32_t Unknown8;
  370. uint32_t Unknown9;
  371. uint32_t Unknown10;
  372. uint32_t Unknown11;
  373. };
  374. TAG_STRUCT_SIZE_ASSERT(Unknown, 0x30);
  375.  
  376. struct SyncBiped
  377. {
  378. int32_t Unknown;
  379. TagReference Biped;
  380. };
  381. TAG_STRUCT_SIZE_ASSERT(SyncBiped, 0x14);
  382. };
  383. TAG_STRUCT_SIZE_ASSERT(Class, 0x1C);
  384. };
  385. TAG_STRUCT_SIZE_ASSERT(SyncAction, 0x10);
  386. };
  387. TAG_STRUCT_SIZE_ASSERT(WeaponClass, 0x28);
  388.  
  389. struct ModeIk
  390. {
  391. int32_t Marker;
  392. int32_t AttachToMarker;
  393. };
  394. TAG_STRUCT_SIZE_ASSERT(ModeIk, 0x8);
  395. };
  396. TAG_STRUCT_SIZE_ASSERT(Mode, 0x28);
  397.  
  398. struct VehicleSuspension
  399. {
  400. int32_t Label;
  401. int16_t GraphIndex;
  402. int16_t Animation;
  403. int32_t MarkerName;
  404. float MassPointOffset;
  405. float FullExtensionGroundDepth;
  406. float FullCompressionGroundDepth;
  407. int32_t RegionName;
  408. float MassPointOffset2;
  409. float ExpressionGroundDepth;
  410. float CompressionGroundDepth;
  411. };
  412. TAG_STRUCT_SIZE_ASSERT(VehicleSuspension, 0x28);
  413.  
  414. struct ObjectOverlay
  415. {
  416. int32_t Label;
  417. int16_t GraphIndex;
  418. int16_t Animation;
  419. int16_t Unknown;
  420. int16_t FunctionControls;
  421. int32_t Function;
  422. uint32_t Unknown2;
  423. };
  424. TAG_STRUCT_SIZE_ASSERT(ObjectOverlay, 0x14);
  425.  
  426. struct InheritanceList
  427. {
  428. struct NodeMap;
  429. struct NodeMapFlag;
  430.  
  431. TagReference InheritedGraph;
  432. TagBlock<NodeMap> NodeMap2;
  433. TagBlock<NodeMapFlag> NodeMapFlags;
  434. float RootZOffset;
  435. uint32_t InheritanceFlags;
  436.  
  437. struct NodeMap
  438. {
  439. int16_t LocalNode;
  440. };
  441. TAG_STRUCT_SIZE_ASSERT(NodeMap, 0x2);
  442.  
  443. struct NodeMapFlag
  444. {
  445. uint32_t LocalNodeFlags;
  446. };
  447. TAG_STRUCT_SIZE_ASSERT(NodeMapFlag, 0x4);
  448. };
  449. TAG_STRUCT_SIZE_ASSERT(InheritanceList, 0x30);
  450.  
  451. struct WeaponList
  452. {
  453. int32_t WeaponName;
  454. int32_t WeaponClass;
  455. };
  456. TAG_STRUCT_SIZE_ASSERT(WeaponList, 0x8);
  457.  
  458. struct ResourceGroup
  459. {
  460. int32_t MemberCount;
  461. void* Resource;
  462. int32_t UselessPadding;
  463. };
  464. TAG_STRUCT_SIZE_ASSERT(ResourceGroup, 0xC);
  465. };
  466. TAG_STRUCT_SIZE_ASSERT(ModelAnimationGraph, 0x104);
  467. }
  468. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement