mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Provide a GetApi method on the IScriptEngine to get a named API reference
This allows cross-api method calls on the implementation and also allows "Meta APIs" that only provide common functionality to other APIs
This commit is contained in:
@@ -58,6 +58,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
||||
void SetState(UUID itemID, string newState);
|
||||
int GetStartParameter(UUID itemID);
|
||||
IScriptWorkItem QueueEventHandler(object parms);
|
||||
IScriptApi GetApi(UUID itemID, string name);
|
||||
|
||||
DetectParams GetDetectParams(UUID item, int number);
|
||||
}
|
||||
|
||||
@@ -85,5 +85,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
||||
DetectParams GetDetectParams(int idx);
|
||||
UUID GetDetectID(int idx);
|
||||
void SaveState(string assembly);
|
||||
|
||||
IScriptApi GetApi(string name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -714,5 +714,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||
throw new Exception("Completed persistence save, but no file was created");
|
||||
}
|
||||
}
|
||||
|
||||
public IScriptApi GetApi(string name)
|
||||
{
|
||||
if (m_Apis.ContainsKey(name))
|
||||
return m_Apis[name];
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -869,5 +869,13 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||
|
||||
DoBackup(new Object[] {0});
|
||||
}
|
||||
|
||||
public IScriptApi GetApi(UUID itemID, string name)
|
||||
{
|
||||
IScriptInstance instance = GetInstance(itemID);
|
||||
if (instance == null)
|
||||
return null;
|
||||
return instance.GetApi(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user