29 using System.Collections.Generic;
31 using OpenSim.Framework;
32 using OpenSim.Region.PhysicsModules.SharedBase;
36 using OpenSim.Framework.Serialization;
37 using OpenSim.Framework.Serialization.External;
38 using OpenSim.Region.Framework.Scenes.Serialization;
40 namespace OpenSim.
Region.Framework.Scenes
48 get {
return vd.m_type; }
54 ProcessTypeChange(
Vehicle.TYPE_NONE);
60 float timestep = 0.01f;
63 case Vehicle.ANGULAR_DEFLECTION_EFFICIENCY:
64 if (pValue < 0f) pValue = 0f;
65 if (pValue > 1f) pValue = 1f;
66 vd.m_angularDeflectionEfficiency = pValue;
68 case Vehicle.ANGULAR_DEFLECTION_TIMESCALE:
69 if (pValue < timestep) pValue = timestep;
70 vd.m_angularDeflectionTimescale = pValue;
72 case Vehicle.ANGULAR_MOTOR_DECAY_TIMESCALE:
73 if (pValue < timestep) pValue = timestep;
74 else if (pValue > 120) pValue = 120;
75 vd.m_angularMotorDecayTimescale = pValue;
77 case Vehicle.ANGULAR_MOTOR_TIMESCALE:
78 if (pValue < timestep) pValue = timestep;
79 vd.m_angularMotorTimescale = pValue;
81 case Vehicle.BANKING_EFFICIENCY:
82 if (pValue < -1f) pValue = -1f;
83 if (pValue > 1f) pValue = 1f;
84 vd.m_bankingEfficiency = pValue;
86 case Vehicle.BANKING_MIX:
87 if (pValue < 0f) pValue = 0f;
88 if (pValue > 1f) pValue = 1f;
89 vd.m_bankingMix = pValue;
91 case Vehicle.BANKING_TIMESCALE:
92 if (pValue < timestep) pValue = timestep;
93 vd.m_bankingTimescale = pValue;
95 case Vehicle.BUOYANCY:
96 if (pValue < -1f) pValue = -1f;
97 if (pValue > 1f) pValue = 1f;
98 vd.m_VehicleBuoyancy = pValue;
100 case Vehicle.HOVER_EFFICIENCY:
101 if (pValue < 0f) pValue = 0f;
102 if (pValue > 1f) pValue = 1f;
103 vd.m_VhoverEfficiency = pValue;
105 case Vehicle.HOVER_HEIGHT:
106 vd.m_VhoverHeight = pValue;
108 case Vehicle.HOVER_TIMESCALE:
109 if (pValue < timestep) pValue = timestep;
110 vd.m_VhoverTimescale = pValue;
112 case Vehicle.LINEAR_DEFLECTION_EFFICIENCY:
113 if (pValue < 0f) pValue = 0f;
114 if (pValue > 1f) pValue = 1f;
115 vd.m_linearDeflectionEfficiency = pValue;
117 case Vehicle.LINEAR_DEFLECTION_TIMESCALE:
118 if (pValue < timestep) pValue = timestep;
119 vd.m_linearDeflectionTimescale = pValue;
121 case Vehicle.LINEAR_MOTOR_DECAY_TIMESCALE:
122 if (pValue < timestep) pValue = timestep;
123 else if (pValue > 120) pValue = 120;
124 vd.m_linearMotorDecayTimescale = pValue;
126 case Vehicle.LINEAR_MOTOR_TIMESCALE:
127 if (pValue < timestep) pValue = timestep;
128 vd.m_linearMotorTimescale = pValue;
130 case Vehicle.VERTICAL_ATTRACTION_EFFICIENCY:
131 if (pValue < 0f) pValue = 0f;
132 if (pValue > 1f) pValue = 1f;
133 vd.m_verticalAttractionEfficiency = pValue;
135 case Vehicle.VERTICAL_ATTRACTION_TIMESCALE:
136 if (pValue < timestep) pValue = timestep;
137 vd.m_verticalAttractionTimescale = pValue;
142 case Vehicle.ANGULAR_FRICTION_TIMESCALE:
143 if (pValue < timestep) pValue = timestep;
144 vd.m_angularFrictionTimescale =
new Vector3(pValue, pValue, pValue);
146 case Vehicle.ANGULAR_MOTOR_DIRECTION:
147 vd.m_angularMotorDirection =
new Vector3(pValue, pValue, pValue);
148 len = vd.m_angularMotorDirection.Length();
150 vd.m_angularMotorDirection *= (12.566f / len);
152 case Vehicle.LINEAR_FRICTION_TIMESCALE:
153 if (pValue < timestep) pValue = timestep;
154 vd.m_linearFrictionTimescale =
new Vector3(pValue, pValue, pValue);
156 case Vehicle.LINEAR_MOTOR_DIRECTION:
157 vd.m_linearMotorDirection =
new Vector3(pValue, pValue, pValue);
158 len = vd.m_linearMotorDirection.Length();
160 vd.m_linearMotorDirection *= (30.0f / len);
162 case Vehicle.LINEAR_MOTOR_OFFSET:
163 vd.m_linearMotorOffset =
new Vector3(pValue, pValue, pValue);
164 len = vd.m_linearMotorOffset.Length();
166 vd.m_linearMotorOffset *= (100.0f / len);
174 float timestep = 0.01f;
177 case Vehicle.ANGULAR_FRICTION_TIMESCALE:
178 if (pValue.X < timestep) pValue.X = timestep;
179 if (pValue.Y < timestep) pValue.Y = timestep;
180 if (pValue.Z < timestep) pValue.Z = timestep;
182 vd.m_angularFrictionTimescale =
new Vector3(pValue.X, pValue.Y, pValue.Z);
184 case Vehicle.ANGULAR_MOTOR_DIRECTION:
185 vd.m_angularMotorDirection =
new Vector3(pValue.X, pValue.Y, pValue.Z);
187 len = vd.m_angularMotorDirection.Length();
189 vd.m_angularMotorDirection *= (12.566f / len);
191 case Vehicle.LINEAR_FRICTION_TIMESCALE:
192 if (pValue.X < timestep) pValue.X = timestep;
193 if (pValue.Y < timestep) pValue.Y = timestep;
194 if (pValue.Z < timestep) pValue.Z = timestep;
195 vd.m_linearFrictionTimescale =
new Vector3(pValue.X, pValue.Y, pValue.Z);
197 case Vehicle.LINEAR_MOTOR_DIRECTION:
198 vd.m_linearMotorDirection =
new Vector3(pValue.X, pValue.Y, pValue.Z);
199 len = vd.m_linearMotorDirection.Length();
201 vd.m_linearMotorDirection *= (30.0f / len);
203 case Vehicle.LINEAR_MOTOR_OFFSET:
204 vd.m_linearMotorOffset =
new Vector3(pValue.X, pValue.Y, pValue.Z);
205 len = vd.m_linearMotorOffset.Length();
207 vd.m_linearMotorOffset *= (100.0f / len);
216 case Vehicle.REFERENCE_FRAME:
217 vd.m_referenceFrame = pValue;
236 vd.m_linearMotorDirection = Vector3.Zero;
237 vd.m_angularMotorDirection = Vector3.Zero;
238 vd.m_linearMotorOffset = Vector3.Zero;
239 vd.m_referenceFrame = Quaternion.Identity;
245 case Vehicle.TYPE_NONE:
246 vd.m_linearFrictionTimescale =
new Vector3(1000, 1000, 1000);
247 vd.m_angularFrictionTimescale =
new Vector3(1000, 1000, 1000);
248 vd.m_linearMotorTimescale = 1000;
249 vd.m_linearMotorDecayTimescale = 120;
250 vd.m_angularMotorTimescale = 1000;
251 vd.m_angularMotorDecayTimescale = 1000;
252 vd.m_VhoverHeight = 0;
253 vd.m_VhoverEfficiency = 1;
254 vd.m_VhoverTimescale = 1000;
255 vd.m_VehicleBuoyancy = 0;
256 vd.m_linearDeflectionEfficiency = 0;
257 vd.m_linearDeflectionTimescale = 1000;
258 vd.m_angularDeflectionEfficiency = 0;
259 vd.m_angularDeflectionTimescale = 1000;
260 vd.m_bankingEfficiency = 0;
262 vd.m_bankingTimescale = 1000;
263 vd.m_verticalAttractionEfficiency = 0;
264 vd.m_verticalAttractionTimescale = 1000;
269 case Vehicle.TYPE_SLED:
270 vd.m_linearFrictionTimescale =
new Vector3(30, 1, 1000);
271 vd.m_angularFrictionTimescale =
new Vector3(1000, 1000, 1000);
272 vd.m_linearMotorTimescale = 1000;
273 vd.m_linearMotorDecayTimescale = 120;
274 vd.m_angularMotorTimescale = 1000;
275 vd.m_angularMotorDecayTimescale = 120;
276 vd.m_VhoverHeight = 0;
277 vd.m_VhoverEfficiency = 1;
278 vd.m_VhoverTimescale = 10;
279 vd.m_VehicleBuoyancy = 0;
280 vd.m_linearDeflectionEfficiency = 1;
281 vd.m_linearDeflectionTimescale = 1;
282 vd.m_angularDeflectionEfficiency = 0;
283 vd.m_angularDeflectionTimescale = 1000;
284 vd.m_bankingEfficiency = 0;
286 vd.m_bankingTimescale = 10;
288 ~(VehicleFlag.HOVER_WATER_ONLY | VehicleFlag.HOVER_TERRAIN_ONLY |
289 VehicleFlag.HOVER_GLOBAL_HEIGHT | VehicleFlag.HOVER_UP_ONLY);
290 vd.m_flags |= (VehicleFlag.NO_DEFLECTION_UP | VehicleFlag.LIMIT_ROLL_ONLY | VehicleFlag.LIMIT_MOTOR_UP);
292 case Vehicle.TYPE_CAR:
293 vd.m_linearFrictionTimescale =
new Vector3(100, 2, 1000);
294 vd.m_angularFrictionTimescale =
new Vector3(1000, 1000, 1000);
295 vd.m_linearMotorTimescale = 1;
296 vd.m_linearMotorDecayTimescale = 60;
297 vd.m_angularMotorTimescale = 1;
298 vd.m_angularMotorDecayTimescale = 0.8f;
299 vd.m_VhoverHeight = 0;
300 vd.m_VhoverEfficiency = 0;
301 vd.m_VhoverTimescale = 1000;
302 vd.m_VehicleBuoyancy = 0;
303 vd.m_linearDeflectionEfficiency = 1;
304 vd.m_linearDeflectionTimescale = 2;
305 vd.m_angularDeflectionEfficiency = 0;
306 vd.m_angularDeflectionTimescale = 10;
307 vd.m_verticalAttractionEfficiency = 1f;
308 vd.m_verticalAttractionTimescale = 10f;
309 vd.m_bankingEfficiency = -0.2f;
311 vd.m_bankingTimescale = 1;
312 vd.m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY | VehicleFlag.HOVER_TERRAIN_ONLY | VehicleFlag.HOVER_GLOBAL_HEIGHT);
313 vd.m_flags |= (VehicleFlag.NO_DEFLECTION_UP | VehicleFlag.LIMIT_ROLL_ONLY |
314 VehicleFlag.LIMIT_MOTOR_UP | VehicleFlag.HOVER_UP_ONLY);
316 case Vehicle.TYPE_BOAT:
317 vd.m_linearFrictionTimescale =
new Vector3(10, 3, 2);
318 vd.m_angularFrictionTimescale =
new Vector3(10, 10, 10);
319 vd.m_linearMotorTimescale = 5;
320 vd.m_linearMotorDecayTimescale = 60;
321 vd.m_angularMotorTimescale = 4;
322 vd.m_angularMotorDecayTimescale = 4;
323 vd.m_VhoverHeight = 0;
324 vd.m_VhoverEfficiency = 0.5f;
325 vd.m_VhoverTimescale = 2;
326 vd.m_VehicleBuoyancy = 1;
327 vd.m_linearDeflectionEfficiency = 0.5f;
328 vd.m_linearDeflectionTimescale = 3;
329 vd.m_angularDeflectionEfficiency = 0.5f;
330 vd.m_angularDeflectionTimescale = 5;
331 vd.m_verticalAttractionEfficiency = 0.5f;
332 vd.m_verticalAttractionTimescale = 5f;
333 vd.m_bankingEfficiency = -0.3f;
334 vd.m_bankingMix = 0.8f;
335 vd.m_bankingTimescale = 1;
336 vd.m_flags &= ~(VehicleFlag.HOVER_TERRAIN_ONLY |
337 VehicleFlag.HOVER_GLOBAL_HEIGHT |
338 VehicleFlag.HOVER_UP_ONLY |
339 VehicleFlag.LIMIT_ROLL_ONLY);
340 vd.m_flags |= (VehicleFlag.NO_DEFLECTION_UP |
341 VehicleFlag.LIMIT_MOTOR_UP |
342 VehicleFlag.HOVER_WATER_ONLY);
344 case Vehicle.TYPE_AIRPLANE:
345 vd.m_linearFrictionTimescale =
new Vector3(200, 10, 5);
346 vd.m_angularFrictionTimescale =
new Vector3(20, 20, 20);
347 vd.m_linearMotorTimescale = 2;
348 vd.m_linearMotorDecayTimescale = 60;
349 vd.m_angularMotorTimescale = 4;
350 vd.m_angularMotorDecayTimescale = 8;
351 vd.m_VhoverHeight = 0;
352 vd.m_VhoverEfficiency = 0.5f;
353 vd.m_VhoverTimescale = 1000;
354 vd.m_VehicleBuoyancy = 0;
355 vd.m_linearDeflectionEfficiency = 0.5f;
356 vd.m_linearDeflectionTimescale = 0.5f;
357 vd.m_angularDeflectionEfficiency = 1;
358 vd.m_angularDeflectionTimescale = 2;
359 vd.m_verticalAttractionEfficiency = 0.9f;
360 vd.m_verticalAttractionTimescale = 2f;
361 vd.m_bankingEfficiency = 1;
362 vd.m_bankingMix = 0.7f;
363 vd.m_bankingTimescale = 2;
364 vd.m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY |
365 VehicleFlag.HOVER_TERRAIN_ONLY |
366 VehicleFlag.HOVER_GLOBAL_HEIGHT |
367 VehicleFlag.HOVER_UP_ONLY |
368 VehicleFlag.NO_DEFLECTION_UP |
369 VehicleFlag.LIMIT_MOTOR_UP);
370 vd.m_flags |= (VehicleFlag.LIMIT_ROLL_ONLY);
372 case Vehicle.TYPE_BALLOON:
373 vd.m_linearFrictionTimescale =
new Vector3(5, 5, 5);
374 vd.m_angularFrictionTimescale =
new Vector3(10, 10, 10);
375 vd.m_linearMotorTimescale = 5;
376 vd.m_linearMotorDecayTimescale = 60;
377 vd.m_angularMotorTimescale = 6;
378 vd.m_angularMotorDecayTimescale = 10;
379 vd.m_VhoverHeight = 5;
380 vd.m_VhoverEfficiency = 0.8f;
381 vd.m_VhoverTimescale = 10;
382 vd.m_VehicleBuoyancy = 1;
383 vd.m_linearDeflectionEfficiency = 0;
384 vd.m_linearDeflectionTimescale = 5;
385 vd.m_angularDeflectionEfficiency = 0;
386 vd.m_angularDeflectionTimescale = 5;
387 vd.m_verticalAttractionEfficiency = 0f;
388 vd.m_verticalAttractionTimescale = 1000f;
389 vd.m_bankingEfficiency = 0;
390 vd.m_bankingMix = 0.7f;
391 vd.m_bankingTimescale = 5;
392 vd.m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY |
393 VehicleFlag.HOVER_TERRAIN_ONLY |
394 VehicleFlag.HOVER_UP_ONLY |
395 VehicleFlag.NO_DEFLECTION_UP |
396 VehicleFlag.LIMIT_MOTOR_UP);
397 vd.m_flags |= (VehicleFlag.LIMIT_ROLL_ONLY |
398 VehicleFlag.HOVER_GLOBAL_HEIGHT);
409 private XmlTextWriter writer;
411 private void XWint(
string name,
int i)
413 writer.WriteElementString(name, i.ToString());
416 private void XWfloat(
string name,
float f)
418 writer.WriteElementString(name, f.ToString(Utils.EnUsCulture));
421 private void XWVector(
string name, Vector3 vec)
423 writer.WriteStartElement(name);
424 writer.WriteElementString(
"X", vec.X.ToString(Utils.EnUsCulture));
425 writer.WriteElementString(
"Y", vec.Y.ToString(Utils.EnUsCulture));
426 writer.WriteElementString(
"Z", vec.Z.ToString(Utils.EnUsCulture));
427 writer.WriteEndElement();
430 private void XWQuat(
string name, Quaternion quat)
432 writer.WriteStartElement(name);
433 writer.WriteElementString(
"X", quat.X.ToString(Utils.EnUsCulture));
434 writer.WriteElementString(
"Y", quat.Y.ToString(Utils.EnUsCulture));
435 writer.WriteElementString(
"Z", quat.Z.ToString(Utils.EnUsCulture));
436 writer.WriteElementString(
"W", quat.W.ToString(Utils.EnUsCulture));
437 writer.WriteEndElement();
440 public void ToXml2(XmlTextWriter twriter)
443 writer.WriteStartElement(
"Vehicle");
445 XWint(
"TYPE", (
int)vd.m_type);
446 XWint(
"FLAGS", (
int)vd.m_flags);
449 XWVector(
"LMDIR", vd.m_linearMotorDirection);
450 XWVector(
"LMFTIME", vd.m_linearFrictionTimescale);
451 XWfloat(
"LMDTIME", vd.m_linearMotorDecayTimescale);
452 XWfloat(
"LMTIME", vd.m_linearMotorTimescale);
453 XWVector(
"LMOFF", vd.m_linearMotorOffset);
456 XWVector(
"AMDIR", vd.m_angularMotorDirection);
457 XWfloat(
"AMTIME", vd.m_angularMotorTimescale);
458 XWfloat(
"AMDTIME", vd.m_angularMotorDecayTimescale);
459 XWVector(
"AMFTIME", vd.m_angularFrictionTimescale);
462 XWfloat(
"ADEFF", vd.m_angularDeflectionEfficiency);
463 XWfloat(
"ADTIME", vd.m_angularDeflectionTimescale);
464 XWfloat(
"LDEFF", vd.m_linearDeflectionEfficiency);
465 XWfloat(
"LDTIME", vd.m_linearDeflectionTimescale);
468 XWfloat(
"BEFF", vd.m_bankingEfficiency);
469 XWfloat(
"BMIX", vd.m_bankingMix);
470 XWfloat(
"BTIME", vd.m_bankingTimescale);
473 XWfloat(
"HHEI", vd.m_VhoverHeight);
474 XWfloat(
"HEFF", vd.m_VhoverEfficiency);
475 XWfloat(
"HTIME", vd.m_VhoverTimescale);
476 XWfloat(
"VBUO", vd.m_VehicleBuoyancy);
479 XWfloat(
"VAEFF", vd.m_verticalAttractionEfficiency);
480 XWfloat(
"VATIME", vd.m_verticalAttractionTimescale);
482 XWQuat(
"REF_FRAME", vd.m_referenceFrame);
484 writer.WriteEndElement();
494 return reader.ReadElementContentAsInt();
497 private float XRfloat()
499 return reader.ReadElementContentAsFloat();
505 reader.ReadStartElement();
506 vec.X = reader.ReadElementContentAsFloat();
507 vec.Y = reader.ReadElementContentAsFloat();
508 vec.Z = reader.ReadElementContentAsFloat();
509 reader.ReadEndElement();
516 reader.ReadStartElement();
517 q.X = reader.ReadElementContentAsFloat();
518 q.Y = reader.ReadElementContentAsFloat();
519 q.Z = reader.ReadElementContentAsFloat();
520 q.W = reader.ReadElementContentAsFloat();
521 reader.ReadEndElement();
526 Dictionary<string, Action> processors,
531 string nodeName = string.Empty;
532 while (xtr.NodeType != XmlNodeType.EndElement)
539 if (processors.TryGetValue(xtr.Name, out p))
550 if (xtr.NodeType == XmlNodeType.EndElement)
567 using (StringWriter sw =
new StringWriter())
569 using (XmlTextWriter xwriter =
new XmlTextWriter(sw))
574 return sw.ToString();
580 if (text == String.Empty)
583 UTF8Encoding enc =
new UTF8Encoding();
584 MemoryStream ms =
new MemoryStream(enc.GetBytes(text));
585 XmlTextReader xreader =
new XmlTextReader(ms);
590 v.FromXml2(xreader, out error);
608 vehicle.FromXml2(reader, out errors);
615 private void FromXml2(XmlReader _reader, out
bool errors)
620 Dictionary<string, Action> m_VehicleXmlProcessors
621 =
new Dictionary<string, Action>();
623 m_VehicleXmlProcessors.Add(
"TYPE", ProcessXR_type);
624 m_VehicleXmlProcessors.Add(
"FLAGS", ProcessXR_flags);
627 m_VehicleXmlProcessors.Add(
"LMDIR", ProcessXR_linearMotorDirection);
628 m_VehicleXmlProcessors.Add(
"LMFTIME", ProcessXR_linearFrictionTimescale);
629 m_VehicleXmlProcessors.Add(
"LMDTIME", ProcessXR_linearMotorDecayTimescale);
630 m_VehicleXmlProcessors.Add(
"LMTIME", ProcessXR_linearMotorTimescale);
631 m_VehicleXmlProcessors.Add(
"LMOFF", ProcessXR_linearMotorOffset);
634 m_VehicleXmlProcessors.Add(
"AMDIR", ProcessXR_angularMotorDirection);
635 m_VehicleXmlProcessors.Add(
"AMTIME", ProcessXR_angularMotorTimescale);
636 m_VehicleXmlProcessors.Add(
"AMDTIME", ProcessXR_angularMotorDecayTimescale);
637 m_VehicleXmlProcessors.Add(
"AMFTIME", ProcessXR_angularFrictionTimescale);
640 m_VehicleXmlProcessors.Add(
"ADEFF", ProcessXR_angularDeflectionEfficiency);
641 m_VehicleXmlProcessors.Add(
"ADTIME", ProcessXR_angularDeflectionTimescale);
642 m_VehicleXmlProcessors.Add(
"LDEFF", ProcessXR_linearDeflectionEfficiency);
643 m_VehicleXmlProcessors.Add(
"LDTIME", ProcessXR_linearDeflectionTimescale);
646 m_VehicleXmlProcessors.Add(
"BEFF", ProcessXR_bankingEfficiency);
647 m_VehicleXmlProcessors.Add(
"BMIX", ProcessXR_bankingMix);
648 m_VehicleXmlProcessors.Add(
"BTIME", ProcessXR_bankingTimescale);
651 m_VehicleXmlProcessors.Add(
"HHEI", ProcessXR_VhoverHeight);
652 m_VehicleXmlProcessors.Add(
"HEFF", ProcessXR_VhoverEfficiency);
653 m_VehicleXmlProcessors.Add(
"HTIME", ProcessXR_VhoverTimescale);
655 m_VehicleXmlProcessors.Add(
"VBUO", ProcessXR_VehicleBuoyancy);
658 m_VehicleXmlProcessors.Add(
"VAEFF", ProcessXR_verticalAttractionEfficiency);
659 m_VehicleXmlProcessors.Add(
"VATIME", ProcessXR_verticalAttractionTimescale);
661 m_VehicleXmlProcessors.Add(
"REF_FRAME", ProcessXR_referenceFrame);
665 reader.ReadStartElement(
"Vehicle", String.Empty);
667 errors = EReadProcessors(
668 m_VehicleXmlProcessors,
671 reader.ReadEndElement();
675 private void ProcessXR_type()
679 private void ProcessXR_flags()
684 private void ProcessXR_linearMotorDirection()
686 vd.m_linearMotorDirection = XRvector();
689 private void ProcessXR_linearFrictionTimescale()
691 vd.m_linearFrictionTimescale = XRvector();
694 private void ProcessXR_linearMotorDecayTimescale()
696 vd.m_linearMotorDecayTimescale = XRfloat();
698 private void ProcessXR_linearMotorTimescale()
700 vd.m_linearMotorTimescale = XRfloat();
702 private void ProcessXR_linearMotorOffset()
704 vd.m_linearMotorOffset = XRvector();
709 private void ProcessXR_angularMotorDirection()
711 vd.m_angularMotorDirection = XRvector();
713 private void ProcessXR_angularMotorTimescale()
715 vd.m_angularMotorTimescale = XRfloat();
717 private void ProcessXR_angularMotorDecayTimescale()
719 vd.m_angularMotorDecayTimescale = XRfloat();
721 private void ProcessXR_angularFrictionTimescale()
723 vd.m_angularFrictionTimescale = XRvector();
727 private void ProcessXR_angularDeflectionEfficiency()
729 vd.m_angularDeflectionEfficiency = XRfloat();
731 private void ProcessXR_angularDeflectionTimescale()
733 vd.m_angularDeflectionTimescale = XRfloat();
735 private void ProcessXR_linearDeflectionEfficiency()
737 vd.m_linearDeflectionEfficiency = XRfloat();
739 private void ProcessXR_linearDeflectionTimescale()
741 vd.m_linearDeflectionTimescale = XRfloat();
745 private void ProcessXR_bankingEfficiency()
747 vd.m_bankingEfficiency = XRfloat();
749 private void ProcessXR_bankingMix()
751 vd.m_bankingMix = XRfloat();
753 private void ProcessXR_bankingTimescale()
755 vd.m_bankingTimescale = XRfloat();
759 private void ProcessXR_VhoverHeight()
761 vd.m_VhoverHeight = XRfloat();
763 private void ProcessXR_VhoverEfficiency()
765 vd.m_VhoverEfficiency = XRfloat();
767 private void ProcessXR_VhoverTimescale()
769 vd.m_VhoverTimescale = XRfloat();
772 private void ProcessXR_VehicleBuoyancy()
774 vd.m_VehicleBuoyancy = XRfloat();
778 private void ProcessXR_verticalAttractionEfficiency()
780 vd.m_verticalAttractionEfficiency = XRfloat();
782 private void ProcessXR_verticalAttractionTimescale()
784 vd.m_verticalAttractionTimescale = XRfloat();
787 private void ProcessXR_referenceFrame()
789 vd.m_referenceFrame = XRquat();
void ProcessVectorVehicleParam(Vehicle pParam, Vector3 pValue)
void ProcessVehicleFlags(int pParam, bool remove)
void ProcessFloatVehicleParam(Vehicle pParam, float pValue)
static SOPVehicle FromXml2(string text)
static SOPVehicle FromXml2(XmlReader reader)
void ProcessTypeChange(Vehicle pType)
void SetVehicle(PhysicsActor ph)
void ProcessRotationVehicleParam(Vehicle pParam, Quaternion pValue)
void ToXml2(XmlTextWriter twriter)
static bool EReadProcessors(Dictionary< string, Action > processors, XmlReader xtr)