From 76df9e626d143c5f9011cc143499d90c02fdcdd1 Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 4 Apr 2007 16:31:35 +0000
Subject: Split Avatar class into three partial classes (hopefully will make it
easier to work on)
---
OpenSim.RegionServer/OpenSim.RegionServer.csproj | 6 +
.../OpenSim.RegionServer.dll.build | 2 +
OpenSim.RegionServer/world/Avatar.cs | 287 +--------------------
OpenSim.RegionServer/world/AvatarAnimations.cs | 4 +-
OpenSim.RegionServer/world/AvatarClient.cs | 27 ++
OpenSim.RegionServer/world/AvatarUpdate.cs | 279 ++++++++++++++++++++
OpenSim.RegionServer/world/Primitive2.cs | 66 +++++
OpenSim.RegionServer/world/World.cs | 4 +
OpenSim.sln | 200 ++++++--------
9 files changed, 471 insertions(+), 404 deletions(-)
create mode 100644 OpenSim.RegionServer/world/AvatarClient.cs
create mode 100644 OpenSim.RegionServer/world/AvatarUpdate.cs
diff --git a/OpenSim.RegionServer/OpenSim.RegionServer.csproj b/OpenSim.RegionServer/OpenSim.RegionServer.csproj
index 5f396ac..cee91f8 100644
--- a/OpenSim.RegionServer/OpenSim.RegionServer.csproj
+++ b/OpenSim.RegionServer/OpenSim.RegionServer.csproj
@@ -166,6 +166,12 @@
Code
+
+ Code
+
+
+ Code
+
Code
diff --git a/OpenSim.RegionServer/OpenSim.RegionServer.dll.build b/OpenSim.RegionServer/OpenSim.RegionServer.dll.build
index cd5fb43..c0289e7 100644
--- a/OpenSim.RegionServer/OpenSim.RegionServer.dll.build
+++ b/OpenSim.RegionServer/OpenSim.RegionServer.dll.build
@@ -29,6 +29,8 @@
+
+
diff --git a/OpenSim.RegionServer/world/Avatar.cs b/OpenSim.RegionServer/world/Avatar.cs
index be47eda..186fb5c 100644
--- a/OpenSim.RegionServer/world/Avatar.cs
+++ b/OpenSim.RegionServer/world/Avatar.cs
@@ -10,7 +10,7 @@ using Axiom.MathLib;
namespace OpenSim.world
{
- public class Avatar : Entity
+ public partial class Avatar : Entity
{
public static bool PhysicsEngineFlying = false;
public static AvatarAnimations Animations;
@@ -32,6 +32,7 @@ namespace OpenSim.world
private ulong m_regionHandle;
private Dictionary m_clientThreads;
private string m_regionName;
+ private bool childShadowAvatar = false;
public Avatar(SimClient TheClient, World world, string regionName, Dictionary clientThreads, ulong regionHandle)
{
@@ -95,60 +96,6 @@ namespace OpenSim.world
}
}
- public override void update()
- {
- libsecondlife.LLVector3 pos2 = new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z);
- if (this.updateflag)
- {
- //need to send movement info
- //so create the improvedterseobjectupdate packet
- //use CreateTerseBlock()
- ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock();
- ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
- terse.RegionData.RegionHandle = m_regionHandle; // FIXME
- terse.RegionData.TimeDilation = 64096;
- terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
- terse.ObjectData[0] = terseBlock;
- foreach (SimClient client in m_clientThreads.Values)
- {
- client.OutPacket(terse);
- }
-
- updateflag = false;
- //this._updateCount = 0;
- }
- else
- {
-
- if ((pos2 != this.positionLastFrame) || (this.movementflag == 16))
- {
- _updateCount++;
- if (((!PhysicsEngineFlying) && (_updateCount > 3)) || (PhysicsEngineFlying) && (_updateCount > 0))
- {
- //It has been a while since last update was sent so lets send one.
- ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock();
- ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
- terse.RegionData.RegionHandle = m_regionHandle; // FIXME
- terse.RegionData.TimeDilation = 64096;
- terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
- terse.ObjectData[0] = terseBlock;
- foreach (SimClient client in m_clientThreads.Values)
- {
- client.OutPacket(terse);
- }
- _updateCount = 0;
- }
-
- if (this.movementflag == 16)
- {
- movementflag = 0;
- }
- }
-
- }
- this.positionLastFrame = pos2;
- }
-
public static void SetupTemplate(string name)
{
int i = 0;
@@ -190,128 +137,6 @@ namespace OpenSim.world
ControllingClient.OutPacket(mov);
}
- public void SendInitialPosition()
- {
-
- System.Text.Encoding _enc = System.Text.Encoding.ASCII;
- //send a objectupdate packet with information about the clients avatar
- ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
- objupdate.RegionData.RegionHandle = m_regionHandle;
- objupdate.RegionData.TimeDilation = 64096;
- objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
-
- objupdate.ObjectData[0] = AvatarTemplate;
- //give this avatar object a local id and assign the user a name
- objupdate.ObjectData[0].ID = this.localid;
- this.uuid = objupdate.ObjectData[0].FullID = ControllingClient.AgentID;
- objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstname + "\nLastName STRING RW SV " + lastname + " \0");
-
- libsecondlife.LLVector3 pos2 = new LLVector3((float)this.Pos.X, (float)this.Pos.Y, (float)this.Pos.Z);
-
- byte[] pb = pos2.GetBytes();
-
- Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
- m_world._localNumber++;
-
- foreach (SimClient client in m_clientThreads.Values)
- {
- client.OutPacket(objupdate);
- if (client.AgentID != ControllingClient.AgentID)
- {
- SendAppearanceToOtherAgent(client);
- }
- }
- //this.ControllingClient.OutPacket(objupdate);
- }
-
- public void SendInitialAppearance()
- {
- AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket();
- aw.AgentData.AgentID = this.ControllingClient.AgentID;
- aw.AgentData.SerialNum = 0;
- aw.AgentData.SessionID = ControllingClient.SessionID;
-
- aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13];
- AgentWearablesUpdatePacket.WearableDataBlock awb;
- for (int i = 0; i < 13; i++)
- {
- awb = new AgentWearablesUpdatePacket.WearableDataBlock();
- awb.WearableType = (byte)i;
- awb.AssetID = this.Wearables[i].AssetID;
- awb.ItemID = this.Wearables[i].ItemID;
- aw.WearableData[i] = awb;
- }
-
- ControllingClient.OutPacket(aw);
- }
-
- public ObjectUpdatePacket CreateUpdatePacket()
- {
- System.Text.Encoding _enc = System.Text.Encoding.ASCII;
- //send a objectupdate packet with information about the clients avatar
- ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
- objupdate.RegionData.RegionHandle = m_regionHandle;
- objupdate.RegionData.TimeDilation = 64096;
- objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
-
- objupdate.ObjectData[0] = AvatarTemplate;
- //give this avatar object a local id and assign the user a name
- objupdate.ObjectData[0].ID = this.localid;
- objupdate.ObjectData[0].FullID = ControllingClient.AgentID;
- objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstname + "\nLastName STRING RW SV " + lastname + " \0");
-
- libsecondlife.LLVector3 pos2 = new LLVector3((float)this._physActor.Position.X, (float)this._physActor.Position.Y, (float)this._physActor.Position.Z);
-
- byte[] pb = pos2.GetBytes();
-
- Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
- return objupdate;
- }
-
- public void SendAppearanceToOtherAgent(SimClient userInfo)
- {
- AvatarAppearancePacket avp = new AvatarAppearancePacket();
-
-
- avp.VisualParam = new AvatarAppearancePacket.VisualParamBlock[218];
- //avp.ObjectData.TextureEntry=this.avatar_template.TextureEntry;// br.ReadBytes((int)numBytes);
-
- //LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-0000-000000000005"));
- //avp.ObjectData.TextureEntry = ntex.ToBytes();
- avp.ObjectData.TextureEntry = this.avatarAppearanceTexture.ToBytes();
-
- AvatarAppearancePacket.VisualParamBlock avblock = null;
- for (int i = 0; i < 218; i++)
- {
- avblock = new AvatarAppearancePacket.VisualParamBlock();
- avblock.ParamValue = visualParams[i];
- avp.VisualParam[i] = avblock;
- }
-
- avp.Sender.IsTrial = false;
- avp.Sender.ID = ControllingClient.AgentID;
- userInfo.OutPacket(avp);
-
- }
- public void SetAppearance(AgentSetAppearancePacket appear)
- {
- LLObject.TextureEntry tex = new LLObject.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length);
- this.avatarAppearanceTexture = tex;
- for (int i = 0; i < appear.VisualParam.Length; i++)
- {
- this.visualParams[i] = appear.VisualParam[i].ParamValue;
- }
-
- foreach (SimClient client in m_clientThreads.Values)
- {
- if (client.AgentID != ControllingClient.AgentID)
- {
- SendAppearanceToOtherAgent(client);
- }
- }
- }
-
-
public void HandleUpdate(AgentUpdatePacket pack)
{
if (((uint)pack.AgentData.ControlFlags & (uint)MainAvatar.AgentUpdateFlags.AGENT_CONTROL_FLY) != 0)
@@ -323,7 +148,7 @@ namespace OpenSim.world
this.SendAnimPack();
}
this._physActor.Flying = true;
-
+
}
else
{
@@ -462,28 +287,7 @@ namespace OpenSim.world
}
}
- // Sends animation update
- public void SendAnimPack()
- {
- AvatarAnimationPacket ani = new AvatarAnimationPacket();
- ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1];
- ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock();
- ani.AnimationSourceList[0].ObjectID = ControllingClient.AgentID;
- ani.Sender = new AvatarAnimationPacket.SenderBlock();
- ani.Sender.ID = ControllingClient.AgentID;
- ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[1];
- ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock();
- ani.AnimationList[0].AnimID = this.current_anim;
- ani.AnimationList[0].AnimSequenceID = this.anim_seq;
-
- //ControllingClient.OutPacket(ani);
- foreach (SimClient client in m_clientThreads.Values)
- {
- client.OutPacket(ani);
- }
- }
-
- //should be moved somewhere else
+ //really really should be moved somewhere else
public void SendRegionHandshake(World RegionInfo)
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs:SendRegionHandshake() - Creating empty RegionHandshake packet");
@@ -520,89 +324,6 @@ namespace OpenSim.world
this.ControllingClient.OutPacket(handshake);
}
- public ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateTerseBlock()
- {
- byte[] bytes = new byte[60];
- int i = 0;
- ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
-
- dat.TextureEntry = new byte[0];// AvatarTemplate.TextureEntry;
- libsecondlife.LLVector3 pos2 = new LLVector3(0, 0, 0);
- lock (m_world.LockPhysicsEngine)
- {
- pos2 = new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z);
- }
-
- uint ID = this.localid;
-
- bytes[i++] = (byte)(ID % 256);
- bytes[i++] = (byte)((ID >> 8) % 256);
- bytes[i++] = (byte)((ID >> 16) % 256);
- bytes[i++] = (byte)((ID >> 24) % 256);
- bytes[i++] = 0;
- bytes[i++] = 1;
- i += 14;
- bytes[i++] = 128;
- bytes[i++] = 63;
-
- byte[] pb = pos2.GetBytes();
- Array.Copy(pb, 0, bytes, i, pb.Length);
- i += 12;
- ushort InternVelocityX;
- ushort InternVelocityY;
- ushort InternVelocityZ;
- Axiom.MathLib.Vector3 internDirec = new Axiom.MathLib.Vector3(0, 0, 0);
- lock (m_world.LockPhysicsEngine)
- {
- internDirec = new Axiom.MathLib.Vector3(this._physActor.Velocity.X, this._physActor.Velocity.Y, this._physActor.Velocity.Z);
- }
- internDirec = internDirec / 128.0f;
- internDirec.x += 1;
- internDirec.y += 1;
- internDirec.z += 1;
-
- InternVelocityX = (ushort)(32768 * internDirec.x);
- InternVelocityY = (ushort)(32768 * internDirec.y);
- InternVelocityZ = (ushort)(32768 * internDirec.z);
-
- ushort ac = 32767;
- bytes[i++] = (byte)(InternVelocityX % 256);
- bytes[i++] = (byte)((InternVelocityX >> 8) % 256);
- bytes[i++] = (byte)(InternVelocityY % 256);
- bytes[i++] = (byte)((InternVelocityY >> 8) % 256);
- bytes[i++] = (byte)(InternVelocityZ % 256);
- bytes[i++] = (byte)((InternVelocityZ >> 8) % 256);
-
- //accel
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
-
- //rot
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
-
- //rotation vel
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
- bytes[i++] = (byte)(ac % 256);
- bytes[i++] = (byte)((ac >> 8) % 256);
-
- dat.Data = bytes;
- return (dat);
- }
-
public static void LoadAnims()
{
Avatar.Animations = new AvatarAnimations();
diff --git a/OpenSim.RegionServer/world/AvatarAnimations.cs b/OpenSim.RegionServer/world/AvatarAnimations.cs
index eea29de..36c4c7e 100644
--- a/OpenSim.RegionServer/world/AvatarAnimations.cs
+++ b/OpenSim.RegionServer/world/AvatarAnimations.cs
@@ -10,8 +10,7 @@ namespace OpenSim.world
public Dictionary AnimsLLUUID = new Dictionary();
public Dictionary AnimsNames = new Dictionary();
-
-
+
public AvatarAnimations()
{
}
@@ -155,7 +154,6 @@ namespace OpenSim.world
AnimsLLUUID.Add("ANIM_AGENT_YES_HAPPY", new LLUUID("b8c8b2a3-9008-1771-3bfc-90924955ab2d"));
AnimsLLUUID.Add("ANIM_AGENT_YOGA_FLOAT", new LLUUID("42ecd00b-9947-a97c-400a-bbc9174c7aeb"));
-
foreach (KeyValuePair kp in OpenSim.world.Avatar.Animations.AnimsLLUUID)
{
AnimsNames.Add(kp.Value, kp.Key);
diff --git a/OpenSim.RegionServer/world/AvatarClient.cs b/OpenSim.RegionServer/world/AvatarClient.cs
new file mode 100644
index 0000000..bad8761
--- /dev/null
+++ b/OpenSim.RegionServer/world/AvatarClient.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife.Packets;
+
+namespace OpenSim.world
+{
+ partial class Avatar
+ {
+ private List updateList = new List();
+
+ public void SendPacketToViewer(Packet packet)
+ {
+ this.ControllingClient.OutPacket(packet);
+ }
+
+ public void AddTerseUpdateToViewersList(ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock)
+ {
+
+ }
+
+ public void SendUpdateListToViewer()
+ {
+
+ }
+ }
+}
diff --git a/OpenSim.RegionServer/world/AvatarUpdate.cs b/OpenSim.RegionServer/world/AvatarUpdate.cs
new file mode 100644
index 0000000..d20ba28
--- /dev/null
+++ b/OpenSim.RegionServer/world/AvatarUpdate.cs
@@ -0,0 +1,279 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+using libsecondlife.Packets;
+
+namespace OpenSim.world
+{
+ partial class Avatar
+ {
+ public override void update()
+ {
+ libsecondlife.LLVector3 pos2 = new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z);
+ if (this.updateflag)
+ {
+ //need to send movement info
+ //so create the improvedterseobjectupdate packet
+ //use CreateTerseBlock()
+ ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock();
+ ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
+ terse.RegionData.RegionHandle = m_regionHandle; // FIXME
+ terse.RegionData.TimeDilation = 64096;
+ terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
+ terse.ObjectData[0] = terseBlock;
+ foreach (SimClient client in m_clientThreads.Values)
+ {
+ client.OutPacket(terse);
+ }
+
+ updateflag = false;
+ //this._updateCount = 0;
+ }
+ else
+ {
+
+ if ((pos2 != this.positionLastFrame) || (this.movementflag == 16))
+ {
+ _updateCount++;
+ if (((!PhysicsEngineFlying) && (_updateCount > 3)) || (PhysicsEngineFlying) && (_updateCount > 0))
+ {
+ //It has been a while since last update was sent so lets send one.
+ ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock();
+ ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
+ terse.RegionData.RegionHandle = m_regionHandle; // FIXME
+ terse.RegionData.TimeDilation = 64096;
+ terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
+ terse.ObjectData[0] = terseBlock;
+ foreach (SimClient client in m_clientThreads.Values)
+ {
+ client.OutPacket(terse);
+ }
+ _updateCount = 0;
+ }
+
+ if (this.movementflag == 16)
+ {
+ movementflag = 0;
+ }
+ }
+
+ }
+ this.positionLastFrame = pos2;
+ }
+
+ public ObjectUpdatePacket CreateUpdatePacket()
+ {
+ System.Text.Encoding _enc = System.Text.Encoding.ASCII;
+ //send a objectupdate packet with information about the clients avatar
+ ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
+ objupdate.RegionData.RegionHandle = m_regionHandle;
+ objupdate.RegionData.TimeDilation = 64096;
+ objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
+
+ objupdate.ObjectData[0] = AvatarTemplate;
+ //give this avatar object a local id and assign the user a name
+ objupdate.ObjectData[0].ID = this.localid;
+ objupdate.ObjectData[0].FullID = ControllingClient.AgentID;
+ objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstname + "\nLastName STRING RW SV " + lastname + " \0");
+
+ libsecondlife.LLVector3 pos2 = new LLVector3((float)this._physActor.Position.X, (float)this._physActor.Position.Y, (float)this._physActor.Position.Z);
+
+ byte[] pb = pos2.GetBytes();
+
+ Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
+ return objupdate;
+ }
+
+ public void SendInitialPosition()
+ {
+ System.Text.Encoding _enc = System.Text.Encoding.ASCII;
+ //send a objectupdate packet with information about the clients avatar
+ ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
+ objupdate.RegionData.RegionHandle = m_regionHandle;
+ objupdate.RegionData.TimeDilation = 64096;
+ objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
+
+ objupdate.ObjectData[0] = AvatarTemplate;
+ //give this avatar object a local id and assign the user a name
+ objupdate.ObjectData[0].ID = this.localid;
+ this.uuid = objupdate.ObjectData[0].FullID = ControllingClient.AgentID;
+ objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstname + "\nLastName STRING RW SV " + lastname + " \0");
+ libsecondlife.LLVector3 pos2 = new LLVector3((float)this.Pos.X, (float)this.Pos.Y, (float)this.Pos.Z);
+ byte[] pb = pos2.GetBytes();
+ Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
+ m_world._localNumber++;
+
+ foreach (SimClient client in m_clientThreads.Values)
+ {
+ client.OutPacket(objupdate);
+ if (client.AgentID != ControllingClient.AgentID)
+ {
+ SendAppearanceToOtherAgent(client);
+ }
+ }
+ }
+
+ public void SendInitialAppearance()
+ {
+ AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket();
+ aw.AgentData.AgentID = this.ControllingClient.AgentID;
+ aw.AgentData.SerialNum = 0;
+ aw.AgentData.SessionID = ControllingClient.SessionID;
+
+ aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13];
+ AgentWearablesUpdatePacket.WearableDataBlock awb;
+ for (int i = 0; i < 13; i++)
+ {
+ awb = new AgentWearablesUpdatePacket.WearableDataBlock();
+ awb.WearableType = (byte)i;
+ awb.AssetID = this.Wearables[i].AssetID;
+ awb.ItemID = this.Wearables[i].ItemID;
+ aw.WearableData[i] = awb;
+ }
+
+ ControllingClient.OutPacket(aw);
+ }
+
+ public void SendAppearanceToOtherAgent(SimClient userInfo)
+ {
+ AvatarAppearancePacket avp = new AvatarAppearancePacket();
+ avp.VisualParam = new AvatarAppearancePacket.VisualParamBlock[218];
+ avp.ObjectData.TextureEntry = this.avatarAppearanceTexture.ToBytes();
+
+ AvatarAppearancePacket.VisualParamBlock avblock = null;
+ for (int i = 0; i < 218; i++)
+ {
+ avblock = new AvatarAppearancePacket.VisualParamBlock();
+ avblock.ParamValue = visualParams[i];
+ avp.VisualParam[i] = avblock;
+ }
+
+ avp.Sender.IsTrial = false;
+ avp.Sender.ID = ControllingClient.AgentID;
+ userInfo.OutPacket(avp);
+ }
+
+ public void SetAppearance(AgentSetAppearancePacket appear)
+ {
+ LLObject.TextureEntry tex = new LLObject.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length);
+ this.avatarAppearanceTexture = tex;
+ for (int i = 0; i < appear.VisualParam.Length; i++)
+ {
+ this.visualParams[i] = appear.VisualParam[i].ParamValue;
+ }
+ foreach (SimClient client in m_clientThreads.Values)
+ {
+ if (client.AgentID != ControllingClient.AgentID)
+ {
+ SendAppearanceToOtherAgent(client);
+ }
+ }
+ }
+
+ public ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateTerseBlock()
+ {
+ byte[] bytes = new byte[60];
+ int i = 0;
+ ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
+
+ dat.TextureEntry = new byte[0];// AvatarTemplate.TextureEntry;
+ libsecondlife.LLVector3 pos2 = new LLVector3(0, 0, 0);
+ lock (m_world.LockPhysicsEngine)
+ {
+ pos2 = new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z);
+ }
+
+ uint ID = this.localid;
+
+ bytes[i++] = (byte)(ID % 256);
+ bytes[i++] = (byte)((ID >> 8) % 256);
+ bytes[i++] = (byte)((ID >> 16) % 256);
+ bytes[i++] = (byte)((ID >> 24) % 256);
+ bytes[i++] = 0;
+ bytes[i++] = 1;
+ i += 14;
+ bytes[i++] = 128;
+ bytes[i++] = 63;
+
+ byte[] pb = pos2.GetBytes();
+ Array.Copy(pb, 0, bytes, i, pb.Length);
+ i += 12;
+ ushort InternVelocityX;
+ ushort InternVelocityY;
+ ushort InternVelocityZ;
+ Axiom.MathLib.Vector3 internDirec = new Axiom.MathLib.Vector3(0, 0, 0);
+ lock (m_world.LockPhysicsEngine)
+ {
+ internDirec = new Axiom.MathLib.Vector3(this._physActor.Velocity.X, this._physActor.Velocity.Y, this._physActor.Velocity.Z);
+ }
+ internDirec = internDirec / 128.0f;
+ internDirec.x += 1;
+ internDirec.y += 1;
+ internDirec.z += 1;
+
+ InternVelocityX = (ushort)(32768 * internDirec.x);
+ InternVelocityY = (ushort)(32768 * internDirec.y);
+ InternVelocityZ = (ushort)(32768 * internDirec.z);
+
+ ushort ac = 32767;
+ bytes[i++] = (byte)(InternVelocityX % 256);
+ bytes[i++] = (byte)((InternVelocityX >> 8) % 256);
+ bytes[i++] = (byte)(InternVelocityY % 256);
+ bytes[i++] = (byte)((InternVelocityY >> 8) % 256);
+ bytes[i++] = (byte)(InternVelocityZ % 256);
+ bytes[i++] = (byte)((InternVelocityZ >> 8) % 256);
+
+ //accel
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+
+ //rot
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+
+ //rotation vel
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+ bytes[i++] = (byte)(ac % 256);
+ bytes[i++] = (byte)((ac >> 8) % 256);
+
+ dat.Data = bytes;
+ return (dat);
+ }
+
+ // Sends animation update
+ public void SendAnimPack()
+ {
+ AvatarAnimationPacket ani = new AvatarAnimationPacket();
+ ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1];
+ ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock();
+ ani.AnimationSourceList[0].ObjectID = ControllingClient.AgentID;
+ ani.Sender = new AvatarAnimationPacket.SenderBlock();
+ ani.Sender.ID = ControllingClient.AgentID;
+ ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[1];
+ ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock();
+ ani.AnimationList[0].AnimID = this.current_anim;
+ ani.AnimationList[0].AnimSequenceID = this.anim_seq;
+
+ //ControllingClient.OutPacket(ani);
+ foreach (SimClient client in m_clientThreads.Values)
+ {
+ client.OutPacket(ani);
+ }
+ }
+
+ }
+}
diff --git a/OpenSim.RegionServer/world/Primitive2.cs b/OpenSim.RegionServer/world/Primitive2.cs
index 87a1d65..4a19040 100644
--- a/OpenSim.RegionServer/world/Primitive2.cs
+++ b/OpenSim.RegionServer/world/Primitive2.cs
@@ -169,6 +169,72 @@ namespace OpenSim.world
}
+ public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID)
+ {
+ ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
+ objupdate.RegionData.RegionHandle = m_regionHandle;
+ objupdate.RegionData.TimeDilation = 64096;
+
+ objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
+ PrimData PData = new PrimData();
+ this.primData = PData;
+ this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
+
+ objupdate.ObjectData[0] = new ObjectUpdatePacket.ObjectDataBlock();
+ objupdate.ObjectData[0].PSBlock = new byte[0];
+ objupdate.ObjectData[0].ExtraParams = new byte[1];
+ objupdate.ObjectData[0].MediaURL = new byte[0];
+ objupdate.ObjectData[0].NameValue = new byte[0];
+ objupdate.ObjectData[0].Text = new byte[0];
+ objupdate.ObjectData[0].TextColor = new byte[4];
+ objupdate.ObjectData[0].JointAxisOrAnchor = new LLVector3(0, 0, 0);
+ objupdate.ObjectData[0].JointPivot = new LLVector3(0, 0, 0);
+ objupdate.ObjectData[0].Material = 3;
+ objupdate.ObjectData[0].UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456;
+ objupdate.ObjectData[0].TextureAnim = new byte[0];
+ objupdate.ObjectData[0].Sound = LLUUID.Zero;
+ LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
+ this.primData.Texture = objupdate.ObjectData[0].TextureEntry = ntex.ToBytes();
+ objupdate.ObjectData[0].State = 0;
+ objupdate.ObjectData[0].Data = new byte[0];
+ PData.OwnerID = objupdate.ObjectData[0].OwnerID = agentID;
+ PData.PCode = objupdate.ObjectData[0].PCode = addPacket.ObjectData.PCode;
+ PData.PathBegin = objupdate.ObjectData[0].PathBegin = addPacket.ObjectData.PathBegin;
+ PData.PathEnd = objupdate.ObjectData[0].PathEnd = addPacket.ObjectData.PathEnd;
+ PData.PathScaleX = objupdate.ObjectData[0].PathScaleX = addPacket.ObjectData.PathScaleX;
+ PData.PathScaleY = objupdate.ObjectData[0].PathScaleY = addPacket.ObjectData.PathScaleY;
+ PData.PathShearX = objupdate.ObjectData[0].PathShearX = addPacket.ObjectData.PathShearX;
+ PData.PathShearY = objupdate.ObjectData[0].PathShearY = addPacket.ObjectData.PathShearY;
+ PData.PathSkew = objupdate.ObjectData[0].PathSkew = addPacket.ObjectData.PathSkew;
+ PData.ProfileBegin = objupdate.ObjectData[0].ProfileBegin = addPacket.ObjectData.ProfileBegin;
+ PData.ProfileEnd = objupdate.ObjectData[0].ProfileEnd = addPacket.ObjectData.ProfileEnd;
+ PData.Scale = objupdate.ObjectData[0].Scale = addPacket.ObjectData.Scale;
+ PData.PathCurve = objupdate.ObjectData[0].PathCurve = addPacket.ObjectData.PathCurve;
+ PData.ProfileCurve = objupdate.ObjectData[0].ProfileCurve = addPacket.ObjectData.ProfileCurve;
+ PData.ParentID = objupdate.ObjectData[0].ParentID = 0;
+ PData.ProfileHollow = objupdate.ObjectData[0].ProfileHollow = addPacket.ObjectData.ProfileHollow;
+ PData.PathRadiusOffset = objupdate.ObjectData[0].PathRadiusOffset = addPacket.ObjectData.PathRadiusOffset;
+ PData.PathRevolutions = objupdate.ObjectData[0].PathRevolutions = addPacket.ObjectData.PathRevolutions;
+ PData.PathTaperX = objupdate.ObjectData[0].PathTaperX = addPacket.ObjectData.PathTaperX;
+ PData.PathTaperY = objupdate.ObjectData[0].PathTaperY = addPacket.ObjectData.PathTaperY;
+ PData.PathTwist = objupdate.ObjectData[0].PathTwist = addPacket.ObjectData.PathTwist;
+ PData.PathTwistBegin = objupdate.ObjectData[0].PathTwistBegin = addPacket.ObjectData.PathTwistBegin;
+ objupdate.ObjectData[0].ID = (uint)(localID);
+ objupdate.ObjectData[0].FullID = new LLUUID("edba7151-5857-acc5-b30b-f01efef" + (localID - 702000).ToString("00000"));
+ objupdate.ObjectData[0].ObjectData = new byte[60];
+ objupdate.ObjectData[0].ObjectData[46] = 128;
+ objupdate.ObjectData[0].ObjectData[47] = 63;
+ LLVector3 pos1 = addPacket.ObjectData.RayEnd;
+ //update position
+ byte[] pb = pos1.GetBytes();
+ Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 0, pb.Length);
+ //this.newPrimFlag = true;
+ this.primData.FullID = this.uuid = objupdate.ObjectData[0].FullID;
+ this.localid = objupdate.ObjectData[0].ID;
+ this.primData.Position = this.Pos = pos1;
+ this.OurPacket = objupdate;
+ }
+
public void SendFullUpdateToClient(SimClient RemoteClient)
{
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs
index b6f71aa..4661a90 100644
--- a/OpenSim.RegionServer/world/World.cs
+++ b/OpenSim.RegionServer/world/World.cs
@@ -21,6 +21,8 @@ namespace OpenSim.world
{
public object LockPhysicsEngine = new object();
public Dictionary Entities;
+ public Dictionary Avatars;
+ public Dictionary Prims;
public float[] LandMap;
public ScriptEngine Scripts;
public uint _localNumber = 0;
@@ -50,6 +52,8 @@ namespace OpenSim.world
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating new entitities instance");
Entities = new Dictionary();
+ Avatars = new Dictionary();
+ Prims = new Dictionary();
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating LandMap");
TerrainManager = new TerrainManager(new SecondLife());
diff --git a/OpenSim.sln b/OpenSim.sln
index c747832..01a2df2 100644
--- a/OpenSim.sln
+++ b/OpenSim.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
+# Visual C# Express 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim", "OpenSim\OpenSim.csproj", "{438A9556-0000-0000-0000-000000000000}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Physics.OdePlugin", "OpenSim.Physics\OdePlugin\OpenSim.Physics.OdePlugin.csproj", "{63A05FE9-0000-0000-0000-000000000000}"
@@ -37,121 +37,85 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGridServices.GridServer", "OpenGridServices.GridServer\OpenGridServices.GridServer.csproj", "{21BFC8E2-0000-0000-0000-000000000000}"
EndProject
Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectDependencies) = postSolution
- ({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
- ({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
- ({438A9556-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000})
- ({438A9556-0000-0000-0000-000000000000}).8 = ({8BB20F0A-0000-0000-0000-000000000000})
- ({438A9556-0000-0000-0000-000000000000}).9 = ({632E1BFD-0000-0000-0000-000000000000})
- ({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
- ({E88EF749-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
- ({8BE16150-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
- ({8BE16150-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
- ({66591469-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
- ({66591469-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
- ({83C87BE6-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
- ({83C87BE6-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
- ({4F874463-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
- ({B0027747-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
- ({B0027747-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
- ({8BB20F0A-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
- ({8BB20F0A-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
- ({988F0AC4-0000-0000-0000-000000000000}).3 = ({8BE16150-0000-0000-0000-000000000000})
- ({B55C0B5D-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
- ({B55C0B5D-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
- ({632E1BFD-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
- ({632E1BFD-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
- ({632E1BFD-0000-0000-0000-000000000000}).7 = ({E88EF749-0000-0000-0000-000000000000})
- ({632E1BFD-0000-0000-0000-000000000000}).8 = ({8BE16150-0000-0000-0000-000000000000})
- ({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BB20F0A-0000-0000-0000-000000000000})
- ({E1B79ECF-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
- ({E1B79ECF-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
- ({7E494328-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
- ({7E494328-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
- ({546099CD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
- ({546099CD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
- ({21BFC8E2-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
- ({21BFC8E2-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {83C87BE6-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {83C87BE6-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {83C87BE6-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {83C87BE6-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {83C87BE6-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {83C87BE6-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83C87BE6-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {83C87BE6-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
EndGlobal
--
cgit v1.1