-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathEFX_Crimson.bt
2679 lines (2424 loc) · 90.8 KB
/
EFX_Crimson.bt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//------------------------------------------------
//--- 010 Editor v9.0 Binary Template
//
// File:
// Authors:
// Version:
// Purpose:
// Category:
// File Mask:
// ID Bytes:
// History:
//------------------------------------------------
typedef struct {
string str;
} STRING;
// type 0 - float; 1 - int; 2 - ubyte; 3 - jitterless float
typedef struct (int type){
if (type==0){
float fixed_x;
float random_x;
//FSkip(skip*4);
float fixed_y;
float random_y;
//FSkip(skip*4);
float fixed_z;
float random_z;
//FSkip(skip*4);
}else if (type == 3){
float x;
float y;
float z;
} else if (type == 2){
ubyte x;
ubyte y;
ubyte z;
ubyte NULL<bgcolor=0xffffff>;
} else if (type == 1){
int x;
int y;
int z;
}
} XYZ;
typedef struct{
long EPVColorSlotHead;
XYZ color1(2)<name="Color 1",read=ReadbyteXYZ,bgcolor=0xFFFF00>;
long NULL2;
XYZ color2(2)<name="Color 2",read=ReadbyteXYZ,bgcolor=0xFFFF00>;
int spacer4;
int unkn15;
float size<bgcolor=0x91A480>;
int unkn17;
byte unkn18[2];
short spacer5<bgcolor=0x91A480>;
}EPVColorSlot;
typedef struct{
float col0[4];
float col1[4];
float col2[4];
float col3[4];
} matrix;
typedef struct{
ubyte red;
ubyte green;
ubyte blue;
ubyte alpha;
} colour;//------------------------------------------------
//--- 010 Editor v9.0 Binary Template
//
// File:
// Authors:
// Version:
// Purpose:
// Category:
// File Mask:
// ID Bytes:
// History:
//------------------------------------------------
string ReadDataInt(int32 r) {
string s;
SPrintf(s, "%08X | %d ", r,r);
return s;
}
typedef struct{
float dataF;
FSkip(-4);
int32 dataI;
float bounceForwardLimit;
float bounceBackwardsLimit;
float frameTiming;
short easingMethod<comment = "0 - Binary (Stuck), 1 - Constant, (2 - Linear, 3 - Cuadratic) Known to Work, 4 - Cubic">;
short interpolationType1<comment = "2 - Only Functional">;
}TIML_Keyframe;
typedef struct(int base){
int64 offset;
int64 count;
int32 datatypeHash<format=hex, comment="Hash to determine the transform type (rot:X, pos:Z, Etc).">;
int32 unkn1;
local int pos = FTell();
FSeek(base+offset);
TIML_Keyframe keyframes[count]<optimize = false>;
FSeek(pos);
}TIML_Transform;
typedef struct(int base){
int64 offset;
int64 count;
int32 timelineParameterHash<format=hex, comment="Hash to determine if it affects a mesh or a materials, etc.">;
int32 NULL;
local int pos = FTell();
FSeek(base+offset);
TIML_Transform transforms(base)[count]<optimize = false>;
FSeek(pos);
}TIML_Type;
typedef struct(int base){
int64 offset;
int64 count;
int32 unkn1;
int32 unkn2;
float animationLength;
float loopStartPoint;
int loopControl<comment="Determines how and if it will loop">;
int labelHash<format=hex, comment="Label Hash">;
local int pos = FTell();
FSeek(base+offset);
TIML_Type types(base)[count]<optimize = false>;
FSeek(pos);
}TIML_Data;
typedef struct(int base){
int64 offset;
if (offset > 0){
local int pos = FTell();
FSeek(base+offset);
TIML_Data data(base)<optimize = false>;
FSeek(pos);
}
}TIML_Body;
typedef struct{
local int base;
base = FTell();
char timl[4];
int signature[3]<comment = "402786304,402786304,0">;
int enabled<comment = "20">;
int NULL<comment = "0">;
int32 count;
if (count > 0) int32 NULL2;
TIML_Body animations(base)[count]<optimize = false>;
}TIML_Header;
typedef struct {
local int base;
base = FTell();
TIML_Header Header;
FSeek(base+timl_length);
}Timl;
//------------------------------------------------
//--- 010 Editor v9.0 Binary Template
//
// File:
// Authors:
// Version:
// Purpose:
// Category:
// File Mask:
// ID Bytes:
// History:
//------------------------------------------------
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
XYZ translate(0)<name="Translation T",bgcolor=0xFFAA00,read=ReadfloatXYZ>;
XYZ rotate(0)<name="Rotation R",bgcolor=0xAA00FF,read=ReadfloatXYZ>; // Format Exceptions too many to diaplay
XYZ resize(0)<name="Resize S",bgcolor=0x00FFAA,read=ReadfloatXYZ>; // Format Exceptions too many to diaplay
int unkn1; // {0: 236, 1: 49, 2: 233, 3: 295, 4: 28783, 5: 36}
//XYZ unkn2(0)[6]<optimize=true,read=ReadfloatXYZ>;
XYZ Translation_Velocity(0)<optimize=true,read=ReadfloatXYZ>;
XYZ Translation_Velocity_Modifier(0)<optimize=true,read=ReadfloatXYZ>;//Multiplier/Acceleration? [0,1]
XYZ Rotation_Velocity(0)<optimize=true,read=ReadfloatXYZ>;
XYZ Rotation_Velocity_Modifier(0)<optimize=true,read=ReadfloatXYZ>;//Multiplier/Acceleration? [0,1]
XYZ Scale_Velocity(0)<optimize=true,read=ReadfloatXYZ>;
XYZ Scale_Velocity_Modifier(0)<optimize=true,read=ReadfloatXYZ>;//Multiplier/Acceleration? [0,1]
int enableVelocityBitflag; // {0: 26795, 1: 2438, 2: 340, 3: 59} Bitflag: Pos0: Enable Velocity, Pos1: Enable Acceleration?
} Transform3D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
XYZ translation_tracking(1)<name="Translation Tracking Mode",read=ReadintXYZ,bgcolor=0xAA0000,comment="0 - Track Map Center Absolutely, 1 - Track Player Movement, 2 - Do not track further movements, 3 - Ignore Basic Transform ">;
// 0 - Track Map Center Absolutely, 1 - Track Player Movement, 2 - Do not track further movements, 3 - Ignore Basic Transform
XYZ angle_tracking(1)<name="Angle Tracking Mode",read=ReadintXYZ,bgcolor=0x00AA00,comment="0 - Track Map Center Absolutely, 1 - Track Player Movement, 2 - Do not track further movements, 3 - Ignore Basic Transform ">;
// 0 - Track Map Center Absolutely, 1 - Track Player Movement, 2 - Do not track further movements, 3 - Ignore Basic Transform
XYZ scale_tracking(1)<name="Scale Tracking Mode",read=ReadintXYZ,bgcolor=0x00AA00,comment="0 - Track Map Center Absolutely, 1 - Track Player Movement, 2 - Do not track further movements, 3 - Ignore Basic Transform ">;
// 0 - Track Map Center Absolutely, 1 - Track Player Movement, 2 - Do not track further movements, 3 - Ignore Basic Transform
int spawnTrack<name="Track Across Spawns",bgcolor=0x0000AA0>;
int unkn1; // {0: 20433, 1: 9199}
int spawnLock<name="Lock To Position (Frames)",bgcolor=0x0000AA0>;
int bleedPos<name="Progressively Lock Elements to Position (Frames)">;
int bone_lim<name="Bone Limitation">;
} ParentOptions;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int instancesSpawnedTotal;
int instancesSpawnedPerFrame;
int randomizedSpawnsPerFrame;
int frameDelayBetweenSpawns;
int randomizedDelay;
int durationOfSpawnerLifespan;
int randomizedLifespan;
int unkn00[2];
int occur<name="Spawn Start Delay">;
int occur2<name="Randomized Spawn Start Delay">;
uint32 unkn10;
uint32 unkn11;
uint32 repeatAtribute;//0 Repeat indefinitely, above is the number of repetitions;
//I don't know what exactly it is doing but for Spawn uint32 unkn20 will allow other attributes to repeat once or continuously
//with another one that is finite with int durationOfSpawnerLifespan
//if the unkn20 is 0 if it is 1 or higher it will do that many cycles before it stops
uint32 unkn21;
uint32 unkn30;
uint32 unkn31;
} Spawn;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
long unkn0;
long fadeInDuration;
long fadeInDurationJitter;
long duration;
long durationJitter;
long unkn2[2];
long fadeOutDuration;
long fadeOutDurationJitter;
long unkn3[2];
long indefiniteLifespan;
} Life;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
XYZ transform(0);
int patternControl<comment="0 - Cube, 1 - Sphere, 2 - Ring, 3 - Spot">;
int unkn2;
float unkn3_f0[4];
int unkn3_i0;
float spawnAngleLimits;
float unkn3_f1;
int unkn3_i1;
int spawnCount;
float unkn3_f2[3];
int unkn4;
} EmitterShape3D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[3];
float unkn1[2];
long NULL0[4];
float expansion_radius_limit;
float expansion_radius_jitter;
float expansion_radius_elasticity;// 0 - completely dampened (Instantly at Position), 1 - No dampening, continues moving.
float expansion_radius_elasticity_jitter;
float unkn2_04;//Nothing Known
float unkn2_05;//Nothing Known
float unkn2_06;//Nothing Known
float unkn2_07;//TODO - Test this since they look stable
float unkn2_08;//TODO - Test this since they look stable
float unkn2_09;//TODO - Test this since they look stable
int unkn2_10; //Set to 1 Normally
float gravity;
float gravity_jitter;
long NULL1[2];
int gravityDelay;
int gravityDelayJitter;
long NULL2;
} Velocity3D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
float viewAngleLimit;//360 visible from every angle
float clipMin;
float fadeStart;
float clipMax;
} FadeByDepth;
// I was like WTF, any way I labeled the float...
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn00;
int unkn01;
long spacer0;
int unkn03;
float unkn04<bgcolor=0x91A480>;
int unkn05[2];
long spacer1;
int unkn07[2];
float maxLengthLimit;
float contractionSpeed;//0 Lingers, 1 retracts, infinity retracts instantly
float colourTransitionPoint;// 0 is instantly start transition, 1 is start at the end
float emissiveStrength;
float unkn08;
long spacer2;
int unkn10;
float uvRepetition<bgcolor=0x91A480>;
int unkn12[3];
long spacer3;
EPVColorSlot head;
EPVColorSlot tailEnd;
float unkn23<bgcolor=0x91A480>;
long NULL5;
float unkn24<bgcolor=0x91A480>;
long NULL6;
float unkn25<bgcolor=0x91A480>;
long NULL7;
float unkn26;
long NULL8;
short NULL9;
int path_len<name="Path Length",bgcolor=0x123456>;
char p[path_len]<name="Path",bgcolor=0x123456>;
} RibbonBlade;
typedef struct{
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int applicationRule;//Enum that determine how long and how many times it applies
XYZ color(2)[2]<name="Color",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
float brightness<name="Brightness",bgcolor=0x00aaaa>;
int unkn2[3];
int EPVColorSlot1;
int SlotOverride1;
int EPVColorSlot2;
int SlotOverride2;
float scale<name="Scale",bgcolor=0xaa55aa>;
float scaleJitter;
float width<name="Width",bgcolor=0xaaaa55>;
float widthJitter;
float height<name="Height",bgcolor=0xaaaa55>;
float heightJitter;
float flowmapSpeed;
float flowmapSpeedJitter;
float flowmapAcceleration;
float flowmapAccelerationJitter;
float flowmapStrength;
float flowmapStrengthJitter;
float flowmapStrengthAcceleration;
float flowmapStrengthAccelerationJitter;
int path_len<name="Path Length",bgcolor=0x123456>;
}dds_data;
typedef struct{
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int applicationRule;//Enum that determine how long and how many times it applies
XYZ color(2)[2]<name="Color",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
float brightness<name="Brightness",bgcolor=0x00aaaa>;
int unkn2[3];
int EPVColorSlot1;
int SlotOverride1;
float unknDimension;
float unknDimensionJitter;
float scale<name="Scale",bgcolor=0xaa55aa>;
float scaleJitter;
float width<name="Width",bgcolor=0xaaaa55>;
float widthJitter;
float height<name="Height",bgcolor=0xaaaa55>;
float heightJitter;
float flowmapSpeed;
float flowmapSpeedJitter;
float flowmapAcceleration;
float flowmapAccelerationJitter;
float flowmapStrength;
float flowmapStrengthJitter;
float flowmapStrengthAcceleration;
float flowmapStrengthAccelerationJitter;
int path_len<name="Path Length",bgcolor=0x123456>;
}billboard_data;
typedef struct {
billboard_data dds;
int unkn5;
uint64 unkn6;
float unkn7;
int unkn8;
int unkn9;
char p[dds.path_len]<name="Path",bgcolor=0x123456>;
} Billboard3D;
typedef struct {
dds_data dds;
int unkn5[4];
XYZ rotation(0);
uint64 unkn7;
char p[dds.path_len]<name="Path",bgcolor=0x123456>;
} Plane;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
XYZ color(2)[2]<name="Color",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
//float unkn1[10];
float brightnessSlot1;
float emissiveMultiplier;
float brightnessSlot2;
float brightnessSlotMultiplier1;
float brightnessSlotMultiplier2;
float opacity;
float unknownFloat;
int unknownInt[3];
//
int unkn2[26];
int path_len<name="Path Length",bgcolor=0x123456>;
char p[path_len]<name="Path",bgcolor=0x123456>;
} RgbWater;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
float animationSpeed<name="Speed",bgcolor=0x0000BB>;
long NULL;
float scaleSpeed;
float scaleSpeedJitter;
float unkn1[2];
float scaleAccel;
float scaleAccelJitter;
float unkn2[8];
int delay;
int delayJitter;
} ScaleAnim;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int uvs_index<name="UVS File Path Index",bgcolor=0xBB0000>;
long NULL;
int startingFrame;
int startingFrameJitter;
float animationSpeed;
float animationSpeedJitter;
float animationAcceleration;
float animationAccelerationJitter;
int loopingEnum<comment="0-NotAnimated, 2-RandomRestart,8-, 9-Continuous">;//looping related
int path_len<name="Path Length",bgcolor=0x123456>;
char p[path_len]<name="Path",bgcolor=0x123456>;
} UVSequence;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
float unkn1;
float transparentness<name="Transparentness & Brigntness",bgcolor=0x00BB00>;
long NULL;
int unkn2;
} AlphaCorrection;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int unkn1;
int spacer;
int unkn2;
float zDepthModifierStart;
float zDepthModifierEnd<bgcolor=0xAA00AA>;//<name="Effect Type Control",bgcolor=0xAA00AA>;
int unkn3_0;
int unkn3_1;
int controlBitflag<comment="0 no alpha, 1 is alpha enabled, 2 is emissive behavior, 3 is inverted color + alpha, 6 is grey scale">;
float unkn4[16];
byte objectInteractionFlag0<comment="Player Weapons and Interactables">;
byte objectInteractionFlag1<comment="Map">;
byte objectInteractionFlag2<comment="Weapon SubParts and Skybox">;
byte objectInteractionFlag3<comment="Player Skin">;
int visibleOnPreview;//bitflag
int unkn5[2];
} ShaderSettings;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
XYZ color1(2)<name="Color Channel 1 (Alpha)",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
float brightness1<name="Brightness 1 (Alpha)">; //colors will combine
XYZ color2(2)<name="Color Channel 2 (RGB)",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
float brightness2<name="Brightness 2">;
float unkn4;
float brightness3<name="Color Balance 1">; //seems to bring out color 1 without lowering overall brightness, might be more of a color balance
float brightness4<name="Color Balance 2">; //setting either to 0 will make all disappear
int unkn6[10]<name="Color 1 Params">; //the 10th param kills color when set to 1
int unkn7[10]<name="Color 2 Params">; //I have no idea what else it does
} RgbFire;
typedef struct {
int unkn0[2];
long CD1<hidden = true>;
float emissive_saturation;
float emissive_saturation_jitter;
float emissive_brightness;
float emissive_brightness_jitter;
XYZ rotation(0);
float unkn5_2;
float unkn5_3;
XYZ scale(0);
float global_scale;
float global_scale_jitter;
int model_viscon;
int model_viscon_randomizer;//picks between the 2 at random
colour color1;
colour color2;
colour color3;
colour color4;
int unkn7[3];
int tracking_flags;//0 - Guide Source,
//1 - Away from Source,
//2 - Look Away From Camera
//3 - WTF Occupies entire map
//4 - Guide Camera
//5 - Dissapears
//6 - Don't Track Rotation At All
//7 - Dissapears
//8 - Perpendicular to Ground, Don't Track
int unkn40;
int affectedByLight;
int shadowCastBitflag;
int epv_color_slot1;
int unkn5;
int epv_color_slot2;
int unkn6_1;
byte colorize_material1[4];//byte controls
byte colorize_material2[4];//byte controls
int unkn6_2;
short NULL1;
}Mod3Properties;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
Mod3Properties properties;
byte BeginMod3;
string path1<name="Mod3 Path1",bgcolor=0x123456,read=ReadStr>;
string path2<name="Mod3 Path2",bgcolor=0x123456,read=ReadStr>;
} Mesh;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
long NULL[2];
XYZ spin_velocity(0);
float unkn1_0;
float unkn1_1;
float momentum_conservation;
XYZ spin_acceleration(0);
float unkn1_2;
//int unkn1_3;
} RotateAnim;
typedef struct {
long unkn; // 56 3A 6D EE
// long const0<name="E2D9F0AB",format=hex>;
long const0<name="AFDB4043",format=hex>;
// 0x00 - ?; 0x03 - NULL; 0x06 - int; 0x09 - ?; 0x0C - float; 0x0F - Color;
// 0x80 - file; 0x36/0x37 - int*2; 0x14 - XYZ
int t<name="Parameter Type">;
if(t==0x03)
long NULL;
else if (t==0x05)
short unkn0;
else if (t==0x06)
int decal_epv_color_slot;
else if (t==0x0C)
float unkn0;
else if (t==0x0F)
XYZ color(2)<name="Color",read=ReadbyteXYZ,bgcolor=0xFFFF00>;
else if (t==0x14)
XYZ unkn1(3)<read=ReadfloatXYZ,bgcolor=0x00FFFF>;
else if (t==0x15) {
float unkn0;//float unkn0;
long unkn1;//float unkn1;
float unkn2;//float uScale;
long unkn3;//float vScale;
} else if (t==0x36 || t==0x37)
int unkn1[2];
else if (t==0x40)
int64 unkn0;
else if (t==0x80){
long file_type;
int path_len<name="Path Length",bgcolor=0x123456>;
char p[path_len]<name="Path",bgcolor=0x123456>;
} else {
//Printf("UNKNOWN EFX Behaiv Type\n");
//Printf("%d\n",FTell());
long unkn_type;
}
} EFX_Behav;
typedef struct {
int unkn0;
int behav_type_len<name="Behavior Type Len",bgcolor=0xABCDEF>;
int para_count<name="Parameter Count",bgcolor=0xFEDCBA>;
char b_type[behav_type_len]<name="Behavior Type",bgcolor=0xABCDEF>;
EFX_Behav efx_behav[para_count]<name="Behavior Parameter",optimize=false>;
} EFX_Behavior;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
EFX_Behavior efx_behav<name="Behavior Parameter">;
} PtBehavior;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
float unkn1;
ubyte body_p<name="Player Aura Part",bgcolor=0x550055,comment="/wiki/EFX-Effect-Editing#aura-parts">;
ubyte wp_p<name="Weapon Aura Part",bgcolor=0x550055,comment="/wiki/EFX-Effect-Editing#aura-parts">;
short NULL;
int epv_color_slot;
XYZ color(2)<name="Color",read=ReadbyteXYZ,bgcolor=0xFFFF00>;
float unkn4;
float area[2]<name="Area of Aura",bgcolor=0x555500>;
float bright<name="Brightness (Can be Negative)",bgcolor=0x005555>;
int area_of_aura; //9 front half, 8-1 everything
float radii_effect_unkn0;
float radii_effect_unkn1;
float radii_effect_unkn2;
float unkn5[5];
} PlEmissive;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
float initialPosition;
float initialPositionJitter;
float speed;
float speedJitter;
float accel;//Maybe
float accelJitter;//Maybe
float innerRadius;
float innerRadiusJitter;
float outerRadius;
float outerRadiusJitter;
float restitutionDelay;
float restitutionDelayJitter;
float restitutionEccentricity;
float restitutionEccentricityJitter;
float restitutionElasticity;
float restitutionElasticityJitter;
float unkn16;
float unkn17;
float unkn18;
float unkn19;
float unkn20;
float unkn21;
float unkn22;
int int_unkn1[2];
float float_unkn2[3];
} Guide;
typedef struct {
long set<bgcolor=0x990000>;
int unkn0<bgcolor=0xcc0000>;
long t<bgcolor=0xcc0000>;
int type<bgcolor=0xff0000>;
if(type==0x80){
long head<name="EB5D1F24">;
long NULL;
int path_len<name="Path Length",bgcolor=0x123456>;
char p[path_len]<name="Path",bgcolor=0x123456>;
}else if (type==0x06){
int64 NULL;
int unkn;
}else if (type==0x03 || type==0x0A || type==0x0C)
long NULL[3];
else if (type==0x15)
float unkn[6];
} Tex_Set;
typedef struct {
long material_name_hash;
long material_shader_id_hash;
long unkn03;
int set_count<name="Set Count",bgcolor=0x660000>;
Tex_Set set[set_count]<optimize = false>;
} Tex_Block;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int64 unkn00;
int block_count;
Tex_Block block[block_count]<optimize=false>;
} Material;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int path_len<name="Path Length",bgcolor=0x123456>;
char p[path_len]<name="Path",bgcolor=0x123456>;
float unkn1[3];
XYZ unkn_set_1(0);
int64 NULL[3];
float unkn2[12];
XYZ unkn_set_2(0);
float unkn3[5];
} Turbulence;
// #UNKNOWN STRUCT
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
long unkn;
float unkn2[4];
} FadeByEmitterAngle;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
int section_length;
long spacer0<hidden=true>;
XYZ color(2)<name="Color 1",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
long spacer1<hidden=true>;
XYZ color2(2)<name="Color 2",read=ReadbyteXYZ,bgcolor=0xFFFF00,optimize=true>;
long spacer2<hidden=true>;;
float brightness<name="Brightness",bgcolor=0x00FF00>;
long unkn4[2];
float scale;
float scale_jitter;
float width;
float width_jitter;
float length;
float length_jitter;
long uv_map_height;
float material_tesselation_density;//Material Repeating Density
float material_tesselation_jitter;
float uv_map_width;
long horizontal_physics_subdivision_count<comment="Disney Magic at 5000">;//Number of Subdivisions+1 (Number of horizontal dividers, minimum 2)
long vertical_physics_subdivision_count;//Maybe, untested for vertical repetitions
float unkn15;
long restitution_direction<comment = "0-Left,1-Up,2-Forward,3-Right,4-Down,5-Backwards,6-None">;//0-Left,1-Up,2-Forward,3-Right,4-Down,5-Backwards
long unkn16[4];
long startingAngle;
long startingAngleJitter;
long unkn16_0[2];
short unkn16_1;
short unkn16_2<comment = "0 - Align to World , Anything Else - Align to Source">;
long spacer3<hidden=true>;
//
float unkn17;
long spacer4<hidden=true>;
float lengthwise_offset_relative_to_camera;
float unknown19_0;
float restitution;
float restitution_jitter;
float inertial_excess;
float inertial_excess_jitter;
float springiness;
float springiness_jitter;
long spacer5<hidden=true>;
long unkn20[4];
float unkn21;
long unkn22[3];
long spacer6<hidden=true>;
float unkn23[8];
long unkn24;
long epvcolor[2];
long spacer7<hidden=true>;
float base_width_multiplier;
float base_opacity;
float tip_width_multiplier;
float tip_opacity;
long spacer8<hidden=true>;
float unkn27[2];
short visiblePreview;
short spacer9<hidden=true>;
float base_flap_frequency;
float base_flap_frequency_jitter;
float base_flap_amount;
float base_flap_amount_jitter;
float tip_flap_frequency;
float tip_flap_frequency_jitter;
float tip_flap_amount;
float tip_flap_amount_jitter;
byte ib_junk[32]<hidden=true>;
string path1<name="UNKN 03 Path",bgcolor=0x123456,read=ReadStr>;
} Ribbon;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
long NULL;
int section_length;
long spacer<hidden=true>;
//XYZ angular_movement(3)<read=ReadfloatXYZ,bgcolor=0x00FFFF>;
float main_axis_speed;
float secondary_axis_speed;
float teleport_radius;
float smooth_radius_randomized;
float main_axis_speed2;
float secondary_axis_speed2;
float teleport_radius2;
float smooth_radius_randomized2;
} Noise;
typedef struct{
float u;
float uJitter;
float v;
float vJitter;
}uv_transform;
typedef struct{
int unkn0;
uv_transform initialPosition;
uv_transform speed;
uv_transform acceleration;//Multiplies speed every second
uv_transform scale;
uv_transform scaleSpeed;
uv_transform scaleAcceleration;
}Material_Animation_Data;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
Material_Animation_Data uv1;
Material_Animation_Data uv2;
int unkn2;
float extraMaterialInitialPosition;
float extraMaterialInitialPositionJitter;
float extraMaterialSpeed;
float extraMaterialSpeedJitter;
float opacity;
float opacityJitter;
float opacityAcceleration;//Multiplies opacity every second
float opacityAccelerationJitter;
} UVControl;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
float unkn1[4];
int64 NULL;
int unkn2[2];
} FadeByAngle;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
float unkn1[8];
} EmitterBoundary;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
short unkn0;
short unkn1;
short timing<comment= "0 Attaches at spawn, 4 attaches after the end">;//0
short unkn3;
short relationIndex;//Play Emitter/Play EFX Index that will declare the children
short unkn5;
short unkn6;
short unkn7;
short unkn8;
short unkn9;
} PtLife;//Declares this as parent to other main bodies
// #EFX TYPE STRUCT
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[9];
} ExternReference;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
byte unkn1[4];
float unkn2;
int unkn3;
long unkn4;
float unkn5[9];
} FakePlane;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
byte unkn1;
} Dummy;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[10];
} RandomFix;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int64 unkn0[2];
float unkn1[2];
} Transform2D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
long unkn1[2];
float unkn2[2];
int unkn3[4];
float unkn4[16];
int path_len<name="Path Length",bgcolor=0x123456>;
int unkn5[2];
char p[path_len]<name="Path",bgcolor=0x123456>;
} Billboard2D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
float unkn1[11];
} Blink;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
long unkn0;
float unkn1[3];
} LuminanceBleed;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0;
float unkn1[4];
int unkn2[4];
} EmitterShape2D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn0[2];
float unkn1[9];
int unkn2;
float unkn3[3];
int unkn4[3];
} Velocity2D;
typedef struct {
long type<name="Type",format=hex,bgcolor=0x000000>;
int unkn00[2];
long spacer0;
XYZ color1(2);
long unkn02;
XYZ color2(2);
long unkn03;
XYZ emissive(2);
long unkn04;
//float unkn05[49];
//Break this one
int spacer05_00;
int unkn05_01;
float sineWaveFreq;
float sineWaveFreqJitter;
float alphaThreshold;
float unkn05_05;
float unkn05_06;
float unkn05_07;
float outwardsExpansionSpeed;
float outwardsExpansionSpeedJitter;
float unkn05_10;
int unkn05_11;