aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Scenes/Primitive.cs10
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs72
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs21
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneBase.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObject.cs5
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs10
6 files changed, 100 insertions, 20 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Primitive.cs b/OpenSim/Region/Environment/Scenes/Primitive.cs
index f421529..93e4959 100644
--- a/OpenSim/Region/Environment/Scenes/Primitive.cs
+++ b/OpenSim/Region/Environment/Scenes/Primitive.cs
@@ -587,6 +587,16 @@ namespace OpenSim.Region.Environment.Scenes
587 587
588 #endregion 588 #endregion
589 589
590 #region Inventory
591 public void GetInventory(IClientAPI client, uint localID)
592 {
593 if (localID == this.m_localId)
594 {
595 client.SendTaskInventory(this.m_uuid, 0, new byte[0]);
596 }
597 }
598 #endregion
599
590 public void UpdateExtraParam(ushort type, bool inUse, byte[] data) 600 public void UpdateExtraParam(ushort type, bool inUse, byte[] data)
591 { 601 {
592 this.m_Shape.ExtraParams = new byte[data.Length + 7]; 602 this.m_Shape.ExtraParams = new byte[data.Length + 7];
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
index e963737..126b636 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
@@ -26,11 +26,14 @@
26* 26*
27*/ 27*/
28using System; 28using System;
29using System.IO;
29using System.Collections.Generic; 30using System.Collections.Generic;
30using libsecondlife; 31using libsecondlife;
31using libsecondlife.Packets; 32using libsecondlife.Packets;
32using OpenSim.Framework.Interfaces; 33using OpenSim.Framework.Interfaces;
33using OpenSim.Framework.Types; 34using OpenSim.Framework.Types;
35using OpenSim.Framework.Communications.Caches;
36using OpenSim.Framework.Data;
34 37
35namespace OpenSim.Region.Environment.Scenes 38namespace OpenSim.Region.Environment.Scenes
36{ 39{
@@ -139,7 +142,7 @@ namespace OpenSim.Region.Environment.Scenes
139 /// <param name="fromAgentID"></param> 142 /// <param name="fromAgentID"></param>
140 public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID) 143 public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
141 { 144 {
142 ScenePresence avatar = null; 145 ScenePresence avatar = null;
143 if (this.Avatars.ContainsKey(fromAgentID)) 146 if (this.Avatars.ContainsKey(fromAgentID))
144 { 147 {
145 avatar = this.Avatars[fromAgentID]; 148 avatar = this.Avatars[fromAgentID];
@@ -343,6 +346,29 @@ namespace OpenSim.Region.Environment.Scenes
343 } 346 }
344 } 347 }
345 } 348 }
349
350 /// <summary>
351 ///
352 /// </summary>
353 /// <param name="remoteClient"></param>
354 /// <param name="primLocalID"></param>
355 public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID)
356 {
357 Primitive prim = null;
358 foreach (EntityBase ent in Entities.Values)
359 {
360 if (ent is SceneObject)
361 {
362 prim = ((SceneObject)ent).HasChildPrim(primLocalID);
363 if (prim != null)
364 {
365 prim.GetInventory(remoteClient, primLocalID);
366 break;
367 }
368 }
369 }
370 }
371
346 /// <summary> 372 /// <summary>
347 /// 373 ///
348 /// </summary> 374 /// </summary>
@@ -623,6 +649,50 @@ namespace OpenSim.Region.Environment.Scenes
623 } 649 }
624 650
625 /// <summary> 651 /// <summary>
652 /// temporary method to test out creating new inventory items
653 /// </summary>
654 /// <param name="remoteClient"></param>
655 /// <param name="transActionID"></param>
656 /// <param name="folderID"></param>
657 /// <param name="callbackID"></param>
658 /// <param name="description"></param>
659 /// <param name="name"></param>
660 /// <param name="invType"></param>
661 /// <param name="type"></param>
662 /// <param name="wearableType"></param>
663 /// <param name="nextOwnerMask"></param>
664 public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask)
665 {
666 CachedUserInfo userInfo = commsManager.UserProfilesCache.GetUserDetails(remoteClient.AgentId);
667 if (userInfo != null)
668 {
669 AssetBase asset = new AssetBase();
670 asset.Name = name;
671 asset.Description = description;
672 asset.InvType = invType;
673 asset.Type = type;
674 asset.FullID = LLUUID.Random();
675 asset.Data = new byte[0];
676 this.assetCache.AddAsset(asset);
677
678 InventoryItemBase item = new InventoryItemBase();
679 item.avatarID = remoteClient.AgentId;
680 item.creatorsID = remoteClient.AgentId;
681 item.inventoryID = LLUUID.Random();
682 item.assetID = asset.FullID;
683 item.inventoryDescription = description;
684 item.inventoryName = name;
685 item.type = invType;
686 item.parentFolderID = folderID;
687 item.inventoryCurrentPermissions = 2147483647;
688 item.inventoryNextPermissions = nextOwnerMask;
689
690 userInfo.ItemReceive(remoteClient.AgentId, item);
691 remoteClient.SendInventoryItemUpdate(item);
692 }
693 }
694
695 /// <summary>
626 /// Sends prims to a client 696 /// Sends prims to a client
627 /// </summary> 697 /// </summary>
628 /// <param name="RemoteClient">Client to send to</param> 698 /// <param name="RemoteClient">Client to send to</param>
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 64676f0..518a53f 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -37,7 +37,7 @@ using OpenSim.Framework.Interfaces;
37using OpenSim.Framework.Servers; 37using OpenSim.Framework.Servers;
38using OpenSim.Framework.Types; 38using OpenSim.Framework.Types;
39using OpenSim.Physics.Manager; 39using OpenSim.Physics.Manager;
40using OpenSim.Region.Caches; 40using OpenSim.Framework.Communications.Caches;
41using OpenSim.Region.Environment.LandManagement; 41using OpenSim.Region.Environment.LandManagement;
42using OpenSim.Region.Scripting; 42using OpenSim.Region.Scripting;
43using OpenSim.Region.Terrain; 43using OpenSim.Region.Terrain;
@@ -550,13 +550,14 @@ namespace OpenSim.Region.Environment.Scenes
550 m_estateManager.sendRegionHandshake(client); 550 m_estateManager.sendRegionHandshake(client);
551 CreateAndAddScenePresence(client); 551 CreateAndAddScenePresence(client);
552 m_LandManager.sendParcelOverlay(client); 552 m_LandManager.sendParcelOverlay(client);
553 //commsManager.UserProfilesCache.AddNewUser(client.AgentId); 553 commsManager.UserProfilesCache.AddNewUser(client.AgentId);
554 } 554 }
555 555
556 protected virtual void SubscribeToClientEvents(IClientAPI client) 556 protected virtual void SubscribeToClientEvents(IClientAPI client)
557 { 557 {
558 client.OnRegionHandShakeReply += SendLayerData; 558 client.OnRegionHandShakeReply += SendLayerData;
559 //remoteClient.OnRequestWearables += new GenericCall(this.GetInitialPrims); 559 //remoteClient.OnRequestWearables += new GenericCall(this.GetInitialPrims);
560 client.OnModifyTerrain += ModifyTerrain;
560 client.OnChatFromViewer += SimChat; 561 client.OnChatFromViewer += SimChat;
561 client.OnInstantMessage += InstantMessage; 562 client.OnInstantMessage += InstantMessage;
562 client.OnRequestWearables += InformClientOfNeighbours; 563 client.OnRequestWearables += InformClientOfNeighbours;
@@ -592,9 +593,11 @@ namespace OpenSim.Region.Environment.Scenes
592 new ParcelObjectOwnerRequest(m_LandManager.handleParcelObjectOwnersRequest); 593 new ParcelObjectOwnerRequest(m_LandManager.handleParcelObjectOwnersRequest);
593 594
594 client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage); 595 client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage);
595 596
596 //client.OnCreateNewInventoryFolder += commsManager.UserProfilesCache.HandleCreateInventoryFolder; 597 // client.OnCreateNewInventoryItem += CreateNewInventoryItem;
598 // client.OnCreateNewInventoryFolder += commsManager.UserProfilesCache.HandleCreateInventoryFolder;
597 // client.OnFetchInventoryDescendents += commsManager.UserProfilesCache.HandleFecthInventoryDescendents; 599 // client.OnFetchInventoryDescendents += commsManager.UserProfilesCache.HandleFecthInventoryDescendents;
600 // client.OnRequestTaskInventory += RequestTaskInventory;
598 } 601 }
599 602
600 protected ScenePresence CreateAndAddScenePresence(IClientAPI client) 603 protected ScenePresence CreateAndAddScenePresence(IClientAPI client)
@@ -819,13 +822,13 @@ namespace OpenSim.Region.Environment.Scenes
819 } 822 }
820 } 823 }
821 824
822 public void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) 825 public void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
823 { 826 {
824 if (regionHandle == m_regInfo.RegionHandle) 827 if (regionHandle == m_regInfo.RegionHandle)
825 { 828 {
826 if (Avatars.ContainsKey(agentID)) 829 if (Avatars.ContainsKey(agentID))
827 { 830 {
828 Avatars[agentID].MakeAvatar(position); 831 Avatars[agentID].MakeAvatar(position, isFlying);
829 } 832 }
830 } 833 }
831 } 834 }
@@ -909,7 +912,7 @@ namespace OpenSim.Region.Environment.Scenes
909 agent.startpos = new LLVector3(128, 128, 70); 912 agent.startpos = new LLVector3(128, 128, 70);
910 agent.child = true; 913 agent.child = true;
911 commsManager.InterRegion.InformRegionOfChildAgent(regionHandle, agent); 914 commsManager.InterRegion.InformRegionOfChildAgent(regionHandle, agent);
912 commsManager.InterRegion.ExpectAvatarCrossing(regionHandle, remoteClient.AgentId, position); 915 commsManager.InterRegion.ExpectAvatarCrossing(regionHandle, remoteClient.AgentId, position, false);
913 916
914 remoteClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4)); 917 remoteClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4));
915 } 918 }
@@ -922,9 +925,9 @@ namespace OpenSim.Region.Environment.Scenes
922 /// <param name="regionhandle"></param> 925 /// <param name="regionhandle"></param>
923 /// <param name="agentID"></param> 926 /// <param name="agentID"></param>
924 /// <param name="position"></param> 927 /// <param name="position"></param>
925 public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position) 928 public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying)
926 { 929 {
927 return commsManager.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position); 930 return commsManager.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying);
928 } 931 }
929 932
930 public void performParcelPrimCountUpdate() 933 public void performParcelPrimCountUpdate()
diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs
index c91c654..3c2193e 100644
--- a/OpenSim/Region/Environment/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs
@@ -32,7 +32,7 @@ using libsecondlife;
32using OpenSim.Framework.Console; 32using OpenSim.Framework.Console;
33using OpenSim.Framework.Interfaces; 33using OpenSim.Framework.Interfaces;
34using OpenSim.Framework.Types; 34using OpenSim.Framework.Types;
35using OpenSim.Region.Caches; 35using OpenSim.Framework.Communications.Caches;
36using OpenSim.Region.Terrain; 36using OpenSim.Region.Terrain;
37using OpenSim.Framework; 37using OpenSim.Framework;
38 38
diff --git a/OpenSim/Region/Environment/Scenes/SceneObject.cs b/OpenSim/Region/Environment/Scenes/SceneObject.cs
index 294087f..d513634 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObject.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObject.cs
@@ -40,13 +40,8 @@ namespace OpenSim.Region.Environment.Scenes
40 private Encoding enc = Encoding.ASCII; 40 private Encoding enc = Encoding.ASCII;
41 private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>(); //list of all primitive id's that are part of this group 41 private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>(); //list of all primitive id's that are part of this group
42 public Primitive rootPrimitive; 42 public Primitive rootPrimitive;
43 private new Scene m_world;
44 protected ulong m_regionHandle; 43 protected ulong m_regionHandle;
45 44
46 private bool physicsEnabled = false; // HOUSEKEEPING : Do we really need this?
47 private PhysicsScene m_PhysScene; // HOUSEKEEPING : Do we really need this?
48 private PhysicsActor m_PhysActor; // HOUSEKEEPING : Do we really need this?
49
50 private EventManager m_eventManager; 45 private EventManager m_eventManager;
51 46
52 public bool isSelected = false; 47 public bool isSelected = false;
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 2bb4fb2..e81ac7b 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -66,6 +66,7 @@ namespace OpenSim.Region.Environment.Scenes
66 private IScenePresenceBody m_body; // HOUSEKEEPING : Do we really need this? 66 private IScenePresenceBody m_body; // HOUSEKEEPING : Do we really need this?
67 67
68 protected RegionInfo m_regionInfo; 68 protected RegionInfo m_regionInfo;
69 protected ulong crossingFromRegion = 0;
69 70
70 private Vector3[] Dir_Vectors = new Vector3[6]; 71 private Vector3[] Dir_Vectors = new Vector3[6];
71 private enum Dir_ControlFlags 72 private enum Dir_ControlFlags
@@ -183,10 +184,11 @@ namespace OpenSim.Region.Environment.Scenes
183 /// 184 ///
184 /// </summary> 185 /// </summary>
185 /// <param name="pos"></param> 186 /// <param name="pos"></param>
186 public void MakeAvatar(LLVector3 pos) 187 public void MakeAvatar(LLVector3 pos, bool isFlying)
187 { 188 {
188 //this.childAvatar = false; 189 //this.childAvatar = false;
189 this.Pos = pos; 190 this.Pos = pos;
191 this._physActor.Flying = isFlying;
190 this.newAvatar = true; 192 this.newAvatar = true;
191 this.childAgent = false; 193 this.childAgent = false;
192 } 194 }
@@ -194,8 +196,8 @@ namespace OpenSim.Region.Environment.Scenes
194 protected void MakeChildAgent() 196 protected void MakeChildAgent()
195 { 197 {
196 this.Velocity = new LLVector3(0, 0, 0); 198 this.Velocity = new LLVector3(0, 0, 0);
197 this.Pos = new LLVector3(128, 128, 70);
198 this.childAgent = true; 199 this.childAgent = true;
200 //this.Pos = new LLVector3(128, 128, 70);
199 } 201 }
200 202
201 /// <summary> 203 /// <summary>
@@ -551,11 +553,11 @@ namespace OpenSim.Region.Environment.Scenes
551 RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle); 553 RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle);
552 if (neighbourRegion != null) 554 if (neighbourRegion != null)
553 { 555 {
554 bool res = this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos); 556 bool res = this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos, this._physActor.Flying);
555 if (res) 557 if (res)
556 { 558 {
557 this.MakeChildAgent();
558 this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint); 559 this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint);
560 this.MakeChildAgent();
559 } 561 }
560 } 562 }
561 } 563 }