1 |
using System; |
2 |
using Oni.Particles; |
3 |
|
4 |
namespace Oni.Xml |
5 |
{ |
6 |
internal class ParticleXml |
7 |
{ |
8 |
protected static readonly ParticleFlags1[] optionFlags1 = new[] |
9 |
{ |
10 |
ParticleFlags1.Decorative, |
11 |
ParticleFlags1.CollideWithWalls, |
12 |
ParticleFlags1.CollideWithChars, |
13 |
}; |
14 |
|
15 |
protected static readonly ParticleFlags2[] optionFlags2 = new[] |
16 |
{ |
17 |
ParticleFlags2.InitiallyHidden, |
18 |
ParticleFlags2.DrawAsSky, |
19 |
ParticleFlags2.DontAttractThroughWalls, |
20 |
ParticleFlags2.ExpireOnCutscene, |
21 |
ParticleFlags2.DieOnCutscene, |
22 |
ParticleFlags2.LockPositionToLink, |
23 |
}; |
24 |
|
25 |
protected static readonly ParticleFlags1[] appearanceFlags1 = new ParticleFlags1[] |
26 |
{ |
27 |
}; |
28 |
|
29 |
protected static readonly ParticleFlags1[] appearanceExFlags1 = new[] |
30 |
{ |
31 |
ParticleFlags1.ScaleToVelocity, |
32 |
ParticleFlags1.UseSeparateYScale, |
33 |
}; |
34 |
|
35 |
protected static readonly ParticleFlags2[] appearanceFlags2 = new[] |
36 |
{ |
37 |
ParticleFlags2.Invisible, |
38 |
ParticleFlags2.IsContrailEmitter |
39 |
}; |
40 |
|
41 |
protected static readonly ParticleFlags2[] appearanceExFlags2 = new[] |
42 |
{ |
43 |
ParticleFlags2.Invisible, |
44 |
ParticleFlags2.UseSpecialTint, |
45 |
ParticleFlags2.FadeOutOnEdge, |
46 |
ParticleFlags2.OneSidedEdgeFade, |
47 |
ParticleFlags2.LensFlare, |
48 |
ParticleFlags2.DecalFullBrightness |
49 |
}; |
50 |
|
51 |
protected class EventActionParameterInfo |
52 |
{ |
53 |
public static readonly EventActionParameterInfo[] EmptyActionParameterInfos = new EventActionParameterInfo[0]; |
54 |
public string Name; |
55 |
public StorageType Type; |
56 |
|
57 |
public EventActionParameterInfo(string name, StorageType type) |
58 |
{ |
59 |
this.Name = name; |
60 |
this.Type = type; |
61 |
} |
62 |
} |
63 |
|
64 |
protected class EventActionInfo |
65 |
{ |
66 |
public int OutCount; |
67 |
public EventActionParameterInfo[] Parameters; |
68 |
|
69 |
public EventActionInfo(int outCount, params EventActionParameterInfo[] parmeters) |
70 |
{ |
71 |
this.OutCount = outCount; |
72 |
this.Parameters = parmeters; |
73 |
} |
74 |
} |
75 |
|
76 |
protected static readonly EventActionInfo[] eventActionInfoTable = new EventActionInfo[] |
77 |
{ |
78 |
new EventActionInfo(1, |
79 |
new EventActionParameterInfo("Target", StorageType.Float), |
80 |
new EventActionParameterInfo("Rate", StorageType.Float)), |
81 |
new EventActionInfo(2, |
82 |
new EventActionParameterInfo("Target", StorageType.Float), |
83 |
new EventActionParameterInfo("Velocity", StorageType.Float), |
84 |
new EventActionParameterInfo("Acceleration", StorageType.Float)), |
85 |
new EventActionInfo(1, |
86 |
new EventActionParameterInfo("Target", StorageType.Float), |
87 |
new EventActionParameterInfo("Min", StorageType.Float), |
88 |
new EventActionParameterInfo("Max", StorageType.Float), |
89 |
new EventActionParameterInfo("Rate", StorageType.Float)), |
90 |
new EventActionInfo(2, |
91 |
new EventActionParameterInfo("Target", StorageType.Float), |
92 |
new EventActionParameterInfo("State", StorageType.PingPongState), |
93 |
new EventActionParameterInfo("Min", StorageType.Float), |
94 |
new EventActionParameterInfo("Max", StorageType.Float), |
95 |
new EventActionParameterInfo("Rate", StorageType.Float)), |
96 |
new EventActionInfo(1, |
97 |
new EventActionParameterInfo("Target", StorageType.Float), |
98 |
new EventActionParameterInfo("Min", StorageType.Float), |
99 |
new EventActionParameterInfo("Max", StorageType.Float), |
100 |
new EventActionParameterInfo("Rate", StorageType.Float)), |
101 |
new EventActionInfo(1, |
102 |
new EventActionParameterInfo("Target", StorageType.Float), |
103 |
new EventActionParameterInfo("Rate", StorageType.Float), |
104 |
new EventActionParameterInfo("Value", StorageType.Float)), |
105 |
new EventActionInfo(1, |
106 |
new EventActionParameterInfo("Target", StorageType.Color), |
107 |
new EventActionParameterInfo("Color0", StorageType.Color), |
108 |
new EventActionParameterInfo("Color1", StorageType.Color), |
109 |
new EventActionParameterInfo("Amount", StorageType.Float)), |
110 |
null, |
111 |
new EventActionInfo(0, |
112 |
new EventActionParameterInfo("TimeToDie", StorageType.Float)), |
113 |
new EventActionInfo(0, |
114 |
new EventActionParameterInfo("Action", StorageType.ActionIndex), |
115 |
new EventActionParameterInfo("Lifetime", StorageType.Float)), |
116 |
new EventActionInfo(0, |
117 |
new EventActionParameterInfo("Action", StorageType.ActionIndex), |
118 |
new EventActionParameterInfo("Lifetime", StorageType.Float)), |
119 |
new EventActionInfo(0), |
120 |
new EventActionInfo(0, |
121 |
new EventActionParameterInfo("Time", StorageType.Float)), |
122 |
new EventActionInfo(0, |
123 |
new EventActionParameterInfo("Emitter", StorageType.Emitter)), |
124 |
new EventActionInfo(0, |
125 |
new EventActionParameterInfo("Emitter", StorageType.Emitter)), |
126 |
new EventActionInfo(0, |
127 |
new EventActionParameterInfo("Emitter", StorageType.Emitter), |
128 |
new EventActionParameterInfo("Particles", StorageType.Float)), |
129 |
new EventActionInfo(0, |
130 |
new EventActionParameterInfo("Emitter", StorageType.Emitter)), |
131 |
new EventActionInfo(0, |
132 |
new EventActionParameterInfo("Emitter", StorageType.Emitter)), |
133 |
new EventActionInfo(0, |
134 |
new EventActionParameterInfo("Emitter", StorageType.Emitter)), |
135 |
null, |
136 |
new EventActionInfo(0, |
137 |
new EventActionParameterInfo("Sound", StorageType.AmbientSoundName)), |
138 |
new EventActionInfo(0), |
139 |
new EventActionInfo(0), |
140 |
new EventActionInfo(0, |
141 |
new EventActionParameterInfo("Sound", StorageType.ImpulseSoundName)), |
142 |
null, |
143 |
null, |
144 |
new EventActionInfo(0, |
145 |
new EventActionParameterInfo("Damage", StorageType.Float), |
146 |
new EventActionParameterInfo("StunDamage", StorageType.Float), |
147 |
new EventActionParameterInfo("KnockBack", StorageType.Float), |
148 |
new EventActionParameterInfo("DamageType", StorageType.DamageType), |
149 |
new EventActionParameterInfo("SelfImmune", StorageType.Boolean), |
150 |
new EventActionParameterInfo("CanHitMultiple", StorageType.Boolean)), |
151 |
new EventActionInfo(0, |
152 |
new EventActionParameterInfo("Damage", StorageType.Float), |
153 |
new EventActionParameterInfo("StunDamage", StorageType.Float), |
154 |
new EventActionParameterInfo("KnockBack", StorageType.Float), |
155 |
new EventActionParameterInfo("Radius", StorageType.Float), |
156 |
new EventActionParameterInfo("FallOff", StorageType.BlastFalloff), |
157 |
new EventActionParameterInfo("DamageType", StorageType.DamageType), |
158 |
new EventActionParameterInfo("SelfImmune", StorageType.Boolean), |
159 |
new EventActionParameterInfo("DamageEnvironment", StorageType.Boolean)), |
160 |
new EventActionInfo(0), |
161 |
new EventActionInfo(0, |
162 |
new EventActionParameterInfo("Damage", StorageType.Float)), |
163 |
new EventActionInfo(0, |
164 |
new EventActionParameterInfo("BlastVelocity", StorageType.Float), |
165 |
new EventActionParameterInfo("Radius", StorageType.Float)), |
166 |
new EventActionInfo(0), |
167 |
null, |
168 |
new EventActionInfo(0, |
169 |
new EventActionParameterInfo("Space", StorageType.CoordFrame), |
170 |
new EventActionParameterInfo("Rate", StorageType.Float), |
171 |
new EventActionParameterInfo("RotateVelocity", StorageType.Boolean)), |
172 |
new EventActionInfo(0, |
173 |
new EventActionParameterInfo("Space", StorageType.CoordFrame), |
174 |
new EventActionParameterInfo("Rate", StorageType.Float), |
175 |
new EventActionParameterInfo("RotateVelocity", StorageType.Boolean)), |
176 |
new EventActionInfo(0, |
177 |
new EventActionParameterInfo("Space", StorageType.CoordFrame), |
178 |
new EventActionParameterInfo("Rate", StorageType.Float), |
179 |
new EventActionParameterInfo("RotateVelocity", StorageType.Boolean)), |
180 |
null, |
181 |
new EventActionInfo(0, |
182 |
new EventActionParameterInfo("DelayTime", StorageType.Float)), |
183 |
new EventActionInfo(0, |
184 |
new EventActionParameterInfo("Gravity", StorageType.Float), |
185 |
new EventActionParameterInfo("MaxG", StorageType.Float), |
186 |
new EventActionParameterInfo("HorizontalOnly", StorageType.Boolean)), |
187 |
new EventActionInfo(0, |
188 |
new EventActionParameterInfo("TurnSpeed", StorageType.Float), |
189 |
new EventActionParameterInfo("PredictPosition", StorageType.Boolean), |
190 |
new EventActionParameterInfo("HorizontalOnly", StorageType.Boolean)), |
191 |
new EventActionInfo(0, |
192 |
new EventActionParameterInfo("AccelRate", StorageType.Float), |
193 |
new EventActionParameterInfo("MaxAccel", StorageType.Float), |
194 |
new EventActionParameterInfo("DesiredDistance", StorageType.Float)), |
195 |
null, |
196 |
null, |
197 |
null, |
198 |
null, |
199 |
null, |
200 |
null, |
201 |
new EventActionInfo(0), |
202 |
new EventActionInfo(0, |
203 |
new EventActionParameterInfo("Fraction", StorageType.Float)), |
204 |
new EventActionInfo(1, |
205 |
new EventActionParameterInfo("Theta", StorageType.Float), |
206 |
new EventActionParameterInfo("Radius", StorageType.Float), |
207 |
new EventActionParameterInfo("RotateSpeed", StorageType.Float)), |
208 |
new EventActionInfo(0, |
209 |
new EventActionParameterInfo("Resistance", StorageType.Float), |
210 |
new EventActionParameterInfo("MinimumVelocity", StorageType.Float)), |
211 |
new EventActionInfo(0, |
212 |
new EventActionParameterInfo("Acceleration", StorageType.Float), |
213 |
new EventActionParameterInfo("MaxSpeed", StorageType.Float), |
214 |
new EventActionParameterInfo("SidewaysDecay", StorageType.Float), |
215 |
new EventActionParameterInfo("DirX", StorageType.Float), |
216 |
new EventActionParameterInfo("DirY", StorageType.Float), |
217 |
new EventActionParameterInfo("DirZ", StorageType.Float), |
218 |
new EventActionParameterInfo("Space", StorageType.CoordFrame)), |
219 |
new EventActionInfo(0, |
220 |
new EventActionParameterInfo("Speed", StorageType.Float), |
221 |
new EventActionParameterInfo("Space", StorageType.CoordFrame), |
222 |
new EventActionParameterInfo("NoSideways", StorageType.Boolean)), |
223 |
new EventActionInfo(0, |
224 |
new EventActionParameterInfo("Theta", StorageType.Float), |
225 |
new EventActionParameterInfo("Radius", StorageType.Float), |
226 |
new EventActionParameterInfo("Rotate_speed", StorageType.Float)), |
227 |
new EventActionInfo(0, |
228 |
new EventActionParameterInfo("Direction", StorageType.Direction), |
229 |
new EventActionParameterInfo("Value", StorageType.Float)), |
230 |
new EventActionInfo(0, |
231 |
new EventActionParameterInfo("Effect", StorageType.ImpactName), |
232 |
new EventActionParameterInfo("WallOffset", StorageType.Float), |
233 |
new EventActionParameterInfo("Orientation", StorageType.CollisionOrient), |
234 |
new EventActionParameterInfo("Attach", StorageType.Boolean)), |
235 |
new EventActionInfo(0), |
236 |
new EventActionInfo(0, |
237 |
new EventActionParameterInfo("ElasticDirect", StorageType.Float), |
238 |
new EventActionParameterInfo("ElasticGlancing", StorageType.Float)), |
239 |
new EventActionInfo(0), |
240 |
new EventActionInfo(0), |
241 |
new EventActionInfo(0, |
242 |
new EventActionParameterInfo("ImpactType", StorageType.ImpactName), |
243 |
new EventActionParameterInfo("ImpactModifier", StorageType.ImpactModifier)), |
244 |
null, |
245 |
new EventActionInfo(0), |
246 |
new EventActionInfo(0), |
247 |
new EventActionInfo(0, |
248 |
new EventActionParameterInfo("Tick", StorageType.Float)), |
249 |
new EventActionInfo(0), |
250 |
null, |
251 |
null, |
252 |
null, |
253 |
null, |
254 |
new EventActionInfo(1, |
255 |
new EventActionParameterInfo("Target", StorageType.Float), |
256 |
new EventActionParameterInfo("Value", StorageType.Float)), |
257 |
new EventActionInfo(0), |
258 |
new EventActionInfo(0, |
259 |
new EventActionParameterInfo("Action", StorageType.ActionIndex), |
260 |
new EventActionParameterInfo("Var", StorageType.Float), |
261 |
new EventActionParameterInfo("Threshold", StorageType.Float)), |
262 |
new EventActionInfo(0, |
263 |
new EventActionParameterInfo("Action", StorageType.ActionIndex), |
264 |
new EventActionParameterInfo("Var", StorageType.Float), |
265 |
new EventActionParameterInfo("Threshold", StorageType.Float)), |
266 |
new EventActionInfo(0, |
267 |
new EventActionParameterInfo("Action", StorageType.ActionIndex)), |
268 |
new EventActionInfo(0, |
269 |
new EventActionParameterInfo("Action", StorageType.ActionIndex)), |
270 |
null, |
271 |
new EventActionInfo(0, |
272 |
new EventActionParameterInfo("Emitter", StorageType.Emitter), |
273 |
new EventActionParameterInfo("FuseTime", StorageType.Float)), |
274 |
new EventActionInfo(0), |
275 |
new EventActionInfo(5, |
276 |
new EventActionParameterInfo("AxisX", StorageType.Float), |
277 |
new EventActionParameterInfo("AxisY", StorageType.Float), |
278 |
new EventActionParameterInfo("AxisZ", StorageType.Float), |
279 |
new EventActionParameterInfo("CurrentAngle", StorageType.Float), |
280 |
new EventActionParameterInfo("TimeUntilCheck", StorageType.Float), |
281 |
new EventActionParameterInfo("SenseDistance", StorageType.Float), |
282 |
new EventActionParameterInfo("TurningSpeed", StorageType.Float), |
283 |
new EventActionParameterInfo("TurningDecay", StorageType.Float)), |
284 |
new EventActionInfo(1, |
285 |
new EventActionParameterInfo("SwirlAngle", StorageType.Float), |
286 |
new EventActionParameterInfo("SwirlBaseRate", StorageType.Float), |
287 |
new EventActionParameterInfo("SwirlDeltaRate", StorageType.Float), |
288 |
new EventActionParameterInfo("SwirlSpeed", StorageType.Float)), |
289 |
new EventActionInfo(0, |
290 |
new EventActionParameterInfo("Height", StorageType.Float)), |
291 |
new EventActionInfo(0, |
292 |
new EventActionParameterInfo("Speed", StorageType.Float)), |
293 |
new EventActionInfo(1, |
294 |
new EventActionParameterInfo("Variable", StorageType.Float), |
295 |
new EventActionParameterInfo("BaseValue", StorageType.Float), |
296 |
new EventActionParameterInfo("DeltaValue", StorageType.Float), |
297 |
new EventActionParameterInfo("MinValue", StorageType.Float), |
298 |
new EventActionParameterInfo("MaxValue", StorageType.Float)), |
299 |
new EventActionInfo(0), |
300 |
new EventActionInfo(0), |
301 |
new EventActionInfo(0), |
302 |
null, |
303 |
null, |
304 |
null, |
305 |
}; |
306 |
} |
307 |
} |