本文整理汇总了C#中OpenSim.Region.Framework.Scenes.Scene.IsEstateManager方法的典型用法代码示例。如果您正苦于以下问题:C# Scene.IsEstateManager方法的具体用法?C# Scene.IsEstateManager怎么用?C# Scene.IsEstateManager使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Region.Framework.Scenes.Scene
的用法示例。
在下文中一共展示了Scene.IsEstateManager方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckRezPerms
// If objectID is specified (not UUID.Zero), then that object (owned by "owner") is trying to rez another object.
// pass 0 for landImpact if you do not want this method to do any Land Impact limit checks.
private bool CheckRezPerms(ILandObject parcel, UUID owner, UUID objectID, Vector3 objectPosition, bool isTemp, Scene scene)
{
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
if (m_bypassPermissions) return m_bypassPermissionsValue;
// User or object owner is an admin?
if (IsGodUser(owner))
return true; // we're done here, no need to check more
// This code block handles the Scenic option of EO (and partner) only.
if (scene.RegionInfo.AllowRezzers == ProductRulesWho.OnlyEO)
{
// only the estate OWNER or PARTNER can rez in scenic regions unless it's a temprez object
if (scene.IsEstateOwner(owner))
return true;
if (scene.RegionInfo.AllowPartnerRez)
if (scene.IsEstateOwnerPartner(owner))
return true;
if (!isTemp) // non-temp rezzing not allowed
return false;
}
// At this point, we need to test a specific parcel.
if (parcel == null) return false;
// Is this a Plus region?
if (scene.RegionInfo.Product == ProductRulesUse.PlusUse)
{
// If this is an unclaimed Plus parcel (or community land)
if (scene.IsEstateOwner(parcel.landData.OwnerID))
return scene.IsEstateManager(owner); // only EM can rez
// Else only the Plus user (and possibly partner) can rez in a Plus parcel.
if (owner == parcel.landData.OwnerID)
return true;
// Otherwise, only the Plus user's partner can rez in a Plus parcel.
if (scene.RegionInfo.AllowPartnerRez)
{
UserProfileData parcelOwner = m_scene.CommsManager.UserService.GetUserProfile(parcel.landData.OwnerID);
if (parcelOwner != null)
if (parcelOwner.Partner != UUID.Zero)
if (parcelOwner.Partner == owner)
return true;
}
return false;
}
// Create enabled for everyone?
if ((parcel.landData.Flags & ((int)ParcelFlags.CreateObjects)) == (uint)ParcelFlags.CreateObjects)
return true; // we're done here, no need to check more
ulong roleNeeded = (ulong)GroupPowers.AllowRez;
if ((parcel.landData.Flags & (uint)ParcelFlags.CreateGroupObjects) == (uint)ParcelFlags.CreateGroupObjects)
roleNeeded = (ulong)GroupPowers.None; // if group rezzing is enabled, we just need to be a member, no specific role ability
// Is an object rezzing the other object?
if (objectID != UUID.Zero)
{ // A scripted object is doing the rezzing...
SceneObjectGroup group = this.FindObjectGroup(objectID);
if (group == null) return false;
// Now continue the rezzing permissions checks
if (group.OwnerID == parcel.landData.OwnerID)
return true;
// Owner doesn't match the land parcel, check partner perms.
if (scene.RegionInfo.AllowPartnerRez)
{ // this one is will not be called based on current products (Scenic, Plus) but completes the rule set for objects.
UserProfileData parcelOwner = m_scene.CommsManager.UserService.GetUserProfile(parcel.landData.OwnerID);
if (parcelOwner != null)
if (parcelOwner.Partner != UUID.Zero)
if (parcelOwner.Partner == group.OwnerID)
return true;
}
// Owner doesn't match the land parcel, check group perms.
UUID activeGroupId = group.GroupID;
// Handle the special case of active group for a worn attachment
if (group.RootPart.IsAttachment)
{
ScenePresence sp = m_scene.GetScenePresence(group.RootPart.AttachedAvatar);
if (sp == null)
return false;
IClientAPI client = sp.ControllingClient;
activeGroupId = client.ActiveGroupId;
}
// See if the agent or object doing the rezzing has permission itself.
if ((parcel.landData.Flags & (uint)ParcelFlags.CreateGroupObjects) == (uint)ParcelFlags.CreateGroupObjects)
{
if (activeGroupId == parcel.landData.GroupID)
return true;
}
// Create role enabled for this group member on group land?
if (GenericParcelPermission(group.OwnerID, parcel, roleNeeded))
return true; // we're done here, no need to check more
return false;
//.........这里部分代码省略.........