Resolve merge commits, stage 1

This commit is contained in:
Tom
2011-09-04 07:06:36 -07:00
267 changed files with 19393 additions and 5645 deletions

View File

@@ -36,6 +36,27 @@ namespace OpenSim.Region.Framework.Interfaces
{
public interface IAttachmentsModule
{
/// <summary>
/// RezAttachments. This should only be called upon login on the first region.
/// Attachment rezzings on crossings and TPs are done in a different way.
/// </summary>
void RezAttachments(IScenePresence sp);
/// <summary>
/// Save the attachments that have change on this presence.
/// </summary>
/// <param name="sp"></param>
void SaveChangedAttachments(IScenePresence sp);
/// <summary>
/// Delete all the presence's attachments from the scene
/// </summary>
/// <param name="sp">
/// This is done when a root agent leaves/is demoted to child (for instance, on logout, teleport or region cross).
/// </param>
/// <param name="silent"></param>
void DeleteAttachmentsFromScene(IScenePresence sp, bool silent);
/// <summary>
/// Attach an object to an avatar from the world.
/// </summary>
@@ -48,13 +69,11 @@ namespace OpenSim.Region.Framework.Interfaces
IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent);
/// <summary>
/// Attach an object to an avatar.
/// Attach an object to an avatar
/// </summary>
/// <param name="controllingClient"></param>
/// <param name="localID"></param>
/// <param name="attachPoint"></param>
/// <param name="rot"></param>
/// <param name="attachPos"></param>
/// <param name="remoteClient"></param>
/// <param name="grp"></param>
/// <param name="AttachmentPt"></param>
/// <param name="silent"></param>
/// <returns>true if the object was successfully attached, false otherwise</returns>
bool AttachObject(
@@ -67,7 +86,7 @@ namespace OpenSim.Region.Framework.Interfaces
/// <param name="itemID"></param>
/// <param name="AttachmentPt"></param>
/// <returns>The scene object that was attached. Null if the scene object could not be found</returns>
UUID RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
ISceneEntity RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
/// <summary>
/// Rez an attachment from user inventory
@@ -80,7 +99,7 @@ namespace OpenSim.Region.Framework.Interfaces
/// False is required so that we don't attempt to update information when a user enters a scene with the
/// attachment already correctly set up in inventory.
/// <returns>The uuid of the scene object that was attached. Null if the scene object could not be found</returns>
UUID RezSingleAttachmentFromInventory(
ISceneEntity RezSingleAttachmentFromInventory(
IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus);
// Same as above, but also load script states from a separate doc
@@ -101,9 +120,10 @@ namespace OpenSim.Region.Framework.Interfaces
/// <summary>
/// Detach an object from the avatar.
/// </summary>
///
/// <remarks>
/// This method is called in response to a client's detach request, so we only update the information in
/// inventory
/// </remarks>
/// <param name="objectLocalID"></param>
/// <param name="remoteClient"></param>
void DetachObject(uint objectLocalID, IClientAPI remoteClient);
@@ -111,12 +131,12 @@ namespace OpenSim.Region.Framework.Interfaces
/// <summary>
/// Detach the given item to the ground.
/// </summary>
/// <param name="itemID"></param>
/// <param name="objectLocalID"></param>
/// <param name="remoteClient"></param>
void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient);
void DetachSingleAttachmentToGround(uint objectLocalID, IClientAPI remoteClient);
/// <summary>
/// Update the user inventory to show a detach.
/// Detach the given item so that it remains in the user's inventory.
/// </summary>
/// <param name="itemID">
/// A <see cref="UUID"/>
@@ -124,23 +144,15 @@ namespace OpenSim.Region.Framework.Interfaces
/// <param name="remoteClient">
/// A <see cref="IClientAPI"/>
/// </param>
void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient);
void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient);
/// <summary>
/// Update the user inventory with a changed attachment
/// </summary>
/// <param name="remoteClient">
/// A <see cref="IClientAPI"/>
/// </param>
/// <param name="grp">
/// A <see cref="SceneObjectGroup"/>
/// </param>
/// <param name="itemID">
/// A <see cref="UUID"/>
/// </param>
/// <param name="agentID">
/// A <see cref="UUID"/>
/// </param>
/// <param name="remoteClient"></param>
/// <param name="grp"></param>
/// <param name="itemID"></param>
/// <param name="agentID"></param>
void UpdateKnownItem(IClientAPI remoteClient, SceneObjectGroup grp, UUID itemID, UUID agentID);
}
}

View File

@@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
@@ -32,6 +33,30 @@ namespace OpenSim.Region.Framework.Interfaces
{
public interface IAvatarFactory
{
/// <summary>
/// Send the appearance of an avatar to others in the scene.
/// </summary>
/// <param name="agentId"></param>
/// <returns></returns>
bool SendAppearance(UUID agentId);
/// <summary>
/// Return the baked texture ids of the given agent.
/// </summary>
/// <param name="agentId"></param>
/// <returns>An empty list if this agent has no baked textures (e.g. because it's a child agent)</returns>
Dictionary<BakeType, Primitive.TextureEntryFace> GetBakedTextureFaces(UUID agentId);
/// <summary>
/// Save the baked textures for the given agent permanently in the asset database.
/// </summary>
/// <remarks>
/// This is used to preserve apperance textures for NPCs
/// </remarks>
/// <param name="agentId"></param>
/// <returns>true if a valid agent was found, false otherwise</returns>
bool SaveBakedTextures(UUID agentId);
bool ValidateBakedTextureCache(IClientAPI client);
void QueueAppearanceSend(UUID agentid);
void QueueAppearanceSave(UUID agentid);

View File

@@ -54,10 +54,58 @@ namespace OpenSim.Region.Framework.Interfaces
/// FIXME: This is not very useful. It would be far more useful to return a list of items instead.
/// </returns>
UUID CopyToInventory(DeRezAction action, UUID folderID, List<SceneObjectGroup> objectGroups, IClientAPI remoteClient);
SceneObjectGroup RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
/// <summary>
/// Rez an object into the scene from the user's inventory
/// </summary>
/// <remarks>
/// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
/// things to the scene. The caller should be doing that, I think.
/// </remarks>
/// <param name="remoteClient"></param>
/// <param name="itemID"></param>
/// <param name="RayEnd"></param>
/// <param name="RayStart"></param>
/// <param name="RayTargetID"></param>
/// <param name="BypassRayCast"></param>
/// <param name="RayEndIsIntersection"></param>
/// <param name="RezSelected"></param>
/// <param name="RemoveItem"></param>
/// <param name="fromTaskID"></param>
/// <param name="attachment"></param>
/// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
SceneObjectGroup RezObject(
IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
/// <summary>
/// Rez an object into the scene from the user's inventory
/// </summary>
/// <remarks>
/// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing
/// things to the scene. The caller should be doing that, I think.
/// </remarks>
/// <param name="remoteClient"></param>
/// <param name="item">
/// The item from which the object asset came. Can be null, in which case pre and post rez item adjustment and checks are not performed.
/// </param>
/// <param name="assetID">The asset id for the object to rez.</param>
/// <param name="RayEnd"></param>
/// <param name="RayStart"></param>
/// <param name="RayTargetID"></param>
/// <param name="BypassRayCast"></param>
/// <param name="RayEndIsIntersection"></param>
/// <param name="RezSelected"></param>
/// <param name="RemoveItem"></param>
/// <param name="fromTaskID"></param>
/// <param name="attachment"></param>
/// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful.</returns>
SceneObjectGroup RezObject(
IClientAPI remoteClient, InventoryItemBase item, UUID assetID, Vector3 RayEnd, Vector3 RayStart,
UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver);
/// <summary>

View File

@@ -26,15 +26,80 @@
*/
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.Framework.Interfaces
{
public interface INPCModule
{
UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, UUID cloneAppearanceFrom);
void Autopilot(UUID agentID, Scene scene, Vector3 pos);
void Say(UUID agentID, Scene scene, string text);
void DeleteNPC(UUID agentID, Scene scene);
/// <summary>
/// Create an NPC
/// </summary>
/// <param name="firstname"></param>
/// <param name="lastname"></param>
/// <param name="position"></param>
/// <param name="scene"></param>
/// <param name="appearance">The avatar appearance to use for the new NPC.</param>
/// <returns>The UUID of the ScenePresence created.</returns>
UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, AvatarAppearance appearance);
/// <summary>
/// Check if the agent is an NPC.
/// </summary>
/// <param name="agentID"></param>
/// <param name="scene"></param>
/// <returns>True if the agent is an NPC in the given scene. False otherwise.</returns>
bool IsNPC(UUID agentID, Scene scene);
/// <summary>
/// Set the appearance for an NPC.
/// </summary>
/// <param name="agentID"></param>
/// <param name="appearance"></param>
/// <param name="scene"></param>
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
bool SetNPCAppearance(UUID agentID, AvatarAppearance appearance, Scene scene);
/// <summary>
/// Move an NPC to a target over time.
/// </summary>
/// <param name="agentID">The UUID of the NPC</param>
/// <param name="scene"></param>
/// <param name="pos"></param>
/// <param name="noFly">
/// If true, then the avatar will attempt to walk to the location even if it's up in the air.
/// This is to allow walking on prims.
/// </param>
/// <param name="landAtTarget">
/// If true and the avatar is flying when it reaches the target, land.
/// </param>
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
bool MoveToTarget(UUID agentID, Scene scene, Vector3 pos, bool noFly, bool landAtTarget);
/// <summary>
/// Stop the NPC's current movement.
/// </summary>
/// <param name="agentID">The UUID of the NPC</param>
/// <param name="scene"></param>
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
bool StopMoveToTarget(UUID agentID, Scene scene);
/// <summary>
/// Get the NPC to say something.
/// </summary>
/// <param name="agentID">The UUID of the NPC</param>
/// <param name="scene"></param>
/// <param name="text"></param>
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
bool Say(UUID agentID, Scene scene, string text);
/// <summary>
/// Delete an NPC.
/// </summary>
/// <param name="agentID">The UUID of the NPC</param>
/// <param name="scene"></param>
/// <returns>True if the operation succeeded, false if there was no such agent or the agent was not an NPC</returns>
bool DeleteNPC(UUID agentID, Scene scene);
}
}

View File

@@ -0,0 +1,88 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.Framework.Interfaces
{
/// <summary>
/// An agent in the scene.
/// </summary>
/// <remarks>
/// Interface is a work in progress. Please feel free to add other required properties and methods.
/// </remarks>
public interface IScenePresence : ISceneEntity
{
/// <value>
/// The client controlling this presence
/// </value>
IClientAPI ControllingClient { get; }
/// <summary>
/// What type of presence is this? User, NPC, etc.
/// </summary>
PresenceType PresenceType { get; }
/// <summary>
/// Avatar appearance data.
/// </summary>
/// <remarks>
// Because appearance setting is in a module, we actually need
// to give it access to our appearance directly, otherwise we
// get a synchronization issue.
/// </remarks>
AvatarAppearance Appearance { get; set; }
/// <summary>
/// The scene objects attached to this avatar.
/// </summary>
/// <returns>
/// A copy of the list.
/// </returns>
/// <remarks>
/// Do not change this list directly - use the attachments module.
/// </remarks>
List<SceneObjectGroup> GetAttachments();
/// <summary>
/// The scene objects attached to this avatar at a specific attachment point.
/// </summary>
/// <param name="attachmentPoint"></param>
/// <returns></returns>
List<SceneObjectGroup> GetAttachments(uint attachmentPoint);
bool HasAttachments();
// Don't use these methods directly. Instead, use the AttachmentsModule
void AddAttachment(SceneObjectGroup gobj);
void RemoveAttachment(SceneObjectGroup gobj);
void ClearAttachments();
}
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using OpenMetaverse.StructuredData;
namespace OpenSim.Region.Framework.Interfaces
{
/// <summary>
/// Add remove or retrieve Simulator Features that will be given to a viewer via the SimulatorFeatures capability.
/// </summary>
public interface ISimulatorFeaturesModule
{
void AddFeature(string name, OSD value);
bool RemoveFeature(string name);
bool TryGetFeature(string name, out OSD value);
OSDMap GetFeatures();
}
}

View File

@@ -5,13 +5,48 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Interfaces
{
/// <summary>
/// This maintains the relationship between a UUID and a user name.
/// </summary>
public interface IUserManagement
{
string GetUserName(UUID uuid);
string GetUserHomeURL(UUID uuid);
string GetUserUUI(UUID uuid);
string GetUserServerURL(UUID uuid, string serverType);
void AddUser(UUID uuid, string userData);
/// <summary>
/// Add a user.
/// </summary>
/// <remarks>
/// If an account is found for the UUID, then the names in this will be used rather than any information
/// extracted from creatorData.
/// </remarks>
/// <param name="uuid"></param>
/// <param name="creatorData">The creator data for this user.</param>
void AddUser(UUID uuid, string creatorData);
/// <summary>
/// Add a user.
/// </summary>
/// <remarks>
/// The UUID is related to the name without any other checks being performed, such as user account presence.
/// </remarks>
/// <param name="uuid"></param>
/// <param name="firstName"></param>
/// <param name="lastName"></param>
void AddUser(UUID uuid, string firstName, string lastName);
/// <summary>
/// Add a user.
/// </summary>
/// <remarks>
/// The arguments apart from uuid are formed into a creatorData string and processing proceeds as for the
/// AddUser(UUID uuid, string creatorData) method.
/// </remarks>
/// <param name="uuid"></param>
/// <param name="firstName"></param>
/// <param name="profileURL"></param>
void AddUser(UUID uuid, string firstName, string lastName, string profileURL);
}
}

View File

@@ -80,6 +80,26 @@ namespace OpenSim.Region.Framework.Interfaces
/// <param name="msg">msg to sent</param>
void DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, string msg);
/// <summary>
/// Delivers the message to a specified object in the region.
/// </summary>
/// <param name='target'>
/// Target.
/// </param>
/// <param name='channel'>
/// Channel.
/// </param>
/// <param name='name'>
/// Name.
/// </param>
/// <param name='id'>
/// Identifier.
/// </param>
/// <param name='msg'>
/// Message.
/// </param>
bool DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg, out string error);
/// <summary>
/// Are there any listen events ready to be dispatched?
/// </summary>