diff --git a/libsecondlife-cs/ParticleSystem.cs b/libsecondlife-cs/ParticleSystem.cs
index 567c557a..0fabd534 100644
--- a/libsecondlife-cs/ParticleSystem.cs
+++ b/libsecondlife-cs/ParticleSystem.cs
@@ -17,23 +17,17 @@ namespace libsecondlife
public enum SourcePattern : byte
{
///
- [XmlEnum("None")]
- None = 0,
+ [XmlEnum("None")] None = 0,
///
- [XmlEnum("Drop")]
- Drop = 0x01,
+ [XmlEnum("Drop")] Drop = 0x01,
///
- [XmlEnum("Explode")]
- Explode = 0x02,
+ [XmlEnum("Explode")] Explode = 0x02,
///
- [XmlEnum("Angle")]
- Angle = 0x04,
+ [XmlEnum("Angle")] Angle = 0x04,
///
- [XmlEnum("AngleCone")]
- AngleCone = 0x08,
+ [XmlEnum("AngleCone")] AngleCone = 0x08,
///
- [XmlEnum("AngleConeEmpty")]
- AngleConeEmpty = 0x10
+ [XmlEnum("AngleConeEmpty")] AngleConeEmpty = 0x10
}
///
@@ -65,50 +59,39 @@ namespace libsecondlife
}
///
- [XmlAttribute]
- public uint PartStartRGBA;
+ [XmlAttribute] public uint PartStartRGBA;
///
- [XmlAttribute]
- public uint PartEndRGBA;
+ [XmlAttribute] public uint PartEndRGBA;
///
- [XmlAttribute]
- public float PartMaxAge;
+ [XmlAttribute] public float PartMaxAge;
///
- [XmlAttribute]
- public float SrcMaxAge;
+ [XmlAttribute] public float SrcMaxAge;
///
- [XmlAttribute]
- public float SrcAngleBegin;
+ [XmlAttribute] public float SrcAngleBegin;
///
- [XmlAttribute]
- public float SrcAngleEnd;
+ [XmlAttribute] public float SrcAngleEnd;
///
- [XmlAttribute]
- public int SrcBurstPartCount;
+ [XmlAttribute] public int SrcBurstPartCount;
///
- [XmlAttribute]
- public float SrcBurstRadius;
+ [XmlAttribute] public float SrcBurstRadius;
///
- [XmlAttribute]
- public float SrcBurstRate;
+ [XmlAttribute] public float SrcBurstRate;
///
- [XmlAttribute]
- public float SrcBurstSpeedMin;
+ [XmlAttribute] public float SrcBurstSpeedMin;
///
- [XmlAttribute]
- public float SrcBurstSpeedMax;
+ [XmlAttribute] public float SrcBurstSpeedMax;
/// Unknown
- [XmlAttribute]
- public uint Version;
+ [XmlAttribute] public uint Version;
/// Unknown
- [XmlAttribute]
- public uint StartTick;
+ [XmlAttribute] public uint StartTick;
///
- [XmlAttribute]
- public SourcePattern SrcPattern;
+ [XmlAttribute] public SourcePattern SrcPattern;
/// Various options that describe the behavior of this system
- [XmlAttribute]
- public ParticleFlags PartFlags;
+ [XmlAttribute] public ParticleFlags PartFlags;
+ ///
+ public LLUUID SrcTargetKey = LLUUID.Zero;
+ /// Texture that will be applied to the particles
+ public LLUUID SrcTexture = LLUUID.Zero;
///
public LLVector3 PartStartScale = LLVector3.Zero;
///
@@ -117,10 +100,6 @@ namespace libsecondlife
public LLVector3 SrcAccel = LLVector3.Zero;
///
public LLVector3 SrcOmega = LLVector3.Zero;
- ///
- public LLUUID SrcTargetKey = LLUUID.Zero;
- /// Texture that will be applied to the particles
- public LLUUID SrcTexture = LLUUID.Zero;
///
///
diff --git a/libsecondlife-cs/Prims.cs b/libsecondlife-cs/Prims.cs
index 5aaf3645..4541d90d 100644
--- a/libsecondlife-cs/Prims.cs
+++ b/libsecondlife-cs/Prims.cs
@@ -88,11 +88,9 @@ namespace libsecondlife
public enum ExtraParamType : ushort
{
/// Whether this object has flexible parameters
- [XmlEnum("Flexible")]
- Flexible = 0x10,
+ [XmlEnum("Flexible")] Flexible = 0x10,
/// Whether this object has light parameters
- [XmlEnum("Light")]
- Light = 0x20
+ [XmlEnum("Light")] Light = 0x20
}
///
@@ -102,86 +100,59 @@ namespace libsecondlife
public class PrimObject
{
///
- [XmlAttribute]
- public int PathTwistBegin = 0;
+ [XmlAttribute] public int PathTwistBegin = 0;
///
- [XmlAttribute]
- public float PathEnd = 0;
+ [XmlAttribute] public float PathEnd = 0;
///
- [XmlAttribute]
- public float ProfileBegin = 0;
+ [XmlAttribute] public float ProfileBegin = 0;
///
- [XmlAttribute]
- public float PathRadiusOffset = 0;
+ [XmlAttribute] public float PathRadiusOffset = 0;
///
- [XmlAttribute]
- public float PathSkew = 0;
+ [XmlAttribute] public float PathSkew = 0;
///
- [XmlAttribute]
- public uint ProfileCurve = 0;
+ [XmlAttribute] public uint ProfileCurve = 0;
///
- [XmlAttribute]
- public float PathScaleX = 0;
+ [XmlAttribute] public float PathScaleX = 0;
///
- [XmlAttribute]
- public float PathScaleY = 0;
+ [XmlAttribute] public float PathScaleY = 0;
///
- [XmlAttribute]
- public uint LocalID = 0;
+ [XmlAttribute] public uint LocalID = 0;
///
- [XmlAttribute]
- public uint ParentID = 0;
+ [XmlAttribute] public uint ParentID = 0;
///
- [XmlAttribute]
- public uint Material = 0;
+ [XmlAttribute] public uint Material = 0;
///
- [XmlAttribute]
- public string Name = "";
+ [XmlAttribute] public string Name = "";
///
- [XmlAttribute]
- public string Description = "";
+ [XmlAttribute] public string Description = "";
///
- [XmlAttribute]
- public float PathShearX = 0;
+ [XmlAttribute] public float PathShearX = 0;
///
- [XmlAttribute]
- public float PathShearY = 0;
+ [XmlAttribute] public float PathShearY = 0;
///
- [XmlAttribute]
- public float PathTaperX = 0;
+ [XmlAttribute] public float PathTaperX = 0;
///
- [XmlAttribute]
- public float PathTaperY = 0;
+ [XmlAttribute] public float PathTaperY = 0;
///
- [XmlAttribute]
- public float ProfileEnd = 0;
+ [XmlAttribute] public float ProfileEnd = 0;
///
- [XmlAttribute]
- public float PathBegin = 0;
+ [XmlAttribute] public float PathBegin = 0;
///
- [XmlAttribute]
- public uint PathCurve = 0;
+ [XmlAttribute] public uint PathCurve = 0;
///
- [XmlAttribute]
- public int PathTwist = 0;
+ [XmlAttribute] public int PathTwist = 0;
///
- [XmlAttribute]
- public uint ProfileHollow = 0;
+ [XmlAttribute] public uint ProfileHollow = 0;
///
- [XmlAttribute]
- public float PathRevolutions = 0;
+ [XmlAttribute] public float PathRevolutions = 0;
///
- [XmlAttribute]
- public uint State;
+ [XmlAttribute] public uint State;
///
- [XmlAttribute]
- public string Text;
+ [XmlAttribute] public string Text;
///
- [XmlAttribute]
- public ObjectManager.PCode PCode = ObjectManager.PCode.Prim;
+ [field:NonSerialized] public ObjectManager.PCode PCode = ObjectManager.PCode.Prim;
///
- [XmlAttribute]
- public ulong RegionHandle;
+ [XmlAttribute] public ulong RegionHandle;
///
public LLUUID ID = LLUUID.Zero;
///
@@ -519,15 +490,15 @@ namespace libsecondlife
public class PrimFlexibleData
{
///
- public int Softness;
+ [XmlAttribute] public int Softness;
///
- public float Gravity;
+ [XmlAttribute] public float Gravity;
///
- public float Drag;
+ [XmlAttribute] public float Drag;
///
- public float Wind;
+ [XmlAttribute] public float Wind;
///
- public float Tension;
+ [XmlAttribute] public float Tension;
///
public LLVector3 Force = LLVector3.Zero;
@@ -591,13 +562,17 @@ namespace libsecondlife
public class PrimLightData
{
///
- public byte R, G, B;
+ [XmlAttribute] public byte R;
///
- public float Intensity;
+ [XmlAttribute] public byte G;
///
- public float Radius;
+ [XmlAttribute] public byte B;
///
- public float Falloff;
+ [XmlAttribute] public float Intensity;
+ ///
+ [XmlAttribute] public float Radius;
+ ///
+ [XmlAttribute] public float Falloff;
///
///
diff --git a/libsecondlife-cs/Textures.cs b/libsecondlife-cs/Textures.cs
index 9982a836..c9c87b48 100644
--- a/libsecondlife-cs/Textures.cs
+++ b/libsecondlife-cs/Textures.cs
@@ -591,7 +591,19 @@ namespace libsecondlife
[Serializable]
public class TextureEntryFace
{
- [Flags]
+ [XmlAttribute] protected uint rgba;
+ [XmlAttribute] protected float repeatU;
+ [XmlAttribute] protected float repeatV;
+ [XmlAttribute] protected float offsetU;
+ [XmlAttribute] protected float offsetV;
+ [XmlAttribute] protected float rotation;
+ [XmlAttribute] protected byte flags1;
+ [XmlAttribute] protected byte flags2;
+ protected LLUUID textureID;
+ protected TextureAttributes hasAttribute;
+ protected TextureEntryFace DefaultTexture;
+
+ [Flags, Serializable]
public enum TextureAttributes : uint
{
None = 0,
@@ -635,13 +647,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.TextureID) != 0)
- return _TextureID;
+ return textureID;
else
- return DefaultTexture._TextureID;
+ return DefaultTexture.textureID;
}
set
{
- _TextureID = value;
+ textureID = value;
hasAttribute |= TextureAttributes.TextureID;
}
}
@@ -654,13 +666,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.RGBA) != 0)
- return _RGBA;
+ return rgba;
else
- return DefaultTexture._RGBA;
+ return DefaultTexture.rgba;
}
set
{
- _RGBA = value;
+ rgba = value;
hasAttribute |= TextureAttributes.RGBA;
}
}
@@ -673,13 +685,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.RepeatU) != 0)
- return _RepeatU;
+ return repeatU;
else
- return DefaultTexture._RepeatU;
+ return DefaultTexture.repeatU;
}
set
{
- _RepeatU = value;
+ repeatU = value;
hasAttribute |= TextureAttributes.RepeatU;
}
}
@@ -692,13 +704,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.RepeatV) != 0)
- return _RepeatV;
+ return repeatV;
else
- return DefaultTexture._RepeatV;
+ return DefaultTexture.repeatV;
}
set
{
- _RepeatV = value;
+ repeatV = value;
hasAttribute |= TextureAttributes.RepeatV;
}
}
@@ -711,13 +723,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.OffsetU) != 0)
- return _OffsetU;
+ return offsetU;
else
- return DefaultTexture._OffsetU;
+ return DefaultTexture.offsetU;
}
set
{
- _OffsetU = value;
+ offsetU = value;
hasAttribute |= TextureAttributes.OffsetU;
}
}
@@ -730,13 +742,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.OffsetV) != 0)
- return _OffsetV;
+ return offsetV;
else
- return DefaultTexture._OffsetV;
+ return DefaultTexture.offsetV;
}
set
{
- _OffsetV = value;
+ offsetV = value;
hasAttribute |= TextureAttributes.OffsetV;
}
}
@@ -749,13 +761,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.Rotation) != 0)
- return _Rotation;
+ return rotation;
else
- return DefaultTexture._Rotation;
+ return DefaultTexture.rotation;
}
set
{
- _Rotation = value;
+ rotation = value;
hasAttribute |= TextureAttributes.Rotation;
}
}
@@ -768,13 +780,13 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.Flags1) != 0)
- return _Flags1;
+ return flags1;
else
- return DefaultTexture._Flags1;
+ return DefaultTexture.flags1;
}
set
{
- _Flags1 = value;
+ flags1 = value;
hasAttribute |= TextureAttributes.Flags1;
}
}
@@ -787,28 +799,16 @@ namespace libsecondlife
get
{
if ((hasAttribute & TextureAttributes.Flags2) != 0)
- return _Flags2;
+ return flags2;
else
- return DefaultTexture._Flags2;
+ return DefaultTexture.flags2;
}
set
{
- _Flags2 = value;
+ flags2 = value;
hasAttribute |= TextureAttributes.Flags2;
}
}
-
- private TextureAttributes hasAttribute;
- private TextureEntryFace DefaultTexture;
- private LLUUID _TextureID;
- private uint _RGBA;
- private float _RepeatU;
- private float _RepeatV;
- private float _OffsetU;
- private float _OffsetV;
- private float _Rotation;
- private byte _Flags1;
- private byte _Flags2;
}
///
@@ -818,19 +818,19 @@ namespace libsecondlife
public class TextureAnimation
{
///
- public uint Flags;
+ [XmlAttribute] public uint Flags;
///
- public uint Face;
+ [XmlAttribute] public uint Face;
///
- public uint SizeX;
+ [XmlAttribute] public uint SizeX;
///
- public uint SizeY;
+ [XmlAttribute] public uint SizeY;
///
- public float Start;
+ [XmlAttribute] public float Start;
///
- public float Length;
+ [XmlAttribute] public float Length;
///
- public float Rate;
+ [XmlAttribute] public float Rate;
///
/// Default constructor
diff --git a/libsecondlife-cs/Types.cs b/libsecondlife-cs/Types.cs
index ba4ffeb5..cd4938d2 100644
--- a/libsecondlife-cs/Types.cs
+++ b/libsecondlife-cs/Types.cs
@@ -35,22 +35,21 @@ namespace libsecondlife
/// Life networking protocol
///
[XmlRoot("uuid")]
- public class LLUUID
+ public class LLUUID : IXmlSerializable
{
+ /// The 16 bytes that make up the UUID
+ protected byte[] data = new byte[16];
/// Get a byte array of the 16 raw bytes making up the UUID
public byte[] Data
{
get { return data; }
}
- private byte[] data = null;
-
///
///
///
public LLUUID()
{
- data = new byte[16];
}
///
@@ -59,8 +58,6 @@ namespace libsecondlife
///
public LLUUID(string val)
{
- data = new byte[16];
-
if (val.Length == 36) val = val.Replace("-", "");
if (val.Length != 32) throw new Exception("Malformed data passed to LLUUID constructor: " + val);
@@ -78,8 +75,6 @@ namespace libsecondlife
///
public LLUUID(byte[] byteArray, int pos)
{
- data = new byte[16];
-
Array.Copy(byteArray, pos, data, 0, 16);
}
@@ -127,6 +122,40 @@ namespace libsecondlife
return new LLUUID(Guid.NewGuid().ToByteArray(), 0);
}
+ ///
+ ///
+ ///
+ ///
+ public System.Xml.Schema.XmlSchema GetSchema()
+ {
+ return null;
+ }
+
+ public void ReadXml(System.Xml.XmlReader reader)
+ {
+ //reader.ReadStartElement("uuid");
+ string val = reader.ReadString();
+
+ if (val.Length == 36) val = val.Replace("-", "");
+
+ if (val.Length != 32) throw new Exception("Malformed data passed to LLUUID constructor: " + val);
+
+ for (int i = 0; i < 16; ++i)
+ {
+ data[i] = Convert.ToByte(val.Substring(i * 2, 2), 16);
+ }
+
+ //reader.ReadEndElement();
+ //reader.MoveToContent();
+ }
+
+ public void WriteXml(System.Xml.XmlWriter writer)
+ {
+ //writer.WriteStartElement("uuid");
+ writer.WriteString(this.ToString());
+ //writer.WriteEndElement();
+ }
+
///
///
///
@@ -271,11 +300,11 @@ namespace libsecondlife
public class LLVector3
{
///
- public float X;
+ [XmlAttribute] public float X;
///
- public float Y;
+ [XmlAttribute] public float Y;
///
- public float Z;
+ [XmlAttribute] public float Z;
///
///
@@ -458,11 +487,11 @@ namespace libsecondlife
public class LLVector3d
{
///
- public double X;
+ [XmlAttribute] public double X;
///
- public double Y;
+ [XmlAttribute] public double Y;
///
- public double Z;
+ [XmlAttribute] public double Z;
///
///
@@ -546,13 +575,13 @@ namespace libsecondlife
public class LLVector4
{
///
- public float X;
+ [XmlAttribute] public float X;
///
- public float Y;
+ [XmlAttribute] public float Y;
///
- public float Z;
+ [XmlAttribute] public float Z;
///
- public float S;
+ [XmlAttribute] public float S;
///
///
@@ -627,13 +656,13 @@ namespace libsecondlife
public class LLQuaternion
{
///
- public float X;
+ [XmlAttribute] public float X;
///
- public float Y;
+ [XmlAttribute] public float Y;
///
- public float Z;
+ [XmlAttribute] public float Z;
///
- public float W;
+ [XmlAttribute] public float W;
///
///
diff --git a/libsecondlife-cs/examples/TestClient/Commands/ExportCommand.cs b/libsecondlife-cs/examples/TestClient/Commands/ExportCommand.cs
index fb0d4e06..f1affd28 100644
--- a/libsecondlife-cs/examples/TestClient/Commands/ExportCommand.cs
+++ b/libsecondlife-cs/examples/TestClient/Commands/ExportCommand.cs
@@ -52,7 +52,7 @@ namespace libsecondlife.TestClient
return ret;
}
- return "";
+ return "Exported " + id.ToString() + " to " + file;
}
}