* Added GetXml() functions for several of the data types and most all of the prim-related classes
* Added a few FromXml() skeletons with FIXME notes * Teleport example checks the current region name against "" instead of null (we need a callback here) * Got rid of an SLProxy warning with an empty set of brackets git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@631 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -189,7 +189,7 @@ namespace SLProxy {
|
||||
|
||||
// KeepAlive: blocks until the proxy is free to shut down
|
||||
public void KeepAlive() {
|
||||
lock(keepAliveLock);
|
||||
lock (keepAliveLock) { };
|
||||
}
|
||||
|
||||
// SetLoginRequestDelegate: specify a callback loginRequestDelegate that will be called when the client requests login
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -512,7 +512,7 @@ namespace libsecondlife
|
||||
packet.ObjectData.RayTargetID = LLUUID.Zero;
|
||||
packet.ObjectData.BypassRaycast = 1;
|
||||
|
||||
packet.ObjectData.TextureEntry = prim.Textures.ToBytes();
|
||||
packet.ObjectData.TextureEntry = prim.Textures.GetBytes();
|
||||
|
||||
Client.Network.SendPacket(packet, simulator);
|
||||
}
|
||||
|
||||
@@ -9,44 +9,22 @@ namespace libsecondlife
|
||||
/// </summary>
|
||||
public class ParticleSystem
|
||||
{
|
||||
public uint PartStartRGBA;
|
||||
public uint PartEndRGBA;
|
||||
|
||||
public LLVector3 PartStartScale = LLVector3.Zero;
|
||||
public LLVector3 PartEndScale = LLVector3.Zero;
|
||||
|
||||
public float PartMaxAge;
|
||||
public float SrcMaxAge;
|
||||
|
||||
public LLVector3 SrcAccel = LLVector3.Zero;
|
||||
|
||||
public float SrcAngleBegin;
|
||||
public float SrcAngleEnd;
|
||||
|
||||
public int SrcBurstPartCount;
|
||||
public float SrcBurstRadius;
|
||||
public float SrcBurstRate;
|
||||
public float SrcBurstSpeedMin;
|
||||
public float SrcBurstSpeedMax;
|
||||
|
||||
public LLVector3 SrcOmega = LLVector3.Zero;
|
||||
|
||||
public LLUUID SrcTargetKey = LLUUID.Zero;
|
||||
public LLUUID SrcTexture = LLUUID.Zero;
|
||||
|
||||
public SourcePattern SrcPattern;
|
||||
public ParticleFlags PartFlags;
|
||||
|
||||
public uint Version; //???
|
||||
public uint StartTick; //???
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public enum SourcePattern : byte
|
||||
{
|
||||
/// <summary></summary>
|
||||
None = 0,
|
||||
/// <summary></summary>
|
||||
Drop = 0x01,
|
||||
/// <summary></summary>
|
||||
Explode = 0x02,
|
||||
/// <summary></summary>
|
||||
Angle = 0x04,
|
||||
/// <summary></summary>
|
||||
AngleCone = 0x08,
|
||||
/// <summary></summary>
|
||||
AngleConeEmpty = 0x10
|
||||
}
|
||||
|
||||
@@ -56,18 +34,71 @@ namespace libsecondlife
|
||||
[Flags]
|
||||
public enum ParticleFlags : ushort
|
||||
{
|
||||
/// <summary></summary>
|
||||
None = 0,
|
||||
/// <summary></summary>
|
||||
InterpColor = 0x001,
|
||||
/// <summary></summary>
|
||||
InterpScale = 0x002,
|
||||
/// <summary></summary>
|
||||
Bounce = 0x004,
|
||||
/// <summary></summary>
|
||||
Wind = 0x008,
|
||||
/// <summary></summary>
|
||||
FollowSrc = 0x010,
|
||||
/// <summary></summary>
|
||||
FollowVelocity = 0x20,
|
||||
/// <summary></summary>
|
||||
TargetPos = 0x40,
|
||||
/// <summary></summary>
|
||||
TargetLinear = 0x080,
|
||||
/// <summary></summary>
|
||||
Emissive = 0x100
|
||||
}
|
||||
|
||||
/// <summary></summary>
|
||||
public uint PartStartRGBA;
|
||||
/// <summary></summary>
|
||||
public uint PartEndRGBA;
|
||||
/// <summary></summary>
|
||||
public LLVector3 PartStartScale = LLVector3.Zero;
|
||||
/// <summary></summary>
|
||||
public LLVector3 PartEndScale = LLVector3.Zero;
|
||||
/// <summary></summary>
|
||||
public float PartMaxAge;
|
||||
/// <summary></summary>
|
||||
public float SrcMaxAge;
|
||||
/// <summary></summary>
|
||||
public LLVector3 SrcAccel = LLVector3.Zero;
|
||||
/// <summary></summary>
|
||||
public float SrcAngleBegin;
|
||||
/// <summary></summary>
|
||||
public float SrcAngleEnd;
|
||||
/// <summary></summary>
|
||||
public int SrcBurstPartCount;
|
||||
/// <summary></summary>
|
||||
public float SrcBurstRadius;
|
||||
/// <summary></summary>
|
||||
public float SrcBurstRate;
|
||||
/// <summary></summary>
|
||||
public float SrcBurstSpeedMin;
|
||||
/// <summary></summary>
|
||||
public float SrcBurstSpeedMax;
|
||||
/// <summary></summary>
|
||||
public LLVector3 SrcOmega = LLVector3.Zero;
|
||||
/// <summary></summary>
|
||||
public LLUUID SrcTargetKey = LLUUID.Zero;
|
||||
/// <summary>Texture that will be applied to the particles</summary>
|
||||
public LLUUID SrcTexture = LLUUID.Zero;
|
||||
/// <summary></summary>
|
||||
public SourcePattern SrcPattern;
|
||||
/// <summary>Various options that describe the behavior of this system</summary>
|
||||
public ParticleFlags PartFlags;
|
||||
/// <summary>Unknown</summary>
|
||||
public uint Version;
|
||||
/// <summary>Unknown</summary>
|
||||
public uint StartTick;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
@@ -85,6 +116,27 @@ namespace libsecondlife
|
||||
FromBytes(data, pos);
|
||||
}
|
||||
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
byte[] bytes = new byte[0];
|
||||
// FIXME: Finish ParticleSystem.GetBytes()
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
string xml = "<ParticleSystem>";
|
||||
// FIXME: Finish ParticleSystem.GetXml()
|
||||
xml += "</ParticleSystem>";
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Xml;
|
||||
|
||||
namespace libsecondlife
|
||||
{
|
||||
@@ -84,29 +85,29 @@ namespace libsecondlife
|
||||
/// <summary></summary>
|
||||
public int PathTwist = 0;
|
||||
/// <summary></summary>
|
||||
public uint ProfileHollow = 0;
|
||||
/// <summary></summary>
|
||||
public float PathRevolutions = 0;
|
||||
/// <summary></summary>
|
||||
public LLQuaternion Rotation = LLQuaternion.Identity;
|
||||
/// <summary></summary>
|
||||
public uint State;
|
||||
/// <summary></summary>
|
||||
public string Text;
|
||||
/// <summary></summary>
|
||||
public ObjectManager.PCode PCode;
|
||||
/// <summary></summary>
|
||||
public ObjectFlags Flags;
|
||||
/// <summary></summary>
|
||||
public TextureEntry Textures;
|
||||
/// <summary></summary>
|
||||
public TextureAnimation TextureAnim;
|
||||
/// <summary></summary>
|
||||
public uint ProfileHollow = 0;
|
||||
/// <summary></summary>
|
||||
public float PathRevolutions = 0;
|
||||
/// <summary></summary>
|
||||
public LLQuaternion Rotation = LLQuaternion.Identity;
|
||||
/// <summary></summary>
|
||||
public uint State;
|
||||
/// <summary></summary>
|
||||
public string Text;
|
||||
/// <summary></summary>
|
||||
public PrimFlexibleData Flexible;
|
||||
/// <summary></summary>
|
||||
public PrimLightData Light;
|
||||
/// <summary></summary>
|
||||
public ParticleSystem ParticleSys;
|
||||
/// <summary></summary>
|
||||
public ObjectFlags Flags;
|
||||
|
||||
private SecondLife Client;
|
||||
|
||||
@@ -404,22 +405,80 @@ namespace libsecondlife
|
||||
return totalLength;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetXml()
|
||||
{
|
||||
string xml = "<prim>";
|
||||
xml += "<PathTwistBegin value=\"" + PathTwistBegin + "\" />";
|
||||
xml += "<PathEnd value=\"" + PathEnd + "\" />";
|
||||
xml += "<ProfileBegin value=\"" + ProfileBegin + "\" />";
|
||||
xml += "<PathRadiusOffset value=\"" + PathRadiusOffset + "\" />";
|
||||
xml += "<PathSkew value=\"" + PathSkew + "\" />";
|
||||
xml += Position.GetXml("Position");
|
||||
xml += "<ProfileCurve value=\"" + ProfileCurve + "\" />";
|
||||
xml += "<PathScaleX value=\"" + PathScaleX + "\" />";
|
||||
xml += "<PathScaleY value=\"" + PathScaleY + "\" />";
|
||||
xml += "<ID value=\"" + ID.ToString() + "\" />";
|
||||
xml += "<LocalID value=\"" + LocalID + "\" />";
|
||||
xml += "<ParentID value=\"" + ParentID + "\" />";
|
||||
xml += "<GroupID value=\"" + GroupID.ToString() + "\" />";
|
||||
xml += "<Material value=\"" + Material + "\" />";
|
||||
xml += "<Name value=\"" + Name + "\" />";
|
||||
xml += "<Description value=\"" + Description + "\" />";
|
||||
xml += "<PathShearX value=\"" + PathShearX + "\" />";
|
||||
xml += "<PathShearY value=\"" + PathShearY + "\" />";
|
||||
xml += "<PathTaperX value=\"" + PathTaperX + "\" />";
|
||||
xml += "<PathTaperY value=\"" + PathTaperY + "\" />";
|
||||
xml += "<ProfileEnd value=\"" + ProfileEnd + "\" />";
|
||||
xml += "<PathBegin value=\"" + PathBegin + "\" />";
|
||||
xml += "<PathCurve value=\"" + PathCurve + "\" />";
|
||||
xml += Scale.GetXml("Scale");
|
||||
xml += "<PathTwist value=\"" + PathTwist + "\" />";
|
||||
xml += "<ProfileHollow value=\"" + ProfileHollow + "\" />";
|
||||
xml += "<PathRevolutions value=\"" + PathRevolutions + "\" />";
|
||||
xml += Rotation.GetXml("Rotation");
|
||||
xml += "<State value=\"" + State + "\" />";
|
||||
xml += "<Text value=\"" + Text + "\" />";
|
||||
xml += "<PCode value=\"" + PCode + "\" />";
|
||||
xml += "<Flags value=\"" + Flags + "\" />";
|
||||
xml += Textures.GetXml("Textures");
|
||||
xml += TextureAnim.GetXml("TextureAnim");
|
||||
xml += Flexible.GetXml("Flexible");
|
||||
xml += Light.GetXml("Light");
|
||||
xml += ParticleSys.GetXml("ParticleSys");
|
||||
xml += "</prim>";
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="primXml"></param>
|
||||
/// <returns></returns>
|
||||
public static PrimObject FromXml(XmlNode primXml)
|
||||
{
|
||||
// FIXME: Finish PrimObject.FromXml()
|
||||
return null;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string output = "";
|
||||
|
||||
output += (Name != "") ? Name : "Unnamed";
|
||||
output += ": " + ((Description != "") ? Description : "No description") + Environment.NewLine;
|
||||
output += "ID: " + ID + Environment.NewLine;
|
||||
output += "GroupID: " + GroupID + Environment.NewLine;
|
||||
output += "ParentID: " + ParentID + Environment.NewLine;
|
||||
output += "LocalID: " + LocalID + Environment.NewLine;
|
||||
output += "Flags: " + Flags + Environment.NewLine;
|
||||
output += "State: " + State + Environment.NewLine;
|
||||
output += "PCode: " + PCode + Environment.NewLine;
|
||||
output += "Material: " + Material + Environment.NewLine;
|
||||
output += "PathBegin: " + PathBegin + Environment.NewLine;
|
||||
output += "PathEnd: " + PathEnd + Environment.NewLine;
|
||||
output += (Name.Length != 0) ? Name : "Unnamed";
|
||||
output += ": " + ((Description.Length != 0) ? Description : "No description") + Environment.NewLine;
|
||||
output += "ID: " + ID + ", ";
|
||||
output += "GroupID: " + GroupID + ", ";
|
||||
output += "ParentID: " + ParentID + ", ";
|
||||
output += "LocalID: " + LocalID + ", ";
|
||||
output += "Flags: " + Flags + ", ";
|
||||
output += "State: " + State + ", ";
|
||||
output += "PCode: " + PCode + ", ";
|
||||
output += "Material: " + Material + ", ";
|
||||
|
||||
return output;
|
||||
}
|
||||
@@ -489,7 +548,7 @@ namespace libsecondlife
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public byte[] ToBytes()
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
byte[] data = new byte[16];
|
||||
int i = 0;
|
||||
@@ -519,6 +578,24 @@ namespace libsecondlife
|
||||
Wind = data[i++] / 10.0f;
|
||||
Force = new LLVector3(data, i);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
string xml = "<" + name + ">";
|
||||
xml += "<Softness value=\"" + Softness + "\" >";
|
||||
xml += "<Tension value=\"" + Tension + "\" >";
|
||||
xml += "<Drag value=\"" + Drag + "\" >";
|
||||
xml += "<Gravity value=\"" + Gravity + "\" >";
|
||||
xml += "<Wind value=\"" + Wind + "\" >";
|
||||
xml += "</" + name + ">";
|
||||
|
||||
return xml;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -556,7 +633,7 @@ namespace libsecondlife
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public byte[] ToBytes()
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
byte[] data = new byte[16];
|
||||
int i = 0;
|
||||
@@ -578,6 +655,23 @@ namespace libsecondlife
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
string xml = "<" + name + ">";
|
||||
xml += "<Color X=\"" + R + "\" Y=\"" + G + "\" Z=\"" + B + "\" />";
|
||||
xml += "<Intensity value=\"" + Intensity + "\" />";
|
||||
xml += "<Radius value=\"" + Radius + "\" />";
|
||||
xml += "<Falloff value=\"" + Falloff + "\" />";
|
||||
xml += "</" + name + ">";
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
private void FromBytes(byte[] data, int pos)
|
||||
{
|
||||
int i = pos;
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace libsecondlife
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public byte[] ToBytes()
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
if (DefaultTexture == null)
|
||||
{
|
||||
@@ -248,7 +248,7 @@ namespace libsecondlife
|
||||
binWriter.Write(DefaultTexture.TextureID.Data);
|
||||
foreach (KeyValuePair<LLUUID, uint> kv in TextureIDs)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key.Data);
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ namespace libsecondlife
|
||||
binWriter.Write(DefaultTexture.RGBA);
|
||||
foreach (KeyValuePair<uint, uint> kv in RGBAs)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ namespace libsecondlife
|
||||
binWriter.Write(RepeatShort(DefaultTexture.RepeatU));
|
||||
foreach (KeyValuePair<short, uint> kv in RepeatUs)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -272,7 +272,7 @@ namespace libsecondlife
|
||||
binWriter.Write(RepeatShort(DefaultTexture.RepeatV));
|
||||
foreach (KeyValuePair<short, uint> kv in RepeatVs)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ namespace libsecondlife
|
||||
binWriter.Write(OffsetShort(DefaultTexture.OffsetU));
|
||||
foreach (KeyValuePair<short, uint> kv in OffsetUs)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ namespace libsecondlife
|
||||
binWriter.Write(OffsetShort(DefaultTexture.OffsetV));
|
||||
foreach (KeyValuePair<short, uint> kv in OffsetVs)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@ namespace libsecondlife
|
||||
binWriter.Write(RotationShort(DefaultTexture.Rotation));
|
||||
foreach (KeyValuePair<short, uint> kv in Rotations)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ namespace libsecondlife
|
||||
binWriter.Write(DefaultTexture.Flags1);
|
||||
foreach (KeyValuePair<byte, uint> kv in Flag1s)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
@@ -312,14 +312,14 @@ namespace libsecondlife
|
||||
binWriter.Write(DefaultTexture.Flags2);
|
||||
foreach (KeyValuePair<byte, uint> kv in Flag2s)
|
||||
{
|
||||
binWriter.Write(FaceBitfieldToBytes(kv.Value));
|
||||
binWriter.Write(GetFaceBitfieldBytes(kv.Value));
|
||||
binWriter.Write(kv.Key);
|
||||
}
|
||||
|
||||
return memStream.GetBuffer();
|
||||
}
|
||||
|
||||
private byte[] FaceBitfieldToBytes(uint bitfield)
|
||||
private byte[] GetFaceBitfieldBytes(uint bitfield)
|
||||
{
|
||||
int byteLength = 0;
|
||||
uint tmpBitfield = bitfield;
|
||||
@@ -342,6 +342,20 @@ namespace libsecondlife
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
string xml = "<TextureEntry>";
|
||||
// FIXME: Write GetXml for TextureEntry
|
||||
xml += "</TextureEntry>";
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
private bool ReadFaceBitfield(byte[] data, ref int pos, ref uint faceBits, ref uint bitfieldSize)
|
||||
{
|
||||
faceBits = 0;
|
||||
@@ -792,12 +806,33 @@ namespace libsecondlife
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public byte[] ToBytes()
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
byte[] bytes = new byte[0];
|
||||
// FIXME: Finish TextureAnimation GetBytes() function
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
string xml = "<TextureAnimation>";
|
||||
xml += "<Flags>" + Flags + "</Flags>";
|
||||
xml += "<Face>" + Face + "</Face>";
|
||||
xml += "<SizeX>" + SizeX + "</SizeX>";
|
||||
xml += "<SizeY>" + SizeY + "</SizeY>";
|
||||
xml += "<Start>" + Start + "</Start>";
|
||||
xml += "<Length>" + Length + "</Length>";
|
||||
xml += "<Rate>" + Rate + "</Rate>";
|
||||
xml += "</TextureAnimation>";
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
private void FromBytes(byte[] data, int pos)
|
||||
{
|
||||
int i = pos;
|
||||
|
||||
@@ -346,6 +346,16 @@ namespace libsecondlife
|
||||
return byteArray;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert to a single xml node
|
||||
/// </summary>
|
||||
/// <param name="name">The desired name of the xml node</param>
|
||||
/// <returns>A line of xml data containing the values for this data type</returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
return "<" + name + " x=\"" + X + "\" y=\"" + Y + "\" z=\"" + Z + "\" />";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
@@ -746,6 +756,16 @@ namespace libsecondlife
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert to a single xml node
|
||||
/// </summary>
|
||||
/// <param name="name">The desired name of the xml node</param>
|
||||
/// <returns>A line of xml data containing the values for this data type</returns>
|
||||
public string GetXml(string name)
|
||||
{
|
||||
return "<" + name + " x=\"" + X + "\" y=\"" + Y + "\" z=\"" + Z + "\" w=\"" + W + "\" />";
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
float sum = X + Y + Z + W;
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Teleport
|
||||
if (success)
|
||||
{
|
||||
// Get the current sim name
|
||||
while (app.Client.Network.CurrentSim.Region.Name == null)
|
||||
while (app.Client.Network.CurrentSim.Region.Name == "")
|
||||
{
|
||||
System.Threading.Thread.Sleep(100);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user