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
