simplified vehicle fromXml. Use still comented on SceneObjectSerialized.cs
parent
60d68ee312
commit
3c9b7f2c0c
|
@ -484,45 +484,91 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
writer = null;
|
writer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int XRint(XmlTextReader reader, string name)
|
|
||||||
|
|
||||||
|
XmlTextReader reader;
|
||||||
|
|
||||||
|
private int XRint()
|
||||||
{
|
{
|
||||||
return reader.ReadElementContentAsInt(name, String.Empty);
|
return reader.ReadElementContentAsInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
private float XRfloat(XmlTextReader reader, string name)
|
private float XRfloat()
|
||||||
{
|
{
|
||||||
return reader.ReadElementContentAsFloat(name, String.Empty);
|
return reader.ReadElementContentAsFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3 XRvector(XmlTextReader reader, string name)
|
public Vector3 XRvector()
|
||||||
{
|
{
|
||||||
Vector3 vec;
|
Vector3 vec;
|
||||||
reader.ReadStartElement(name);
|
reader.ReadStartElement();
|
||||||
vec.X = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // X or x
|
vec.X = reader.ReadElementContentAsFloat();
|
||||||
vec.Y = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // Y or y
|
vec.Y = reader.ReadElementContentAsFloat();
|
||||||
vec.Z = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // Z or z
|
vec.Z = reader.ReadElementContentAsFloat();
|
||||||
reader.ReadEndElement();
|
reader.ReadEndElement();
|
||||||
return vec;
|
return vec;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Quaternion XRquat(XmlTextReader reader, string name)
|
public Quaternion XRquat()
|
||||||
{
|
{
|
||||||
Quaternion q;
|
Quaternion q;
|
||||||
reader.ReadStartElement(name);
|
reader.ReadStartElement();
|
||||||
q.X = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
q.X = reader.ReadElementContentAsFloat();
|
||||||
q.Y = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
q.Y = reader.ReadElementContentAsFloat();
|
||||||
q.Z = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
q.Z = reader.ReadElementContentAsFloat();
|
||||||
q.W = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
q.W = reader.ReadElementContentAsFloat();
|
||||||
reader.ReadEndElement();
|
reader.ReadEndElement();
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FromXml2(XmlTextReader reader, out bool errors)
|
public static bool EReadProcessors(
|
||||||
|
Dictionary<string, Action> processors,
|
||||||
|
XmlTextReader xtr)
|
||||||
|
{
|
||||||
|
bool errors = false;
|
||||||
|
|
||||||
|
string nodeName = string.Empty;
|
||||||
|
while (xtr.NodeType != XmlNodeType.EndElement)
|
||||||
|
{
|
||||||
|
nodeName = xtr.Name;
|
||||||
|
|
||||||
|
// m_log.DebugFormat("[ExternalRepresentationUtils]: Processing: {0}", nodeName);
|
||||||
|
|
||||||
|
Action p = null;
|
||||||
|
if (processors.TryGetValue(xtr.Name, out p))
|
||||||
|
{
|
||||||
|
// m_log.DebugFormat("[ExternalRepresentationUtils]: Found {0} processor, nodeName);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
p();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
errors = true;
|
||||||
|
if (xtr.NodeType == XmlNodeType.EndElement)
|
||||||
|
xtr.Read();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// m_log.DebugFormat("[LandDataSerializer]: caught unknown element {0}", nodeName);
|
||||||
|
xtr.ReadOuterXml(); // ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void FromXml2(XmlTextReader _reader, out bool errors)
|
||||||
{
|
{
|
||||||
errors = false;
|
errors = false;
|
||||||
|
reader = _reader;
|
||||||
|
|
||||||
Dictionary<string, Action<VehicleData, XmlTextReader>> m_VehicleXmlProcessors
|
Dictionary<string, Action> m_VehicleXmlProcessors
|
||||||
= new Dictionary<string, Action<VehicleData, XmlTextReader>>();
|
= new Dictionary<string, Action>();
|
||||||
|
|
||||||
m_VehicleXmlProcessors.Add("TYPE", ProcessXR_type);
|
m_VehicleXmlProcessors.Add("TYPE", ProcessXR_type);
|
||||||
m_VehicleXmlProcessors.Add("FLAGS", ProcessXR_flags);
|
m_VehicleXmlProcessors.Add("FLAGS", ProcessXR_flags);
|
||||||
|
@ -568,135 +614,129 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
reader.ReadStartElement("Vehicle", String.Empty);
|
reader.ReadStartElement("Vehicle", String.Empty);
|
||||||
|
|
||||||
errors = ExternalRepresentationUtils.ExecuteReadProcessors(
|
errors = EReadProcessors(
|
||||||
vd,
|
|
||||||
m_VehicleXmlProcessors,
|
m_VehicleXmlProcessors,
|
||||||
reader,
|
reader);
|
||||||
(o, nodeName, e)
|
|
||||||
=>
|
|
||||||
{
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
reader.ReadEndElement();
|
reader.ReadEndElement();
|
||||||
|
reader = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessXR_type(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_type()
|
||||||
{
|
{
|
||||||
vd.m_type = (Vehicle)XRint(reader, "TYPE");
|
vd.m_type = (Vehicle)XRint();
|
||||||
}
|
}
|
||||||
private void ProcessXR_flags(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_flags()
|
||||||
{
|
{
|
||||||
vd.m_flags = (VehicleFlag)XRint(reader, "FLAGS");
|
vd.m_flags = (VehicleFlag)XRint();
|
||||||
}
|
}
|
||||||
// Linear properties
|
// Linear properties
|
||||||
private void ProcessXR_linearMotorDirection(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearMotorDirection()
|
||||||
{
|
{
|
||||||
vd.m_linearMotorDirection = XRvector(reader, "LMDIR");
|
vd.m_linearMotorDirection = XRvector();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessXR_linearFrictionTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearFrictionTimescale()
|
||||||
{
|
{
|
||||||
vd.m_linearFrictionTimescale = XRvector(reader, "LMFTIME");
|
vd.m_linearFrictionTimescale = XRvector();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessXR_linearMotorDecayTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearMotorDecayTimescale()
|
||||||
{
|
{
|
||||||
vd.m_linearMotorDecayTimescale = XRfloat(reader, "LMDTIME");
|
vd.m_linearMotorDecayTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_linearMotorTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearMotorTimescale()
|
||||||
{
|
{
|
||||||
vd.m_linearMotorTimescale = XRfloat(reader, "LMTIME");
|
vd.m_linearMotorTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_linearMotorOffset(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearMotorOffset()
|
||||||
{
|
{
|
||||||
vd.m_linearMotorOffset = XRvector(reader, "LMOFF");
|
vd.m_linearMotorOffset = XRvector();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Angular properties
|
//Angular properties
|
||||||
private void ProcessXR_angularMotorDirection(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_angularMotorDirection()
|
||||||
{
|
{
|
||||||
vd.m_angularMotorDirection = XRvector(reader, "AMDIR");
|
vd.m_angularMotorDirection = XRvector();
|
||||||
}
|
}
|
||||||
private void ProcessXR_angularMotorTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_angularMotorTimescale()
|
||||||
{
|
{
|
||||||
vd.m_angularMotorTimescale = XRfloat(reader, "AMTIME");
|
vd.m_angularMotorTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_angularMotorDecayTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_angularMotorDecayTimescale()
|
||||||
{
|
{
|
||||||
vd.m_angularMotorDecayTimescale = XRfloat(reader, "AMDTIME");
|
vd.m_angularMotorDecayTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_angularFrictionTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_angularFrictionTimescale()
|
||||||
{
|
{
|
||||||
vd.m_angularFrictionTimescale = XRvector(reader, "AMFTIME");
|
vd.m_angularFrictionTimescale = XRvector();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Deflection properties
|
//Deflection properties
|
||||||
private void ProcessXR_angularDeflectionEfficiency(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_angularDeflectionEfficiency()
|
||||||
{
|
{
|
||||||
vd.m_angularDeflectionEfficiency = XRfloat(reader, "ADEFF");
|
vd.m_angularDeflectionEfficiency = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_angularDeflectionTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_angularDeflectionTimescale()
|
||||||
{
|
{
|
||||||
vd.m_angularDeflectionTimescale = XRfloat(reader, "ADTIME");
|
vd.m_angularDeflectionTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_linearDeflectionEfficiency(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearDeflectionEfficiency()
|
||||||
{
|
{
|
||||||
vd.m_linearDeflectionEfficiency = XRfloat(reader, "LDEFF");
|
vd.m_linearDeflectionEfficiency = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_linearDeflectionTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_linearDeflectionTimescale()
|
||||||
{
|
{
|
||||||
vd.m_linearDeflectionTimescale = XRfloat(reader, "LDTIME");
|
vd.m_linearDeflectionTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Banking properties
|
//Banking properties
|
||||||
private void ProcessXR_bankingEfficiency(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_bankingEfficiency()
|
||||||
{
|
{
|
||||||
vd.m_bankingEfficiency = XRfloat(reader, "BEFF");
|
vd.m_bankingEfficiency = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_bankingMix(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_bankingMix()
|
||||||
{
|
{
|
||||||
vd.m_bankingMix = XRfloat(reader, "BMIX");
|
vd.m_bankingMix = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_bankingTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_bankingTimescale()
|
||||||
{
|
{
|
||||||
vd.m_bankingTimescale = XRfloat(reader, "BTIME");
|
vd.m_bankingTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Hover and Buoyancy properties
|
//Hover and Buoyancy properties
|
||||||
private void ProcessXR_VhoverHeight(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_VhoverHeight()
|
||||||
{
|
{
|
||||||
vd.m_VhoverHeight = XRfloat(reader, "HHEI");
|
vd.m_VhoverHeight = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_VhoverEfficiency(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_VhoverEfficiency()
|
||||||
{
|
{
|
||||||
vd.m_VhoverEfficiency = XRfloat(reader, "HEFF");
|
vd.m_VhoverEfficiency = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_VhoverTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_VhoverTimescale()
|
||||||
{
|
{
|
||||||
vd.m_VhoverTimescale = XRfloat(reader, "HTIME");
|
vd.m_VhoverTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessXR_VehicleBuoyancy(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_VehicleBuoyancy()
|
||||||
{
|
{
|
||||||
vd.m_VehicleBuoyancy = XRfloat(reader, "VBUO");
|
vd.m_VehicleBuoyancy = XRfloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Attractor properties
|
//Attractor properties
|
||||||
private void ProcessXR_verticalAttractionEfficiency(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_verticalAttractionEfficiency()
|
||||||
{
|
{
|
||||||
vd.m_verticalAttractionEfficiency = XRfloat(reader, "VAEFF");
|
vd.m_verticalAttractionEfficiency = XRfloat();
|
||||||
}
|
}
|
||||||
private void ProcessXR_verticalAttractionTimescale(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_verticalAttractionTimescale()
|
||||||
{
|
{
|
||||||
vd.m_verticalAttractionTimescale = XRfloat(reader, "VATIME");
|
vd.m_verticalAttractionTimescale = XRfloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessXR_referenceFrame(VehicleData obj, XmlTextReader reader)
|
private void ProcessXR_referenceFrame()
|
||||||
{
|
{
|
||||||
vd.m_referenceFrame = XRquat(reader, "REF_FRAME");
|
vd.m_referenceFrame = XRquat();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue