aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMW2007-04-26 12:56:14 +0000
committerMW2007-04-26 12:56:14 +0000
commitc64039363daf90b37ddbeaa95b2516f0020c3f06 (patch)
treeadb7896607eaeb264eecd2718862ec08021a84ff
parentattempted bug fix (diff)
downloadopensim-SC-c64039363daf90b37ddbeaa95b2516f0020c3f06.zip
opensim-SC-c64039363daf90b37ddbeaa95b2516f0020c3f06.tar.gz
opensim-SC-c64039363daf90b37ddbeaa95b2516f0020c3f06.tar.bz2
opensim-SC-c64039363daf90b37ddbeaa95b2516f0020c3f06.tar.xz
Mostly working again.
Updated to lastest libsl and handled the changes to the message templates (some byte fields are now ushort fields ). Still seems to be a problem when logging on, in that I get the downloading clothing message at the end of the precaching (which I didn't before)
Diffstat (limited to '')
-rw-r--r--OpenSim.Framework/Types/PrimData.cs35
-rw-r--r--OpenSim.RegionServer/world/Avatar.cs40
-rw-r--r--OpenSim.RegionServer/world/AvatarUpdate.cs3
-rw-r--r--OpenSim.RegionServer/world/World.cs2
-rw-r--r--OpenSim.sln242
-rw-r--r--bin/avatar-template2.datbin0 -> 76 bytes
-rw-r--r--bin/libsecondlife.dllbin2134016 -> 2134016 bytes
7 files changed, 153 insertions, 169 deletions
diff --git a/OpenSim.Framework/Types/PrimData.cs b/OpenSim.Framework/Types/PrimData.cs
index 9b41a12..6c9bb83 100644
--- a/OpenSim.Framework/Types/PrimData.cs
+++ b/OpenSim.Framework/Types/PrimData.cs
@@ -11,20 +11,20 @@ namespace OpenSim.Framework.Types
11 11
12 public LLUUID OwnerID; 12 public LLUUID OwnerID;
13 public byte PCode; 13 public byte PCode;
14 public byte PathBegin; 14 public ushort PathBegin;
15 public byte PathEnd; 15 public ushort PathEnd;
16 public byte PathScaleX; 16 public byte PathScaleX;
17 public byte PathScaleY; 17 public byte PathScaleY;
18 public byte PathShearX; 18 public byte PathShearX;
19 public byte PathShearY; 19 public byte PathShearY;
20 public sbyte PathSkew; 20 public sbyte PathSkew;
21 public byte ProfileBegin; 21 public ushort ProfileBegin;
22 public byte ProfileEnd; 22 public ushort ProfileEnd;
23 public LLVector3 Scale; 23 public LLVector3 Scale;
24 public byte PathCurve; 24 public byte PathCurve;
25 public byte ProfileCurve; 25 public byte ProfileCurve;
26 public uint ParentID = 0; 26 public uint ParentID = 0;
27 public byte ProfileHollow; 27 public ushort ProfileHollow;
28 public sbyte PathRadiusOffset; 28 public sbyte PathRadiusOffset;
29 public byte PathRevolutions; 29 public byte PathRevolutions;
30 public sbyte PathTaperX; 30 public sbyte PathTaperX;
@@ -58,20 +58,20 @@ namespace OpenSim.Framework.Types
58 58
59 this.OwnerID = new LLUUID(data, i); i += 16; 59 this.OwnerID = new LLUUID(data, i); i += 16;
60 this.PCode = data[i++]; 60 this.PCode = data[i++];
61 this.PathBegin = data[i++]; 61 this.PathBegin = (ushort)(data[i++] + (data[i++] << 8));
62 this.PathEnd = data[i++]; 62 this.PathEnd = (ushort)(data[i++] + (data[i++] << 8));
63 this.PathScaleX = data[i++]; 63 this.PathScaleX = data[i++];
64 this.PathScaleY = data[i++]; 64 this.PathScaleY = data[i++];
65 this.PathShearX = data[i++]; 65 this.PathShearX = data[i++];
66 this.PathShearY = data[i++]; 66 this.PathShearY = data[i++];
67 this.PathSkew = (sbyte)data[i++]; 67 this.PathSkew = (sbyte)data[i++];
68 this.ProfileBegin = data[i++]; 68 this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8));
69 this.ProfileEnd = data[i++]; 69 this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8));
70 this.Scale = new LLVector3(data, i); i += 12; 70 this.Scale = new LLVector3(data, i); i += 12;
71 this.PathCurve = data[i++]; 71 this.PathCurve = data[i++];
72 this.ProfileCurve = data[i++]; 72 this.ProfileCurve = data[i++];
73 this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); 73 this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
74 this.ProfileHollow = data[i++]; 74 this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8));
75 this.PathRadiusOffset = (sbyte)data[i++]; 75 this.PathRadiusOffset = (sbyte)data[i++];
76 this.PathRevolutions = data[i++]; 76 this.PathRevolutions = data[i++];
77 this.PathTaperX = (sbyte)data[i++]; 77 this.PathTaperX = (sbyte)data[i++];
@@ -100,15 +100,19 @@ namespace OpenSim.Framework.Types
100 byte[] bytes = new byte[121 + Texture.Length]; 100 byte[] bytes = new byte[121 + Texture.Length];
101 Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16; 101 Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16;
102 bytes[i++] = this.PCode; 102 bytes[i++] = this.PCode;
103 bytes[i++] = this.PathBegin; 103 bytes[i++] = (byte)(this.PathBegin % 256);
104 bytes[i++] = this.PathEnd; 104 bytes[i++] = (byte)((this.PathBegin >> 8) % 256);
105 bytes[i++] = (byte)(this.PathEnd % 256);
106 bytes[i++] = (byte)((this.PathEnd >> 8) % 256);
105 bytes[i++] = this.PathScaleX; 107 bytes[i++] = this.PathScaleX;
106 bytes[i++] = this.PathScaleY; 108 bytes[i++] = this.PathScaleY;
107 bytes[i++] = this.PathShearX; 109 bytes[i++] = this.PathShearX;
108 bytes[i++] = this.PathShearY; 110 bytes[i++] = this.PathShearY;
109 bytes[i++] = (byte)this.PathSkew; 111 bytes[i++] = (byte)this.PathSkew;
110 bytes[i++] = this.ProfileBegin; 112 bytes[i++] = (byte)(this.ProfileBegin % 256);
111 bytes[i++] = this.ProfileEnd; 113 bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256);
114 bytes[i++] = (byte)(this.ProfileEnd % 256);
115 bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256);
112 Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12; 116 Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12;
113 bytes[i++] = this.PathCurve; 117 bytes[i++] = this.PathCurve;
114 bytes[i++] = this.ProfileCurve; 118 bytes[i++] = this.ProfileCurve;
@@ -116,7 +120,8 @@ namespace OpenSim.Framework.Types
116 bytes[i++] = (byte)((ParentID >> 8) % 256); 120 bytes[i++] = (byte)((ParentID >> 8) % 256);
117 bytes[i++] = (byte)((ParentID >> 16) % 256); 121 bytes[i++] = (byte)((ParentID >> 16) % 256);
118 bytes[i++] = (byte)((ParentID >> 24) % 256); 122 bytes[i++] = (byte)((ParentID >> 24) % 256);
119 bytes[i++] = this.ProfileHollow; 123 bytes[i++] = (byte)(this.ProfileHollow %256);
124 bytes[i++] = (byte)((this.ProfileHollow >> 8)% 256);
120 bytes[i++] = ((byte)this.PathRadiusOffset); 125 bytes[i++] = ((byte)this.PathRadiusOffset);
121 bytes[i++] = this.PathRevolutions; 126 bytes[i++] = this.PathRevolutions;
122 bytes[i++] = ((byte) this.PathTaperX); 127 bytes[i++] = ((byte) this.PathTaperX);
diff --git a/OpenSim.RegionServer/world/Avatar.cs b/OpenSim.RegionServer/world/Avatar.cs
index df7d5ba..917c893 100644
--- a/OpenSim.RegionServer/world/Avatar.cs
+++ b/OpenSim.RegionServer/world/Avatar.cs
@@ -102,7 +102,7 @@ namespace OpenSim.world
102 102
103 public static void SetupTemplate(string name) 103 public static void SetupTemplate(string name)
104 { 104 {
105 int i = 0; 105 int i = 0;
106 FileInfo fInfo = new FileInfo(name); 106 FileInfo fInfo = new FileInfo(name);
107 long numBytes = fInfo.Length; 107 long numBytes = fInfo.Length;
108 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read); 108 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read);
@@ -111,8 +111,19 @@ namespace OpenSim.world
111 br.Close(); 111 br.Close();
112 fStream.Close(); 112 fStream.Close();
113 113
114 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i); 114 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
115 115
116 SetDefaultPacketValues(objdata);
117 objdata.ObjectData = data1;
118 objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
119 objdata.PathCurve = 16;
120 objdata.ProfileCurve = 1;
121 objdata.PathScaleX = 100;
122 objdata.PathScaleY = 100;
123 objdata.ParentID = 0;
124 objdata.OwnerID = LLUUID.Zero;
125 objdata.Scale = new LLVector3(1, 1, 1);
126 objdata.PCode = 47;
116 System.Text.Encoding enc = System.Text.Encoding.ASCII; 127 System.Text.Encoding enc = System.Text.Encoding.ASCII;
117 libsecondlife.LLVector3 pos = new LLVector3(objdata.ObjectData, 16); 128 libsecondlife.LLVector3 pos = new LLVector3(objdata.ObjectData, 16);
118 pos.X = 100f; 129 pos.X = 100f;
@@ -126,6 +137,29 @@ namespace OpenSim.world
126 Avatar.AvatarTemplate = objdata; 137 Avatar.AvatarTemplate = objdata;
127 } 138 }
128 139
140 protected static void SetDefaultPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata)
141 {
142 objdata.PSBlock = new byte[0];
143 objdata.ExtraParams = new byte[1];
144 objdata.MediaURL = new byte[0];
145 objdata.NameValue = new byte[0];
146 objdata.Text = new byte[0];
147 objdata.TextColor = new byte[4];
148 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
149 objdata.JointPivot = new LLVector3(0, 0, 0);
150 objdata.Material = 4;
151 objdata.TextureAnim = new byte[0];
152 objdata.Sound = LLUUID.Zero;
153 LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
154 objdata.TextureEntry = ntex.ToBytes();
155 objdata.State = 0;
156 objdata.Data = new byte[0];
157
158 objdata.ObjectData = new byte[60];
159 objdata.ObjectData[46] = 128;
160 objdata.ObjectData[47] = 63;
161 }
162
129 public void CompleteMovement(World RegionInfo) 163 public void CompleteMovement(World RegionInfo)
130 { 164 {
131 OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs:CompleteMovement() - Constructing AgentMovementComplete packet"); 165 OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs:CompleteMovement() - Constructing AgentMovementComplete packet");
diff --git a/OpenSim.RegionServer/world/AvatarUpdate.cs b/OpenSim.RegionServer/world/AvatarUpdate.cs
index 34d032c..ba2965d 100644
--- a/OpenSim.RegionServer/world/AvatarUpdate.cs
+++ b/OpenSim.RegionServer/world/AvatarUpdate.cs
@@ -124,9 +124,9 @@ namespace OpenSim.world
124 objupdate.RegionData.RegionHandle = m_regionHandle; 124 objupdate.RegionData.RegionHandle = m_regionHandle;
125 objupdate.RegionData.TimeDilation = 64096; 125 objupdate.RegionData.TimeDilation = 64096;
126 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; 126 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
127
128 objupdate.ObjectData[0] = AvatarTemplate; 127 objupdate.ObjectData[0] = AvatarTemplate;
129 //give this avatar object a local id and assign the user a name 128 //give this avatar object a local id and assign the user a name
129
130 objupdate.ObjectData[0].ID = this.localid; 130 objupdate.ObjectData[0].ID = this.localid;
131 this.uuid = objupdate.ObjectData[0].FullID = ControllingClient.AgentID; 131 this.uuid = objupdate.ObjectData[0].FullID = ControllingClient.AgentID;
132 objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstname + "\nLastName STRING RW SV " + lastname + " \0"); 132 objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstname + "\nLastName STRING RW SV " + lastname + " \0");
@@ -134,7 +134,6 @@ namespace OpenSim.world
134 byte[] pb = pos2.GetBytes(); 134 byte[] pb = pos2.GetBytes();
135 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); 135 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
136 m_world._localNumber++; 136 m_world._localNumber++;
137
138 foreach (SimClient client in m_clientThreads.Values) 137 foreach (SimClient client in m_clientThreads.Values)
139 { 138 {
140 client.OutPacket(objupdate); 139 client.OutPacket(objupdate);
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs
index 5bada2b..0e5dbf0 100644
--- a/OpenSim.RegionServer/world/World.cs
+++ b/OpenSim.RegionServer/world/World.cs
@@ -70,7 +70,7 @@ namespace OpenSim.world
70 OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating LandMap"); 70 OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating LandMap");
71 TerrainManager = new TerrainManager(new SecondLife()); 71 TerrainManager = new TerrainManager(new SecondLife());
72 Terrain = new TerrainEngine(); 72 Terrain = new TerrainEngine();
73 Avatar.SetupTemplate("avatar-template.dat"); 73 Avatar.SetupTemplate("avatar-template2.dat");
74 // MainConsole.Instance.WriteLine("World.cs - Creating script engine instance"); 74 // MainConsole.Instance.WriteLine("World.cs - Creating script engine instance");
75 // Initialise this only after the world has loaded 75 // Initialise this only after the world has loaded
76 // Scripts = new ScriptEngine(this); 76 // Scripts = new ScriptEngine(this);
diff --git a/OpenSim.sln b/OpenSim.sln
index aa84470..8bb883d 100644
--- a/OpenSim.sln
+++ b/OpenSim.sln
@@ -1,7 +1,5 @@
1Microsoft Visual Studio Solution File, Format Version 9.00 1Microsoft Visual Studio Solution File, Format Version 9.00
2# Visual Studio 2005 2# Visual C# Express 2005
3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{2270B8FE-0000-0000-0000-000000000000}"
4EndProject
5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.RegionServer", "OpenSim.RegionServer\OpenSim.RegionServer.csproj", "{632E1BFD-0000-0000-0000-000000000000}" 3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.RegionServer", "OpenSim.RegionServer\OpenSim.RegionServer.csproj", "{632E1BFD-0000-0000-0000-000000000000}"
6EndProject 4EndProject
7Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Physics.OdePlugin", "OpenSim.Physics\OdePlugin\OpenSim.Physics.OdePlugin.csproj", "{63A05FE9-0000-0000-0000-000000000000}" 5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Physics.OdePlugin", "OpenSim.Physics\OdePlugin\OpenSim.Physics.OdePlugin.csproj", "{63A05FE9-0000-0000-0000-000000000000}"
@@ -45,149 +43,97 @@ EndProject
45Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}" 43Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}"
46EndProject 44EndProject
47Global 45Global
48 GlobalSection(SolutionConfigurationPlatforms) = preSolution 46 GlobalSection(SolutionConfigurationPlatforms) = preSolution
49 Debug|Any CPU = Debug|Any CPU 47 Debug|Any CPU = Debug|Any CPU
50 Release|Any CPU = Release|Any CPU 48 Release|Any CPU = Release|Any CPU
51 EndGlobalSection 49 EndGlobalSection
52 GlobalSection(ProjectDependencies) = postSolution 50 GlobalSection(ProjectConfigurationPlatforms) = postSolution
53 ({632E1BFD-0000-0000-0000-000000000000}).5 = ({2270B8FE-0000-0000-0000-000000000000}) 51 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
54 ({632E1BFD-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000}) 52 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
55 ({632E1BFD-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000}) 53 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
56 ({632E1BFD-0000-0000-0000-000000000000}).8 = ({E88EF749-0000-0000-0000-000000000000}) 54 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
57 ({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BE16150-0000-0000-0000-000000000000}) 55 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
58 ({632E1BFD-0000-0000-0000-000000000000}).10 = ({8BB20F0A-0000-0000-0000-000000000000}) 56 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
59 ({632E1BFD-0000-0000-0000-000000000000}).11 = ({8E81D43C-0000-0000-0000-000000000000}) 57 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
60 ({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000}) 58 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
61 ({EE9E5D96-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000}) 59 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
62 ({EE9E5D96-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000}) 60 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
63 ({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 61 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
64 ({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 62 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
65 ({438A9556-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000}) 63 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
66 ({438A9556-0000-0000-0000-000000000000}).8 = ({8BB20F0A-0000-0000-0000-000000000000}) 64 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
67 ({438A9556-0000-0000-0000-000000000000}).9 = ({632E1BFD-0000-0000-0000-000000000000}) 65 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
68 ({E88EF749-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) 66 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
69 ({8BE16150-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 67 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
70 ({8BE16150-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 68 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
71 ({66591469-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 69 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
72 ({66591469-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 70 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
73 ({66591469-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000}) 71 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
74 ({66591469-0000-0000-0000-000000000000}).8 = ({8E81D43C-0000-0000-0000-000000000000}) 72 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
75 ({4F874463-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000}) 73 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
76 ({B0027747-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 74 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
77 ({B0027747-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 75 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
78 ({8BB20F0A-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) 76 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
79 ({8BB20F0A-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) 77 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
80 ({8BB20F0A-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000}) 78 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
81 ({988F0AC4-0000-0000-0000-000000000000}).3 = ({8BE16150-0000-0000-0000-000000000000}) 79 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
82 ({B55C0B5D-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 80 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
83 ({B55C0B5D-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 81 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
84 ({B55C0B5D-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000}) 82 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
85 ({8ACA2445-0000-0000-0000-000000000000}).4 = ({8E81D43C-0000-0000-0000-000000000000}) 83 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
86 ({21BFC8E2-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) 84 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
87 ({21BFC8E2-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) 85 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
88 ({21BFC8E2-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000}) 86 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
89 ({21BFC8E2-0000-0000-0000-000000000000}).8 = ({8E81D43C-0000-0000-0000-000000000000}) 87 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
90 ({E1B79ECF-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000}) 88 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
91 ({E1B79ECF-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000}) 89 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
92 ({6B20B603-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 90 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
93 ({6B20B603-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 91 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
94 ({7E494328-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000}) 92 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
95 ({7E494328-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) 93 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
96 ({97A82740-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) 94 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
97 ({546099CD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000}) 95 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
98 ({546099CD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000}) 96 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
99 EndGlobalSection 97 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
100 GlobalSection(ProjectConfigurationPlatforms) = postSolution 98 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
101 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 99 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
102 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 100 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
103 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 101 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
104 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 102 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
105 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 103 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
106 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 104 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
107 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 105 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
108 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 106 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
109 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 107 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
110 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 108 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
111 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 109 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
112 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 110 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
113 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 111 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
114 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 112 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
115 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 113 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
116 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 114 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
117 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 115 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
118 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 116 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
119 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 117 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
120 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 118 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
121 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 119 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
122 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 120 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
123 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 121 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
124 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 122 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
125 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 123 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
126 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 124 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
127 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 125 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
128 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 126 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
129 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 127 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
130 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 128 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
131 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 129 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
132 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 130 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
133 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 131 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
134 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 132 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
135 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 133 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
136 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 134 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
137 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 135 EndGlobalSection
138 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 136 GlobalSection(SolutionProperties) = preSolution
139 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 137 HideSolutionNode = FALSE
140 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 138 EndGlobalSection
141 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
142 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
143 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
144 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
145 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
146 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
147 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
148 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
149 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
150 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
151 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
152 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
153 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
154 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
155 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
156 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
157 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
158 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
159 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
160 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
161 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
162 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
163 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
164 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
165 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
166 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
167 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
168 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
169 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
170 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
171 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
172 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
173 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
174 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
175 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
176 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
177 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
178 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
179 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
180 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
181 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
182 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
183 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
184 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
185 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
186 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
187 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
188 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
189 EndGlobalSection
190 GlobalSection(SolutionProperties) = preSolution
191 HideSolutionNode = FALSE
192 EndGlobalSection
193EndGlobal 139EndGlobal
diff --git a/bin/avatar-template2.dat b/bin/avatar-template2.dat
new file mode 100644
index 0000000..b5bfa64
--- /dev/null
+++ b/bin/avatar-template2.dat
Binary files differ
diff --git a/bin/libsecondlife.dll b/bin/libsecondlife.dll
index 5d6a82e..530fbd0 100644
--- a/bin/libsecondlife.dll
+++ b/bin/libsecondlife.dll
Binary files differ