Inventory Functional Spec
The Functional Spec explains how a user interacts with a feature, and what results they can expect from the feature. Ideally, the UI will indicate what the user can expect to happen next. Use screenshots when appropriate.
General Description
What does this feature do? Allows the user to store items.
Interface Requirements
How does the user use/activate this feature? Clicking the Inventory button or hitting ctrl-i.
Performance Requirements
Will this feature affect:
- Client FPS? YES. Large inventories take longer to draw (perhaps this is fixed).
- Simulator FPS? YES. Inventory is fetched from dataserver on the Simulator, so it may have a small effect on Simulator performance.
- Database? YES. The dataserver fetches inventory from the Database.
- Asset server? YES. Rezzing items reads from the Asset server. Creating inventory items writes to the Asset server.
- Network load? YES. The inventory structure must be streamed to you. Rezzed or opened items must be streamed to you. Uploaded items must be streamed to the asset server.
- Any other system? NO.
Design Constraints
- Will this feature be unavailable on certain hardware? NO.
- Is this feature consistent (similar look & feel) with other features? PARTIAL. Inventory has its own Menu, which is not accessible from the keyboard.
- Is this feature well integrated (accessible when you need it, and in the place(s) you expect to find it)? YES.
- Is this feature discoverable (newbie friendly)? PARTIAL. There's room for improvement.
- Is this feature Safe, Predictable, and Responsive? YES.
Feature Dependencies
- Features that this feature will affect
Attachments, Rezzing objects
- Features that affect this feature
Upload Assets, Focus, Take, Take Copy
Security risks
- Does this feature give access to something it should not? NO.
Feature Rules
The rules of the feature, organized in order of precedence. (eg. Rule 1 supersedes Rule 2, which supersedes Rule 3)
- Object taken or returned into inventory go into their previous folder.
- Returned object that have no previous folder will be put in the Lost and Found folder.
- Accepted or uploaded assets of a certain type (eg. Clothing, Script, Animation) will go into a system folder of the same type.
- Accepted categories will go into the Inventory folder.
Feature Usage
When appropriate, the feature will be laid out in chronological order, or in the order they are most likely to be used. (eg. Create a group, then add members, then deed land, ... kick members, leave group)
Inventory
Default inventory
A new user will have the following default inventory folders:
- Animations
- Body Parts
- ??Calling Cards
- Clothing
- Gestures
- Landmarks
- ??Lost and Found
- Notecards
- Objects
- Photo Album
- Scripts
- Sounds
- Textures
- ??Trash
- Library
Adding Inventory
Uploading Assets
Creating objects in world and taking them
Create a new object, right click > take it, will remove it from the world and place it into your Objects folder.
Taking an item or a copy of an item that was originally rezzed from inventory will put the item back into its previous folder.
If you create an item on someone else's land and they may return it to you. Returned items go to the folder they were rezzed from. If the object never had a folder or that folder has been deleted, object is put "Lost and Found" folder.
Right click on a folder and click one of the following. New Folder New Script New Note New Gesture New Clothes New Body Parts The new item will be placed in the folder you right clicked.
- You may not create items in the Library. The Library is read-only.
Click the Inventory Create menu, and choose one of the following. New Folder New Script New Note New Gesture New Clothes New Body Parts The new item will be automatically sorted into the appropriate system folder.
World menu > Create Landmark Here
Creating Body parts and Clothing via Appearance mode
Create scripts via Object contents button
Automatic sorting into folders
Accepting inventory
Accepting inv item
Same for items received while offline
Accepting auto-opening inv item
Same for items received while offline
Accepting inv category
Same for items received while offline
Declining inventory
Declining inventory item
Same for items received while offline
Declining auto-opening inventory item
Same for items received while offline
Declining inventory category
Same for items received while offline
Automatic Declining inventory
While in busy mode
From muted person or item
From muted group
Window behavior when receiving inventory
received item from person or script received auto-open item from person or script received category from person or script received group notice attachment
Rezzing from inventory
Attaching from inventory
You get a collision prompt when using "Attach to" option if there's an attachment already on that attach point. You do not get a warning if you drag and drop the attachment onto your Avatar or select Wear via context menu.
Dragging on your Avatar
Dragging a folder onto your Avatar
Dragging a Library folder onto your Avatar
Dragging items from the Library folder onto your avatar will place a copy of the items in your Inventory. (The acquired date will not be set on these objects. bug?)
Searching Inventory
Keyboard: ctrl-I toggles inventory open / closed (should it do anything other than hide it? close or open any folders?)
focus should be in the search field by default when inventory is opened
search for item
press return, where does focus go?
press up and down arrow keys, where does focus go?
press up and down arrow keys while search is loading & searching your inv, where does focus go?
press right and left arrow keys opens and closes folders
press tab
When searching, items matching the search, only items matching the search term and the folder the item resides in will be displayed.
Selecting a folder, then clearing the search field will keep the folder selected.
??Closing inventory, then reopening inventory will clear the search field and place the cursor in the sierch field.
??Pressing the down arrow while focus is in search field will move focus to inventory contents.
After accepting an inventory item, the system folder the item was sorted into will be opened, and the item will ??have tentative selection ??be highlighted. Opening the inventory at this point will scroll the inventory so the highlighted item is in view. When an item has ??highlight (eg. It is outlined, but the color of the item name is not inversed), ??pressing the down arrow key once will move select the item below it.
After accepting a category, the category is added as the last folder in your folder. (??bugs)The category is not sorted or highlighted. The next time you login, the category will be sorted alphabetically.
Visible item search (what's the name of this feature?)
cursor is in inventory tree area of inventory window type a few letters of an item name first item matching will be highlighted 1 second(??) typing timeout
Filters
Recent Items
default filter for recent items is everything since the last time you logged in.
Filters can be changed for both the inventory tab and the recent items tab. Filters are reset when you relog.
Sorting
sort order defaults to sort by date in descending order. This only affects items, and folders are always sorted alphabetically.
Sort order can be changed to alphabetically.
Sort order is saved session to session.
Organizing Inventory (or drag and drop behavior)
Multi select items
shift-click ctrl-click
Keyboard: shift up-arrow shift down-arrow
Moving Items
dragging onto scroll bars will scroll the inv [no longer works?]
dragging over closed folders auto opens them. folder will close again after drop.
after dropping in an open folder
dragging onto "recent items tab will open the recent items tab" [bug?]
Copying Items
Renaming Items
Changing item properies
Bold text=== Opening a second Inventory window ===
Closing all folders
Deleting Inventory
Deleting an item via the UI or keyboard delete key moves the item to the Trash folder.
Inventory File menu > Empty Trash to remove the contents of the trash forever.
(Future implementations will automatically empty the trash)
Object Inventory
any items with duplicate names in an object will be renamed by adding a number to the end name, even if it's a no-modify item
Drag rules
Esc will cancel a drag operation
dragging items onto another avatar or their name tag will give it to them
??dragging items onto avatars transparent attachment will not give the item to the av. ??Transparent is defined as 80%.
dragging an item over an object in world will show a selection silhouette around the object.
ctrl dragging a an item over an object will highlight the object, indicating the item will be put into the object contents.
ctrl-dragging a script onto an object will turn the script off.
dragging items onto an object will automatically put them into the root prim.
Ctrl-dragging will drop the item into the prim even if it's a child.
Dragging a no copy item from object contents to your inventory will pop up a warning that you will be removing(and not copying) the item from the object contents.
??you can multi select inventory items and drag them to an object's contents.
you can drag a folder of contents onto an object
You cannot multi select items in an object and drag them to inventory
Rezzing an object by dragging it from inventory into world will keep the object highlighted, but not selected, in your inventory. If you hit delete once, the in-world object will be deleted, if you hit delete a second time the item in your inventory will Not be deleted, because it's only highlighted.
Inventory usability
Keyboard interaction
Hitting tab while focus is in the inventory will cycle focus between the search folder, the inventory tabs and the inventory contents (??what is the name of this portion of the window?).
Enter key operation:
- objects - will open properties panel
- everything else - view the item
Arrow keys:
- The up and down arrow keys will move focus up and down in the inventory.
- Pressing down while your cursor is in the search field will move focus to the "My Inventory" folder.
- Pressing up while the "My Inventory" folder is focused will move the cursor into the search field.
The right arrow key will open a folder.
The left arrow key will close a folder.
The Home key will jump the inventory to the top, but will not move the selection.
The End key will jump inventory to the bottom, but will not move the selection.
The Page Up/Page Down keys will scroll up and down respectively, but will not move the selection.
Mouse interaction
Dragging items to the top or bottom of the inventory will scroll the inventory up or down.
Dragging items to the top of the inventory often inadvertantly opens the "Recent Items" tab.
if you have multiple inventories open close them all, and reopen inventory, the open folders will match that of the last inventory that was closed.
Metrics
Speed - how fast the inventory opens and loads.
Responsiveness - time between clicking/dragging an inventory item to ground and the cursor switching from "not" to "allow drop" (this time seems to be increasing - may be related to sim data server load)
Predictability - Do you know what's going to happen when you release the mouse button?
Safety - Do we help you avoid disaster?