✨ Feature Requests

  • Search existing ideas before submitting- Use support.secondlife.com for customer support issues- Keep posts on-topicThank you for your ideas!
SVG Canvas: A way to generate dynamics graphics on prim faces (without MoaP)
Motivation: Second life is full of information and very often you have to display some information dynamically: Radars, navigation signs, fancy menus, information boards, HUD applications. And that is a rough listing. For doing this we have prepared textures, MoaP, hover text. Textures can use a wast number of faces if you want to display an arbitrary text. MoaP is doable but has problems with transparency. And security concerns. Hover text works well but it can not be limited to a certain area. Like not at all. SVG Canvas tries to counter these issues and to give a way to create simple graphical information dynamically (but it will be much richer then a simple hover text). Basic idea A SVG canvas is a container for a SVG image and provider of its content: The container is created by a script, it has an own UUID which can be applied to any prim face like a regular texture. To display this image the viewer receives the SVG content from this container. The SVG canvas is stored within the heap memory of the script created it (parent script). As long the script is available, the region can provide the SVG content to the interested viewer. Thus, the SVG canvas is best used on HUDs and in-world objects also running the parent script. The canvas is created via the call key llSVGCanvas(list options); The options list defines the <?xml> header (the only way to set the <?xml> attributes). The result key is used in the following commands and is also applied to prim faces. To check the current status of the canvas we use the function integer llSVGStatus(key canvas); The function checks if the key is a SVG canvas, if it was created by the same script, if it is stil valid etc. Result is 0 or error code. Since SVG is a XML dialect, to build/draw the SVG image we use DOM commands, but a non-OOP way. The commands can only be called within the parent script (for now). integer llSVGGetElementByID(key canvas, string id); This command finds the element having the given "id" attribute and returns its number. Each SVG element is addressed by a distinct number maintained internally, which can but must not be saved in the "id" attribute explicitly. For example we can use the order in which the elements were added while the top-level <svg> node has the element number 0. integer llSVGSetAttributes(key canvas, integer element, list attribs); integer llSVGUpdateAttributes(key canvas, integer element, list attribs); list llSVGGetAttributes(key canvas, integer element); The commands set or read attributes of the SVG element given by the number. The attributes are given by name and value (alternating). The .Set. command replaces the element attributes, the .Update. command only changes values of named attributes. Both return a negative value on error and the (same) element number on success. integer llSVGSetXML(key canvas, integer element, string xml); string llSVGGetXML(key canvas, integer element); This command sets and retrieves the XML content of the given element. This is used to change the text of the <text> element but also allows to draw the <svg> image at once when desired this way. integer llSVGAddElement(key canvas, integer parent, integer sibling, string tag, list attribs, string XML); This call creates a new SVG element with given tag, attributes, and content and places it is as child element of the given parent element after the element given by sibling when it is an element of the parent element. Otherwise the new element is placed after all child elements of the parent. The result is the number of the new element or negative on error. This operation may change numbers of some elements. The top-level <svg> node exists by default and must not be created. integer llSVGRemoveElment(key canvas, integer element); This operation removes the SVG element having the given number. The top-level <svg> node can not be removed. Extensions Besides the simple elements (path, text etc.) we can also have commands for drawing of UI elements. The commands will provide only logical definition while the viewer will render the elements with respect of the current skin. This will allow to create apps with a look and feel of viewer floaters while they will operate on scripts running on the region. Since some of these elements must be clickable, the elements can be added proprietary attributes working like interaction listens and eg. on touch triggering the event on_svg_event(key object, key canvas, integer element, integer action) Within this event one could call then llDetected... functions for further information. Instead of creating the feature for SVG only we can first create the framework for building and updating a XML documents and use this to define SVG images among other uses. Example follows in a comment.
9
·

under review

Revisions to the policy on scripted agents
In the interest of positive change and discouraging misuse and abuse of the Second Life platform, I want to propose the following changes to Second Life's policy on scripted agents. Scripted agents must be linked to a botmaster "main" account, this would work like a partnership request such that the scripted agent account dashboard would let you pick the botmaster account, and that association must be accepted by way of an email confirmation or dashboard interaction on the human operated account. Botmaster accounts may have multiple scripted agents associated, and they can view this list on their account dashboard at any time. Failure to have a linked botmaster prevents the scripted agent from logging in. To be eligible to be a botmaster, a human operated account must complete a short terms of service quiz similar to the mesh IP upload exam. Payment information must be on file for an account before it can be botmaster for a scripted agent account. Profiles of scripted agents contain the "scripted agent" account type rather than "resident", and have a clickable SLURL to the profile of their linked botmaster that any observer of the profile can view and navigate through. Before completion of the scripted agent setup process, a text field must be populated with the justification and/or purpose of the scripted agent, e.g. "Region moderation", or "Group chat monitoring". These changes would ensure several things, most notably instilling a sense of accountability and transparency around the concept of scripted agents. Benefits of these changes would include but aren't limited to: Residents encountering a scripted agent may without any difficulty identify the resident who is responsible for the scripted agent, and contact them if necessary which may due to a malfunction, or misunderstanding of the scripted agent's purpose. Scripted agents would become detectable by the viewer, so that they can be identified differently and with notice banners on profiles, agent interactions, and messages. The provided justification and/or purpose for the scripted agent can be included on messaging in the viewer which reduces overall confusion.
6
·

under review

Load More