11#include " zLightning.h"
2- #include " zGlobals.h"
32
43#include " xDebug.h"
4+ #include " zGlobals.h"
5+ #include " xstransvc.h"
56
67#include < types.h>
78#include < rwcore.h>
@@ -24,7 +25,7 @@ static tweak_callback sLightningChangeCB;
2425static xVec3 sPoint [5 ];
2526static F32 sSize [5 ];
2627
27- char * lightning_type_names[4 ] = { " Line" , " Rotating" , " Zeus" , " Func" };
28+ const char * lightning_type_names[4 ] = { " Line" , " Rotating" , " Zeus" , " Func" };
2829static zParEmitter* sSparkEmitter ;
2930static RwRaster* sLightningRaster ;
3031static F32 sLFuncJerkTime ;
@@ -42,9 +43,7 @@ static F32 sLFuncSpanPerLength = 1.5f;
4243static F32 sLFuncSlopeRange = 2 .0f ;
4344static F32 sLFuncUVSpeed = 1 .0f ;
4445
45- void xDebugAddTweak (const char *, F32*, F32, F32, const tweak_callback*, void *, U32)
46- {
47- }
46+ static void lightningTweakStart (const tweak_info& t);
4847
4948void lightningTweakChangeType (const tweak_info& t)
5049{
@@ -71,6 +70,128 @@ void lightningTweakChangeType(const tweak_info& t)
7170 }
7271}
7372
73+ void zLightningInit ()
74+ {
75+ for (S32 i = 0 ; i < NUM_LIGHTNING; i++)
76+ {
77+ sLightning [i] = NULL ;
78+ }
79+
80+ zSceneFindObject (xStrHash (" PAREMIT_EG_SPARK" ));
81+ RwTexture* tex = (RwTexture*)xSTFindAsset (xStrHash (" LIGHTNING" ), NULL );
82+ if (tex != NULL )
83+ {
84+ sLightningRaster = tex->raster ;
85+ }
86+
87+ for (S32 i = 0 ; i < 9 ; i++)
88+ {
89+ sLFuncX [i].next = &sLFuncX [i + 1 ];
90+ sLFuncY [i].next = &sLFuncY [i + 2 ];
91+ sLFuncZ [i].next = &sLFuncZ [i + 3 ];
92+ }
93+
94+ sLFuncX [9 ].next = NULL ;
95+ sLFuncY [9 ].next = NULL ;
96+ sLFuncZ [9 ].next = NULL ;
97+
98+ for (S32 i = 0 ; i < 10 ; i++) {
99+ xVec3Init (&sLFuncVal [i], 2 .0f * (xurand () - 0 .5f ), 2 .0f * (xurand () - 0 .5f ), 2 .0f * (xurand () - 0 .5f ));
100+ xVec3Init (&sLFuncSlope [i][0 ], 2 .0f * (2 .0f * (xurand () - 0 .5f )), 2 .0f * (2 .0f * (xurand () - 0 .5f )), 2 .0f * (2 .0f * (xurand () - 0 .5f )));
101+ xVec3Init (&sLFuncSlope [i][1 ], 2 .0f * (2 .0f * (xurand () - 0 .5f )), 2 .0f * (2 .0f * (xurand () - 0 .5f )), 2 .0f * (2 .0f * (xurand () - 0 .5f )));
102+
103+ sLFuncEnd [i] = 0 .25f * (xurand () - 0 .5f ) + (i + 1 );
104+ }
105+
106+ sLFuncEnd [9 ] = 10 .0f ;
107+
108+ for (S32 i = 0 ; i < 10 ; i++)
109+ {
110+ S32 j;
111+ F32 prevEnd;
112+ if (i == 0 )
113+ {
114+ prevEnd = 0 .0f ;
115+ j = 9 ;
116+ }
117+ else
118+ {
119+ j = i - 1 ;
120+ prevEnd = sLFuncEnd [j];
121+ }
122+
123+ xFuncPiece_EndPoints (&sLFuncX [i], prevEnd, sLFuncEnd [i], sLFuncVal [i].x , sLFuncVal [j].x );
124+ xFuncPiece_EndPoints (&sLFuncY [i], prevEnd, sLFuncEnd [i], sLFuncVal [i].y , sLFuncVal [j].y );
125+ xFuncPiece_EndPoints (&sLFuncZ [i], prevEnd, sLFuncEnd [i], sLFuncVal [i].z , sLFuncVal [j].z );
126+ }
127+
128+ sLFuncJerkTime = 0 .0f ;
129+
130+ gLightningTweakAddInfo .type = 0x3 ;
131+ gLightningTweakAddInfo .flags = 0x1428 ;
132+ gLightningTweakAddInfo .time = 5 .0f ;
133+ xVec3Init (&sTweakStart , -5 .0f , 6 .0f , 0 .0f );
134+ xVec3Init (&sTweakEnd , -5 .0f , 2 .0f , 0 .0f );
135+ gLightningTweakAddInfo .color .r = 0xC8 ;
136+ gLightningTweakAddInfo .color .g = 0xC8 ;
137+ gLightningTweakAddInfo .color .b = 0xC8 ;
138+ gLightningTweakAddInfo .color .a = 0xC8 ;
139+ gLightningTweakAddInfo .arc_height = 0 .5f ;
140+ gLightningTweakAddInfo .rot_radius = 0 .15f ;
141+ gLightningTweakAddInfo .thickness = 0 .25f ;
142+ gLightningTweakAddInfo .rand_radius = 8 .0f ;
143+ gLightningTweakAddInfo .move_degrees = -2500 .0f ;
144+ gLightningTweakAddInfo .setup_degrees = 66 .0f ;
145+ gLightningTweakAddInfo .total_points = 16 ;
146+ gLightningTweakAddInfo .zeus_normal_offset = 0 .75f ;
147+ gLightningTweakAddInfo .zeus_back_offset = 0 .2f ;
148+ gLightningTweakAddInfo .zeus_side_offset = 0 .0f ;
149+
150+ sLightningStartCB .on_change = &lightningTweakStart;
151+ sLightningChangeCB .on_change = &lightningTweakChangeType;
152+
153+ xDebugAddTweak (" Lightning|\01\01 Go" , " Start Lightning" , &sLightningStartCB , NULL , 0x2 );
154+ xDebugAddTweak (" Lightning|\01 Globals|\01\01 JerkFrequency" , &sLFuncJerkFreq , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
155+ xDebugAddTweak (" Lightning|\01 Globals|\01\01 ShiftSpeed" , &sLFuncShift , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
156+ xDebugAddTweak (" Lightning|\01 Globals|\01\02 MinPStep" , &sLFuncMinPStep , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
157+ xDebugAddTweak (" Lightning|\01 Globals|\01\03 MaxPStep" , &sLFuncMaxPStep , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
158+ xDebugAddTweak (" Lightning|\01 Globals|\01\03 MinScale" , &sLFuncMinScale , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
159+ xDebugAddTweak (" Lightning|\01 Globals|\02\01 MaxScale" , &sLFuncMaxScale , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
160+ xDebugAddTweak (" Lightning|\01 Globals|\02\01 ScalePerLength" , &sLFuncScalePerLength , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
161+ xDebugAddTweak (" Lightning|\01 Globals|\02\02 MinSpan" , &sLFuncMinSpan , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
162+ xDebugAddTweak (" Lightning|\01 Globals|\02\02 SpanPerLength" , &sLFuncSpanPerLength , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
163+ xDebugAddTweak (" Lightning|\01 Globals|\02\03 SlopeRange" , &sLFuncSlopeRange , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
164+ xDebugAddTweak (" Lightning|\01 Globals|\02\03 UVSpeed" , &sLFuncUVSpeed , -1000000000 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
165+ xDebugAddTweak (" Lightning|\01 Time" , &gLightningTweakAddInfo .time , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
166+ xDebugAddTweak (" Lightning|\01 Total Points" , &gLightningTweakAddInfo .total_points , 2 , 16 , NULL , NULL , 0x2 );
167+
168+ xDebugAddSelectTweak (" Lightning|\01 Type" , &gLightningTweakAddInfo .type , lightning_type_names, NULL , 4 , &sLightningChangeCB , NULL , 0x2 );
169+
170+ tweak_info info;
171+ lightningTweakChangeType ((const tweak_info&)info);
172+
173+ xDebugAddFlagTweak (" Lightning|\02 Flag|Rot Scalar" , &gLightningTweakAddInfo .flags , 0x8 , NULL , NULL , 0x2 );
174+ xDebugAddFlagTweak (" Lightning|\02 Flag|No Fade Out" , &gLightningTweakAddInfo .flags , 0x1000 , NULL , NULL , 0x2 );
175+ xDebugAddFlagTweak (" Lightning|\02 Flag|Arc" , &gLightningTweakAddInfo .flags , 0x20 , NULL , NULL , 0x2 );
176+ xDebugAddFlagTweak (" Lightning|\02 Flag|Vertical Orientation" , &gLightningTweakAddInfo .flags , 0x200 , NULL , NULL , 0x2 );
177+ xDebugAddFlagTweak (" Lightning|\02 Flag|Taper Thickness At End" , &gLightningTweakAddInfo .flags , 0x400 , NULL , NULL , 0x2 );
178+ xDebugAddFlagTweak (" Lightning|\02 Flag|Taper Thickness At Start" , &gLightningTweakAddInfo .flags , 0x800 , NULL , NULL , 0x2 );
179+ xDebugAddTweak (" Lightning|\02 Start|x" , &sTweakStart .x , -50 .0f , 50 .0f , NULL , NULL , 0x2 );
180+ xDebugAddTweak (" Lightning|\02 Start|y" , &sTweakStart .y , -50 .0f , 50 .0f , NULL , NULL , 0x2 );
181+ xDebugAddTweak (" Lightning|\02 Start|z" , &sTweakStart .z , -50 .0f , 50 .0f , NULL , NULL , 0x2 );
182+ xDebugAddTweak (" Lightning|\03 End|x" , &sTweakEnd .x , -50 .0f , 50 .0f , NULL , NULL , 0x2 );
183+ xDebugAddTweak (" Lightning|\03 End|y" , &sTweakEnd .y , -50 .0f , 50 .0f , NULL , NULL , 0x2 );
184+ xDebugAddTweak (" Lightning|\03 End|z" , &sTweakEnd .z , -50 .0f , 50 .0f , NULL , NULL , 0x2 );
185+ xDebugAddTweak (" Lightning|\04 Color|\01 R" , &gLightningTweakAddInfo .color .r , 0x0 , 0xFF , NULL , NULL , 0x2 );
186+ xDebugAddTweak (" Lightning|\04 Color|\02 G" , &gLightningTweakAddInfo .color .g , 0x0 , 0xFF , NULL , NULL , 0x2 );
187+ xDebugAddTweak (" Lightning|\04 Color|\03 B" , &gLightningTweakAddInfo .color .b , 0x0 , 0xFF , NULL , NULL , 0x2 );
188+ xDebugAddTweak (" Lightning|\04 Color|\04 A" , &gLightningTweakAddInfo .color .a , 0x0 , 0xFF , NULL , NULL , 0x2 );
189+ xDebugAddTweak (" Lightning|Lengths|Rot Radius" , &gLightningTweakAddInfo .rot_radius , -1000000000 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
190+ xDebugAddTweak (" Lightning|Lengths|Arc Height" , &gLightningTweakAddInfo .arc_height , -1000000000 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
191+ xDebugAddTweak (" Lightning|Lengths|Thickness" , &gLightningTweakAddInfo .thickness , 0 .0f , 100 .0f , NULL , NULL , 0x2 );
192+ xDebugAddTweak (" Lightning|Randomness|Rand Radius" , &gLightningTweakAddInfo .rand_radius , 0 .0f , 1000000000 .0f , NULL , NULL , 0x2 );
193+ }
194+
74195static void lightningTweakStart (const tweak_info& t)
75196{
76197 xVec3 s, e;
@@ -196,20 +317,3 @@ static zLightning* FindFreeLightning()
196317
197318 return 0 ;
198319}
199-
200- void xDebugAddTweak (const char *, S16*, S16, S16, const tweak_callback*, void *, U32)
201- {
202- }
203-
204- void xDebugAddTweak (const char *, U8*, U8, U8, const tweak_callback*, void *, U32)
205- {
206- }
207-
208- void xDebugAddFlagTweak (const char *, U32*, U32, const tweak_callback*, void *, U32)
209- {
210- }
211-
212- void xDebugAddSelectTweak (const char *, U32*, const char **, const U32*, U32, const tweak_callback*,
213- void *, U32)
214- {
215- }
0 commit comments