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

Reply via email to