Click to touch

From Second Life Wiki
Jump to: navigation, search

Feature Design Document


Functional Spec

  • An object can be designated a touchable object by adding a script that has a touch* event in it, such as the default script does.
  • You touch an object by left clicking it while in move mode (ctrl + 2) or in normal mode (ie. if you hit escape, or by right clicking the object, then selecting "touch" from the pie menu.
  • Your cursor should turn into a hand icon when you hover it over an object that has a touch* event script on it.
  • Touch events will not register if you are in focus(ctrl+1), edit(ctrl+3), create(ctrl+4) or land(ctrl+5) mode.
  • Alpha texturing on an object does not affect whether it can be touched. Objects with fully transparent textures will still register clicks.
  • You can change the left-click behavior of an object on the general tab of the edit tools.
    • "Touch/grab (default)"
    • "Sit on object" will cause anyone clicking the object to sit on the object.
    • "Buy object" will pop up a buy dialog if the object is for sale.
    • "Pay object" will pop up a buy dialog if the object has a money event in one of its scripts.
    • "Open" will open the contents of an object if you have permissions to modify said object.
  • Touch allows you to move objects.
  • Touching an object should trigger any touch events on the object.
  • Touching and dragging your own object that has touch script and is not physical should NOT move it, even if you have the move tool (ctrl-2) selected.
  • Touching and dragging on an object, then releasing should put your cursor back to the same screen coordinates they were at when you first touched the object.
  • (you cannot drag a physical and movable object by dragging on a child prim if either the root or child prim has a touch script in it. bug?)

Test scripts


Discussion for future improvements


Relationship to other features

List of features that need to be tested when this feature changes, and why.

llSetTouchText - Replace the pie cursor "Touch" label with a user defined label.

llPassTouches - Touch events on a child object should obey llPassTouches when passing touches to the parent prim.

User Guides

touch event on

touch_start event on

touch_end event on