[Opensim-dev] RFC: Moving default inventory creation from InventoryService to UserAccountService for viewer 2 initial appearance code

Melanie melanie at t-data.com
Sat Jan 29 01:54:17 UTC 2011


Please don't ignore the case where no default appearance is desired.
Also, the UserAccount service should not directly access the
inventory database. That would severely break the
compartmentalization ROBUST is built on.

The correct way is to have the inventory created by the inventory
module, as it is now.

The inventory module has no business populating that, and neither
does the account service. This should be done by an external
service, since it is only done on account creation.

A meta service, like the LLLoginService, which takes the interfaces
of both the inventory and avatar services and creates the inventory
AND appearance and stores it in both would be the correct solution
to this problem. It would be wrong (and get a -1) to shoehorn this
into the existing services.

ROBUST services are designed the Unix way. Do one thing, and do it
well. The inventory service is not meant to access appearance, the
user account service is not meant to access inventory, and so on.

Such a meta service can then be loaded by the user server, a
standalone or a web service like Wifi. And, obviously, it's
configurable, so people who don't want to have a default appearance
created, because they for instance have already working PHP code
that would be messed up by preexisting data could just not configure
it and see no change to current behavior.

Melanie

Justin Clark-Casey wrote:
> Hi there,
> 
> Today, I had an opportunity to do some more work on setting up default clothing/body parts for viewer 2 (this is in the 
> "viewer-2-initial-appearance" git branch).
> 
> I've come to the realization (obvious in retrospect) that giving these items the default item IDs that the viewer wants 
> in the absence of any other appearance data is not going to work.  This is for the simple reason that item IDs are 
> primary keys and cannot be shared between avatars.
> 
> Therefore, I will need to use a random item ID and use this to set up a default appearance at the same time as the 
> inventory items are created (currently, the appearance is only generated when the avatar first logs in).
> 
> The user account service co-ordinates user account creation.  It seems that the sensible thing is to move default 
> inventory creation from the inventory service into the user account service.  Folder and item creation would take place 
> through existing add calls.
> 
> The IInventoryService.CreateUserInventory() method would still be called but would only set up the very bare minimum 
> structure.  In the SL case, this is just the user's root "My Inventory" folder.
> 
> The copy/pasted code for setting up estate managers in Scene.SetModuleInterfaces() also has to move.  The sensible thing 
> seems to be to expose a IUserAccountService.CreateUserAccount() call which is only available to standalones (as is 
> effectively currently the case).
> 
> Commit 50254bf3 on this branch contains a rough version of this change.  The code to set up a default appearance with 
> random item IDs for default clothing/body parts has not yet been done.
> 
> Comments?
> 



More information about the Opensim-dev mailing list