Split Avatar class into three partial classes (hopefully will make it easier to work on)
parent
74484ed2ed
commit
76df9e626d
|
@ -166,6 +166,12 @@
|
|||
<Compile Include="world\AvatarAnimations.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="world\AvatarClient.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="world\AvatarUpdate.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="world\Entity.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
<include name="types/Triangle.cs" />
|
||||
<include name="world/Avatar.cs" />
|
||||
<include name="world/AvatarAnimations.cs" />
|
||||
<include name="world/AvatarClient.cs" />
|
||||
<include name="world/AvatarUpdate.cs" />
|
||||
<include name="world/Entity.cs" />
|
||||
<include name="world/Primitive.cs" />
|
||||
<include name="world/Primitive2.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<uint, SimClient> m_clientThreads;
|
||||
private string m_regionName;
|
||||
private bool childShadowAvatar = false;
|
||||
|
||||
public Avatar(SimClient TheClient, World world, string regionName, Dictionary<uint, SimClient> 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();
|
||||
|
|
|
@ -10,8 +10,7 @@ namespace OpenSim.world
|
|||
|
||||
public Dictionary<string, LLUUID> AnimsLLUUID = new Dictionary<string, LLUUID>();
|
||||
public Dictionary<LLUUID, string> AnimsNames = new Dictionary<LLUUID, string>();
|
||||
|
||||
|
||||
|
||||
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<string, LLUUID> kp in OpenSim.world.Avatar.Animations.AnimsLLUUID)
|
||||
{
|
||||
AnimsNames.Add(kp.Value, kp.Key);
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using libsecondlife.Packets;
|
||||
|
||||
namespace OpenSim.world
|
||||
{
|
||||
partial class Avatar
|
||||
{
|
||||
private List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> updateList = new List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock>();
|
||||
|
||||
public void SendPacketToViewer(Packet packet)
|
||||
{
|
||||
this.ControllingClient.OutPacket(packet);
|
||||
}
|
||||
|
||||
public void AddTerseUpdateToViewersList(ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void SendUpdateListToViewer()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
{
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@ namespace OpenSim.world
|
|||
{
|
||||
public object LockPhysicsEngine = new object();
|
||||
public Dictionary<libsecondlife.LLUUID, Entity> Entities;
|
||||
public Dictionary<libsecondlife.LLUUID, Avatar> Avatars;
|
||||
public Dictionary<libsecondlife.LLUUID, Primitive> 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<libsecondlife.LLUUID, Entity>();
|
||||
Avatars = new Dictionary<LLUUID, Avatar>();
|
||||
Prims = new Dictionary<LLUUID, Primitive>();
|
||||
|
||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating LandMap");
|
||||
TerrainManager = new TerrainManager(new SecondLife());
|
||||
|
|
200
OpenSim.sln
200
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
|
||||
|
|
Loading…
Reference in New Issue