VeParticleGeneratorOps.cs 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497
  1. #region License information
  2. // ----------------------------------------------------------------------------
  3. //
  4. // libeq2 - A library for analyzing the Everquest II File Format
  5. // Blaz (blaz@blazlabs.com)
  6. //
  7. // This program is free software; you can redistribute it and/or
  8. // modify it under the terms of the GNU General Public License
  9. // as published by the Free Software Foundation; either version 2
  10. // of the License, or (at your option) any later version.
  11. //
  12. // This program is distributed in the hope that it will be useful,
  13. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. // GNU General Public License for more details.
  16. //
  17. // You should have received a copy of the GNU General Public License
  18. // along with this program; if not, write to the Free Software
  19. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  20. //
  21. // ( The full text of the license can be found in the License.txt file )
  22. //
  23. // ----------------------------------------------------------------------------
  24. #endregion
  25. #region Using directives
  26. using System;
  27. using System.Collections.Generic;
  28. using System.Diagnostics;
  29. #endregion
  30. namespace Everquest2.Visualization.ParticleGenerator {
  31. public abstract class VeParticleGeneratorOp {
  32. protected string ReadParameterName(Util.Eq2Reader reader) {
  33. string name = null;
  34. bool isImmediateParameter = reader.ReadBoolean();
  35. if (!isImmediateParameter) {
  36. name = reader.ReadString(2);
  37. }
  38. return name;
  39. }
  40. protected void ReadUnaryScalarOp(Util.Eq2Reader reader,
  41. ref string destination,
  42. ref float value,
  43. ref string valueVariable) {
  44. // Read immediate parameters
  45. value = reader.ReadSingle();
  46. // Read destination variables
  47. destination = ReadParameterName(reader);
  48. // Read source variables
  49. valueVariable = ReadParameterName(reader);
  50. }
  51. protected void ReadUnaryScalarOp(Util.Eq2Reader reader,
  52. ref string destination,
  53. ref uint value,
  54. ref string valueVariable) {
  55. // Read immediate parameters
  56. value = reader.ReadUInt32();
  57. // Read destination variables
  58. destination = ReadParameterName(reader);
  59. // Read source variables
  60. valueVariable = ReadParameterName(reader);
  61. }
  62. protected void ReadBinaryScalarOp(Util.Eq2Reader reader,
  63. ref string destination,
  64. ref float arg0,
  65. ref float arg1,
  66. ref string arg0Variable,
  67. ref string arg1Variable) {
  68. // Read immediate parameters
  69. arg0 = reader.ReadSingle();
  70. arg1 = reader.ReadSingle();
  71. // Read destination variables
  72. destination = ReadParameterName(reader);
  73. // Read source variables
  74. arg0Variable = ReadParameterName(reader);
  75. arg1Variable = ReadParameterName(reader);
  76. }
  77. protected void ReadUnaryVectorOp(Util.Eq2Reader reader,
  78. ref string destination,
  79. ref float[] value,
  80. ref string valueVariable) {
  81. #region Preconditions
  82. Debug.Assert(value.Length == 3);
  83. #endregion
  84. // Read immediate parameters
  85. value[0] = reader.ReadSingle();
  86. value[1] = reader.ReadSingle();
  87. value[2] = reader.ReadSingle();
  88. // Read destination variables
  89. destination = ReadParameterName(reader);
  90. // Read source variables
  91. valueVariable = ReadParameterName(reader);
  92. }
  93. protected void ReadBinaryVectorOp(Util.Eq2Reader reader,
  94. ref string destination,
  95. ref float[] arg0,
  96. ref float[] arg1,
  97. ref string arg0Variable,
  98. ref string arg1Variable) {
  99. #region Preconditions
  100. Debug.Assert(arg0.Length == 3 && arg1.Length == 3);
  101. #endregion
  102. // Read immediate parameters
  103. arg0[0] = reader.ReadSingle();
  104. arg0[1] = reader.ReadSingle();
  105. arg0[2] = reader.ReadSingle();
  106. arg1[0] = reader.ReadSingle();
  107. arg1[1] = reader.ReadSingle();
  108. arg1[2] = reader.ReadSingle();
  109. // Read destination variables
  110. destination = ReadParameterName(reader);
  111. // Read source variables
  112. arg0Variable = ReadParameterName(reader);
  113. arg1Variable = ReadParameterName(reader);
  114. }
  115. }
  116. // RAND <dest> <min> <max>
  117. public class VeParticleGeneratorRandOp : VeParticleGeneratorOp {
  118. protected VeParticleGeneratorRandOp(Util.Eq2Reader reader, byte classVersion) {
  119. ReadBinaryScalarOp(reader, ref destination, ref min, ref max, ref minVariable, ref maxVariable);
  120. }
  121. public float min;
  122. public float max;
  123. public string destination;
  124. public string minVariable;
  125. public string maxVariable;
  126. }
  127. // RANDPITCH <dest> <min> <max>
  128. public class VeParticleGeneratorRandPitchOp : VeParticleGeneratorOp {
  129. protected VeParticleGeneratorRandPitchOp(Util.Eq2Reader reader, byte classVersion) {
  130. ReadBinaryScalarOp(reader, ref destination, ref min, ref max, ref minVariable, ref maxVariable);
  131. }
  132. public float min;
  133. public float max;
  134. public string destination;
  135. public string minVariable;
  136. public string maxVariable;
  137. }
  138. // ADD <dest> <arg0> <arg1>
  139. public class VeParticleGeneratorAddOp : VeParticleGeneratorOp {
  140. protected VeParticleGeneratorAddOp(Util.Eq2Reader reader, byte classVersion) {
  141. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  142. }
  143. public float arg0;
  144. public float arg1;
  145. public string destination;
  146. public string arg0Variable;
  147. public string arg1Variable;
  148. }
  149. // SUB <dest> <arg0> <arg1>
  150. public class VeParticleGeneratorSubOp : VeParticleGeneratorOp {
  151. protected VeParticleGeneratorSubOp(Util.Eq2Reader reader, byte classVersion) {
  152. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  153. }
  154. public float arg0;
  155. public float arg1;
  156. public string destination;
  157. public string arg0Variable;
  158. public string arg1Variable;
  159. }
  160. // MUL <dest> <arg0> <arg1>
  161. public class VeParticleGeneratorMulOp : VeParticleGeneratorOp {
  162. protected VeParticleGeneratorMulOp(Util.Eq2Reader reader, byte classVersion) {
  163. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  164. }
  165. public float arg0;
  166. public float arg1;
  167. public string destination;
  168. public string arg0Variable;
  169. public string arg1Variable;
  170. }
  171. // DIV <dest> <arg0> <arg1>
  172. public class VeParticleGeneratorDivOp : VeParticleGeneratorOp {
  173. protected VeParticleGeneratorDivOp(Util.Eq2Reader reader, byte classVersion) {
  174. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  175. }
  176. public float arg0;
  177. public float arg1;
  178. public string destination;
  179. public string arg0Variable;
  180. public string arg1Variable;
  181. }
  182. // MOD <dest> <arg0> <arg1>
  183. public class VeParticleGeneratorModOp : VeParticleGeneratorOp {
  184. protected VeParticleGeneratorModOp(Util.Eq2Reader reader, byte classVersion) {
  185. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  186. }
  187. public float arg0;
  188. public float arg1;
  189. public string destination;
  190. public string arg0Variable;
  191. public string arg1Variable;
  192. }
  193. // MIN <dest> <arg0> <arg1>
  194. public class VeParticleGeneratorMinOp : VeParticleGeneratorOp {
  195. protected VeParticleGeneratorMinOp(Util.Eq2Reader reader, byte classVersion) {
  196. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  197. }
  198. public float arg0;
  199. public float arg1;
  200. public string destination;
  201. public string arg0Variable;
  202. public string arg1Variable;
  203. }
  204. // MAX <dest> <arg0> <arg1>
  205. public class VeParticleGeneratorMaxOp : VeParticleGeneratorOp {
  206. protected VeParticleGeneratorMaxOp(Util.Eq2Reader reader, byte classVersion) {
  207. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  208. }
  209. public float arg0;
  210. public float arg1;
  211. public string destination;
  212. public string arg0Variable;
  213. public string arg1Variable;
  214. }
  215. // EQUAL <dest> <arg0> <arg1>
  216. public class VeParticleGeneratorEqualOp : VeParticleGeneratorOp {
  217. protected VeParticleGeneratorEqualOp(Util.Eq2Reader reader, byte classVersion) {
  218. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  219. }
  220. public float arg0;
  221. public float arg1;
  222. public string destination;
  223. public string arg0Variable;
  224. public string arg1Variable;
  225. }
  226. // NOTEQUAL <dest> <arg0> <arg1>
  227. public class VeParticleGeneratorNotEqualOp : VeParticleGeneratorOp {
  228. protected VeParticleGeneratorNotEqualOp(Util.Eq2Reader reader, byte classVersion) {
  229. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  230. }
  231. public float arg0;
  232. public float arg1;
  233. public string destination;
  234. public string arg0Variable;
  235. public string arg1Variable;
  236. }
  237. // LESS <dest> <arg0> <arg1>
  238. public class VeParticleGeneratorLessOp : VeParticleGeneratorOp {
  239. protected VeParticleGeneratorLessOp(Util.Eq2Reader reader, byte classVersion) {
  240. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  241. }
  242. public float arg0;
  243. public float arg1;
  244. public string destination;
  245. public string arg0Variable;
  246. public string arg1Variable;
  247. }
  248. // GREATER <dest> <arg0> <arg1>
  249. public class VeParticleGeneratorGreaterOp : VeParticleGeneratorOp {
  250. protected VeParticleGeneratorGreaterOp(Util.Eq2Reader reader, byte classVersion) {
  251. ReadBinaryScalarOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  252. }
  253. public float arg0;
  254. public float arg1;
  255. public string destination;
  256. public string arg0Variable;
  257. public string arg1Variable;
  258. }
  259. // SETRANDSEED <dest> <value>
  260. public class VeParticleGeneratorSetRandSeedOp : VeParticleGeneratorOp {
  261. protected VeParticleGeneratorSetRandSeedOp(Util.Eq2Reader reader, byte classVersion) {
  262. // Read immediate parameters
  263. seed = reader.ReadSingle();
  264. // Read destination variables
  265. destination = ReadParameterName(reader);
  266. }
  267. public float seed;
  268. public string destination;
  269. }
  270. // SET <dest> <value>
  271. public class VeParticleGeneratorSetOp : VeParticleGeneratorOp {
  272. protected VeParticleGeneratorSetOp(Util.Eq2Reader reader, byte classVersion) {
  273. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  274. }
  275. public float value;
  276. public string destination;
  277. public string valueVariable;
  278. }
  279. // FLOOR <dest> <value>
  280. public class VeParticleGeneratorFloorOp : VeParticleGeneratorOp {
  281. protected VeParticleGeneratorFloorOp(Util.Eq2Reader reader, byte classVersion) {
  282. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  283. }
  284. public float value;
  285. public string destination;
  286. public string valueVariable;
  287. }
  288. // ROUND <dest> <value>
  289. public class VeParticleGeneratorRoundOp : VeParticleGeneratorOp {
  290. protected VeParticleGeneratorRoundOp(Util.Eq2Reader reader, byte classVersion) {
  291. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  292. }
  293. public float value;
  294. public string destination;
  295. public string valueVariable;
  296. }
  297. // NOT <dest> <value>
  298. public class VeParticleGeneratorNotOp : VeParticleGeneratorOp {
  299. protected VeParticleGeneratorNotOp(Util.Eq2Reader reader, byte classVersion) {
  300. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  301. }
  302. public float value;
  303. public string destination;
  304. public string valueVariable;
  305. }
  306. // ABS <dest> <value>
  307. public class VeParticleGeneratorAbsOp : VeParticleGeneratorOp {
  308. protected VeParticleGeneratorAbsOp(Util.Eq2Reader reader, byte classVersion) {
  309. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  310. }
  311. public float value;
  312. public string destination;
  313. public string valueVariable;
  314. }
  315. // SIGN <dest> <value>
  316. public class VeParticleGeneratorSignOp : VeParticleGeneratorOp {
  317. protected VeParticleGeneratorSignOp(Util.Eq2Reader reader, byte classVersion) {
  318. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  319. }
  320. public float value;
  321. public string destination;
  322. public string valueVariable;
  323. }
  324. // SQRT <dest> <value>
  325. public class VeParticleGeneratorSqrtOp : VeParticleGeneratorOp {
  326. protected VeParticleGeneratorSqrtOp(Util.Eq2Reader reader, byte classVersion) {
  327. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  328. }
  329. public float value;
  330. public string destination;
  331. public string valueVariable;
  332. }
  333. // SIN <dest> <value>
  334. public class VeParticleGeneratorSinOp : VeParticleGeneratorOp {
  335. protected VeParticleGeneratorSinOp(Util.Eq2Reader reader, byte classVersion) {
  336. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  337. }
  338. public float value;
  339. public string destination;
  340. public string valueVariable;
  341. }
  342. // COS <dest> <value>
  343. public class VeParticleGeneratorCosOp : VeParticleGeneratorOp {
  344. protected VeParticleGeneratorCosOp(Util.Eq2Reader reader, byte classVersion) {
  345. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  346. }
  347. public float value;
  348. public string destination;
  349. public string valueVariable;
  350. }
  351. // SCALELS2WS <dest> <local space scale>
  352. public class VeParticleGeneratorScaleLs2WsOp : VeParticleGeneratorOp {
  353. protected VeParticleGeneratorScaleLs2WsOp(Util.Eq2Reader reader, byte classVersion) {
  354. ReadUnaryScalarOp(reader, ref destination, ref localSpaceScale, ref localSpaceScaleVariable);
  355. }
  356. public float localSpaceScale;
  357. public string destination;
  358. public string localSpaceScaleVariable;
  359. }
  360. // GETSUBMESH <dest> <vertex>
  361. public class VeParticleGeneratorGetSubMeshOp : VeParticleGeneratorOp {
  362. protected VeParticleGeneratorGetSubMeshOp(Util.Eq2Reader reader, byte classVersion) {
  363. ReadUnaryScalarOp(reader, ref destination, ref vertex, ref vertexVariable);
  364. }
  365. public uint vertex;
  366. public string destination;
  367. public string vertexVariable;
  368. }
  369. // CIRCLE <dest0> <dest1> <radius0> <radius1> <heading>
  370. public class VeParticleGeneratorCircleOp : VeParticleGeneratorOp {
  371. protected VeParticleGeneratorCircleOp(Util.Eq2Reader reader, byte classVersion) {
  372. // Read immediate parameters
  373. radius0 = reader.ReadSingle();
  374. radius1 = reader.ReadSingle();
  375. heading = reader.ReadSingle();
  376. // Read destination variables
  377. destination0 = ReadParameterName(reader);
  378. destination1 = ReadParameterName(reader);
  379. // Read source variables
  380. radius0Variable = ReadParameterName(reader);
  381. radius1Variable = ReadParameterName(reader);
  382. headingVariable = ReadParameterName(reader);
  383. }
  384. public float radius0;
  385. public float radius1;
  386. public float heading;
  387. public string destination0;
  388. public string destination1;
  389. public string radius0Variable;
  390. public string radius1Variable;
  391. public string headingVariable;
  392. }
  393. // SPHERE <dest0> <dest1> <dest2> <radius0> <radius1> <radius2> <heading> <pitch>
  394. public class VeParticleGeneratorSphereOp : VeParticleGeneratorOp {
  395. protected VeParticleGeneratorSphereOp(Util.Eq2Reader reader, byte classVersion) {
  396. // Read immediate parameters
  397. radius0 = reader.ReadSingle();
  398. radius1 = reader.ReadSingle();
  399. radius2 = reader.ReadSingle();
  400. heading = reader.ReadSingle();
  401. pitch = reader.ReadSingle();
  402. // Read destination variables
  403. destination0 = ReadParameterName(reader);
  404. destination1 = ReadParameterName(reader);
  405. destination2 = ReadParameterName(reader);
  406. // Read source variables
  407. radius0Variable = ReadParameterName(reader);
  408. radius1Variable = ReadParameterName(reader);
  409. radius2Variable = ReadParameterName(reader);
  410. headingVariable = ReadParameterName(reader);
  411. pitchVariable = ReadParameterName(reader);
  412. }
  413. public float radius0;
  414. public float radius1;
  415. public float radius2;
  416. public float heading;
  417. public float pitch;
  418. public string destination0;
  419. public string destination1;
  420. public string destination2;
  421. public string radius0Variable;
  422. public string radius1Variable;
  423. public string radius2Variable;
  424. public string headingVariable;
  425. public string pitchVariable;
  426. }
  427. // CONV2WS
  428. public class VeParticleGeneratorConv2WsOp : VeParticleGeneratorOp {
  429. protected VeParticleGeneratorConv2WsOp(Util.Eq2Reader reader, byte classVersion) {
  430. }
  431. }
  432. // RENDERTARGETVOC
  433. public class VeParticleGeneratorRenderTargetVocOp : VeParticleGeneratorOp {
  434. protected VeParticleGeneratorRenderTargetVocOp(Util.Eq2Reader reader, byte classVersion) {
  435. }
  436. }
  437. // DISABLETARGETVOC
  438. public class VeParticleGeneratorDisableTargetVocOp : VeParticleGeneratorOp {
  439. protected VeParticleGeneratorDisableTargetVocOp(Util.Eq2Reader reader, byte classVersion) {
  440. }
  441. }
  442. // ENABLETARGETVOC
  443. public class VeParticleGeneratorEnableTargetVocOp : VeParticleGeneratorOp {
  444. protected VeParticleGeneratorEnableTargetVocOp(Util.Eq2Reader reader, byte classVersion) {
  445. }
  446. }
  447. // DISABLETARGETVOC_FORCELIGHTING
  448. public class VeParticleGeneratorDisableTargetVoc_ForceLightingOp : VeParticleGeneratorOp {
  449. protected VeParticleGeneratorDisableTargetVoc_ForceLightingOp(Util.Eq2Reader reader, byte classVersion) {
  450. }
  451. }
  452. // ENABLETARGETVOC_FORCELIGHTING
  453. public class VeParticleGeneratorEnableTargetVoc_ForceLightingOp : VeParticleGeneratorOp {
  454. protected VeParticleGeneratorEnableTargetVoc_ForceLightingOp(Util.Eq2Reader reader, byte classVersion) {
  455. }
  456. }
  457. // IF <conditionalVariable> <unknown>
  458. public class VeParticleGeneratorIfOp : VeParticleGeneratorOp {
  459. protected VeParticleGeneratorIfOp(Util.Eq2Reader reader, byte classVersion) {
  460. // Read condition variable
  461. condition = ReadParameterName(reader);
  462. // Read unknown
  463. unknown = reader.ReadUInt32();
  464. }
  465. public string condition;
  466. public uint unknown;
  467. }
  468. // IFNOT <conditionalVariable> <unknown>
  469. public class VeParticleGeneratorIfNotOp : VeParticleGeneratorOp {
  470. protected VeParticleGeneratorIfNotOp(Util.Eq2Reader reader, byte classVersion) {
  471. // Read condition variable
  472. condition = ReadParameterName(reader);
  473. // Read unknown
  474. unknown = reader.ReadUInt32();
  475. }
  476. public string condition;
  477. public uint unknown;
  478. }
  479. // ENDIF
  480. public class VeParticleGeneratorEndIfOp : VeParticleGeneratorOp {
  481. protected VeParticleGeneratorEndIfOp(Util.Eq2Reader reader, byte classVersion) {
  482. }
  483. }
  484. // PAUSE
  485. public class VeParticleGeneratorPauseOp : VeParticleGeneratorOp {
  486. protected VeParticleGeneratorPauseOp(Util.Eq2Reader reader, byte classVersion) {
  487. }
  488. }
  489. // GRAPH <dest> <source> <unk0> <minX> <maxX> <minY> <maxY> <count> [ ... ]
  490. public class VeParticleGeneratorGraphOp : VeParticleGeneratorOp {
  491. protected VeParticleGeneratorGraphOp(Util.Eq2Reader reader, byte classVersion) {
  492. // Read source and destination names
  493. destination = ReadParameterName(reader);
  494. source = ReadParameterName(reader);
  495. // Read unknown values
  496. unk0 = reader.ReadSingle();
  497. minX = reader.ReadSingle();
  498. maxX = reader.ReadSingle();
  499. minY = reader.ReadSingle();
  500. maxY = reader.ReadSingle();
  501. uint count = reader.ReadUInt32();
  502. unk1 = new float[count, 2];
  503. for (uint i = 0; i < count; ++i) {
  504. unk1[i, 0] = reader.ReadSingle();
  505. unk1[i, 1] = reader.ReadSingle();
  506. }
  507. }
  508. public string destination;
  509. public string source;
  510. public float unk0;
  511. public float minX;
  512. public float maxX;
  513. public float minY;
  514. public float maxY;
  515. public float[,] unk1;
  516. }
  517. // VGRAPH <dest> <source> <unk0> <unk1> <unk2> <unk3> <unk4> <count> [ ... ]
  518. public class VeParticleGeneratorVGraphOp : VeParticleGeneratorOp {
  519. protected VeParticleGeneratorVGraphOp(Util.Eq2Reader reader, byte classVersion) {
  520. // Read source and destination names
  521. destination = ReadParameterName(reader);
  522. source = ReadParameterName(reader);
  523. unk0 = reader.ReadSingle();
  524. min[0] = reader.ReadSingle();
  525. min[1] = reader.ReadSingle();
  526. min[2] = reader.ReadSingle();
  527. max[0] = reader.ReadSingle();
  528. max[1] = reader.ReadSingle();
  529. max[2] = reader.ReadSingle();
  530. uint count = reader.ReadUInt32();
  531. unk1 = new float[count, 4];
  532. for (uint i = 0; i < count; ++i) {
  533. unk1[i, 0] = reader.ReadSingle();
  534. unk1[i, 1] = reader.ReadSingle();
  535. unk1[i, 2] = reader.ReadSingle();
  536. unk1[i, 3] = reader.ReadSingle();
  537. }
  538. }
  539. public string destination;
  540. public string source;
  541. public float unk0;
  542. public float[] min = new float[3];
  543. public float[] max = new float[3];
  544. public float[,] unk1;
  545. }
  546. // VGRAPHSMOOTH <dest> <source> <unk0> <unk1> <unk2> <unk3> <unk4> <count> [ ... ]
  547. public class VeParticleGeneratorVGraphSmoothOp : VeParticleGeneratorOp {
  548. protected VeParticleGeneratorVGraphSmoothOp(Util.Eq2Reader reader, byte classVersion) {
  549. // Read source and destination names
  550. destination = ReadParameterName(reader);
  551. source = ReadParameterName(reader);
  552. unk0 = reader.ReadSingle();
  553. min[0] = reader.ReadSingle();
  554. min[1] = reader.ReadSingle();
  555. min[2] = reader.ReadSingle();
  556. max[0] = reader.ReadSingle();
  557. max[1] = reader.ReadSingle();
  558. max[2] = reader.ReadSingle();
  559. uint count = reader.ReadUInt32();
  560. unk1 = new float[count, 4];
  561. for (uint i = 0; i < count; ++i) {
  562. unk1[i, 0] = reader.ReadSingle();
  563. unk1[i, 1] = reader.ReadSingle();
  564. unk1[i, 2] = reader.ReadSingle();
  565. unk1[i, 3] = reader.ReadSingle();
  566. }
  567. }
  568. public string destination;
  569. public string source;
  570. public float unk0;
  571. public float[] min = new float[3];
  572. public float[] max = new float[3];
  573. public float[,] unk1;
  574. }
  575. // VGRAPHSMOOTHEXT <dest> <source> <unk0> <unk1> <unk2> <unk3> <unk4> <count> [ ... ]
  576. public class VeParticleGeneratorVGraphSmoothExtOp : VeParticleGeneratorOp {
  577. protected VeParticleGeneratorVGraphSmoothExtOp(Util.Eq2Reader reader, byte classVersion) {
  578. // Read source and destination names
  579. destination = ReadParameterName(reader);
  580. source = ReadParameterName(reader);
  581. unk0 = reader.ReadSingle();
  582. min[0] = reader.ReadSingle();
  583. min[1] = reader.ReadSingle();
  584. min[2] = reader.ReadSingle();
  585. max[0] = reader.ReadSingle();
  586. max[1] = reader.ReadSingle();
  587. max[2] = reader.ReadSingle();
  588. uint count = reader.ReadUInt32();
  589. unk1 = new float[count, 4];
  590. for (uint i = 0; i < count; ++i) {
  591. unk1[i, 0] = reader.ReadSingle();
  592. unk1[i, 1] = reader.ReadSingle();
  593. unk1[i, 2] = reader.ReadSingle();
  594. unk1[i, 3] = reader.ReadSingle();
  595. }
  596. }
  597. public string destination;
  598. public string source;
  599. public float unk0;
  600. public float[] min = new float[3];
  601. public float[] max = new float[3];
  602. public float[,] unk1;
  603. }
  604. // VGRAPHSMOOTHBONES <dest> <source> <unk0> <unk1> <unk2> <unk3> <unk4> <count> [ ... ]
  605. public class VeParticleGeneratorVGraphSmoothBonesOp : VeParticleGeneratorOp {
  606. protected VeParticleGeneratorVGraphSmoothBonesOp(Util.Eq2Reader reader, byte classVersion) {
  607. // Read source and destination names
  608. destination = ReadParameterName(reader);
  609. source = ReadParameterName(reader);
  610. unk0 = reader.ReadSingle();
  611. min[0] = reader.ReadSingle();
  612. min[1] = reader.ReadSingle();
  613. min[2] = reader.ReadSingle();
  614. max[0] = reader.ReadSingle();
  615. max[1] = reader.ReadSingle();
  616. max[2] = reader.ReadSingle();
  617. uint count = reader.ReadUInt32();
  618. unk1 = new float[count, 4];
  619. for (uint i = 0; i < count; ++i) {
  620. unk1[i, 0] = reader.ReadSingle();
  621. unk1[i, 1] = reader.ReadSingle();
  622. unk1[i, 2] = reader.ReadSingle();
  623. unk1[i, 3] = reader.ReadSingle();
  624. }
  625. }
  626. public string destination;
  627. public string source;
  628. public float unk0;
  629. public float[] min = new float[3];
  630. public float[] max = new float[3];
  631. public float[,] unk1;
  632. }
  633. // OUTPUTGRAPH <dest> <source> <unk0> <minX> <maxX> <minY> <maxY> <count> [ ... ]
  634. public class VeParticleGeneratorOutputGraphOp : VeParticleGeneratorOp {
  635. protected VeParticleGeneratorOutputGraphOp(Util.Eq2Reader reader, byte classVersion) {
  636. // Read source and destination names
  637. destination = ReadParameterName(reader);
  638. source = ReadParameterName(reader);
  639. }
  640. public string destination;
  641. public string source;
  642. }
  643. // VCAMSHAKE <center> <min radius, max radius, intensity>
  644. public class VeParticleGeneratorVCamShakeOp : VeParticleGeneratorOp {
  645. protected VeParticleGeneratorVCamShakeOp(Util.Eq2Reader reader, byte classVersion) {
  646. // Read immediate parameters
  647. center[0] = reader.ReadSingle();
  648. center[1] = reader.ReadSingle();
  649. center[2] = reader.ReadSingle();
  650. args[0] = reader.ReadSingle();
  651. args[1] = reader.ReadSingle();
  652. args[2] = reader.ReadSingle();
  653. // Read source variables
  654. centerVariable = ReadParameterName(reader);
  655. argsVariable = ReadParameterName(reader);
  656. }
  657. public float[] center = new float[3];
  658. public float[] args = new float[3];
  659. public string centerVariable;
  660. public string argsVariable;
  661. }
  662. // VRAND <dest> <min> <max>
  663. public class VeParticleGeneratorVRandOp : VeParticleGeneratorOp {
  664. protected VeParticleGeneratorVRandOp(Util.Eq2Reader reader, byte classVersion) {
  665. ReadBinaryVectorOp(reader, ref destination, ref min, ref max, ref minVariable, ref maxVariable);
  666. }
  667. public float[] min = new float[3];
  668. public float[] max = new float[3];
  669. public string destination;
  670. public string minVariable;
  671. public string maxVariable;
  672. }
  673. // VADD <dest> <arg0> <arg1>
  674. public class VeParticleGeneratorVAddOp : VeParticleGeneratorOp {
  675. protected VeParticleGeneratorVAddOp(Util.Eq2Reader reader, byte classVersion) {
  676. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  677. }
  678. public float[] arg0 = new float[3];
  679. public float[] arg1 = new float[3];
  680. public string destination;
  681. public string arg0Variable;
  682. public string arg1Variable;
  683. }
  684. // VSUB <dest> <arg0> <arg1>
  685. public class VeParticleGeneratorVSubOp : VeParticleGeneratorOp {
  686. protected VeParticleGeneratorVSubOp(Util.Eq2Reader reader, byte classVersion) {
  687. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  688. }
  689. public float[] arg0 = new float[3];
  690. public float[] arg1 = new float[3];
  691. public string destination;
  692. public string arg0Variable;
  693. public string arg1Variable;
  694. }
  695. // VMUL <dest> <arg0> <arg1>
  696. public class VeParticleGeneratorVMulOp : VeParticleGeneratorOp {
  697. protected VeParticleGeneratorVMulOp(Util.Eq2Reader reader, byte classVersion) {
  698. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  699. }
  700. public float[] arg0 = new float[3];
  701. public float[] arg1 = new float[3];
  702. public string destination;
  703. public string arg0Variable;
  704. public string arg1Variable;
  705. }
  706. // VDIV <dest> <arg0> <arg1>
  707. public class VeParticleGeneratorVDivOp : VeParticleGeneratorOp {
  708. protected VeParticleGeneratorVDivOp(Util.Eq2Reader reader, byte classVersion) {
  709. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  710. }
  711. public float[] arg0 = new float[3];
  712. public float[] arg1 = new float[3];
  713. public string destination;
  714. public string arg0Variable;
  715. public string arg1Variable;
  716. }
  717. // VMOD <dest> <arg0> <arg1>
  718. public class VeParticleGeneratorVModOp : VeParticleGeneratorOp {
  719. protected VeParticleGeneratorVModOp(Util.Eq2Reader reader, byte classVersion) {
  720. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  721. }
  722. public float[] arg0 = new float[3];
  723. public float[] arg1 = new float[3];
  724. public string destination;
  725. public string arg0Variable;
  726. public string arg1Variable;
  727. }
  728. // VDIR <dest> <start> <end>
  729. public class VeParticleGeneratorVDirOp : VeParticleGeneratorOp {
  730. protected VeParticleGeneratorVDirOp(Util.Eq2Reader reader, byte classVersion) {
  731. ReadBinaryVectorOp(reader, ref destination, ref start, ref end, ref startVariable, ref endVariable);
  732. }
  733. public float[] start = new float[3];
  734. public float[] end = new float[3];
  735. public string destination;
  736. public string startVariable;
  737. public string endVariable;
  738. }
  739. // VCROSS <dest> <arg0> <arg1>
  740. public class VeParticleGeneratorVCrossOp : VeParticleGeneratorOp {
  741. protected VeParticleGeneratorVCrossOp(Util.Eq2Reader reader, byte classVersion) {
  742. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  743. }
  744. public float[] arg0 = new float[3];
  745. public float[] arg1 = new float[3];
  746. public string destination;
  747. public string arg0Variable;
  748. public string arg1Variable;
  749. }
  750. // VRATE <dest> <start> <end>
  751. public class VeParticleGeneratorVRateOp : VeParticleGeneratorOp {
  752. protected VeParticleGeneratorVRateOp(Util.Eq2Reader reader, byte classVersion) {
  753. ReadBinaryVectorOp(reader, ref destination, ref start, ref end, ref startVariable, ref endVariable);
  754. }
  755. public float[] start = new float[3];
  756. public float[] end = new float[3];
  757. public string destination;
  758. public string startVariable;
  759. public string endVariable;
  760. }
  761. // VDIR2HPRU <dest> <forward> <up>
  762. public class VeParticleGeneratorVDir2HpruOp : VeParticleGeneratorOp {
  763. protected VeParticleGeneratorVDir2HpruOp(Util.Eq2Reader reader, byte classVersion) {
  764. ReadBinaryVectorOp(reader, ref destination, ref forward, ref up, ref forwardVariable, ref upVariable);
  765. }
  766. public float[] forward = new float[3];
  767. public float[] up = new float[3];
  768. public string destination;
  769. public string forwardVariable;
  770. public string upVariable;
  771. }
  772. // VDIR2HPRF <dest> <forward> <up>
  773. public class VeParticleGeneratorVDir2HprfOp : VeParticleGeneratorOp {
  774. protected VeParticleGeneratorVDir2HprfOp(Util.Eq2Reader reader, byte classVersion) {
  775. ReadBinaryVectorOp(reader, ref destination, ref forward, ref up, ref forwardVariable, ref upVariable);
  776. }
  777. public float[] forward = new float[3];
  778. public float[] up = new float[3];
  779. public string destination;
  780. public string forwardVariable;
  781. public string upVariable;
  782. }
  783. // VCONSTRAINELLIPSOID <dest> <offset> <radius vector>
  784. public class VeParticleGeneratorVConstrainEllipsoidOp : VeParticleGeneratorOp {
  785. protected VeParticleGeneratorVConstrainEllipsoidOp(Util.Eq2Reader reader, byte classVersion) {
  786. ReadBinaryVectorOp(reader, ref destination, ref offset, ref radius, ref offsetVariable, ref radiusVariable);
  787. }
  788. public float[] offset = new float[3];
  789. public float[] radius = new float[3];
  790. public string destination;
  791. public string offsetVariable;
  792. public string radiusVariable;
  793. }
  794. // VCONSTRAINELLIPSOIDAXIS <dest> <offset> <radius vector> <axis vector>
  795. public class VeParticleGeneratorVConstrainEllipsoidAxisOp : VeParticleGeneratorOp {
  796. protected VeParticleGeneratorVConstrainEllipsoidAxisOp(Util.Eq2Reader reader, byte classVersion) {
  797. // Read immediate parameters
  798. offset[0] = reader.ReadSingle();
  799. offset[1] = reader.ReadSingle();
  800. offset[2] = reader.ReadSingle();
  801. radius[0] = reader.ReadSingle();
  802. radius[1] = reader.ReadSingle();
  803. radius[2] = reader.ReadSingle();
  804. axis[0] = reader.ReadSingle();
  805. axis[1] = reader.ReadSingle();
  806. axis[2] = reader.ReadSingle();
  807. // Read destination variables
  808. destination = ReadParameterName(reader);
  809. // Read source variables
  810. offsetVariable = ReadParameterName(reader);
  811. radiusVariable = ReadParameterName(reader);
  812. axisVariable = ReadParameterName(reader);
  813. }
  814. public float[] offset = new float[3];
  815. public float[] radius = new float[3];
  816. public float[] axis = new float[3];
  817. public string destination;
  818. public string offsetVariable;
  819. public string radiusVariable;
  820. public string axisVariable;
  821. }
  822. // VSET <dest> <value>
  823. public class VeParticleGeneratorVSetOp : VeParticleGeneratorOp {
  824. protected VeParticleGeneratorVSetOp(Util.Eq2Reader reader, byte classVersion) {
  825. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  826. }
  827. public float[] value = new float[3];
  828. public string destination;
  829. public string valueVariable;
  830. }
  831. // VFLOOR <dest> <value>
  832. public class VeParticleGeneratorVFloorOp : VeParticleGeneratorOp {
  833. protected VeParticleGeneratorVFloorOp(Util.Eq2Reader reader, byte classVersion) {
  834. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  835. }
  836. public float[] value = new float[3];
  837. public string destination;
  838. public string valueVariable;
  839. }
  840. // VROUND <dest> <value>
  841. public class VeParticleGeneratorVRoundOp : VeParticleGeneratorOp {
  842. protected VeParticleGeneratorVRoundOp(Util.Eq2Reader reader, byte classVersion) {
  843. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  844. }
  845. public float[] value = new float[3];
  846. public string destination;
  847. public string valueVariable;
  848. }
  849. // VINTEGRATE <dest> <value>
  850. public class VeParticleGeneratorVIntegrateOp : VeParticleGeneratorOp {
  851. protected VeParticleGeneratorVIntegrateOp(Util.Eq2Reader reader, byte classVersion) {
  852. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  853. }
  854. public float[] value = new float[3];
  855. public string destination;
  856. public string valueVariable;
  857. }
  858. // VNORMALIZE <dest> <value>
  859. public class VeParticleGeneratorVNormalizeOp : VeParticleGeneratorOp {
  860. protected VeParticleGeneratorVNormalizeOp(Util.Eq2Reader reader, byte classVersion) {
  861. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  862. }
  863. public float[] value = new float[3];
  864. public string destination;
  865. public string valueVariable;
  866. }
  867. // VDIR2HPR <dest> <value>
  868. public class VeParticleGeneratorVDir2HprOp : VeParticleGeneratorOp {
  869. protected VeParticleGeneratorVDir2HprOp(Util.Eq2Reader reader, byte classVersion) {
  870. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  871. }
  872. public float[] value = new float[3];
  873. public string destination;
  874. public string valueVariable;
  875. }
  876. // VHPR2DIR <dest> <value>
  877. public class VeParticleGeneratorVHpr2DirOp : VeParticleGeneratorOp {
  878. protected VeParticleGeneratorVHpr2DirOp(Util.Eq2Reader reader, byte classVersion) {
  879. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  880. }
  881. public float[] value = new float[3];
  882. public string destination;
  883. public string valueVariable;
  884. }
  885. // VPOSLS2WS <dest> <value>
  886. public class VeParticleGeneratorVPosLs2WsOp : VeParticleGeneratorOp {
  887. protected VeParticleGeneratorVPosLs2WsOp(Util.Eq2Reader reader, byte classVersion) {
  888. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  889. }
  890. public float[] value = new float[3];
  891. public string destination;
  892. public string valueVariable;
  893. }
  894. // VHPRLS2WS <dest> <value>
  895. public class VeParticleGeneratorVHprLs2WsOp : VeParticleGeneratorOp {
  896. protected VeParticleGeneratorVHprLs2WsOp(Util.Eq2Reader reader, byte classVersion) {
  897. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  898. }
  899. public float[] value = new float[3];
  900. public string destination;
  901. public string valueVariable;
  902. }
  903. // VDIRLS2WS <dest> <value>
  904. public class VeParticleGeneratorVDirLs2WsOp : VeParticleGeneratorOp {
  905. protected VeParticleGeneratorVDirLs2WsOp(Util.Eq2Reader reader, byte classVersion) {
  906. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  907. }
  908. public float[] value = new float[3];
  909. public string destination;
  910. public string valueVariable;
  911. }
  912. // VDIRWS2LS <dest> <value>
  913. public class VeParticleGeneratorVDirWs2LsOp : VeParticleGeneratorOp {
  914. protected VeParticleGeneratorVDirWs2LsOp(Util.Eq2Reader reader, byte classVersion) {
  915. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  916. }
  917. public float[] value = new float[3];
  918. public string destination;
  919. public string valueVariable;
  920. }
  921. // VMAG <dest> <value>
  922. public class VeParticleGeneratorVMagOp : VeParticleGeneratorOp {
  923. protected VeParticleGeneratorVMagOp(Util.Eq2Reader reader, byte classVersion) {
  924. ReadUnaryVectorOp(reader, ref destination, ref value, ref valueVariable);
  925. }
  926. public float[] value = new float[3];
  927. public string destination;
  928. public string valueVariable;
  929. }
  930. // VDOT <dest> <arg0> <arg1>
  931. public class VeParticleGeneratorVDotOp : VeParticleGeneratorOp {
  932. protected VeParticleGeneratorVDotOp(Util.Eq2Reader reader, byte classVersion) {
  933. ReadBinaryVectorOp(reader, ref destination, ref arg0, ref arg1, ref arg0Variable, ref arg1Variable);
  934. }
  935. public float[] arg0 = new float[3];
  936. public float[] arg1 = new float[3];
  937. public string destination;
  938. public string arg0Variable;
  939. public string arg1Variable;
  940. }
  941. // VSCALE <dest> <vector> <scale>
  942. public class VeParticleGeneratorVScaleOp : VeParticleGeneratorOp {
  943. protected VeParticleGeneratorVScaleOp(Util.Eq2Reader reader, byte classVersion) {
  944. // Read immediate parameters
  945. vector[0] = reader.ReadSingle();
  946. vector[1] = reader.ReadSingle();
  947. vector[2] = reader.ReadSingle();
  948. scale = reader.ReadSingle();
  949. // Read destination variables
  950. destination = ReadParameterName(reader);
  951. // Read source variables
  952. vectorVariable = ReadParameterName(reader);
  953. scaleVariable = ReadParameterName(reader);
  954. }
  955. public float[] vector = new float[3];
  956. public float scale;
  957. public string destination;
  958. public string vectorVariable;
  959. public string scaleVariable;
  960. }
  961. // VCLAMP <dest> <vector> <minMagnitude> <maxMagnitude>
  962. public class VeParticleGeneratorVClampOp : VeParticleGeneratorOp {
  963. protected VeParticleGeneratorVClampOp(Util.Eq2Reader reader, byte classVersion) {
  964. // Read immediate parameters
  965. vector[0] = reader.ReadSingle();
  966. vector[1] = reader.ReadSingle();
  967. vector[2] = reader.ReadSingle();
  968. minMagnitude = reader.ReadSingle();
  969. maxMagnitude = reader.ReadSingle();
  970. // Read destination variables
  971. destination = ReadParameterName(reader);
  972. // Read source variables
  973. vectorVariable = ReadParameterName(reader);
  974. minMagnitudeVariable = ReadParameterName(reader);
  975. maxMagnitudeVariable = ReadParameterName(reader);
  976. }
  977. public float[] vector = new float[3];
  978. public float minMagnitude;
  979. public float maxMagnitude;
  980. public string destination;
  981. public string vectorVariable;
  982. public string minMagnitudeVariable;
  983. public string maxMagnitudeVariable;
  984. }
  985. // VPATH <dest> <startPosition> <endPosition> <startControlPoint> <endControlPoint> <normalizedTime>
  986. public class VeParticleGeneratorVPathOp : VeParticleGeneratorOp {
  987. protected VeParticleGeneratorVPathOp(Util.Eq2Reader reader, byte classVersion) {
  988. // Read immediate parameters
  989. startPosition[0] = reader.ReadSingle();
  990. startPosition[1] = reader.ReadSingle();
  991. startPosition[2] = reader.ReadSingle();
  992. endPosition[0] = reader.ReadSingle();
  993. endPosition[1] = reader.ReadSingle();
  994. endPosition[2] = reader.ReadSingle();
  995. startControlPoint[0] = reader.ReadSingle();
  996. startControlPoint[1] = reader.ReadSingle();
  997. startControlPoint[2] = reader.ReadSingle();
  998. endControlPoint[0] = reader.ReadSingle();
  999. endControlPoint[1] = reader.ReadSingle();
  1000. endControlPoint[2] = reader.ReadSingle();
  1001. normalizedTime = reader.ReadSingle();
  1002. // Read destination variables
  1003. destination = ReadParameterName(reader);
  1004. // Read source variables
  1005. startPositionVariable = ReadParameterName(reader);
  1006. endPositionVariable = ReadParameterName(reader);
  1007. startControlPointVariable = ReadParameterName(reader);
  1008. endControlPointVariable = ReadParameterName(reader);
  1009. normalizedTimeVariable = ReadParameterName(reader);
  1010. }
  1011. public float[] startPosition = new float[3];
  1012. public float[] endPosition = new float[3];
  1013. public float[] startControlPoint = new float[3];
  1014. public float[] endControlPoint = new float[3];
  1015. public float normalizedTime;
  1016. public string destination;
  1017. public string startPositionVariable;
  1018. public string endPositionVariable;
  1019. public string startControlPointVariable;
  1020. public string endControlPointVariable;
  1021. public string normalizedTimeVariable;
  1022. }
  1023. // VISECTCAPSULE <dest> <startPoint> <endPoint> <center0> <center1> <radius>
  1024. public class VeParticleGeneratorVIsectCapsuleOp : VeParticleGeneratorOp {
  1025. protected VeParticleGeneratorVIsectCapsuleOp(Util.Eq2Reader reader, byte classVersion) {
  1026. // Read immediate parameters
  1027. startPoint[0] = reader.ReadSingle();
  1028. startPoint[1] = reader.ReadSingle();
  1029. startPoint[2] = reader.ReadSingle();
  1030. endPoint[0] = reader.ReadSingle();
  1031. endPoint[1] = reader.ReadSingle();
  1032. endPoint[2] = reader.ReadSingle();
  1033. center0[0] = reader.ReadSingle();
  1034. center0[1] = reader.ReadSingle();
  1035. center0[2] = reader.ReadSingle();
  1036. center1[0] = reader.ReadSingle();
  1037. center1[1] = reader.ReadSingle();
  1038. center1[2] = reader.ReadSingle();
  1039. radius = reader.ReadSingle();
  1040. // Read destination variables
  1041. destination = ReadParameterName(reader);
  1042. // Read source variables
  1043. startPointVariable = ReadParameterName(reader);
  1044. endPointVariable = ReadParameterName(reader);
  1045. center0Variable = ReadParameterName(reader);
  1046. center1Variable = ReadParameterName(reader);
  1047. radiusVariable = ReadParameterName(reader);
  1048. }
  1049. public float[] startPoint = new float[3];
  1050. public float[] endPoint = new float[3];
  1051. public float[] center0 = new float[3];
  1052. public float[] center1 = new float[3];
  1053. public float radius;
  1054. public string destination;
  1055. public string startPointVariable;
  1056. public string endPointVariable;
  1057. public string center0Variable;
  1058. public string center1Variable;
  1059. public string radiusVariable;
  1060. }
  1061. // VOCNAME <filename>
  1062. public class VeParticleGeneratorVocNameOp : VeParticleGeneratorOp {
  1063. protected VeParticleGeneratorVocNameOp(Util.Eq2Reader reader, byte classVersion) {
  1064. filename = reader.ReadString(2);
  1065. }
  1066. public string filename;
  1067. }
  1068. // FORCESHADER <filename>
  1069. public class VeParticleGeneratorForceShaderOp : VeParticleGeneratorOp {
  1070. protected VeParticleGeneratorForceShaderOp(Util.Eq2Reader reader, byte classVersion) {
  1071. filename = reader.ReadString(2);
  1072. }
  1073. public string filename;
  1074. }
  1075. // CALLOPS <filename>
  1076. public class VeParticleGeneratorCallOpsOp : VeParticleGeneratorOp {
  1077. protected VeParticleGeneratorCallOpsOp(Util.Eq2Reader reader, byte classVersion) {
  1078. filename = reader.ReadString(2);
  1079. }
  1080. public string filename;
  1081. }
  1082. // BONEPOS <destination> <boneName>
  1083. public class VeParticleGeneratorBonePosOp : VeParticleGeneratorOp {
  1084. protected VeParticleGeneratorBonePosOp(Util.Eq2Reader reader, byte classVersion) {
  1085. destination = ReadParameterName(reader);
  1086. boneName = reader.ReadString(2);
  1087. }
  1088. public string destination;
  1089. public string boneName;
  1090. }
  1091. // WSBONEPOS <destination> <boneName>
  1092. public class VeParticleGeneratorWsBonePosOp : VeParticleGeneratorOp {
  1093. protected VeParticleGeneratorWsBonePosOp(Util.Eq2Reader reader, byte classVersion) {
  1094. destination = ReadParameterName(reader);
  1095. boneName = reader.ReadString(2);
  1096. }
  1097. public string destination;
  1098. public string boneName;
  1099. }
  1100. // SRCBONEPOS <destination> <boneName>
  1101. public class VeParticleGeneratorSrcBonePosOp : VeParticleGeneratorOp {
  1102. protected VeParticleGeneratorSrcBonePosOp(Util.Eq2Reader reader, byte classVersion) {
  1103. destination = ReadParameterName(reader);
  1104. boneName = reader.ReadString(2);
  1105. }
  1106. public string destination;
  1107. public string boneName;
  1108. }
  1109. // WSSRCBONEPOS <destination> <boneName>
  1110. public class VeParticleGeneratorWsSrcBonePosOp : VeParticleGeneratorOp {
  1111. protected VeParticleGeneratorWsSrcBonePosOp(Util.Eq2Reader reader, byte classVersion) {
  1112. destination = ReadParameterName(reader);
  1113. boneName = reader.ReadString(2);
  1114. }
  1115. public string destination;
  1116. public string boneName;
  1117. }
  1118. // GETVAR <destination> <variableName>
  1119. public class VeParticleGeneratorGetVarOp : VeParticleGeneratorOp {
  1120. protected VeParticleGeneratorGetVarOp(Util.Eq2Reader reader, byte classVersion) {
  1121. destination = ReadParameterName(reader);
  1122. variableName = reader.ReadString(2);
  1123. }
  1124. public string destination;
  1125. public string variableName;
  1126. }
  1127. // VGETVAR <destination> <variableName>
  1128. public class VeParticleGeneratorVGetVarOp : VeParticleGeneratorOp {
  1129. protected VeParticleGeneratorVGetVarOp(Util.Eq2Reader reader, byte classVersion) {
  1130. destination = ReadParameterName(reader);
  1131. variableName = reader.ReadString(2);
  1132. }
  1133. public string destination;
  1134. public string variableName;
  1135. }
  1136. // SETVAR <destination> <value>
  1137. public class VeParticleGeneratorSetVarOp : VeParticleGeneratorOp {
  1138. protected VeParticleGeneratorSetVarOp(Util.Eq2Reader reader, byte classVersion) {
  1139. variableName = reader.ReadString(2);
  1140. value = reader.ReadSingle();
  1141. valueVariable = ReadParameterName(reader);
  1142. }
  1143. public string variableName;
  1144. public float value;
  1145. public string valueVariable;
  1146. }
  1147. // VSETVAR <destination> <value>
  1148. public class VeParticleGeneratorVSetVarOp : VeParticleGeneratorOp {
  1149. protected VeParticleGeneratorVSetVarOp(Util.Eq2Reader reader, byte classVersion) {
  1150. variableName = reader.ReadString(2);
  1151. value[0] = reader.ReadSingle();
  1152. value[1] = reader.ReadSingle();
  1153. value[2] = reader.ReadSingle();
  1154. valueVariable = ReadParameterName(reader);
  1155. }
  1156. public string variableName;
  1157. public float[] value = new float[3];
  1158. public string valueVariable;
  1159. }
  1160. // COMMENT <comment>
  1161. public class VeParticleGeneratorCommentOp : VeParticleGeneratorOp {
  1162. protected VeParticleGeneratorCommentOp(Util.Eq2Reader reader, byte classVersion) {
  1163. comment = reader.ReadString(2);
  1164. }
  1165. public string comment;
  1166. }
  1167. public class VeParticleGeneratorNullOp : VeParticleGeneratorOp {
  1168. protected VeParticleGeneratorNullOp(Util.Eq2Reader reader, byte classVersion) {
  1169. }
  1170. }
  1171. public class VeParticleGeneratorIntegrateOp : VeParticleGeneratorOp {
  1172. protected VeParticleGeneratorIntegrateOp(Util.Eq2Reader reader, byte classVersion) {
  1173. ReadUnaryScalarOp(reader, ref destination, ref value, ref valueVariable);
  1174. }
  1175. public float value;
  1176. public string destination;
  1177. public string valueVariable;
  1178. }
  1179. public class VeParticleGeneratorVGraphTimeColorOp : VeParticleGeneratorOp {
  1180. protected VeParticleGeneratorVGraphTimeColorOp(Util.Eq2Reader reader, byte classVersion) {
  1181. // Read source and destination names
  1182. destination = ReadParameterName(reader);
  1183. source = ReadParameterName(reader);
  1184. // Read unknown values
  1185. unk0 = new float[7];
  1186. for (int i = 0; i < 7; i++) {
  1187. unk0[i] = reader.ReadSingle();
  1188. }
  1189. uint count = reader.ReadUInt32();
  1190. unk1 = new float[count, 4];
  1191. for (uint i = 0; i < count; ++i) {
  1192. for (int j = 0; j < 4; j++) {
  1193. unk1[i, j] = reader.ReadSingle();
  1194. }
  1195. }
  1196. unk2 = reader.ReadByte();
  1197. }
  1198. public string destination;
  1199. public string source;
  1200. public float[] unk0;
  1201. public float[,] unk1;
  1202. public byte unk2;
  1203. }
  1204. }
  1205. /* EOF */