[Opensim-dev] Should SOG and SOP be combined into a single object in a linked hierarchy?

Melanie melanie at t-data.com
Tue Nov 11 03:14:49 UTC 2008


Yes. That is one of the main points. I think I can bring 
hierarchical linking even to the LL viewer with that concept of just 
one object type.

Melanie


Dahlia Trimble wrote:
> Would this proposal allow linksets to be children of other linksets?
> (assuming we would ever want that)
> 
> On Mon, Nov 10, 2008 at 8:08 AM, Justin Clark-Casey <
> jjustincc at googlemail.com> wrote:
> 
>> Somewhat separately from Adam's other post, I'd like to raise this issue on
>> the mailing list since it keeps popping up.
>>   I'll confess that I'm not 100% convinced yet that SOG and SOP should
>> simply be combined, though I do accept that the
>> code does need some architectural changes.  Unfortunately, I'm not quite up
>> to drawing diagrams yet.
>>
>> This discussion may also have come up on the mailing list in some way
>> before so references are welcome, as are
>> clarifications to the statements below.
>>
>> Melanie's proposal, as I understand it, is to combine the current SOG and
>> SOP into a single object (let's call it
>> LLEntity).  LLEntity's would be linked into a tree, so there can be
>> something like
>>
>>
>>            LLEntity
>>           /    |   \
>>          /     |    \
>>         /      |     \
>>        /       |      \
>> LLEntity   LLEntity    LLEntity
>>                |
>>                |
>>            LLEntity
>>
>>
>>
>> Here are some of the pros and cons as I see them.  Adam has already talked
>> about some of these in his blog post.
>>
>> Pros
>>
>> 1.  At the moment we can only have one level of prim linking (as
>> effectively dictated by the LL Second Life client).
>> Linking into a tree would allow multiple levels of linking (though with the
>> assumption of single parents).
>>
>> 2.  It makes manipulation of prims much easier.  Instead of having to
>> reference SOPs in and out of SOG, everything is
>> done on a single class.  Some properties can be set on a SOP reference
>> without having to worry about whether they are a
>> root SOP or not (see below).
>>
>> 3.  The Second Life client protocol wants to manipulate SOPs directly in
>> many situations (e.g. individual prim selection
>> of a group, the fact that local ids are passed around that reference prims
>> rather than linksets).
>>
>> 4.  Get rid of the root part checks on object deletion.  However, a lot of
>> these come from the fact that we null out
>> m_rootPart after object deletion when there may be no need to - I'm
>> anticipating that extraneous info sent to a viewer
>> about a deleted object will be simply ignored.  This is a change we should
>> try soon now that we're at the start of a
>> release process.
>>
>>
>> Cons
>>
>> 1.  LLEntity becomes very large and potentially complex.  SOG and SOP are
>> already large and complex.  It may be possible
>> to improve this by further refactoring.
>>
>> 2.  Every setting and getting of a property in LLEntity has to delegate up
>> to its root LLEntity unless it is the root.
>> Therefore, code such as
>>
>>         public virtual Vector3 Velocity
>>         {
>>             get { return m_velocity; }
>>             set { m_velocity = value; }
>>         }
>>
>> becomes something like
>>
>>         public virtual Vector3 Velocity
>>         {
>>             get
>>             {
>>                 if (ParentEntity != null)
>>                     return ParentEntity.Velocity;
>>                 else
>>                     return m_velocity;
>>             }
>>
>>             set
>>             {
>>                 if (ParentEntity != null)
>>                    ParentEntity.Velocity = value;
>>                 else
>>                    m_velocity = value;
>>             }
>>         }
>>
>> One also needs to be careful to set the publicly available property so that
>> delegation happens if required, rather than
>> the private field to avoid state such as 'attached' becoming inconsistent
>> (this is a potential source of bugs).
>>
>> 3.  It leads to an increase in property duplication at the database and
>> serialization levels.  Every LLEntity will have
>> a set of fields, even though some of those conceptually only apply to a
>> linkset/SceneObjectGroup.  This probably isn't
>> serious but I think that it will make things harder to work with at those
>> levels.
>>
>>
>> This isn't a full set of pros and cons, just the ones that occur to me
>> right now.  I'm sorry this is a long post but I
>> feel that we need to a get a long form view of this as change here will
>> stay with us for a considerable time into the
>> future.  If there isn't any major discussion then this may go ahead anyway
>> (since Melanie, for one, is quite keen and I
>> may be the only person really bothered about this).
>>
>> At the moment I'm actually leaning towards the single LLEntity suggestion,
>> though I'm a little concerned about the
>> duplication that ends up at the database/serialization level.  But I'd
>> really like to hear what other people think.
>>
>> --
>> justincc
>> Justin Clark-Casey
>> http://justincc.wordpress.com
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev



More information about the Opensim-dev mailing list