aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs99
1 files changed, 59 insertions, 40 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index c61afda..7ef3285 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -894,11 +894,29 @@ namespace OpenSim.Region.Environment.Scenes
894 } 894 }
895 } 895 }
896 896
897 /// <summary>
898 /// Rez an object into a scene
899 /// </summary>
900 /// <param name="remoteClient"></param>
901 /// <param name="itemID"></param>
902 /// <param name="RayEnd"></param>
903 /// <param name="RayStart"></param>
904 /// <param name="RayTargetID"></param>
905 /// <param name="BypassRayCast"></param>
906 /// <param name="RayEndIsIntersection"></param>
907 /// <param name="EveryoneMask"></param>
908 /// <param name="GroupMask"></param>
909 /// <param name="NextOwnerMask"></param>
910 /// <param name="ItemFlags"></param>
911 /// <param name="RezSelected"></param>
912 /// <param name="RemoveItem"></param>
913 /// <param name="fromTaskID"></param>
897 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart, 914 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
898 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, 915 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
899 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags, 916 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
900 bool RezSelected, bool RemoveItem, LLUUID fromTaskID) 917 bool RezSelected, bool RemoveItem, LLUUID fromTaskID)
901 { 918 {
919 // Work out position details
902 byte bRayEndIsIntersection = (byte)0; 920 byte bRayEndIsIntersection = (byte)0;
903 921
904 if (RayEndIsIntersection) 922 if (RayEndIsIntersection)
@@ -910,12 +928,12 @@ namespace OpenSim.Region.Environment.Scenes
910 bRayEndIsIntersection = (byte)0; 928 bRayEndIsIntersection = (byte)0;
911 } 929 }
912 930
913 LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1), BypassRayCast, bRayEndIsIntersection); 931 LLVector3 pos
914 RezObject(remoteClient, itemID, pos); 932 = GetNewRezLocation(
915 } 933 RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1),
916 934 BypassRayCast, bRayEndIsIntersection);
917 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos) 935
918 { 936 // Rez object
919 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 937 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
920 if (userInfo != null) 938 if (userInfo != null)
921 { 939 {
@@ -928,9 +946,41 @@ namespace OpenSim.Region.Environment.Scenes
928 946
929 if (rezAsset != null) 947 if (rezAsset != null)
930 { 948 {
931 AddRezObject(Helpers.FieldToUTF8String(rezAsset.Data), pos); 949 string xmlData = Helpers.FieldToUTF8String(rezAsset.Data);
932 //userInfo.DeleteItem(remoteClient.AgentId, item); 950 SceneObjectGroup group = new SceneObjectGroup(this, m_regionHandle, xmlData);
933 //remoteClient.SendRemoveInventoryItem(itemID); 951 group.ResetIDs();
952 AddEntity(group);
953 group.AbsolutePosition = pos;
954 SceneObjectPart rootPart = group.GetChildPart(group.UUID);
955
956 // Since renaming the item in the inventory does not affect the name stored
957 // in the serialization, transfer the correct name from the inventory to the
958 // object itself before we rez.
959 rootPart.Name = item.inventoryName;
960 rootPart.Description = item.inventoryDescription;
961
962 rootPart.TrimPermissions();
963 group.ApplyPhysics(m_physicalPrim);
964 group.StartScripts();
965
966 //bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0)&& m_physicalPrim);
967 //if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
968 //{
969 //PrimitiveBaseShape pbs = rootPart.Shape;
970 //rootPart.PhysActor = PhysicsScene.AddPrimShape(
971 //rootPart.Name,
972 //pbs,
973 //new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y,
974 // rootPart.AbsolutePosition.Z),
975 //new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
976 //new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
977 // rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
978
979 // rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
980
981 // }
982 //
983 rootPart.ScheduleFullUpdate();
934 } 984 }
935 } 985 }
936 } 986 }
@@ -942,36 +992,5 @@ namespace OpenSim.Region.Environment.Scenes
942 { 992 {
943 System.Console.WriteLine("RezSingleAttachment: unimplemented yet"); 993 System.Console.WriteLine("RezSingleAttachment: unimplemented yet");
944 } 994 }
945
946 private void AddRezObject(string xmlData, LLVector3 pos)
947 {
948 SceneObjectGroup group = new SceneObjectGroup(this, m_regionHandle, xmlData);
949 group.ResetIDs();
950 AddEntity(group);
951 group.AbsolutePosition = pos;
952 SceneObjectPart rootPart = group.GetChildPart(group.UUID);
953 rootPart.TrimPermissions();
954 group.ApplyPhysics(m_physicalPrim);
955 group.StartScripts();
956
957 //bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0)&& m_physicalPrim);
958 //if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
959 //{
960 //PrimitiveBaseShape pbs = rootPart.Shape;
961 //rootPart.PhysActor = PhysicsScene.AddPrimShape(
962 //rootPart.Name,
963 //pbs,
964 //new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y,
965 // rootPart.AbsolutePosition.Z),
966 //new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
967 //new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
968 // rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
969
970 // rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
971
972 // }
973 //
974 rootPart.ScheduleFullUpdate();
975 }
976 } 995 }
977} 996}