The original proposal to the dev list is here:
http://lists.berlios.de/pipermail/opensim-dev/2009-December/008098.html
And the attached document here:
https://lists.berlios.de/pipermail/opensim-dev/attachments/20091211/6e190ca7/attachment.pdf
-BlueWall
On 12/28/2012 02:24 PM, Adams, Robert wrote:
Sounds perfect. The reason I started this here was to get the discussion
bouncing.
I'm interested in seeing past proposals. I searched around the OpenSimulator
wiki looking for Adam's old proposal (Wiki's are just useless for finding and
organizing things) but I could not find it.
-- ra
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Melanie
Sent: Friday, December 28, 2012 10:59 AM
To: [email protected]
Subject: Re: [Opensim-dev] IRegisterInterface for extending scene entities
I suggest we bounce this about a bit and maybe cooperatively work on a test
case/POC. That will certainly clarify issues. I could also pull out the prosal
I did for ReX which deals with this
Melanie
On 28 Dec 2012, at 18:38, "Adams, Robert"<[email protected]> wrote:
I agree with "not reinventing the wheel". And your valid concerns about the
implementation are probably just the tip of the iceberg.
I have been toying with the architectural idea that OpenSim core only provides
a basic framework. Functionalities are added as plugin modules rather than
implemented as if's and tests imbedded in core. For instance, could linksets be
implemented as a plugin module[1]? Or maybe entity physical representation
(meshing)?
I merely consider llSetKeyFrameMotion as a test case to expose needed core
features which support plugin modules (Necessary events available? Correct
data-structures exposed/hidden? ...) Like you, I am pretty sure the ability to
programmatically extend scene entities will be needed and is a Good Thing.
Since llSetKeyframeMotion has already been completed and will be incorporated
soon, I'll look for another simple test case to exercise the requirements for
full featured plugin modules.
-- ra
[1] Why would one want to do this? I've been thinking about fancy linksets where the
joints are not fixed and static but could be parameterized and dynamic (hinges, sliders,
6DOF, ...). This could be used to support skeletons, doors with real hinges and/or weird
and wonderful vehicles. Rather than mangling OpenSim core with lots of experimental code,
it would be nice if I could build an "ExtendedLinksets" module that could be
plugged in and experimented with.
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Melanie
Sent: Friday, December 28, 2012 12:44 AM
To: [email protected]
Subject: Re: [Opensim-dev] IRegisterInterface for extending scene
entities
Hi,
first off, extending scene entities is a Good Thing. I'll think a bit about the
ins and outs of it and the caveats (for instance, module load order will have
some hidden traps for the unwary) and serialization - well, there be dragons,
you can't serialize module refs/interfaces since the destination may not have
them.....
llSetKeyfranedMotion can most likely not be implemented that way. We know,
because we have implemented it. Also, there is no need to reinvent the wheel -
llSetKeyframedMotion has been slated for core release for a while now, we just
haven't found the dev time to extract it. So there is really no need for a
second, competing implementation.
So, in summary
+1 on extension points for scene entities
-0 on a second implementation of llSetKeyframedMotion as a tested and working
one already exists.
That's -0 because of you really want it I won't kee you from doing it - it's
just a waste of effort.
Melanie
On 28/12/2012 08:38, Adams, Robert wrote:
The discussion about the implementation of the llKeyframeMotion function hinted
at a need for region modules to be able to add data and functions to existing
scene items. Here is a modest proposal for discussion[1].
Define a general module/interface registration interface to add to EntityBase
(and thus to SceneObjectGroup and ScenePresence).
IRegisterInterface
Void RegisterInterface<T>(T iface);
Bool TryGet<T>(out T iface);
T Get<T>();
Void ClearRegisteredInterfaces();
Any class that implements the IRegisterInterface interface would contain a:
Private Dictionary<Type, object> m_registeredInterfaces
= new Dictionary<Type, object>();
'Scene' already has a RegisterModule interface which has a bunch of neat
features (like being able to register multiple instances of the same interface
type) but I'm not sure that is needed here (discussion?) Particularly
industrious changing could merge this proposed interface and the existing
'Scene' functions.
So, something like a llKeyframeMotion implementing region module could register a
KeyframeMotionState type structure on the SOG to save information about the keyframe for
that SOG. Other uses could be a uniform way for adding classes of functionality to scene
objects ("get me the interface for extracting the physical mesh for this SOG")
or just adding limpet like code to a scene entity.
Not sure of the nuances of serialization. I believe that the registered
interfaces would just be serialized with the SOG (thus saving and restoring the
values in the registered interface instances) but I can't be totally sure of
that.
Anyway, run your sword through this strawman.
-- ra
[1] This is similar to other interfaced proposed in the past (particularly one
by Adam Frizby).
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev