aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs6
-rw-r--r--OpenSim/Region/Framework/Interfaces/IScenePresence.cs56
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs46
4 files changed, 64 insertions, 46 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index c910289..1833dce 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -36,6 +36,12 @@ namespace OpenSim.Region.Framework.Interfaces
36 public interface IAttachmentsModule 36 public interface IAttachmentsModule
37 { 37 {
38 /// <summary> 38 /// <summary>
39 /// RezAttachments. This should only be called upon login on the first region.
40 /// Attachment rezzings on crossings and TPs are done in a different way.
41 /// </summary>
42 void RezAttachments(IScenePresence sp);
43
44 /// <summary>
39 /// Attach an object to an avatar from the world. 45 /// Attach an object to an avatar from the world.
40 /// </summary> 46 /// </summary>
41 /// <param name="controllingClient"></param> 47 /// <param name="controllingClient"></param>
diff --git a/OpenSim/Region/Framework/Interfaces/IScenePresence.cs b/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
new file mode 100644
index 0000000..d700d79
--- /dev/null
+++ b/OpenSim/Region/Framework/Interfaces/IScenePresence.cs
@@ -0,0 +1,56 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using OpenSim.Framework;
30
31namespace OpenSim.Region.Framework.Interfaces
32{
33 /// <summary>
34 /// An agent in the scene.
35 /// </summary>
36 /// <remarks>
37 /// Interface is a work in progress. Please feel free to add other required properties and methods.
38 /// </remarks>
39 public interface IScenePresence : ISceneEntity
40 {
41 /// <value>
42 /// The client controlling this presence
43 /// </value>
44 IClientAPI ControllingClient { get; }
45
46 /// <summary>
47 /// Avatar appearance data.
48 /// </summary>
49 /// <remarks>
50 // Because appearance setting is in a module, we actually need
51 // to give it access to our appearance directly, otherwise we
52 // get a synchronization issue.
53 /// </remarks>
54 AvatarAppearance Appearance { get; set; }
55 }
56} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index e0250de..e7fe8df 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2578,7 +2578,7 @@ namespace OpenSim.Region.Framework.Scenes
2578 if (aCircuit.child == false) 2578 if (aCircuit.child == false)
2579 { 2579 {
2580 sp.IsChildAgent = false; 2580 sp.IsChildAgent = false;
2581 Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); 2581 Util.FireAndForget(delegate(object o) { AttachmentsModule.RezAttachments(sp); });
2582 } 2582 }
2583 } 2583 }
2584 2584
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 4143d44..040e801 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -66,7 +66,7 @@ namespace OpenSim.Region.Framework.Scenes
66 66
67 public delegate void SendCourseLocationsMethod(UUID scene, ScenePresence presence, List<Vector3> coarseLocations, List<UUID> avatarUUIDs); 67 public delegate void SendCourseLocationsMethod(UUID scene, ScenePresence presence, List<Vector3> coarseLocations, List<UUID> avatarUUIDs);
68 68
69 public class ScenePresence : EntityBase, ISceneEntity 69 public class ScenePresence : EntityBase, IScenePresence
70 { 70 {
71// ~ScenePresence() 71// ~ScenePresence()
72// { 72// {
@@ -444,9 +444,6 @@ namespace OpenSim.Region.Framework.Scenes
444 444
445 protected PhysicsActor m_physicsActor; 445 protected PhysicsActor m_physicsActor;
446 446
447 /// <value>
448 /// The client controlling this presence
449 /// </value>
450 public IClientAPI ControllingClient 447 public IClientAPI ControllingClient
451 { 448 {
452 get { return m_controllingClient; } 449 get { return m_controllingClient; }
@@ -2689,9 +2686,6 @@ namespace OpenSim.Region.Framework.Scenes
2689 UUID, m_appearance.VisualParams, m_appearance.Texture.GetBytes()); 2686 UUID, m_appearance.VisualParams, m_appearance.Texture.GetBytes());
2690 } 2687 }
2691 2688
2692 // Because appearance setting is in a module, we actually need
2693 // to give it access to our appearance directly, otherwise we
2694 // get a synchronization issue.
2695 public AvatarAppearance Appearance 2689 public AvatarAppearance Appearance
2696 { 2690 {
2697 get { return m_appearance; } 2691 get { return m_appearance; }
@@ -3813,44 +3807,6 @@ namespace OpenSim.Region.Framework.Scenes
3813 return flags; 3807 return flags;
3814 } 3808 }
3815 3809
3816 /// <summary>
3817 /// RezAttachments. This should only be called upon login on the first region.
3818 /// Attachment rezzings on crossings and TPs are done in a different way.
3819 /// </summary>
3820 public void RezAttachments()
3821 {
3822 if (null == m_appearance)
3823 {
3824 m_log.WarnFormat("[ATTACHMENT]: Appearance has not been initialized for agent {0}", UUID);
3825 return;
3826 }
3827
3828 List<AvatarAttachment> attachments = m_appearance.GetAttachments();
3829 foreach (AvatarAttachment attach in attachments)
3830 {
3831 int p = attach.AttachPoint;
3832 UUID itemID = attach.ItemID;
3833
3834 //UUID assetID = attach.AssetID;
3835 // For some reason assetIDs are being written as Zero's in the DB -- need to track tat down
3836 // But they're not used anyway, the item is being looked up for now, so let's proceed.
3837 //if (UUID.Zero == assetID)
3838 //{
3839 // m_log.DebugFormat("[ATTACHMENT]: Cannot rez attachment in point {0} with itemID {1}", p, itemID);
3840 // continue;
3841 //}
3842
3843 try
3844 {
3845 m_scene.AttachmentsModule.RezSingleAttachmentFromInventory(ControllingClient, itemID, (uint)p);
3846 }
3847 catch (Exception e)
3848 {
3849 m_log.ErrorFormat("[ATTACHMENT]: Unable to rez attachment: {0}{1}", e.Message, e.StackTrace);
3850 }
3851 }
3852 }
3853
3854 private void ReprioritizeUpdates() 3810 private void ReprioritizeUpdates()
3855 { 3811 {
3856 if (Scene.IsReprioritizationEnabled && Scene.UpdatePrioritizationScheme != UpdatePrioritizationSchemes.Time) 3812 if (Scene.IsReprioritizationEnabled && Scene.UpdatePrioritizationScheme != UpdatePrioritizationSchemes.Time)