Guest User

Untitled

a guest
Nov 13th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdint>
  3. #define assert_size(classobj,classobjsize) static_assert(sizeof(classobj) == classobjsize, #classobj" != "#classobjsize);
  4.  
  5. namespace MSVCBinCompat{
  6. class string
  7. {
  8. union
  9. {
  10. char* ptr;
  11. char sbo[16];
  12. } str_data;
  13. uint32_t size;
  14. uint32_t cap;
  15. };
  16.  
  17. class wstring
  18. {
  19. union
  20. {
  21. wchar_t* ptr;
  22. wchar_t sbo[8];
  23. } str_data;
  24. uint32_t size;
  25. uint32_t cap;
  26. };
  27.  
  28. template<typename T>
  29. struct vector{
  30. T* start;
  31. T* end;
  32. T* cap;
  33. };
  34. };
  35.  
  36. struct _RTL_CRITICAL_SECTION
  37. {
  38. uint32_t DebugInfo;
  39. uint32_t LockCount;
  40. uint32_t RecursionCount;
  41. uint32_t OwningThread;
  42. uint32_t LockSemaphore;
  43. uint32_t SpinCount;
  44. };
  45.  
  46. namespace plasma{
  47. template<int C, typename T>
  48. class Vector{
  49. public:
  50. T data[C];
  51. };
  52.  
  53. template<typename T>
  54. class Matrix{
  55. public:
  56. T _m[16];
  57. };
  58.  
  59.  
  60. class Attribute{
  61. public:
  62. int vec_ptr;
  63. int field_4;
  64. int field_8;
  65. int field_C;
  66. int field_10;
  67. int field_14;
  68. int field_18;
  69. int current_frame;
  70. MSVCBinCompat::string attribute_name;
  71. int field_38;
  72. int field_3C;
  73. int field_40;
  74. int field_44;
  75. };
  76.  
  77. template<typename T>
  78. class DiscreteAttribute{
  79. public:
  80. Attribute base;
  81. MSVCBinCompat::vector<T> data;
  82.  
  83. virtual void vf_dtor(uint8_t x){};
  84. };
  85.  
  86. template<typename T>
  87. class ContinuousAttribute{
  88. public:
  89. Attribute base;
  90. MSVCBinCompat::vector<T> data;
  91.  
  92. virtual void vf_dtor(uint8_t x){};
  93. };
  94.  
  95. template<typename T>
  96. class ContinuousArrayAttribute{
  97. public:
  98. Attribute base;
  99. MSVCBinCompat::vector<T> data;
  100.  
  101. virtual void vf_dtor(uint8_t x){};
  102. };
  103.  
  104. class Object{
  105. public:
  106. //void* vtable;
  107. void* plasma_d3d9engine;
  108. void* some_nodes_linked_list;
  109.  
  110.  
  111. virtual void vf_dtor(uint8_t x){};
  112. };
  113.  
  114. class NamedObject: Object{
  115. public:
  116. //void* vtable;
  117. MSVCBinCompat::wstring name;
  118.  
  119. virtual void vf_dtor(uint8_t x){};
  120. };
  121.  
  122. class Node;
  123.  
  124. class Widget: NamedObject{
  125. public:
  126. int field_20;
  127. float field_24;
  128. int field_28;
  129. int field_2C;
  130. int field_30;
  131. int field_34;
  132. int plasma_D3D9RenderSurface;
  133. int x_offset;
  134. int y_offset;
  135. int field_44;
  136. int field_48;
  137. float field_4C;
  138. float field_50;
  139. int field_54;
  140. int field_58;
  141. float field_5C;
  142. float field_60;
  143. int field_64;
  144. int field_68;
  145. float width;
  146. float height;
  147. int field_74;
  148. int field_78;
  149. uint16_t field_7C;
  150. int field_80;
  151. int field_84;
  152. int field_88;
  153. int field_8C;
  154. int field_90;
  155. int field_94;
  156. int field_98;
  157. int field_9C;
  158. int field_A0;
  159. Matrix<float> some_matrix_1;
  160. Matrix<float> some_matrix_2;
  161. int flags;
  162. int field_128;
  163. int field_12C;
  164. char field_130;
  165. int field_134;
  166. int field_138;
  167. int field_13C;
  168. int field_140;
  169. Node *node;
  170. int field_148;
  171. int field_14C;
  172. int field_150;
  173. int field_154;
  174. int field_158;
  175. };
  176.  
  177. class Keyable: NamedObject{
  178. public:
  179. //void* vtable;
  180. uint32_t field_20;
  181. uint32_t field_24;
  182. uint8_t field_28;
  183. uint8_t field_29;
  184. uint8_t field_2A;
  185. uint8_t field_2B;
  186. uint16_t field_2C;
  187. uint8_t field_2E;
  188. uint8_t field_2F;
  189. uint32_t field_30;
  190. uint32_t field_34;
  191. uint32_t field_38;
  192. uint32_t field_3C;
  193. uint32_t field_40;
  194.  
  195. virtual void vf_dtor(uint8_t x){};
  196. };
  197.  
  198. class Shape: Keyable{
  199. public:
  200. int field_44;
  201. int field_48;
  202. int field_4C;
  203. int field_50;
  204. int field_54;
  205.  
  206. virtual void vf_dtor(uint8_t x){};
  207. virtual void vf1();
  208. virtual void vf2();
  209. virtual void vf3();
  210. virtual void vf4();
  211. virtual void vf5();
  212. virtual void vf6();
  213. virtual void vf7();
  214. virtual void vf8();
  215. virtual void vf9();
  216. virtual void vf10();
  217. virtual void vf11();
  218. virtual void vf12();
  219. virtual void vf13();
  220. virtual void vf14();
  221. virtual void vf15();
  222. virtual void vf16();
  223. virtual void vf17();
  224. virtual void vf18();
  225. };
  226.  
  227. class MeshShape: Shape{
  228. public:
  229. ContinuousArrayAttribute<Vector<2,float>> positions;
  230. ContinuousArrayAttribute<Vector<2,float>> textCoords;
  231. ContinuousArrayAttribute<Vector<4,float>> colors;
  232. ContinuousArrayAttribute<Vector<4,float>> strokeColors;
  233. ContinuousArrayAttribute<Vector<4,float>> extrusionBackColors;
  234. ContinuousArrayAttribute<Vector<4,float>> extrusionFrontColors;
  235. ContinuousArrayAttribute<float> strokeWidths;
  236. MSVCBinCompat::vector<int> field_2C4;
  237. MSVCBinCompat::vector<int> field_2D0;
  238. ContinuousAttribute<Vector<2,float>> textureTranslation;
  239. ContinuousAttribute<Vector<2,float>> texturePivot;
  240. ContinuousAttribute<Vector<3,float>> textureRotation;
  241. ContinuousAttribute<Matrix<float>> textureDeformation;
  242. ContinuousAttribute<float> textureOpacity;
  243. ContinuousAttribute<float> textureBirghtness;
  244. ContinuousAttribute<float> textureContrast;
  245. ContinuousAttribute<float> textureSaturation;
  246. ContinuousAttribute<float> strokeTextureOpacity;
  247. ContinuousAttribute<float> strokeTextureBrightness;
  248. ContinuousAttribute<float> strokeTextureContrast;
  249. ContinuousAttribute<float> strokeTextureSaturation;
  250. ContinuousAttribute<float> strokeTextureStretch;
  251. ContinuousAttribute<Matrix<float>> extrusionMatrix;
  252. DiscreteAttribute<int> texture;
  253. DiscreteAttribute<int> strokeTexture;
  254. int field_858;
  255. int field_85C;
  256. int field_860;
  257. int field_864;
  258. int field_868;
  259. int field_86C;
  260. int field_870;
  261. int field_874;
  262. int field_878;
  263. int field_87C;
  264. int field_880;
  265. int field_884;
  266. int field_888;
  267. int field_88C;
  268. int field_890;
  269. int field_894;
  270. int field_898;
  271. int field_89C;
  272. int field_8A0;
  273. int field_8A4;
  274. int field_8A8;
  275. int field_8AC;
  276. int field_8B0;
  277. int field_8B4;
  278. int field_8B8;
  279. int field_8BC;
  280. int field_8C0;
  281. int field_8C4;
  282. int field_8C8;
  283. int field_8CC;
  284. int field_8D0;
  285. int field_8D4;
  286. int field_8D8;
  287. int field_8DC;
  288.  
  289. virtual void vf_dtor(uint8_t x){};
  290. virtual void vf1();
  291. virtual void vf2();
  292. virtual void vf3();
  293. virtual void vf4();
  294. virtual void vf5();
  295. virtual void vf6();
  296. virtual void vf7();
  297. virtual void vf8();
  298. virtual void vf9();
  299. virtual void vf10();
  300. virtual void vf11();
  301. virtual void vf12();
  302. virtual void vf13();
  303. virtual void vf14();
  304. virtual void vf15();
  305. virtual void vf16();
  306. virtual void vf17();
  307. virtual void vf18();
  308. virtual void vf19();
  309. };
  310.  
  311. class SmoothMeshShape: MeshShape{
  312. public:
  313. struct{
  314. int field_0;
  315. int field_4;
  316. int field_8;
  317. int field_C;
  318. int field_10;
  319. int field_14;
  320. int field_18;
  321. int field_1C;
  322. int field_20;
  323. int field_24;
  324. int field_28;
  325. int field_2C;
  326. int field_30;
  327. int field_34;
  328. int field_38;
  329. int field_3C;
  330. int field_40;
  331. int field_44;
  332. int field_48;
  333. int field_4C;
  334. int field_50;
  335. int field_54;
  336. int field_58;
  337. int field_5C;
  338. } substructs[6];;
  339. int field_B20;
  340. int field_B24;
  341. uint16_t field_B28;
  342. int field_B2C;
  343. int field_B30;
  344. int field_B34;
  345. int field_B38;
  346. int field_B3C;
  347. int field_B40;
  348. int field_B44;
  349. int field_B48;
  350. int field_B4C;
  351. int field_B50;
  352. int field_B54;
  353. int field_B58;
  354. int field_B5C;
  355. int field_B60;
  356. int field_B64;
  357. int field_B68;
  358. int field_B6C;
  359. int field_B70;
  360. int field_B74;
  361. int field_B78;
  362. int field_B7C;
  363. int field_B80;
  364. int field_B84;
  365. int field_B88;
  366. int field_B8C;
  367. int field_B90;
  368. int field_B94;
  369. int field_B98;
  370. int field_B9C;
  371. int field_BA0;
  372. int field_BA4;
  373. int field_BA8;
  374. int field_BAC;
  375. int field_BB0;
  376. int field_BB4;
  377. int field_BB8;
  378. int field_BBC;
  379. int field_BC0;
  380. int field_BC4;
  381. int field_BC8;
  382. int field_BCC;
  383. int field_BD0;
  384. int field_BD4;
  385. int field_BD8;
  386. int field_BDC;
  387. int field_BE0;
  388. int field_BE4;
  389. int field_BE8;
  390. float field_BEC;
  391. float field_BF0;
  392. int field_BF4;
  393. int field_BF8;
  394. int field_BFC;
  395. int field_C00;
  396. int field_C04;
  397. int field_C08;
  398. int field_C0C;
  399. int field_C10;
  400. int field_C14;
  401. _RTL_CRITICAL_SECTION CriticalSection;
  402. };
  403.  
  404. class Transformation: Keyable{
  405. public:
  406. ContinuousAttribute<Vector<2,float>> translation;
  407. ContinuousAttribute<Matrix<float>> deformation;
  408. ContinuousAttribute<Vector<3,float>> rotation;
  409. ContinuousAttribute<Vector<2,float>> pivot;
  410. int field_1A4;
  411. int field_1A8;
  412. Matrix<float> some_matrix_1;
  413. Matrix<float> some_matrix_2;
  414. int field_22C;
  415.  
  416. virtual void vf_dtor(uint8_t x){};
  417. };
  418.  
  419. class Display: Keyable{
  420. plasma::DiscreteAttribute<int> visibility;
  421. plasma::DiscreteAttribute<int> clipping;
  422. plasma::ContinuousAttribute<Vector<4,float>> fill;
  423. plasma::ContinuousAttribute<Vector<4,float>> stroke;
  424. plasma::ContinuousAttribute<float> blurRadius;
  425. int field_1FC;
  426. int field_200;
  427. int field_204;
  428. int field_208;
  429.  
  430. virtual void vf_dtor(uint8_t x){};
  431. };
  432.  
  433. class Node: NamedObject{
  434. //void* vtable;
  435. uint32_t field_20;
  436. Node* parent_node_or_base_maybe;
  437. uint32_t children_nodes_linked_list;
  438. uint32_t unk;
  439. SmoothMeshShape* shape;
  440. Transformation* transformation;
  441. Display* display;
  442. Widget* related_widget;
  443. uint32_t field_40;
  444. uint32_t field_44;
  445. uint32_t field_48;
  446. uint32_t field_4C;
  447. uint32_t field_50;
  448. uint32_t field_54;
  449. uint32_t field_58;
  450. uint32_t field_5C;
  451. uint32_t field_60;
  452. uint32_t field_64;
  453. uint32_t field_68;
  454. uint32_t field_6C;
  455. uint32_t field_70;
  456. uint32_t field_74;
  457. uint32_t field_78;
  458. uint32_t field_7C;
  459. uint32_t field_80;
  460. uint32_t field_84;
  461. uint32_t field_88;
  462. uint32_t field_8C;
  463. uint32_t field_90;
  464. uint32_t field_94;
  465. uint32_t field_98;
  466. uint32_t field_9C;
  467. uint32_t field_A0;
  468. uint32_t field_A4;
  469. uint32_t field_A8;
  470. uint32_t field_AC;
  471. uint32_t field_B0;
  472. uint32_t field_B4;
  473. uint32_t field_B8;
  474. uint32_t field_BC;
  475. uint32_t field_C0;
  476. uint32_t field_C4;
  477. uint32_t field_C8;
  478. uint32_t field_CC;
  479. uint32_t field_D0;
  480. uint32_t field_D4;
  481. uint32_t field_D8;
  482. uint32_t field_DC;
  483. uint32_t field_E0;
  484. uint32_t field_E4;
  485. uint32_t field_E8;
  486.  
  487. virtual void vf_dtor(char x){};
  488. };
  489.  
  490. };
  491.  
  492. //assert_size(plasma::Vector, 0xC) // Can't do this with a templated class even though all the members are pointers.
  493. assert_size(plasma::Attribute, 0x48)
  494. assert_size(plasma::Object, 0xC)
  495. assert_size(plasma::NamedObject, 0x24)
  496. assert_size(plasma::Node, 0xF0)
  497. assert_size(plasma::Widget, 0x160)
  498. assert_size(plasma::Keyable, 0x48)
  499. assert_size(plasma::Shape, 0x5C)
  500. assert_size(plasma::MeshShape, 0x8E4)
  501. assert_size(plasma::SmoothMeshShape, 0xC34)
  502. assert_size(plasma::Transformation, 0x234)
  503. assert_size(plasma::Display, 0x210)
  504.  
  505.  
  506. int main() {
  507. std::cout << std::hex << sizeof(plasma::SmoothMeshShape) << std::endl;
  508. std::cout << std::hex << offsetof(plasma::MeshShape, strokeTexture) << std::endl;
  509. }
Add Comment
Please, Sign In to add comment