diff options
First part of border crossing fix.
-rw-r--r-- | Common/OpenSim.Framework/Interfaces/IClientAPI.cs | 5 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs | 2 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.cs | 30 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/PacketServer.cs | 1 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/world/Avatar.Update.cs | 130 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/world/Avatar.cs | 32 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/world/World.cs | 16 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/world/WorldBase.cs | 4 |
8 files changed, 136 insertions, 84 deletions
diff --git a/Common/OpenSim.Framework/Interfaces/IClientAPI.cs b/Common/OpenSim.Framework/Interfaces/IClientAPI.cs index a991fb6..9f7b619 100644 --- a/Common/OpenSim.Framework/Interfaces/IClientAPI.cs +++ b/Common/OpenSim.Framework/Interfaces/IClientAPI.cs | |||
@@ -24,6 +24,11 @@ namespace OpenSim.Framework.Interfaces | |||
24 | event StartAnim OnStartAnim; | 24 | event StartAnim OnStartAnim; |
25 | event LinkObjects OnLinkObjects; | 25 | event LinkObjects OnLinkObjects; |
26 | 26 | ||
27 | LLVector3 StartPos | ||
28 | { | ||
29 | get; | ||
30 | set; | ||
31 | } | ||
27 | void SendAppearance(AvatarWearable[] wearables); | 32 | void SendAppearance(AvatarWearable[] wearables); |
28 | void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | 33 | void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); |
29 | } | 34 | } |
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs index a6ad8d2..ed3355f 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs | |||
@@ -30,6 +30,7 @@ namespace OpenSim | |||
30 | public delegate void UpdatePrimTexture(uint localID, byte[] texture, ClientView remoteClient); | 30 | public delegate void UpdatePrimTexture(uint localID, byte[] texture, ClientView remoteClient); |
31 | public delegate void UpdatePrimVector(uint localID, LLVector3 pos, ClientView remoteClient); | 31 | public delegate void UpdatePrimVector(uint localID, LLVector3 pos, ClientView remoteClient); |
32 | public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, ClientView remoteClient); | 32 | public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, ClientView remoteClient); |
33 | public delegate void StatusChange(bool status); | ||
33 | 34 | ||
34 | public event ChatFromViewer OnChatFromViewer; | 35 | public event ChatFromViewer OnChatFromViewer; |
35 | public event RezObject OnRezObject; | 36 | public event RezObject OnRezObject; |
@@ -51,6 +52,7 @@ namespace OpenSim | |||
51 | public event UpdatePrimVector OnUpdatePrimPosition; | 52 | public event UpdatePrimVector OnUpdatePrimPosition; |
52 | public event UpdatePrimRotation OnUpdatePrimRotation; | 53 | public event UpdatePrimRotation OnUpdatePrimRotation; |
53 | public event UpdatePrimVector OnUpdatePrimScale; | 54 | public event UpdatePrimVector OnUpdatePrimScale; |
55 | public event StatusChange OnChildAgentStatus; | ||
54 | 56 | ||
55 | protected override void ProcessInPacket(Packet Pack) | 57 | protected override void ProcessInPacket(Packet Pack) |
56 | { | 58 | { |
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.cs b/OpenSim/OpenSim.RegionServer/ClientView.cs index e66b830..295cd7b 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.cs | |||
@@ -86,6 +86,18 @@ namespace OpenSim | |||
86 | } | 86 | } |
87 | } | 87 | } |
88 | 88 | ||
89 | public LLVector3 StartPos | ||
90 | { | ||
91 | get | ||
92 | { | ||
93 | return startpos; | ||
94 | } | ||
95 | set | ||
96 | { | ||
97 | startpos = value; | ||
98 | } | ||
99 | } | ||
100 | |||
89 | public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, World world, Dictionary<uint, ClientView> clientThreads, AssetCache assetCache, IGridServer gridServer, OpenSimNetworkHandler application, InventoryCache inventoryCache, bool sandboxMode, bool child, RegionInfo regionDat, AuthenticateSessionsBase authenSessions) | 101 | public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, World world, Dictionary<uint, ClientView> clientThreads, AssetCache assetCache, IGridServer gridServer, OpenSimNetworkHandler application, InventoryCache inventoryCache, bool sandboxMode, bool child, RegionInfo regionDat, AuthenticateSessionsBase authenSessions) |
90 | { | 102 | { |
91 | m_world = world; | 103 | m_world = world; |
@@ -133,21 +145,23 @@ namespace OpenSim | |||
133 | { | 145 | { |
134 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "SimClient.cs:UpgradeClient() - upgrading child to full agent"); | 146 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "SimClient.cs:UpgradeClient() - upgrading child to full agent"); |
135 | this.m_child = false; | 147 | this.m_child = false; |
136 | this.m_world.RemoveViewerAgent(this); | 148 | //this.m_world.RemoveViewerAgent(this); |
137 | if (!this.m_sandboxMode) | 149 | if (!this.m_sandboxMode) |
138 | { | 150 | { |
139 | this.startpos = m_authenticateSessionsHandler.GetPosition(CircuitCode); | 151 | this.startpos = m_authenticateSessionsHandler.GetPosition(CircuitCode); |
140 | m_authenticateSessionsHandler.UpdateAgentChildStatus(CircuitCode, false); | 152 | m_authenticateSessionsHandler.UpdateAgentChildStatus(CircuitCode, false); |
141 | } | 153 | } |
142 | this.InitNewClient(); | 154 | OnChildAgentStatus(this.m_child); |
155 | //this.InitNewClient(); | ||
143 | } | 156 | } |
144 | 157 | ||
145 | public void DowngradeClient() | 158 | public void DowngradeClient() |
146 | { | 159 | { |
147 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "SimClient.cs:UpgradeClient() - changing full agent to child"); | 160 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "SimClient.cs:UpgradeClient() - changing full agent to child"); |
148 | this.m_child = true; | 161 | this.m_child = true; |
149 | this.m_world.RemoveViewerAgent(this); | 162 | OnChildAgentStatus(this.m_child); |
150 | this.m_world.AddViewerAgent(this); | 163 | //this.m_world.RemoveViewerAgent(this); |
164 | //this.m_world.AddViewerAgent(this); | ||
151 | } | 165 | } |
152 | 166 | ||
153 | public void KillClient() | 167 | public void KillClient() |
@@ -256,11 +270,7 @@ namespace OpenSim | |||
256 | protected virtual void InitNewClient() | 270 | protected virtual void InitNewClient() |
257 | { | 271 | { |
258 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "OpenSimClient.cs:InitNewClient() - Adding viewer agent to world"); | 272 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "OpenSimClient.cs:InitNewClient() - Adding viewer agent to world"); |
259 | 273 | this.ClientAvatar = m_world.AddViewerAgent(this); | |
260 | m_world.AddViewerAgent(this); | ||
261 | world.Entity tempent = m_world.Entities[this.AgentID]; | ||
262 | |||
263 | this.ClientAvatar = (world.Avatar)tempent; | ||
264 | } | 274 | } |
265 | 275 | ||
266 | protected virtual void AuthUser() | 276 | protected virtual void AuthUser() |
@@ -280,7 +290,7 @@ namespace OpenSim | |||
280 | this.AgentID = cirpack.CircuitCode.ID; | 290 | this.AgentID = cirpack.CircuitCode.ID; |
281 | this.SessionID = cirpack.CircuitCode.SessionID; | 291 | this.SessionID = cirpack.CircuitCode.SessionID; |
282 | this.CircuitCode = cirpack.CircuitCode.Code; | 292 | this.CircuitCode = cirpack.CircuitCode.Code; |
283 | InitNewClient(); //shouldn't be called here as we might be a child agent and not want a full avatar | 293 | InitNewClient(); |
284 | this.ClientAvatar.firstname = sessionInfo.LoginInfo.First; | 294 | this.ClientAvatar.firstname = sessionInfo.LoginInfo.First; |
285 | this.ClientAvatar.lastname = sessionInfo.LoginInfo.Last; | 295 | this.ClientAvatar.lastname = sessionInfo.LoginInfo.Last; |
286 | if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero) | 296 | if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero) |
diff --git a/OpenSim/OpenSim.RegionServer/PacketServer.cs b/OpenSim/OpenSim.RegionServer/PacketServer.cs index fb35723..9c8f65c 100644 --- a/OpenSim/OpenSim.RegionServer/PacketServer.cs +++ b/OpenSim/OpenSim.RegionServer/PacketServer.cs | |||
@@ -58,7 +58,6 @@ namespace OpenSim | |||
58 | { | 58 | { |
59 | if (this._localWorld != null) | 59 | if (this._localWorld != null) |
60 | { | 60 | { |
61 | //ClientView.AddPacketHandler(PacketType.DeRezObject, _localWorld.DeRezObject); | ||
62 | ClientView.AddPacketHandler(PacketType.UUIDNameRequest, this.RequestUUIDName); | 61 | ClientView.AddPacketHandler(PacketType.UUIDNameRequest, this.RequestUUIDName); |
63 | } | 62 | } |
64 | } | 63 | } |
diff --git a/OpenSim/OpenSim.RegionServer/world/Avatar.Update.cs b/OpenSim/OpenSim.RegionServer/world/Avatar.Update.cs index e49fab3..ed1ffc0 100644 --- a/OpenSim/OpenSim.RegionServer/world/Avatar.Update.cs +++ b/OpenSim/OpenSim.RegionServer/world/Avatar.Update.cs | |||
@@ -10,89 +10,93 @@ namespace OpenSim.world | |||
10 | { | 10 | { |
11 | public override void update() | 11 | public override void update() |
12 | { | 12 | { |
13 | if (this._physActor == null) | 13 | if (!this.childAvatar) |
14 | { | 14 | { |
15 | //HACKHACK: Note to work out why this entity does not have a physics actor | 15 | if (this._physActor == null) |
16 | // and prehaps create one. | ||
17 | return; | ||
18 | } | ||
19 | libsecondlife.LLVector3 pos2 = new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z); | ||
20 | if (this.updateflag) | ||
21 | { | ||
22 | //need to send movement info | ||
23 | //so create the improvedterseobjectupdate packet | ||
24 | //use CreateTerseBlock() | ||
25 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); | ||
26 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | ||
27 | terse.RegionData.RegionHandle = m_regionHandle; // FIXME | ||
28 | terse.RegionData.TimeDilation = 64096; | ||
29 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | ||
30 | terse.ObjectData[0] = terseBlock; | ||
31 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
32 | foreach (Avatar client in avList) | ||
33 | { | 16 | { |
34 | client.SendPacketToViewer(terse); | 17 | //HACKHACK: Note to work out why this entity does not have a physics actor |
18 | // and prehaps create one. | ||
19 | return; | ||
35 | } | 20 | } |
21 | libsecondlife.LLVector3 pos2 = new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z); | ||
22 | if (this.updateflag) | ||
23 | { | ||
24 | //need to send movement info | ||
25 | //so create the improvedterseobjectupdate packet | ||
26 | //use CreateTerseBlock() | ||
27 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); | ||
28 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | ||
29 | terse.RegionData.RegionHandle = m_regionHandle; // FIXME | ||
30 | terse.RegionData.TimeDilation = 64096; | ||
31 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | ||
32 | terse.ObjectData[0] = terseBlock; | ||
33 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
34 | foreach (Avatar client in avList) | ||
35 | { | ||
36 | client.SendPacketToViewer(terse); | ||
37 | } | ||
36 | 38 | ||
37 | updateflag = false; | 39 | updateflag = false; |
38 | //this._updateCount = 0; | 40 | //this._updateCount = 0; |
39 | } | 41 | } |
40 | else | 42 | else |
41 | { | ||
42 | |||
43 | if ((pos2 != this.positionLastFrame) || (this.movementflag == 16)) | ||
44 | { | 43 | { |
45 | _updateCount++; | 44 | |
46 | if (((!PhysicsEngineFlying) && (_updateCount > 3)) || (PhysicsEngineFlying) && (_updateCount > 0)) | 45 | if ((pos2 != this.positionLastFrame) || (this.movementflag == 16)) |
47 | { | 46 | { |
48 | //It has been a while since last update was sent so lets send one. | 47 | _updateCount++; |
49 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); | 48 | if (((!PhysicsEngineFlying) && (_updateCount > 3)) || (PhysicsEngineFlying) && (_updateCount > 0)) |
50 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | ||
51 | terse.RegionData.RegionHandle = m_regionHandle; // FIXME | ||
52 | terse.RegionData.TimeDilation = 64096; | ||
53 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | ||
54 | terse.ObjectData[0] = terseBlock; | ||
55 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
56 | foreach (Avatar client in avList) | ||
57 | { | 49 | { |
58 | client.SendPacketToViewer(terse); | 50 | //It has been a while since last update was sent so lets send one. |
51 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); | ||
52 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | ||
53 | terse.RegionData.RegionHandle = m_regionHandle; // FIXME | ||
54 | terse.RegionData.TimeDilation = 64096; | ||
55 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | ||
56 | terse.ObjectData[0] = terseBlock; | ||
57 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
58 | foreach (Avatar client in avList) | ||
59 | { | ||
60 | client.SendPacketToViewer(terse); | ||
61 | } | ||
62 | _updateCount = 0; | ||
59 | } | 63 | } |
60 | _updateCount = 0; | ||
61 | } | ||
62 | 64 | ||
63 | if (this.movementflag == 16) | 65 | if (this.movementflag == 16) |
64 | { | 66 | { |
65 | movementflag = 0; | 67 | movementflag = 0; |
68 | } | ||
66 | } | 69 | } |
67 | } | ||
68 | |||
69 | } | ||
70 | this.positionLastFrame = pos2; | ||
71 | 70 | ||
72 | if (!this.ControllingClient.m_sandboxMode) | ||
73 | { | ||
74 | if (pos2.X < 0) | ||
75 | { | ||
76 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); | ||
77 | } | 71 | } |
72 | this.positionLastFrame = pos2; | ||
78 | 73 | ||
79 | if (pos2.Y < 0) | 74 | if (!this.ControllingClient.m_sandboxMode) |
80 | { | 75 | { |
81 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); | 76 | if (pos2.X < 0) |
82 | } | 77 | { |
78 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); | ||
79 | } | ||
83 | 80 | ||
84 | if (pos2.X > 255) | 81 | if (pos2.Y < 0) |
85 | { | 82 | { |
86 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); | 83 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); |
87 | } | 84 | } |
88 | 85 | ||
89 | if (pos2.Y > 255) | 86 | if (pos2.X > 255) |
90 | { | 87 | { |
91 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); | 88 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); |
89 | } | ||
90 | |||
91 | if (pos2.Y > 255) | ||
92 | { | ||
93 | ControllingClient.CrossSimBorder(new LLVector3(this._physActor.Position.X, this._physActor.Position.Y, this._physActor.Position.Z)); | ||
94 | } | ||
92 | } | 95 | } |
93 | } | 96 | } |
94 | 97 | ||
95 | } | 98 | } |
99 | |||
96 | public void SendUpdateToOtherClient(Avatar remoteAvatar) | 100 | public void SendUpdateToOtherClient(Avatar remoteAvatar) |
97 | { | 101 | { |
98 | ObjectUpdatePacket objupdate = CreateUpdatePacket(); | 102 | ObjectUpdatePacket objupdate = CreateUpdatePacket(); |
diff --git a/OpenSim/OpenSim.RegionServer/world/Avatar.cs b/OpenSim/OpenSim.RegionServer/world/Avatar.cs index 680d059..2c1ccdf 100644 --- a/OpenSim/OpenSim.RegionServer/world/Avatar.cs +++ b/OpenSim/OpenSim.RegionServer/world/Avatar.cs | |||
@@ -35,7 +35,7 @@ namespace OpenSim.world | |||
35 | private string m_regionName; | 35 | private string m_regionName; |
36 | private ushort m_regionWaterHeight; | 36 | private ushort m_regionWaterHeight; |
37 | private bool m_regionTerraform; | 37 | private bool m_regionTerraform; |
38 | //private bool childShadowAvatar = false; | 38 | private bool childAvatar = false; |
39 | 39 | ||
40 | public Avatar(ClientView TheClient, World world, string regionName, Dictionary<uint, ClientView> clientThreads, ulong regionHandle, bool regionTerraform, ushort regionWater) | 40 | public Avatar(ClientView TheClient, World world, string regionName, Dictionary<uint, ClientView> clientThreads, ulong regionHandle, bool regionTerraform, ushort regionWater) |
41 | { | 41 | { |
@@ -72,6 +72,7 @@ namespace OpenSim.world | |||
72 | ControllingClient.OnCompleteMovementToRegion += new ClientView.GenericCall2(this.SendInitialPosition); | 72 | ControllingClient.OnCompleteMovementToRegion += new ClientView.GenericCall2(this.SendInitialPosition); |
73 | ControllingClient.OnAgentUpdate += new ClientView.GenericCall3(this.HandleAgentUpdate); | 73 | ControllingClient.OnAgentUpdate += new ClientView.GenericCall3(this.HandleAgentUpdate); |
74 | ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); | 74 | ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); |
75 | ControllingClient.OnChildAgentStatus += new ClientView.StatusChange(this.ChildStatusChange); | ||
75 | 76 | ||
76 | } | 77 | } |
77 | 78 | ||
@@ -87,6 +88,35 @@ namespace OpenSim.world | |||
87 | } | 88 | } |
88 | } | 89 | } |
89 | 90 | ||
91 | public void ChildStatusChange(bool status) | ||
92 | { | ||
93 | this.childAvatar = status; | ||
94 | |||
95 | if (this.childAvatar == true) | ||
96 | { | ||
97 | this._physActor.Velocity = new PhysicsVector(0, 0, 0); | ||
98 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); | ||
99 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | ||
100 | terse.RegionData.RegionHandle = m_regionHandle; // FIXME | ||
101 | terse.RegionData.TimeDilation = 64096; | ||
102 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | ||
103 | terse.ObjectData[0] = terseBlock; | ||
104 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
105 | foreach (Avatar client in avList) | ||
106 | { | ||
107 | client.SendPacketToViewer(terse); | ||
108 | } | ||
109 | } | ||
110 | else | ||
111 | { | ||
112 | LLVector3 startp = ControllingClient.StartPos; | ||
113 | lock (m_world.LockPhysicsEngine) | ||
114 | { | ||
115 | this._physActor.Position = new PhysicsVector(startp.X, startp.Y, startp.Z); | ||
116 | } | ||
117 | } | ||
118 | } | ||
119 | |||
90 | public override void addForces() | 120 | public override void addForces() |
91 | { | 121 | { |
92 | lock (this.forcesList) | 122 | lock (this.forcesList) |
diff --git a/OpenSim/OpenSim.RegionServer/world/World.cs b/OpenSim/OpenSim.RegionServer/world/World.cs index 921da3c..2edb8e7 100644 --- a/OpenSim/OpenSim.RegionServer/world/World.cs +++ b/OpenSim/OpenSim.RegionServer/world/World.cs | |||
@@ -530,7 +530,7 @@ namespace OpenSim.world | |||
530 | 530 | ||
531 | #region Add/Remove Avatar Methods | 531 | #region Add/Remove Avatar Methods |
532 | 532 | ||
533 | public override void AddViewerAgent(ClientView agentClient) | 533 | public override Avatar AddViewerAgent(ClientView agentClient) |
534 | { | 534 | { |
535 | //register for events | 535 | //register for events |
536 | agentClient.OnChatFromViewer += new ChatFromViewer(this.SimChat); | 536 | agentClient.OnChatFromViewer += new ChatFromViewer(this.SimChat); |
@@ -549,22 +549,23 @@ namespace OpenSim.world | |||
549 | agentClient.OnUpdatePrimRotation += new ClientView.UpdatePrimRotation(this.UpdatePrimRotation); | 549 | agentClient.OnUpdatePrimRotation += new ClientView.UpdatePrimRotation(this.UpdatePrimRotation); |
550 | agentClient.OnUpdatePrimScale += new ClientView.UpdatePrimVector(this.UpdatePrimScale); | 550 | agentClient.OnUpdatePrimScale += new ClientView.UpdatePrimVector(this.UpdatePrimScale); |
551 | agentClient.OnDeRezObject += new ClientView.GenericCall4(this.DeRezObject); | 551 | agentClient.OnDeRezObject += new ClientView.GenericCall4(this.DeRezObject); |
552 | 552 | Avatar newAvatar = null; | |
553 | try | 553 | try |
554 | { | 554 | { |
555 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent"); | 555 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent"); |
556 | Avatar newAvatar = new Avatar(agentClient, this, m_regionName, m_clientThreads, m_regionHandle, true, 20); | 556 | newAvatar = new Avatar(agentClient, this, m_regionName, m_clientThreads, m_regionHandle, true, 20); |
557 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Adding new avatar to world"); | 557 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Adding new avatar to world"); |
558 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Starting RegionHandshake "); | 558 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Starting RegionHandshake "); |
559 | newAvatar.SendRegionHandshake(this); | 559 | newAvatar.SendRegionHandshake(this); |
560 | if (!agentClient.m_child) | 560 | //if (!agentClient.m_child) |
561 | { | 561 | //{ |
562 | |||
562 | PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z); | 563 | PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z); |
563 | lock (this.LockPhysicsEngine) | 564 | lock (this.LockPhysicsEngine) |
564 | { | 565 | { |
565 | newAvatar.PhysActor = this.phyScene.AddAvatar(pVec); | 566 | newAvatar.PhysActor = this.phyScene.AddAvatar(pVec); |
566 | } | 567 | } |
567 | } | 568 | // } |
568 | lock (Entities) | 569 | lock (Entities) |
569 | { | 570 | { |
570 | if (!Entities.ContainsKey(agentClient.AgentID)) | 571 | if (!Entities.ContainsKey(agentClient.AgentID)) |
@@ -592,6 +593,7 @@ namespace OpenSim.world | |||
592 | { | 593 | { |
593 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "World.cs: AddViewerAgent() - Failed with exception " + e.ToString()); | 594 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "World.cs: AddViewerAgent() - Failed with exception " + e.ToString()); |
594 | } | 595 | } |
596 | return newAvatar; | ||
595 | } | 597 | } |
596 | 598 | ||
597 | public override void RemoveViewerAgent(ClientView agentClient) | 599 | public override void RemoveViewerAgent(ClientView agentClient) |
@@ -608,7 +610,7 @@ namespace OpenSim.world | |||
608 | } | 610 | } |
609 | if (agentClient.ClientAvatar.PhysActor != null) | 611 | if (agentClient.ClientAvatar.PhysActor != null) |
610 | { | 612 | { |
611 | //this.phyScene.RemoveAvatar(agentClient.ClientAvatar.PhysActor); | 613 | this.phyScene.RemoveAvatar(agentClient.ClientAvatar.PhysActor); |
612 | } | 614 | } |
613 | } | 615 | } |
614 | catch (Exception e) | 616 | catch (Exception e) |
diff --git a/OpenSim/OpenSim.RegionServer/world/WorldBase.cs b/OpenSim/OpenSim.RegionServer/world/WorldBase.cs index edc5518..ea71411 100644 --- a/OpenSim/OpenSim.RegionServer/world/WorldBase.cs +++ b/OpenSim/OpenSim.RegionServer/world/WorldBase.cs | |||
@@ -148,9 +148,9 @@ namespace OpenSim.world | |||
148 | /// Add a new Agent's avatar | 148 | /// Add a new Agent's avatar |
149 | /// </summary> | 149 | /// </summary> |
150 | /// <param name="agentClient"></param> | 150 | /// <param name="agentClient"></param> |
151 | public virtual void AddViewerAgent(ClientView agentClient) | 151 | public virtual Avatar AddViewerAgent(ClientView agentClient) |
152 | { | 152 | { |
153 | 153 | return null; | |
154 | } | 154 | } |
155 | 155 | ||
156 | /// <summary> | 156 | /// <summary> |