mirror of
https://github.com/opensim/opensim.git
synced 2026-07-30 21:38:46 +08:00
add llGetLinkSitFlags and dummy llSetLinkSitFlags
This commit is contained in:
@@ -4961,37 +4961,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
/// The number of a link in the linkset or a link-related constant.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// The name determined to match the specified link number.
|
||||
/// The name determined to match the specified link number, NULL_KEY
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// The rules governing the returned name are not simple. The only
|
||||
/// time a blank name is returned is if the target prim has a blank
|
||||
/// name. If no prim with the given link number can be found then
|
||||
/// usually NULL_KEY is returned but there are exceptions.
|
||||
///
|
||||
/// In a single unlinked prim, A call with 0 returns the name, all
|
||||
/// other values for link number return NULL_KEY
|
||||
///
|
||||
/// In link sets it is more complicated.
|
||||
///
|
||||
/// If the script is in the root prim:-
|
||||
/// A zero link number returns NULL_KEY.
|
||||
/// Positive link numbers return the name of the prim, or NULL_KEY
|
||||
/// if a prim does not exist at that position.
|
||||
/// Negative link numbers return the name of the first child prim.
|
||||
///
|
||||
/// If the script is in a child prim:-
|
||||
/// Link numbers 0 or 1 return the name of the root prim.
|
||||
/// Positive link numbers return the name of the prim or NULL_KEY
|
||||
/// if a prim does not exist at that position.
|
||||
/// Negative numbers return the name of the root prim.
|
||||
///
|
||||
/// References
|
||||
/// http://lslwiki.net/lslwiki/wakka.php?wakka=llGetLinkName
|
||||
/// Mentions NULL_KEY being returned
|
||||
/// http://wiki.secondlife.com/wiki/LlGetLinkName
|
||||
/// Mentions using the LINK_* constants, some of which are negative
|
||||
/// </remarks>
|
||||
|
||||
public LSL_String llGetLinkName(int linknum)
|
||||
{
|
||||
|
||||
@@ -19325,6 +19297,31 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
|
||||
return new LSL_Integer(1);
|
||||
}
|
||||
|
||||
public LSL_Integer llGetLinkSitFlags(LSL_Integer linknum)
|
||||
{
|
||||
SceneObjectPart part = linknum == ScriptBaseClass.LINK_THIS ? m_host : m_host.ParentGroup.GetLinkNumPart(linknum);
|
||||
if (part is not null)
|
||||
{
|
||||
int flags = ScriptBaseClass.SIT_FLAG_OPENSIMFORCED;
|
||||
if(part.IsSitTargetSet)
|
||||
flags |= 0x01;
|
||||
return new LSL_Integer(flags);
|
||||
}
|
||||
return new LSL_Integer(0);
|
||||
}
|
||||
|
||||
public void llSetLinkSitFlags(LSL_Integer linknum, LSL_Integer flags)
|
||||
{
|
||||
// does nothing since we do not have any of the flags
|
||||
/*
|
||||
SceneObjectPart part = linknum == ScriptBaseClass.LINK_THIS ? m_host : m_host.ParentGroup.GetLinkNumPart(linknum);
|
||||
if (part is not null)
|
||||
{
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class NotecardCache
|
||||
|
||||
@@ -526,6 +526,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||
|
||||
LSL_Key llRezObjectWithParams(string inventory, LSL_List lparam);
|
||||
LSL_String llGetStartString();
|
||||
LSL_Integer llGetLinkSitFlags(LSL_Integer linknum);
|
||||
void llSetLinkSitFlags(LSL_Integer linknum, LSL_Integer flags);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1075,5 +1075,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
public const int REZ_LOCK_AXES = 11;
|
||||
public const int REZ_DAMAGE_TYPE = 12;
|
||||
public const int REZ_PARAM_STRING = 13;
|
||||
|
||||
public const int SIT_FLAG_SIT_TARGET = 0x01;
|
||||
public const int SIT_FLAG_ALLOW_UNSIT = 0x02; // unsupported always true
|
||||
public const int SIT_FLAG_SCRIPTED_ONLY = 0x04; // unsupported always false
|
||||
public const int SIT_FLAG_NO_COLLIDE = 0x10; // unsupported always true
|
||||
public const int SIT_FLAG_NO_DAMAGE = 0x20; // unsupported always true
|
||||
public const int SIT_FLAG_OPENSIMFORCED = SIT_FLAG_ALLOW_UNSIT | SIT_FLAG_NO_COLLIDE | SIT_FLAG_NO_DAMAGE;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2822,9 +2822,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public LSL_String llGetStartString()
|
||||
public LSL_Integer llGetLinkSitFlags(LSL_Integer linknum)
|
||||
{
|
||||
return m_LSL_Functions.llGetStartString();
|
||||
return m_LSL_Functions.llGetLinkSitFlags(linknum);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void llSetLinkSitFlags(LSL_Integer linknum, LSL_Integer flags)
|
||||
{
|
||||
m_LSL_Functions.llSetLinkSitFlags(linknum, flags);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user