<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vision+Raymaker</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vision+Raymaker"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Vision_Raymaker"/>
	<updated>2026-07-18T11:27:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Wiki3DBuilder&amp;diff=890883</id>
		<title>Talk:Wiki3DBuilder</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Wiki3DBuilder&amp;diff=890883"/>
		<updated>2010-05-03T19:02:13Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: /* IP Theft? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Needs Reference==&lt;br /&gt;
Including this statement:&lt;br /&gt;
 &amp;quot;...written by Jonny Bee Cioc and Vision Raymaker which was under a CC by,nc,sa license itself&amp;quot;&lt;br /&gt;
...without any support leaves the matter unsupported.  This statement should link to that earlier work, particularly highlighting the release under CC Att-NonComm-Share license since that is the point being made.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Question: Where any NODE can possibly have inserted a &amp;quot;URL that can be given&amp;quot;...how is this URL submitted by the user, by chat, notecard, entered into object description?&lt;br /&gt;
[[User:Azwaldo Villota|azwaldo]] 13:07, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;gt; answer: you click on content and then click on SET URL and so you should be able (bugs permitting) to chat in public chat the &amp;quot;http://www.google.com&amp;quot; url you want to add.. I will specify it in next modification tour&lt;br /&gt;
&lt;br /&gt;
[[User:Salahzar Stenvaag|Salahzar Stenvaag]] 19:42, 25 July 2009 (UTC) I provided the reference uploading a copy full permissions of the object to xstreetsl https://www.xstreetsl.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=1647618&lt;br /&gt;
&lt;br /&gt;
== Answers [[User:Salahzar Stenvaag|Salahzar Stenvaag]] 09:21, 22 July 2009 (UTC) ==&lt;br /&gt;
* Thanks Azwaldo, I will detail furtherly what was the other tool and exactly the differences from it&lt;br /&gt;
* I reincorporated the modifications in key2int from Strife, thanks Strife for this alternative way I must study it to understand how it is working.&lt;br /&gt;
* Strife is telling that he doesn&#039;t like the key2int... Not sure if it is the entire concept in itself or just using key2int to name the channels. Maybe he has a better idea on how to deal with channels... Looking forward to hearing his solution. I know that was just a draft, but it is really simple and relatively good working solution, unless, obviously there are some nasty nasty hidden anomalies. I&#039;m always learning and what I&#039;m doing IS normally perfectible in infinite ways ;)&lt;br /&gt;
* If there is already a wiki page on lsl teaching how objects can easily negotiate a channel, I&#039;d love to follow a more standard and easy way.&lt;br /&gt;
&lt;br /&gt;
== IP Theft? ==&lt;br /&gt;
&lt;br /&gt;
{{Quote|1=[https://wiki.secondlife.com/wiki/User:Salahzar_Stenvaag Salahzar_Stenvaag] didn&#039;t and do not have rights to sell that object on [https://www.xstreetsl.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=1647618 xstreet] because it&#039;s a violation of [http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode CreativeCommons by-nc-sa license] and [https://wiki.secondlife.com/wiki/Intellectual_Property Linden Lab Official KB: Intellectual Property] [[User:Vision Raymaker|Vision Raymaker]] 21:15, 26 April 2010 (UTC)}}&lt;br /&gt;
&lt;br /&gt;
I&#039;ve pulled the above comment from the article, placed it here and left a message for it&#039;s author [[User_talk:Vision_Raymaker#Wiki3DBuilder_Drama|here]]. I&#039;m nonplussed. Just because you think your rights have been infringed does not give you the right to deface an article (it does however give you the right to have the content yanked if you can prove it). It is not the right way of seeking restitution. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 00:37, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You are right I made a strong claim and there were few evidence &#039;&#039;&#039;there&#039;&#039;&#039; to prove it. You all will notice that [https://wiki.secondlife.com/w/index.php?title=Wiki3DBuilder&amp;amp;curid=79573&amp;amp;diff=881973&amp;amp;oldid=452812 Wiki3DBuilder] doesn&#039;t exist any more probably trying to put cover over his infringement of Creative Commons license. As you can see in this snapshot &lt;br /&gt;
&lt;br /&gt;
:[[Image:Snapshot_violazione_CC_by-NC-sa_by_Salahzar_Stenvaag.png]] [[User:Salahzar_Stenvaag|Salahzar Stenvaag]] was selling on XstreetSL marketplace an item called &#039;&#039;SpatialMap.org (MindMap 3D) v1.0.18 (MONO)&#039;&#039; for L$ 50. (He was selling also on [http://meta-life.net/second-life/item/89393-SpatialMaporg-MindMap-3D-v1018-MONO]).&lt;br /&gt;
&lt;br /&gt;
: As you can see he was selling getting profit and this was not allowed under the [http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode Creative Commons license Attribution-NonCommercial-ShareAlike 2.5]. &lt;br /&gt;
&lt;br /&gt;
: The SpatialMap LSL source code was freely downloadable from [http://code.google.com/p/spatialmap/downloads/list http://code.google.com/p/spatialmap/downloads/list]. The license have been CC by-nc-sa 2.5 since version 0. If you have time you can see that &#039;&#039;&#039;every&#039;&#039;&#039; file has Creative Commons by-nc-sa references into the header. If you have doubts that people listed in [http://code.google.com/p/spatialmap/people] called owner, &#039;&#039;marco.vanadia&#039;&#039; and &#039;&#039;davide.caroli85&#039;&#039;, are respectively [[User:Vision_Raymaker|Vision Raymaker]] and [[User:JonnyBee_Cioc|JonnyBee Cioc]] you can browse into Tish Shute UgoTrade blog article that cite our works [http://www.ugotrade.com/2008/01/28/the-archeology-and-future-of-software-design-meeting-grady-booch/].&lt;br /&gt;
&lt;br /&gt;
: He, and everybody else, had and has rights to derive works from SpatialMap code, &#039;&#039;&#039;do not get profit from it&#039;&#039;&#039;, and share what come out under the same license.&lt;br /&gt;
&lt;br /&gt;
: Law doesn&#039;t admit ignorance and he also use same license in his works. So he must know what NotCommercial means. This means that he consciously infringe the law.&lt;br /&gt;
&lt;br /&gt;
: So this is not &#039;Drama&#039;. This is &#039;&#039;&#039;Theft&#039;&#039;&#039;. Penal prosecutable by law.&lt;br /&gt;
&lt;br /&gt;
: I do not need to have a lawyer to say that and it is obvious that he can&#039;t had so much profit from this theft. But this is all about unethical after than illegal. He tells to embrace opensource ethic. Nice way to do it. People must be known from what they do after what they tell to do.&lt;br /&gt;
:[[User:Vision Raymaker|Vision Raymaker]] 18:25, 3 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:Vision_Raymaker&amp;diff=890803</id>
		<title>User talk:Vision Raymaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:Vision_Raymaker&amp;diff=890803"/>
		<updated>2010-05-03T18:25:51Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: /* Wiki3DBuilder Drama */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wiki3DBuilder Drama ==&lt;br /&gt;
&lt;br /&gt;
You are making quite a strong claim in [https://wiki.secondlife.com/w/index.php?title=Wiki3DBuilder&amp;amp;curid=79573&amp;amp;diff=881973&amp;amp;oldid=452812 Wiki3DBuilder] but you provide no details let alone supporting evidence. I&#039;m here sitting on the sidelines and I&#039;m a bit confused. I&#039;m not a lawyer but if you think your rights have been infringed you really should speak to one. Your product is mentioned in the source code of his product and he admits to using your product as a source of ideas, but if this is the truth I fail to see the problem. Thus far there has been no mention of patents, I bring it up because, while mooching ideas may be unethical, unless you have patented the design of your scripts, he hasn&#039;t done anything illegal or actionable. He states he hasn&#039;t infringed upon the copyrights (he claims not to have copied the code), but without a patent you&#039;re ideas are fair game. Copyright protects the content, not the ideas. Patents protect ideas but not content. If anything he has gone beyond what is required by citing your product as his source of ideas. While he hasn&#039;t said it in so many words, he&#039;s saying his product is not a derivative work.&lt;br /&gt;
&lt;br /&gt;
Without proper documentation or at least more information, this clearly is Drama. Which is to say, social meta-data.&lt;br /&gt;
&lt;br /&gt;
Which brings me to why I&#039;m posting, normally we keep Drama out of the articles and only allow it on the discussion pages. So unless you can provide some details to support your claim, I&#039;m moving your comment to the discussion page. Upon receipt of proper documentation, further action can be taken against the article. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 00:28, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You are right I made a strong claim and there were few evidence &#039;&#039;&#039;there&#039;&#039;&#039; to prove it. You all will notice that [https://wiki.secondlife.com/w/index.php?title=Wiki3DBuilder&amp;amp;curid=79573&amp;amp;diff=881973&amp;amp;oldid=452812 Wiki3DBuilder] doesn&#039;t exist any more probably trying to put cover over his infringement of Creative Commons license. As you can see in this snapshot &lt;br /&gt;
&lt;br /&gt;
:[[Image:Snapshot_violazione_CC_by-NC-sa_by_Salahzar_Stenvaag.png]] [[User:Salahzar_Stenvaag|Salahzar Stenvaag]] was selling on XstreetSL marketplace an item called &#039;&#039;SpatialMap.org (MindMap 3D) v1.0.18 (MONO)&#039;&#039; for L$ 50. (He was selling also on [http://meta-life.net/second-life/item/89393-SpatialMaporg-MindMap-3D-v1018-MONO]).&lt;br /&gt;
&lt;br /&gt;
: As you can see he was selling getting profit and this was not allowed under the [http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode Creative Commons license Attribution-NonCommercial-ShareAlike 2.5]. &lt;br /&gt;
&lt;br /&gt;
: The SpatialMap LSL source code was freely downloadable from [http://code.google.com/p/spatialmap/downloads/list http://code.google.com/p/spatialmap/downloads/list]. The license have been CC by-nc-sa 2.5 since version 0. If you have time you can see that &#039;&#039;&#039;every&#039;&#039;&#039; file has Creative Commons by-nc-sa references into the header. If you have doubts that people listed in [http://code.google.com/p/spatialmap/people] called owner, &#039;&#039;marco.vanadia&#039;&#039; and &#039;&#039;davide.caroli85&#039;&#039;, are respectively [[User:Vision_Raymaker|Vision Raymaker]] and [[User:JonnyBee_Cioc|JonnyBee Cioc]] you can browse into Tish Shute UgoTrade blog article that cite our works [http://www.ugotrade.com/2008/01/28/the-archeology-and-future-of-software-design-meeting-grady-booch/].&lt;br /&gt;
&lt;br /&gt;
: He, and everybody else, had and has rights to derive works from SpatialMap code, &#039;&#039;&#039;do not get profit from it&#039;&#039;&#039;, and share what come out under the same license.&lt;br /&gt;
&lt;br /&gt;
: Law doesn&#039;t admit ignorance and he also use same license in his works. So he must know what NotCommercial means. This means that he consciously infringe the law.&lt;br /&gt;
&lt;br /&gt;
: So this is not &#039;Drama&#039;. This is &#039;&#039;&#039;Theft&#039;&#039;&#039;. Penal prosecutable by law.&lt;br /&gt;
&lt;br /&gt;
: I do not need to have a lawyer to say that and it is obvious that he can&#039;t had so much profit from this theft. But this is all about unethical after than illegal. He tells to embrace opensource ethic. Nice way to do it. People must be known from what they do after what they tell to do.&lt;br /&gt;
:[[User:Vision Raymaker|Vision Raymaker]] 18:25, 3 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Snapshot_violazione_CC_by-NC-sa_by_Salahzar_Stenvaag.png&amp;diff=890743</id>
		<title>File:Snapshot violazione CC by-NC-sa by Salahzar Stenvaag.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Snapshot_violazione_CC_by-NC-sa_by_Salahzar_Stenvaag.png&amp;diff=890743"/>
		<updated>2010-05-03T17:22:22Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: Snapshot Salahzar Stenvaag violates Creative Commons license sellings items containing script released under CreativeCommons Attribution-NonCommercial-ShareAlike license&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Snapshot Salahzar Stenvaag violates Creative Commons license sellings items containing script released under CreativeCommons Attribution-NonCommercial-ShareAlike license&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:Salahzar_Stenvaag&amp;diff=881983</id>
		<title>User talk:Salahzar Stenvaag</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:Salahzar_Stenvaag&amp;diff=881983"/>
		<updated>2010-04-26T21:27:12Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, please contact me about an important issue regarding your use of litesim&#039;s code. IM me inworld (Gareth Ellison) or email me at gareth@litesim.com&lt;br /&gt;
&lt;br /&gt;
[https://wiki.secondlife.com/wiki/User:Salahzar_Stenvaag Salahzar_Stenvaag] didn&#039;t and do not have rights to sell &amp;quot;SpatialMap.org (MindMap 3D) v1.0.18 (MONO)&amp;quot; object on [https://www.xstreetsl.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=1647618] and [http://meta-life.net/second-life/item/89393-SpatialMaporg-MindMap-3D-v1018-MONO] because it&#039;s a violation of [http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode CreativeCommons by-nc-sa license] and [https://wiki.secondlife.com/wiki/Intellectual_Property Linden Lab Official KB: Intellectual Property] [[User:Vision Raymaker|Vision Raymaker]] 21:15, 26 April 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Wiki3DBuilder&amp;diff=881973</id>
		<title>Wiki3DBuilder</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Wiki3DBuilder&amp;diff=881973"/>
		<updated>2010-04-26T21:15:44Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: Vision Raymaker annotated violation of CreativeCommons license by Salahzar Stenvaag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Here a sample of using this tool (v0.1) by a Sloodle fan (Giancarla Loon) for teaching sloodle basics for Teachers:&lt;br /&gt;
&lt;br /&gt;
(See also the enhanced version v1 [[Wiki3DBuilder1.0]] with significative enhancements. I&#039;m leaving this version on this wiki since somebody did like this version even with its limitations)&lt;br /&gt;
&lt;br /&gt;
[[Image:Sloodle-mindmap.jpg]]&lt;br /&gt;
&lt;br /&gt;
This had been built following the ideas (but not the code) of similar object &amp;quot;SpatialMap.org (MindMap 3D) v1.0.18&amp;quot; written by Jonny Bee Cioc and Vision Raymaker which was under a CC by,nc,sa license itself. You can find it here on xstreetsl: [https://www.xstreetsl.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=1647618 Get it from xstreet].&lt;br /&gt;
&lt;br /&gt;
[https://wiki.secondlife.com/wiki/User:Salahzar_Stenvaag Salahzar_Stenvaag] didn&#039;t and do not have rights to sell that object on [https://www.xstreetsl.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=1647618 xstreet] because it&#039;s a violation of [http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode CreativeCommons by-nc-sa license] and [https://wiki.secondlife.com/wiki/Intellectual_Property Linden Lab Official KB: Intellectual Property] [[User:Vision Raymaker|Vision Raymaker]] 21:15, 26 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Disclaimer ===&lt;br /&gt;
&lt;br /&gt;
This is just a POC (Proof of Concept) and it is meant as a very alpha stage prototype I developed during last week.&lt;br /&gt;
It is not meant to satisfy security and high level coding standards.&lt;br /&gt;
&lt;br /&gt;
In particular the following things are possibly dangerous and might be rethought and made it professionally:&lt;br /&gt;
* Using llSetPin using key2int is not good (final solution might have another copy of main script) which BTW will make the rezzing much rapid&lt;br /&gt;
* Using key2int to communicate with the rezzed cubes is to say the least quite &amp;quot;optimistic&amp;quot; and might lead to notworking and malfunctioning objects&lt;br /&gt;
* Need more sophisticated ways to Lock the object, to Link it in a unique linkset to simplify inventory operations and to avoid that everybody can hack or destroy the mindmap thing&lt;br /&gt;
&lt;br /&gt;
=== QuickStart ===&lt;br /&gt;
&lt;br /&gt;
* Build a cube, name it &amp;quot;nodo&amp;quot; and put inside the llSetPin script&lt;br /&gt;
* Build another cube, name it Wiki3D_Builder and put inside its content the &amp;quot;nodo&amp;quot; and the main script&lt;br /&gt;
* It should work just clicking on this starting cube (try to rez other cubes, to change the type, form etc).&lt;br /&gt;
&lt;br /&gt;
=== What it is ===&lt;br /&gt;
A tool that helps a user to build rich 3D wiki architectures made up of NODES connected with particles BEAMS&amp;lt;br /&amp;gt;&lt;br /&gt;
Each NODE can be customized by changing its NAME, COLOR, SIZE, and FORM &amp;lt;br /&amp;gt;&lt;br /&gt;
Each NODE can contain:&lt;br /&gt;
# 1 Notecard&lt;br /&gt;
# 1 Landmark&lt;br /&gt;
# 1 Object&lt;br /&gt;
# 1 Script&lt;br /&gt;
# 1 Texture&lt;br /&gt;
# URL that can be given&lt;br /&gt;
The network is completely open to the participation of a group of people who can change the network, the position of each node, and freely add or remove portions of the graph.&lt;br /&gt;
&lt;br /&gt;
Being a Wiki there is no limitation on who can do what. If you don&#039;t want that the work can be changed further, please set to NOT RUNNING the scripts. To save the mindmap you need to select all the nodes and manually link them together or take into inventory as an aggregate (a coalesced object).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== How it works ===&lt;br /&gt;
Initially you have a NODE (i.e., a cube) which must be touched to start the process&lt;br /&gt;
* Touch object to see a menu with these options: color, name, size, content, move, rez&lt;br /&gt;
* Select &amp;quot;color&amp;quot; to enter a color on the local chat&lt;br /&gt;
* Select &amp;quot;name&amp;quot; to enter a name on the local chat&lt;br /&gt;
* Select &amp;quot;size&amp;quot; to enter a size on the local chat&lt;br /&gt;
* Select &amp;quot;rez&amp;quot; to rez a new node; when choosing this option, you must touch one of the faces of the cube and a new node will be rezzed 50cm on that direction.&lt;br /&gt;
* Select &amp;quot;move&amp;quot; and then touch a face to pull the node towards in direction&lt;br /&gt;
* Any user can move objects, textures and so from their inventory to a node (CTRL-Dragging them).&lt;br /&gt;
*&#039;&#039;&#039;Contents:&#039;&#039;&#039; Only one type of inventory item can be in the node at one time, and that content can be given to whom is asking for content&lt;br /&gt;
*Changing the texture will also change the texture of the node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Internal architecture ===&lt;br /&gt;
This is done in ONLY one script named &amp;quot;Main Script&amp;quot; and an internal object named &amp;quot;nodo&amp;quot; containing a llSetPin script.&lt;br /&gt;
The llSetPin is just a way for setting the pin to a number depending on the Owner of the object so it is NOT easy to &lt;br /&gt;
hack.&lt;br /&gt;
The &amp;quot;Main Script&amp;quot; is implementing a quite interesting mechanism for dealing with &amp;quot;multi-threading&amp;quot;, i.e. multiple&lt;br /&gt;
avatars touching the object at the same time. This is accomplished using an Array of RECORDs representing&lt;br /&gt;
the waiting avatars and what they were waiting for. So listen(), touch(), and other events can query this QUEUE&lt;br /&gt;
and understand what is to be made next.&lt;br /&gt;
This also allows for an interesting handling of MULTI MENU&lt;br /&gt;
A part from this the rest is relatively simple, except for the communication between the various nodes.&lt;br /&gt;
* A node communicates with its children for example to propagate the DELETE message&lt;br /&gt;
* A node communicates with its parent to emit the particles connector&lt;br /&gt;
* A node receives messages from its parent to llDie and with alert when other related objects are changing UUID        the latter happens when objects are re-rezzed from inventory&lt;br /&gt;
To accomplish this object listens to a &lt;br /&gt;
channelPublic (taken from Owner key) for transmitting and receiving changes of UUIDs, &lt;br /&gt;
or to channelPrivate (taken from the object key) for receiving commands from parent&lt;br /&gt;
&lt;br /&gt;
== llSetPin to put in &amp;quot;nodo&amp;quot; object ==&lt;br /&gt;
&lt;br /&gt;
This is NOT really needed you can instead put a copy of main script in inner object.&lt;br /&gt;
I used this technique to avoid changing every time the internal script whenever I update it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This will convert an id to an integer same id =&amp;gt; same key&lt;br /&gt;
// used to easily set up a not easy way to deposit scripts with a PIN&lt;br /&gt;
integer key2int(key id)&lt;br /&gt;
{&lt;br /&gt;
    string idstring = (string)id;&lt;br /&gt;
    integer ret = 0;&lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    for(; i &amp;lt; llStringLength(idstring); ++i)&lt;br /&gt;
    {&lt;br /&gt;
        ret = ret * 10 + (((integer)(&amp;quot;0x8&amp;quot;+llGetSubString(idstring, i, i)) - 2) % 17);&lt;br /&gt;
    }&lt;br /&gt;
    return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetRemoteScriptAccessPin(key2int(llGetOwner()));&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        llSetRemoteScriptAccessPin(key2int(llGetOwner()));&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Main Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// This source is &amp;quot;OpenSource&amp;quot;&lt;br /&gt;
// It can be freely used under the following CC license&lt;br /&gt;
// by: you need to state it was originally written by Salahzar Stenvaag&lt;br /&gt;
// nc: you cannot use for commercial products&lt;br /&gt;
// sa: you can extend it but you must redistribute it under the same license&lt;br /&gt;
// This software is specifically written to be used by GPLv3 licenced software&lt;br /&gt;
&lt;br /&gt;
// Wiki3DBuilder (MindMap)&lt;br /&gt;
// This had been built following the ideas (but not the code) of similar&lt;br /&gt;
// object &amp;quot;SpatialMap.org (MindMap 3D) v1.0.18&amp;quot; written by Jonny Bee Cioc and Vision Raymaker&lt;br /&gt;
// which was under a CC by,nc,sa license itself&lt;br /&gt;
&lt;br /&gt;
// What it is&lt;br /&gt;
// ==========&lt;br /&gt;
// You can build rich 3D wiki architectures made up of NODES, connected with particles BEANS&lt;br /&gt;
// Each NODE can be customized changing its NAME, COLOR, SIZE, FORM and possibly inserting in it&lt;br /&gt;
// 1 Notecard, 1 Landmark, 1 Object, 1 Script, 1 Texture, URL that can be given&lt;br /&gt;
// The network is completely open to the participation of a group of people who can change the&lt;br /&gt;
// newtwork, the position of each node, and freely add or remove portions of the graph&lt;br /&gt;
&lt;br /&gt;
// Being a Wiki there is no limitation on who can do what. If you don&#039;t want that the work can be furtherly&lt;br /&gt;
// changed please set to NOT RUNNING the scripts. To save the mindmap you need to select all the nodes&lt;br /&gt;
// and manually link them together or take in the inventory as aggregate &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
// How it works&lt;br /&gt;
// Initially you have a NODE, i.e. a cube which must be touched to start the process&lt;br /&gt;
// Touching it you have a menu specifying color, name, size, content, move, rez, ...&lt;br /&gt;
// * clicking on name you can type the name on the local chat and other menu for resizing, recoloring...&lt;br /&gt;
// * clicking rez you rez a new node when choosing this option you must touch one of the faces of the cube: &lt;br /&gt;
//   new node will be rezzed 50cm on that direction.&lt;br /&gt;
// * similarly applies to move clicking on a face will pull the node towards that direction&lt;br /&gt;
// * content. Everybody can move objects, textures and so from their inventory to a node (CTRL-Dragging them).&lt;br /&gt;
//   at each moment only one type of object can be in the node and it can be given to whom is asking for content&lt;br /&gt;
//   changing the texture will also change the texture of the node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Internal architecture&lt;br /&gt;
// This is done in ONLY one script named &amp;quot;Salahzar Map&amp;quot; and an internal object named &amp;quot;nodo&amp;quot; containing a llSetPin script.&lt;br /&gt;
// The llSetPin is just a way for setting the pin to a number depending on the Owner of the object so it is NOT easy to &lt;br /&gt;
// hack.&lt;br /&gt;
// The &amp;quot;Salahzar Map&amp;quot; is implementing a quite interesting mechanism for dealing with &amp;quot;multi-threading&amp;quot;, i.e. multiple&lt;br /&gt;
// avatars touching the object at the same time. This is accomplished using an Array of RECORDs representing&lt;br /&gt;
// the waiting avatars and what they were waiting for. So listen(), touch(), and other events can query this QUEUE&lt;br /&gt;
// and understand what is to be made next.&lt;br /&gt;
// This also allows for an interesting handling of MULTI MENU&lt;br /&gt;
// A part from this the rest is relatively simple, except for the communication between the various nodes.&lt;br /&gt;
// A node communicates with its children for example to propagate the DELETE message&lt;br /&gt;
// A node communicates with its parent to emit the particles connector&lt;br /&gt;
// A node receives messages from its parent to llDie and with alert when other related objects are changing UUID&lt;br /&gt;
//        the latter happens when objects are re-rezzed from inventory&lt;br /&gt;
// To accomplish this object listens to a &lt;br /&gt;
// channelPublic (taken from Owner key) for transmitting and receiving changes of UUIDs, &lt;br /&gt;
// or to channelPrivate (taken from the object key) for receiving commands from parent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// TODOLIST:&lt;br /&gt;
&lt;br /&gt;
// implement LINKSET all this can be very tricky&lt;br /&gt;
// implement UNLINK (remove particles)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CUSTOMIZABLE PARAMETERS&lt;br /&gt;
integer TIMEOUT=30;       // menu will be obsolesced after this period of time&lt;br /&gt;
integer CLEANTIMERSEC=10; // timer will run once every this period of time for cleaning timers&lt;br /&gt;
integer DEBUG=0;          // 2 maximum level&lt;br /&gt;
// END OF CUSTOMIZABLE PARAMETERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
string url=&amp;quot;&amp;quot;; // url associated with this node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// 0) General utility functions&lt;br /&gt;
&lt;br /&gt;
// debug this string only if DEBUG is at least 1&lt;br /&gt;
debug(string str)&lt;br /&gt;
{&lt;br /&gt;
    if(DEBUG&amp;gt;=1)llOwnerSay(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// trace the string only if DEBUG is 2&lt;br /&gt;
trace(string str)&lt;br /&gt;
{&lt;br /&gt;
    if(DEBUG&amp;gt;=2)llOwnerSay(str);&lt;br /&gt;
}&lt;br /&gt;
// will put on the hover string&lt;br /&gt;
notify(string str)&lt;br /&gt;
{&lt;br /&gt;
    llSetText(str,&amp;lt;1,1,1&amp;gt;,1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// 1) RECORD STACK &lt;br /&gt;
// handling. We keep a &amp;quot;queue&amp;quot; or RECORDS for understanding&lt;br /&gt;
// multi-avatar touching and remember prompts and menu and let them expire&lt;br /&gt;
// &lt;br /&gt;
&lt;br /&gt;
integer STRIDE=6; // we hold 6 field in the waiting list&lt;br /&gt;
list waiting=[]; // this is where we actually keep the queue&lt;br /&gt;
&lt;br /&gt;
// this will be the RECORD with the 6 fields&lt;br /&gt;
string theType;     // it is something like MENUxxxx or PROMPTyyyy&lt;br /&gt;
key theAv;          // which avatar is waiting&lt;br /&gt;
integer theTime;    // when the RECORD has been stacked&lt;br /&gt;
integer theMenu;    // the menu handle so we can clean up it&lt;br /&gt;
integer theChannel; // which channel&lt;br /&gt;
string theRest;     // some further information on this RECORD (prompt string?)&lt;br /&gt;
&lt;br /&gt;
// count how many RECORDS are being stacked waiting to be served&lt;br /&gt;
integer howManyRecords()&lt;br /&gt;
{&lt;br /&gt;
    integer ret= llGetListLength(waiting)/STRIDE;&lt;br /&gt;
    trace(&amp;quot;howManyRecords returning: &amp;quot;+(string)ret);&lt;br /&gt;
    return ret;&lt;br /&gt;
}&lt;br /&gt;
// load the record in theXXX variables to ease handling of it&lt;br /&gt;
integer loadTheRecord(integer index)&lt;br /&gt;
{&lt;br /&gt;
    if(index&amp;gt;=0)&lt;br /&gt;
    {&lt;br /&gt;
       theType=llList2String(waiting,index);&lt;br /&gt;
       theAv=llList2Key(waiting,index+1);&lt;br /&gt;
       theTime=llList2Integer(waiting,index+2);&lt;br /&gt;
       theMenu=llList2Integer(waiting,index+3);&lt;br /&gt;
       theChannel=llList2Integer(waiting,index+4);&lt;br /&gt;
       theRest=llList2String(waiting,index+5);&lt;br /&gt;
       debug(&amp;quot;Loading the record: \n   type: &amp;quot;+theType+&amp;quot;\n   Av: &amp;quot;+(string)theAv&lt;br /&gt;
+&amp;quot;\n   time: &amp;quot;+(string)theTime+&amp;quot;\n   menu: &amp;quot;+(string)theMenu+&amp;quot;\n   channel:&amp;quot;&lt;br /&gt;
+(string)theChannel+&amp;quot;\n   rest:&amp;quot;+theRest);&lt;br /&gt;
       return index;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        theType=&amp;quot;&amp;quot;;&lt;br /&gt;
        theAv=NULL_KEY;&lt;br /&gt;
        theTime=-1;&lt;br /&gt;
        theMenu=-1;&lt;br /&gt;
        theChannel=-1;&lt;br /&gt;
        theRest=&amp;quot;&amp;quot;;&lt;br /&gt;
        trace(&amp;quot;No record returned&amp;quot;);&lt;br /&gt;
        return -1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// look in our stack for this avatar return the index AND loading in theXXX variables&lt;br /&gt;
&lt;br /&gt;
integer findWaitingAvatar(key av)&lt;br /&gt;
{&lt;br /&gt;
    debug(&amp;quot;Looking for avatar: &amp;quot;+(string)av);&lt;br /&gt;
   integer pos=llListFindList(waiting,[av]);&lt;br /&gt;
   integer index;&lt;br /&gt;
   if(~pos) index=pos-1; else index=-1;&lt;br /&gt;
   return loadTheRecord(index);&lt;br /&gt;
}&lt;br /&gt;
// change the time of the event at position index&lt;br /&gt;
updateTimer(integer index)&lt;br /&gt;
{&lt;br /&gt;
    if(index&amp;lt;0 || index&amp;gt;=howManyRecords()) return;&lt;br /&gt;
    trace(&amp;quot;Updating timer for index: &amp;quot;+(string)index);&lt;br /&gt;
    integer posTime=index*STRIDE+2;&lt;br /&gt;
    waiting=llListReplaceList(waiting,[ llGetUnixTime() ], posTime, posTime);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// remove a record&lt;br /&gt;
integer deleteRecord(integer index)&lt;br /&gt;
{&lt;br /&gt;
    if(index&amp;gt;=0 &amp;amp;&amp;amp; index&amp;lt;howManyRecords())&lt;br /&gt;
    {&lt;br /&gt;
        integer i=index*STRIDE;&lt;br /&gt;
        waiting=llDeleteSubList(waiting,i,i+STRIDE-1);&lt;br /&gt;
        trace(&amp;quot;deleteRecord &amp;quot;+(string)index+&amp;quot; array: &amp;quot;+llList2CSV(waiting));&lt;br /&gt;
    }&lt;br /&gt;
    return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// PSEUDO record containing the avatar for detecting key and message&lt;br /&gt;
key detected_key=NULL_KEY;&lt;br /&gt;
string detected_type=&amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// add a MENU stack in the queue&lt;br /&gt;
addMenu(string type, key av, string title, list options)&lt;br /&gt;
{&lt;br /&gt;
    trace(&amp;quot;Adding menu &amp;quot;+type+&amp;quot; for &amp;quot;+(string)av);&lt;br /&gt;
    integer channel=-1000000-(integer)llFrand(1000000);&lt;br /&gt;
    integer menuid=llListen(channel,&amp;quot;&amp;quot;,av,&amp;quot;&amp;quot;);&lt;br /&gt;
    waiting+=[ type, av, llGetUnixTime(), menuid, channel,&amp;quot;&amp;quot; ];&lt;br /&gt;
    //debug(&amp;quot;List in touch: &amp;quot;+llList2CSV(waiting));&lt;br /&gt;
    llDialog(av,title,options,channel);&lt;br /&gt;
     &lt;br /&gt;
}&lt;br /&gt;
// add a PROMPT stack in the queue&lt;br /&gt;
addPrompt(string type, key av, string title)&lt;br /&gt;
{&lt;br /&gt;
    trace(&amp;quot;Adding prompt &amp;quot;+type+&amp;quot; for &amp;quot;+(string)av);&lt;br /&gt;
    integer menuid=llListen(0,&amp;quot;&amp;quot;,av,&amp;quot;&amp;quot;);&lt;br /&gt;
    waiting+=[ type, av, llGetUnixTime(), menuid, 0, title];&lt;br /&gt;
    &lt;br /&gt;
    llInstantMessage(av,&amp;quot;Please chat: &amp;quot;+title);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
// add in queue detect option to be able square is TRUE if we only allow boxed movement&lt;br /&gt;
addDetected(string type, key av, string title)&lt;br /&gt;
{&lt;br /&gt;
    trace(&amp;quot;Adding detected &amp;quot;+type+&amp;quot; for &amp;quot;+(string)av);&lt;br /&gt;
    detected_key=av;&lt;br /&gt;
    detected_type=type;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
remove_detected()&lt;br /&gt;
{&lt;br /&gt;
    trace(&amp;quot;remove detected&amp;quot;);&lt;br /&gt;
    detected_key=NULL_KEY;&lt;br /&gt;
    detected_type=&amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 2) INVENTORY HANDLING&lt;br /&gt;
&lt;br /&gt;
list currentInventory=[]; // will keep note of current inventory&lt;br /&gt;
// return a list of strings in ls1 NOT in ls2&lt;br /&gt;
// actually implementing set difference : [ a,b,c ] - [a, b] =&amp;gt; [c]&lt;br /&gt;
// useful to understan which elements have been added deleted in the inventory&lt;br /&gt;
list diffList(list ls1, list ls2)&lt;br /&gt;
{&lt;br /&gt;
    //llSay(0,&amp;quot;ls1: &amp;quot;+llList2CSV(ls1)+&amp;quot; ls2:&amp;quot;+llList2CSV(ls2));&lt;br /&gt;
    list ret=[];&lt;br /&gt;
    integer i=0;&lt;br /&gt;
    for(i=0;i&amp;lt;llGetListLength(ls1);i++)&lt;br /&gt;
    {&lt;br /&gt;
        list el=llList2List(ls1,i,i);&lt;br /&gt;
        // if not found in ls2 add to residual &lt;br /&gt;
        if(llListFindList(ls2, el)&amp;lt;0)&lt;br /&gt;
        {&lt;br /&gt;
            ret+=el;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// find out the first inventory object of the specified type&lt;br /&gt;
string getFromListOfType(list lst,integer type)&lt;br /&gt;
{&lt;br /&gt;
    integer i;&lt;br /&gt;
    for(i=0;i&amp;lt;llGetListLength(lst);i++)&lt;br /&gt;
    {&lt;br /&gt;
        string name=llList2String(lst,i);&lt;br /&gt;
        if(name != &amp;quot;nodo&amp;quot; &amp;amp;&amp;amp; name != llGetScriptName() &amp;amp;&amp;amp; name != &amp;quot;llSetPin&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            if(llGetInventoryType(name)==type) return name;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return &amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// will check if inventory changed and make sure that we have JUST one elemento&lt;br /&gt;
// for each type&lt;br /&gt;
inventoryUpdate()&lt;br /&gt;
{&lt;br /&gt;
    //llSay(0,&amp;quot;inventory update&amp;quot;);&lt;br /&gt;
    integer i=0; integer j=0; string ret=&amp;quot;&amp;quot;;&lt;br /&gt;
    integer num=llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
    //if(num==llGetListLength(currentInventory)) return;&lt;br /&gt;
    &lt;br /&gt;
    list newInventory=[];&lt;br /&gt;
    for(i=0;i&amp;lt;num;i++)&lt;br /&gt;
    {&lt;br /&gt;
        string name=llGetInventoryName(INVENTORY_ALL,i); integer found=0;&lt;br /&gt;
        newInventory+=[name];&lt;br /&gt;
    }&lt;br /&gt;
    // now find added inventory&lt;br /&gt;
    list added=diffList(newInventory,currentInventory);&lt;br /&gt;
    list removed=diffList(currentInventory,newInventory);&lt;br /&gt;
    &lt;br /&gt;
    //llSay(0,&amp;quot;==&amp;gt;Added &amp;quot;+llList2CSV(added));&lt;br /&gt;
    //llSay(0,&amp;quot;==&amp;gt;Removed &amp;quot;+llList2CSV(removed));&lt;br /&gt;
    &lt;br /&gt;
    // now check for each added if there was a duplicate in currentInventory&lt;br /&gt;
    for(i=0;i&amp;lt;llGetListLength(added);i++)&lt;br /&gt;
    {&lt;br /&gt;
       string name=llList2String(added,i);&lt;br /&gt;
       string already=getFromListOfType(currentInventory,llGetInventoryType(name));&lt;br /&gt;
       if(already!=&amp;quot;&amp;quot;)&lt;br /&gt;
       {&lt;br /&gt;
           llRemoveInventory(already);&lt;br /&gt;
           llSay(0,name+&amp;quot; replaced &amp;quot;+already);&lt;br /&gt;
       }&lt;br /&gt;
       else&lt;br /&gt;
           llSay(0,name+&amp;quot; inserted in content&amp;quot;);&lt;br /&gt;
           &lt;br /&gt;
       if(llGetInventoryType(name)==INVENTORY_TEXTURE)&lt;br /&gt;
        llSetTexture(name,ALL_SIDES);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    currentInventory=newInventory;&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 3) handles particles &lt;br /&gt;
key target=NULL_KEY;&lt;br /&gt;
particles()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
      trace(&amp;quot;making particles to &amp;quot;+(string)target);&lt;br /&gt;
        integer pattern = PSYS_SRC_PATTERN_ANGLE;&lt;br /&gt;
        integer flags= PSYS_PART_EMISSIVE_MASK &lt;br /&gt;
                        | PSYS_PART_INTERP_COLOR_MASK &lt;br /&gt;
                        //| PSYS_PART_FOLLOW_SRC_MASK&lt;br /&gt;
                        | PSYS_PART_FOLLOW_VELOCITY_MASK&lt;br /&gt;
                        | PSYS_PART_INTERP_SCALE_MASK &lt;br /&gt;
                        | PSYS_PART_TARGET_LINEAR_MASK&lt;br /&gt;
                        | PSYS_PART_TARGET_POS_MASK;&lt;br /&gt;
        // set particles&lt;br /&gt;
        llParticleSystem([  PSYS_PART_MAX_AGE,5.0,&lt;br /&gt;
                        PSYS_PART_FLAGS, flags,&lt;br /&gt;
                        PSYS_PART_START_COLOR, &amp;lt;1,0.25,0.25&amp;gt;,&lt;br /&gt;
                        PSYS_PART_END_COLOR, &amp;lt;0.75,0,0&amp;gt;,&lt;br /&gt;
                        PSYS_PART_START_SCALE,&amp;lt;0.051,.2,FALSE&amp;gt;,&lt;br /&gt;
                        PSYS_PART_END_SCALE,&amp;lt;0.2,.1,FALSE&amp;gt;,&lt;br /&gt;
                        PSYS_SRC_PATTERN, pattern,&lt;br /&gt;
                        PSYS_SRC_BURST_RATE,.1,&lt;br /&gt;
                        //PSYS_SRC_ACCEL, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
                        PSYS_SRC_BURST_PART_COUNT,8,&lt;br /&gt;
                        //PSYS_SRC_BURST_RADIUS,0.0,&lt;br /&gt;
                        PSYS_SRC_BURST_SPEED_MIN,0.0,&lt;br /&gt;
                        PSYS_SRC_BURST_SPEED_MAX,5.0,&lt;br /&gt;
                        PSYS_SRC_TARGET_KEY,target,&lt;br /&gt;
                        PSYS_SRC_ANGLE_BEGIN,0.0,&lt;br /&gt;
                        PSYS_SRC_ANGLE_END,0.0,&lt;br /&gt;
                        PSYS_SRC_OMEGA, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
                        PSYS_SRC_MAX_AGE, 0.0,&lt;br /&gt;
                        //PSYS_SRC_TEXTURE, TEXTURE_BLANK,&lt;br /&gt;
                        PSYS_PART_START_ALPHA, 1.0,&lt;br /&gt;
                        PSYS_PART_END_ALPHA, 0.5&lt;br /&gt;
                            ]); &lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
// 4) This will convert an id to an integer same id =&amp;gt; same key&lt;br /&gt;
// used to easily set up a not easy way to deposit scripts with a PIN&lt;br /&gt;
integer key2int(key id)&lt;br /&gt;
{&lt;br /&gt;
    string idstring = (string)id;&lt;br /&gt;
    integer ret = 0;&lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    for(; i &amp;lt; llStringLength(idstring); ++i)&lt;br /&gt;
    {&lt;br /&gt;
        ret = ret * 10 + (((integer)(&amp;quot;0x8&amp;quot;+llGetSubString(idstring, i, i)) - 2) % 17);&lt;br /&gt;
    }&lt;br /&gt;
    return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer isroot=TRUE; // are we the MAIN object? Useful to avoid being deleted&lt;br /&gt;
list children=[]; // will keep the keys of ALL depending children&lt;br /&gt;
&lt;br /&gt;
// 5) propagate message to all children&lt;br /&gt;
propagate(string message)&lt;br /&gt;
{&lt;br /&gt;
    debug(&amp;quot;Received message propagating to children: &amp;quot;+llList2CSV(children));&lt;br /&gt;
    // received a message from my parent&lt;br /&gt;
    // propagate message to my children&lt;br /&gt;
    integer i;&lt;br /&gt;
    for(i=0;i&amp;lt;llGetListLength(children);i++)&lt;br /&gt;
    {&lt;br /&gt;
        integer channel=key2int(llList2Key(children,i));&lt;br /&gt;
        debug(&amp;quot;Saying on channel &amp;quot;+(string)channel+&amp;quot; &amp;quot;+message);&lt;br /&gt;
        llSay(channel,message);&lt;br /&gt;
    }&lt;br /&gt;
    if(message==&amp;quot;DELETE&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
      // we must die IF we are not ROOT&lt;br /&gt;
&lt;br /&gt;
      if(isroot==0) llDie(); &lt;br /&gt;
      else debug(&amp;quot;Cannot delete master cube&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ============================== MAIN =========================&lt;br /&gt;
&lt;br /&gt;
integer lstPrivate;&lt;br /&gt;
integer lstPublic;&lt;br /&gt;
integer channelPublic;&lt;br /&gt;
integer channelPrivate;&lt;br /&gt;
&lt;br /&gt;
key parent=NULL_KEY;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // setting the communication channel identity private can change when re-rezzing&lt;br /&gt;
        channelPrivate=key2int(llGetKey());&lt;br /&gt;
        channelPublic=key2int(llGetOwner());&lt;br /&gt;
        debug(&amp;quot;My local channel: &amp;quot;+(string)channelPrivate);&lt;br /&gt;
        debug(&amp;quot;My public channel: &amp;quot;+(string)channelPublic);&lt;br /&gt;
        &lt;br /&gt;
        // if we are the main node go directly to ready&lt;br /&gt;
        // we know that because we don&#039;t have the llSetPin on main Ball&lt;br /&gt;
        inventoryUpdate(); // setup inventory&lt;br /&gt;
        if(llGetInventoryType(&amp;quot;llSetPin&amp;quot;)==INVENTORY_NONE)&lt;br /&gt;
        {&lt;br /&gt;
            isroot=TRUE;&lt;br /&gt;
            //llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);&lt;br /&gt;
            state ready;&lt;br /&gt;
        }&lt;br /&gt;
   &lt;br /&gt;
        isroot=FALSE;     &lt;br /&gt;
        // we are in a child node, &lt;br /&gt;
        notify(&amp;quot;Node bootstrapping...&amp;quot;);        &lt;br /&gt;
        // else rezzed by parent wait to listen who is the parent&lt;br /&gt;
        // parent will send a message on a special channel computed starting from&lt;br /&gt;
        // the child key&lt;br /&gt;
        &lt;br /&gt;
        // waiting for knowing who is my parent&lt;br /&gt;
        lstPrivate=llListen(channelPrivate,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // this listen only waits until my parent talks to me&lt;br /&gt;
    // this happens when rezzing avatar stops the menu&lt;br /&gt;
    listen(integer channel,string name, key id, string str)&lt;br /&gt;
    {&lt;br /&gt;
        debug(&amp;quot;received &amp;quot;+str+&amp;quot; on channel &amp;quot;+(string)channel);&lt;br /&gt;
        &lt;br /&gt;
        // set my parent to whom is talking to me first&lt;br /&gt;
        parent=id;&lt;br /&gt;
        // llListenRemove(lstparent);&lt;br /&gt;
&lt;br /&gt;
        // emits the beam towards my parent&lt;br /&gt;
        target=id;&lt;br /&gt;
        particles();&lt;br /&gt;
        &lt;br /&gt;
        // remove listener before leaving this state&lt;br /&gt;
        llListenRemove(lstPrivate);     &lt;br /&gt;
&lt;br /&gt;
        state ready;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// =========================== READY =========================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
state ready&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {    &lt;br /&gt;
        // reset waiting list&lt;br /&gt;
        waiting=[]; children=[]; notify(llGetObjectName());        &lt;br /&gt;
        llSetTimerEvent(CLEANTIMERSEC); // garbage collector&lt;br /&gt;
        &lt;br /&gt;
        // listen on private channel (for messages from parent -- delete)&lt;br /&gt;
        lstPrivate=llListen(channelPrivate,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // listen on public channel (for UUID changing)&lt;br /&gt;
        lstPublic=llListen(channelPublic,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // allow inventory dropping (for content dropping)&lt;br /&gt;
        llAllowInventoryDrop(TRUE);&lt;br /&gt;
        &lt;br /&gt;
        // If here it means I&#039;m being creating from scratch... Mark my UUID on the description&lt;br /&gt;
        llSetObjectDesc((string)llGetKey());&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer rez)&lt;br /&gt;
    {&lt;br /&gt;
        trace(&amp;quot;Object rezzed with new taskUUID&amp;quot;);&lt;br /&gt;
        // this happens ONLY if I come back from the inventory my UUID has changed&lt;br /&gt;
        // then will broadcast my old UUID&lt;br /&gt;
        string what=&amp;quot;OUID:&amp;quot;+llGetObjectDesc();&lt;br /&gt;
        debug(&amp;quot;Saying &amp;quot;+what+&amp;quot; in public channel &amp;quot;+(string)channelPublic);&lt;br /&gt;
        llSay(channelPublic,what);&lt;br /&gt;
        &lt;br /&gt;
        // private channel has to be reset!&lt;br /&gt;
        llListenRemove(lstPrivate);&lt;br /&gt;
        channelPrivate=key2int(llGetKey());&lt;br /&gt;
        trace(&amp;quot;Listening to new privateChannel &amp;quot;+(string)channelPrivate);&lt;br /&gt;
        lstPrivate=llListen(channelPrivate,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // reset the description&lt;br /&gt;
        llSetObjectDesc((string)llGetKey());&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    // If we changed owner or inventory&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        //llSay(0,&amp;quot;change: &amp;quot;+(string)change);&lt;br /&gt;
        if(change &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            debug(&amp;quot;Changed owner, resetting&amp;quot;);&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
        // handle changing of the inventory or somebody dropped&lt;br /&gt;
        if(change &amp;amp; CHANGED_INVENTORY || change &amp;amp; CHANGED_ALLOWED_DROP)&lt;br /&gt;
        {&lt;br /&gt;
            inventoryUpdate();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    // timer is trying to get all the menu listener clean&lt;br /&gt;
    // if they are exhausted then proceed to cancel them&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        integer i;&lt;br /&gt;
        for(i=0;i&amp;lt;howManyRecords();i++)&lt;br /&gt;
        {&lt;br /&gt;
            loadTheRecord(i); // into theXXXX fields&lt;br /&gt;
            &lt;br /&gt;
            // check if timeout (60 seconds&lt;br /&gt;
            if( (llGetUnixTime() - theTime ) &amp;gt; TIMEOUT )&lt;br /&gt;
            {&lt;br /&gt;
                debug(&amp;quot;Removing listener for &amp;quot;+llKey2Name(theAv));&lt;br /&gt;
                // if we were on  particular menu should also delete the &lt;br /&gt;
                llListenRemove(theMenu);&lt;br /&gt;
                deleteRecord(i);&lt;br /&gt;
                &lt;br /&gt;
                // if timeout something related to the detected avatar need to remove from list&lt;br /&gt;
                if(detected_key==theAv) remove_detected();&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        //debug(&amp;quot;List in timer exit: &amp;quot;+llList2CSV(waiting));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    // main menu listening for waiting avatars&lt;br /&gt;
    // we answer only to &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        integer i;&lt;br /&gt;
        for(i=0;i&amp;lt;total_number;i++)&lt;br /&gt;
        {&lt;br /&gt;
            key av=llDetectedKey(i);&lt;br /&gt;
            debug(&amp;quot;touched by &amp;quot;+llKey2Name(av));&lt;br /&gt;
            &lt;br /&gt;
            // check if we already have this avatar waiting. Don&#039;t allow touches if in a menu or a prompt!!!!&lt;br /&gt;
            integer index=findWaitingAvatar(av);&lt;br /&gt;
            if(index&amp;gt;=0)&lt;br /&gt;
            {  &lt;br /&gt;
                debug(&amp;quot;Has already a menu waiting&amp;quot;);&lt;br /&gt;
                // we have a menu for this avatar.. Check if we have it in detected_key&lt;br /&gt;
                // in such case we allow touching for detecting&lt;br /&gt;
                if(av==detected_key)&lt;br /&gt;
                {&lt;br /&gt;
                    trace(&amp;quot;We have a detected_key for this avatar  type:&amp;quot;+detected_type);&lt;br /&gt;
                    // handle this event&lt;br /&gt;
                    if(detected_type==&amp;quot;DETECTMOVE&amp;quot;)&lt;br /&gt;
                    {&lt;br /&gt;
                        debug(&amp;quot;Moving the prim&amp;quot;);&lt;br /&gt;
                        llSetPos(llGetPos()+llDetectedTouchNormal(i)*0.2);      &lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                   if(detected_type==&amp;quot;DETECTPOSREZ&amp;quot;)&lt;br /&gt;
                   {&lt;br /&gt;
                        debug(&amp;quot;rezzing a new cube&amp;quot;);&lt;br /&gt;
                        vector posrez=llDetectedTouchNormal(i);&lt;br /&gt;
                        llRezAtRoot(&amp;quot;nodo&amp;quot;,llGetPos()+posrez,ZERO_VECTOR,ZERO_ROTATION,1);&lt;br /&gt;
                        // execution is going on at rez_object&lt;br /&gt;
                        &lt;br /&gt;
                    }&lt;br /&gt;
                    //upgrade time for this event extend it so that timer won&#039;t remove it for next 60 secs&lt;br /&gt;
                    updateTimer(index);&lt;br /&gt;
        &lt;br /&gt;
                    // do NOT consume this event will be ended by ctimeout&lt;br /&gt;
                    return;&lt;br /&gt;
                }                &lt;br /&gt;
                &lt;br /&gt;
                // touch this when avatar has already a queue, will remove the queue&lt;br /&gt;
                deleteRecord(index);&lt;br /&gt;
                &lt;br /&gt;
                // informing the avatar the menu has been reset&lt;br /&gt;
                llInstantMessage(av,&amp;quot;Removing pending menu/promt&amp;quot;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // avatar hasn&#039;t any pending menu so start with main menu&lt;br /&gt;
            // start the initial menu&lt;br /&gt;
            addMenu(&amp;quot;MENUMAIN&amp;quot;,av,&amp;quot;Main menu:&lt;br /&gt;
DELETE: delete this and children,&lt;br /&gt;
NAME: you can type the new name,&lt;br /&gt;
COLOR: change the color,&lt;br /&gt;
SIZE: change the scale,&lt;br /&gt;
REZ: rez another node (click next on face for where to rez)&lt;br /&gt;
MOVE: pull the object in a direction (click next on face for where to rez),&lt;br /&gt;
TYPE: changes the object type,&lt;br /&gt;
HELP: go to online help,&lt;br /&gt;
UNLINK: remove the connecting beam&amp;quot;,&lt;br /&gt;
            [&amp;quot;DELETE&amp;quot;,&amp;quot;NAME&amp;quot;,&amp;quot;COLOR&amp;quot;,&lt;br /&gt;
             &amp;quot;SIZE&amp;quot;,&amp;quot;REZ&amp;quot;,&amp;quot;MOVE&amp;quot;,&lt;br /&gt;
             &amp;quot;TYPE&amp;quot;,&amp;quot;HELP&amp;quot;,&amp;quot;UNLINK&amp;quot;,&lt;br /&gt;
             &amp;quot;CONTENT&amp;quot; ]);&lt;br /&gt;
             trace(&amp;quot;List in touch exit: &amp;quot;+llList2CSV(waiting));&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
    // listen must understand if this avatar already has pending menu&lt;br /&gt;
    // and correctly sort out of them&lt;br /&gt;
    listen(integer channel,string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
        debug(&amp;quot;receiving a message in channel &amp;quot;+(string)channel+&amp;quot; message &amp;quot;+message);&lt;br /&gt;
        &lt;br /&gt;
        // PRIVATE CHANNEL&lt;br /&gt;
        if(channel==channelPrivate)&lt;br /&gt;
        {&lt;br /&gt;
            debug(&amp;quot;Received a message for me from my parent &amp;quot;+message);&lt;br /&gt;
            propagate(message);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // PUBLIC CHANNEL&lt;br /&gt;
        if(channel==channelPublic)&lt;br /&gt;
        {&lt;br /&gt;
            // on channel public we ONLY receive OLD UUID in the format&lt;br /&gt;
            // UUID:&lt;br /&gt;
            if(llGetSubString(message,0,4)==&amp;quot;OUID:&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                key olduuid=(key)llGetSubString(message,5,-1);&lt;br /&gt;
                debug(&amp;quot;Received from &amp;quot;+(string)id+&amp;quot; UUID change from old &amp;quot;+(string)olduuid);&lt;br /&gt;
                &lt;br /&gt;
                // need to understand if it was MY target&lt;br /&gt;
                if(target==olduuid){&lt;br /&gt;
                  target=id;&lt;br /&gt;
                  particles(); // change the beam to this new target&lt;br /&gt;
                }&lt;br /&gt;
                // check my children&lt;br /&gt;
                integer pos=llListFindList(children,[olduuid]);&lt;br /&gt;
                if(pos&amp;gt;=0)&lt;br /&gt;
                {&lt;br /&gt;
                  debug(&amp;quot;Replacing in children olduuid: &amp;quot;+(string)olduuid+&amp;quot; with &amp;quot;+(string)id);&lt;br /&gt;
                  children=llListReplaceList(children,[id],pos,pos);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // if not channel public or private then it shoudl be on stack        &lt;br /&gt;
        integer index=findWaitingAvatar(id);&lt;br /&gt;
        debug(&amp;quot;listen index found on waiting list: &amp;quot;+(string)index);&lt;br /&gt;
        if(index&amp;lt;0) return;&lt;br /&gt;
        &lt;br /&gt;
        // only here if we found on the stack&lt;br /&gt;
        integer elapsed=llGetUnixTime()-theTime;&lt;br /&gt;
        &lt;br /&gt;
        // remove handle AND the record from waiting list&lt;br /&gt;
        llListenRemove(theMenu);&lt;br /&gt;
        deleteRecord(index);&lt;br /&gt;
        debug(&amp;quot;Found listen menu type: &amp;quot;+theType+&amp;quot; mesg &amp;quot;+message);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // stopping menus          &lt;br /&gt;
        if(theType==&amp;quot;MENUSTOPMOVE&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
             remove_detected();&lt;br /&gt;
             llInstantMessage(id,&amp;quot;Stop moving&amp;quot;);&lt;br /&gt;
             return;&lt;br /&gt;
        }&lt;br /&gt;
        if(theType==&amp;quot;MENUSTOPREZ&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
             remove_detected();&lt;br /&gt;
             llInstantMessage(id,&amp;quot;Stop rezzing&amp;quot;);&lt;br /&gt;
             return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // handling menu content allow for setting content&lt;br /&gt;
        if(theType==&amp;quot;MENUCONTENT&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
          // allows for specifying a URL&lt;br /&gt;
          if(message==&amp;quot;SETURL&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              addPrompt(&amp;quot;PROMPTURL&amp;quot;,id,&amp;quot;Say in chat the url where to go&amp;quot;);&lt;br /&gt;
              return;&lt;br /&gt;
          }&lt;br /&gt;
          // just send help on how ctrl-dragging objects&lt;br /&gt;
          if(message==&amp;quot;SETCONTENT&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              // send help              &lt;br /&gt;
              llInstantMessage(id,&amp;quot;Please ctrl-drag something from your inventory on me. You can change the texture dragging a texture&amp;quot;);&lt;br /&gt;
              return;&lt;br /&gt;
          }&lt;br /&gt;
        &lt;br /&gt;
          // going to stored URL&lt;br /&gt;
          if(message==&amp;quot;GIVE URL&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              if(url!=&amp;quot;&amp;quot;)&lt;br /&gt;
              {&lt;br /&gt;
                  llLoadURL(id,&amp;quot;Go to webpage&amp;quot;,url);&lt;br /&gt;
              }&lt;br /&gt;
              return;&lt;br /&gt;
          } &lt;br /&gt;
          // handle all GETXXX buttons&lt;br /&gt;
          string name; string desc;&lt;br /&gt;
          if(message==&amp;quot;GIVE NOTE&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              name=getFromListOfType(currentInventory,INVENTORY_NOTECARD);&lt;br /&gt;
              desc=&amp;quot;notecard&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
          if(message==&amp;quot;GIVE LMARK&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              name=getFromListOfType(currentInventory,INVENTORY_LANDMARK);&lt;br /&gt;
              desc=&amp;quot;landmark&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
          if(message==&amp;quot;GIVE OBJECT&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              name=getFromListOfType(currentInventory,INVENTORY_OBJECT);&lt;br /&gt;
              desc=&amp;quot;object&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
          if(message==&amp;quot;GIVE TEXTURE&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
              name=getFromListOfType(currentInventory,INVENTORY_TEXTURE);&lt;br /&gt;
              desc=&amp;quot;texture&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
          &lt;br /&gt;
          if(name==&amp;quot;&amp;quot;)&lt;br /&gt;
          {&lt;br /&gt;
                  llInstantMessage(id,&amp;quot;No &amp;quot;+desc+&amp;quot; to give you&amp;quot;);&lt;br /&gt;
                  return;&lt;br /&gt;
          }&lt;br /&gt;
          // giving actually the object&lt;br /&gt;
          llGiveInventory(id,name);&lt;br /&gt;
          llInstantMessage(id,&amp;quot;You have been given a &amp;quot;+desc+&amp;quot; named &amp;quot;+name);&lt;br /&gt;
          return;&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        }&lt;br /&gt;
           &lt;br /&gt;
        // Handling of the options in MAIN MENU&lt;br /&gt;
        if(theType==&amp;quot;MENUMAIN&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
           if(message==&amp;quot;HELP&amp;quot;)&lt;br /&gt;
           {&lt;br /&gt;
               llLoadURL(id,&amp;quot;Load this page for help&amp;quot;,&amp;quot;http://opensimita.org/lsl/mindmap/README.html&amp;quot;);&lt;br /&gt;
                return;&lt;br /&gt;
           }&lt;br /&gt;
           if(message==&amp;quot;CONTENT&amp;quot;)&lt;br /&gt;
           {&lt;br /&gt;
               integer i;&lt;br /&gt;
               string texture=getFromListOfType(currentInventory,INVENTORY_TEXTURE);&lt;br /&gt;
               string object=getFromListOfType(currentInventory,INVENTORY_OBJECT);&lt;br /&gt;
               string note=getFromListOfType(currentInventory,INVENTORY_NOTECARD);&lt;br /&gt;
               string landmark=getFromListOfType(currentInventory,INVENTORY_LANDMARK);&lt;br /&gt;
               string prompt = &amp;quot;Choose an action:&lt;br /&gt;
SETCONTENT: explains how to insert an object&lt;br /&gt;
SETURL: allows for specifying a url&amp;quot;;&lt;br /&gt;
               list buttons=[&amp;quot;SETCONTENT&amp;quot;,&amp;quot;SETURL&amp;quot; ];&lt;br /&gt;
               if(url!=&amp;quot;&amp;quot;) &lt;br /&gt;
               {&lt;br /&gt;
                   prompt+=&amp;quot;\nGIVE URL: go to the url &amp;quot;+url;&lt;br /&gt;
                   buttons+=[&amp;quot;GIVE URL&amp;quot;];&lt;br /&gt;
               }&lt;br /&gt;
               if(note!=&amp;quot;&amp;quot;) &lt;br /&gt;
               {&lt;br /&gt;
                   prompt+=&amp;quot;\nGIVE NOTE: get the note &amp;quot;+note;&lt;br /&gt;
                   buttons+=[&amp;quot;GIVE NOTE&amp;quot;];&lt;br /&gt;
               }&lt;br /&gt;
               &lt;br /&gt;
               if(object!=&amp;quot;&amp;quot;)&lt;br /&gt;
               {&lt;br /&gt;
                   prompt+=&amp;quot;\nGIVE OBJECT: get the object &amp;quot;+object;&lt;br /&gt;
                   buttons+=[&amp;quot;GIVE OBJECT&amp;quot;];&lt;br /&gt;
               }                  &lt;br /&gt;
                 &lt;br /&gt;
               if(landmark!=&amp;quot;&amp;quot;) &lt;br /&gt;
               {&lt;br /&gt;
                   prompt+=&amp;quot;\nGIVE LMARK: get the landmark &amp;quot;+landmark;&lt;br /&gt;
                   buttons+=[&amp;quot;GIVE LMARK&amp;quot;];&lt;br /&gt;
               }&lt;br /&gt;
               if(texture!=&amp;quot;&amp;quot;)&lt;br /&gt;
               {&lt;br /&gt;
                   prompt+=&amp;quot;\nGETTEXTURE: get the texture &amp;quot;+texture;&lt;br /&gt;
                   buttons+=[&amp;quot;GIVE TEXTURE&amp;quot;];&lt;br /&gt;
               }&lt;br /&gt;
        &lt;br /&gt;
               &lt;br /&gt;
               addMenu(&amp;quot;MENUCONTENT&amp;quot;,id,prompt,buttons);&lt;br /&gt;
               return;&lt;br /&gt;
           }&lt;br /&gt;
           if(message==&amp;quot;NAME&amp;quot;)&lt;br /&gt;
           {&lt;br /&gt;
               addPrompt(&amp;quot;PROMPTNAME&amp;quot;,id,&amp;quot;Say in chat name of this concept&amp;quot;);&lt;br /&gt;
               return;&lt;br /&gt;
            }&lt;br /&gt;
            if(message==&amp;quot;DELETE&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                addPrompt(&amp;quot;PROMPTDELETE&amp;quot;,id,&amp;quot;Say DELETE in chat to be absolutely sure to delete from here&amp;quot;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            if(message==&amp;quot;COLOR&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
               addMenu(&amp;quot;MENUCOLOR&amp;quot;,id,&amp;quot;Enter color&amp;quot;,[&amp;quot;RED&amp;quot;,&amp;quot;GREEN&amp;quot;,&amp;quot;BLUE&amp;quot;,&amp;quot;WHITE&amp;quot;,&amp;quot;BLACK&amp;quot;,&amp;quot;VIOLET&amp;quot;,&amp;quot;TURQUESE&amp;quot;,&amp;quot;YELLOW&amp;quot;]);&lt;br /&gt;
               return;&lt;br /&gt;
            }&lt;br /&gt;
            if(message==&amp;quot;SIZE&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
               addMenu(&amp;quot;MENUSIZE&amp;quot;,id,&amp;quot;Enter size&amp;quot;,[&amp;quot;HALF&amp;quot;, &amp;quot;DOUBLE&amp;quot;, &amp;quot;+0.2&amp;quot;,&amp;quot;-0.2&amp;quot;,&amp;quot;DEFAULT&amp;quot;]);&lt;br /&gt;
               return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            if(message==&amp;quot;UNLINK&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                llParticleSystem([]); target=NULL_KEY;&lt;br /&gt;
                llInstantMessage(id,&amp;quot;Removed particles&amp;quot;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            // detected category&lt;br /&gt;
            if(message==&amp;quot;REZ&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                addDetected(&amp;quot;DETECTPOSREZ&amp;quot;,id,&amp;quot;Enter position where rez&amp;quot;);&lt;br /&gt;
                addMenu(&amp;quot;MENUSTOPREZ&amp;quot;,id,&amp;quot;Click on a face of the concept to rez a new cube in that direction.\nClick &#039;stop&#039; after chosing&amp;quot;,[&amp;quot;STOP&amp;quot;]);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            if(message==&amp;quot;MOVE&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                addDetected(&amp;quot;DETECTMOVE&amp;quot;,id,&amp;quot;Click on a face of the concept and the cube will move 20cm in that direction.&amp;quot;);&lt;br /&gt;
                addMenu(&amp;quot;MENUSTOPMOVE&amp;quot;,id,&amp;quot;Click to stop moving&amp;quot;,[&amp;quot;STOP&amp;quot;]);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            if(message==&amp;quot;TYPE&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                addMenu(&amp;quot;MENUTYPE&amp;quot;,id,&amp;quot;Select type of this concept&amp;quot;,[&amp;quot;SPHERE&amp;quot;,&amp;quot;CUBE&amp;quot;,&amp;quot;FLAT&amp;quot;,&amp;quot;CYLINDER&amp;quot;,&amp;quot;PYRAMID&amp;quot;,&amp;quot;POINT&amp;quot;,&amp;quot;STAR&amp;quot;,&amp;quot;ENDTYPE&amp;quot;]);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // change the type of this prim    &lt;br /&gt;
        if(theType==&amp;quot;MENUTYPE&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            if(message==&amp;quot;ENDTYPE&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                llInstantMessage(id,&amp;quot;Finished with typing&amp;quot;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            list typ=[];&lt;br /&gt;
            if(message==&amp;quot;FLAT&amp;quot;) &lt;br /&gt;
            {&lt;br /&gt;
               vector scale=llGetScale(); &lt;br /&gt;
              llSetScale(&amp;lt;0.01,scale.y,scale.z&amp;gt;);&lt;br /&gt;
              return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            if(message==&amp;quot;POINT&amp;quot;) &lt;br /&gt;
            {&lt;br /&gt;
              llSetScale(&amp;lt;0.01,0.01,0.01&amp;gt;);&lt;br /&gt;
              return;&lt;br /&gt;
            }&lt;br /&gt;
            if(message==&amp;quot;STAR&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
              llInstantMessage(id,&amp;quot;STAR not yet implemented&amp;quot;);&lt;br /&gt;
              return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
            if(message==&amp;quot;SPHERE&amp;quot;) typ=[ PRIM_TYPE, PRIM_TYPE_SPHERE, 0, &amp;lt;0,1,0&amp;gt;, 0.0, &amp;lt;0,0,0&amp;gt;,&amp;lt;0,1,0&amp;gt; ];&lt;br /&gt;
            if(message==&amp;quot;CUBE&amp;quot;) typ=[ PRIM_TYPE, PRIM_TYPE_BOX,0, &amp;lt;0.0, 1.0, 0.0&amp;gt;, 0.0, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &amp;lt;1.0, 1.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;];&lt;br /&gt;
            if(message==&amp;quot;CYLINDER&amp;quot;) typ=[ PRIM_TYPE, PRIM_TYPE_CYLINDER, 0, &amp;lt;0.0, 1.0, 0.0&amp;gt;, 0.0, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &amp;lt;1.0, 1.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;];&lt;br /&gt;
            if(message==&amp;quot;PYRAMID&amp;quot;) typ=[ PRIM_TYPE, PRIM_TYPE_BOX,0, &amp;lt;0.0, 1.0, 0.0&amp;gt;, 0.0, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;];&lt;br /&gt;
            &lt;br /&gt;
            llSetPrimitiveParams(typ);&lt;br /&gt;
            &lt;br /&gt;
            addMenu(&amp;quot;MENUTYPE&amp;quot;,id,&amp;quot;Select type of this concept&amp;quot;,[&amp;quot;SPHERE&amp;quot;,&amp;quot;CUBE&amp;quot;,&amp;quot;FLATBOX&amp;quot;,&amp;quot;CYLINDER&amp;quot;,&amp;quot;PYRAMID&amp;quot;,&amp;quot;POINT&amp;quot;,&amp;quot;STAR&amp;quot;,&amp;quot;ENDTYPE&amp;quot;]);&lt;br /&gt;
            return;            &lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
        // change the size of this prim&lt;br /&gt;
        if(theType==&amp;quot;MENUSIZE&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            vector current=llGetScale();&lt;br /&gt;
            if(message==&amp;quot;HALF&amp;quot;) current=current/2;&lt;br /&gt;
            if(message==&amp;quot;DOUBLE&amp;quot;) current=current*2;&lt;br /&gt;
            if(message==&amp;quot;+0.2&amp;quot;) current=current+&amp;lt;0.2,0.2,0.2&amp;gt;;&lt;br /&gt;
            if(message==&amp;quot;-0.2&amp;quot;) current=current-&amp;lt;0.2,0.2,0.2&amp;gt;;&lt;br /&gt;
            if(message==&amp;quot;DEFAULT&amp;quot;) current=&amp;lt;0.5,0.5,0.5&amp;gt;;&lt;br /&gt;
            llSetScale(current);&lt;br /&gt;
            llInstantMessage(id,&amp;quot;Size changed to &#039;&amp;quot;+(string)current+&amp;quot;&#039;&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // change the color of this prim&lt;br /&gt;
        if(theType==&amp;quot;MENUCOLOR&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            if(message==&amp;quot;RED&amp;quot;) llSetColor(&amp;lt;1,0,0&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;GREEN&amp;quot;) llSetColor(&amp;lt;0,1,0&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;BLUE&amp;quot;) llSetColor(&amp;lt;0,0,1&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;WHITE&amp;quot;) llSetColor(&amp;lt;1,1,1&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;BLACK&amp;quot;) llSetColor(&amp;lt;0,0,0&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;VIOLET&amp;quot;) llSetColor(&amp;lt;1,0,1&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;TURQUESE&amp;quot;) llSetColor(&amp;lt;0,1,1&amp;gt;,ALL_SIDES);&lt;br /&gt;
            if(message==&amp;quot;YELLOW&amp;quot;) llSetColor(&amp;lt;1,1,0&amp;gt;,ALL_SIDES);&lt;br /&gt;
            llInstantMessage(id,&amp;quot;Color changed to &#039;&amp;quot;+message+&amp;quot;&#039;&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // change the name&lt;br /&gt;
        if(theType==&amp;quot;PROMPTNAME&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            notify(message);&lt;br /&gt;
            llSetObjectName(message);&lt;br /&gt;
            llInstantMessage(id,&amp;quot;Name changed to &#039;&amp;quot;+message+&amp;quot;&#039;&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if(theType==&amp;quot;PROMPTDELETE&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            if(message==&amp;quot;DELETE&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                // handle delete message&lt;br /&gt;
                propagate(message);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
        }  &lt;br /&gt;
        &lt;br /&gt;
        // change the url&lt;br /&gt;
        if(theType==&amp;quot;PROMPTURL&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            url=message;&lt;br /&gt;
            llInstantMessage(id,&amp;quot;URL accepted: &amp;quot;+url);&lt;br /&gt;
            return;&lt;br /&gt;
        }  &lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    // when new node is rezzed then we give this script running and tell it&lt;br /&gt;
    // my id so that it can emit particles&lt;br /&gt;
    object_rez(key id)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        // understand the remotepin which is publicchannel&lt;br /&gt;
        integer remotePin=key2int(llGetOwner());&lt;br /&gt;
        integer childchannel=key2int(id);&lt;br /&gt;
        &lt;br /&gt;
        llRemoteLoadScriptPin(id, llGetScriptName(), remotePin, TRUE, key2int(llGetKey()));&lt;br /&gt;
        debug(&amp;quot;Obtaining my key: &amp;quot;+(string)childchannel+(string)llGetKey());&lt;br /&gt;
        &lt;br /&gt;
        // memorize this channel so to be able to speak to all my children in case of die&lt;br /&gt;
        children+=[id];&lt;br /&gt;
        &lt;br /&gt;
        llGiveInventory(id,&amp;quot;nodo&amp;quot;);&lt;br /&gt;
       &lt;br /&gt;
        debug(&amp;quot;Chatting &amp;quot;+(string)llGetKey()+&amp;quot; on channel &amp;quot;+(string)key2int(id)+ &amp;quot;children: &amp;quot;+llList2CSV(children));&lt;br /&gt;
        llSay(childchannel,(string)llGetKey());&lt;br /&gt;
        &lt;br /&gt;
        //llInstantMessage(&amp;quot;Node created&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Having a copy from XStreetsl ==&lt;br /&gt;
If you have any difficulties in having these scripts running, please get a copy from XStreetSL: https://www.xstreetsl.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=1632590&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Havok4&amp;diff=54178</id>
		<title>Havok4</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Havok4&amp;diff=54178"/>
		<updated>2008-02-15T10:19:26Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: added multilink template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
==Havok4 (New Physics Engine) Beta Test Information Hub==&lt;br /&gt;
===Introduction===&lt;br /&gt;
The beta testing for the Havok4 implementation in Second Life is now in process. This page provides information on the project, as well as useful information that will help us all to make sure that Havok4 is tested well before it is rolled throughout the main Second Life grid.&lt;br /&gt;
&lt;br /&gt;
Please read the [[Havok4 Beta1 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
===What Is Havok?===&lt;br /&gt;
The Second Life virtual world has a lot of moving parts that keep it going. One of these is the Physics Engine. A physics engine is a specialized piece of software that does the &amp;quot;real world&amp;quot; calculations to figure out what do when:&lt;br /&gt;
* Something or someone is pushed&lt;br /&gt;
* Something or someone collides with something or someone else&lt;br /&gt;
* Something or someone is in motion and has momentum&lt;br /&gt;
* Friction or damping slows the motion of something or someone&lt;br /&gt;
&lt;br /&gt;
Havok is a commercially produced physics engine, and Second Life was built using Havok1. on which it operated for several years. &lt;br /&gt;
&lt;br /&gt;
===How Can I Participate In Havok4 Physics Engine Testing?===&lt;br /&gt;
You can participate in the Beta Test of Havok4 with a few easy steps:&lt;br /&gt;
# Read &amp;quot;[[What&#039;s Changed With Havok4]]&amp;quot; to understand what should be different, and what should not be different, on the Havok4 Beta Test grid&lt;br /&gt;
# Read &amp;quot;[[Linkability_Rules|New Prim Linkability Rules]]&amp;quot; to understand how prim linkage works with Havok4 (it&#039;s better and should be much more reliable!)&lt;br /&gt;
# Login to the Public Issue Tracker at &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; to see how easily you can tell us about problems you find during the beta test&lt;br /&gt;
# [http://secondlife.com/community/preview.php Download the install the Havok4 Beta Viewer here]&lt;br /&gt;
&lt;br /&gt;
===What To Test?===&lt;br /&gt;
Make sure that all of the your content works on the Havok4 grid, and try as many physics-related things as you can think of as well... Here is a short list, and a link to a page with a more exhaustive list of ideas:&lt;br /&gt;
* Building, linking, unlinking&lt;br /&gt;
* Vehicles&lt;br /&gt;
* Weapons&lt;br /&gt;
* &amp;quot;Spells&amp;quot;&lt;br /&gt;
* Shields&lt;br /&gt;
* Building Tools&lt;br /&gt;
* Rezzing large linked sets of prims&lt;br /&gt;
* Try building simple and complex items, taking them into inventory and rezzing them in different orientations and in different places&lt;br /&gt;
* Does walking, sitting, flying, swimming, running and other avatar motions work the way you expect it to?&lt;br /&gt;
* Do scripts work as expected? &lt;br /&gt;
* Try creating scripts and modifying them&lt;br /&gt;
* Are permissions working correctly?&lt;br /&gt;
* Can you get the sim to crash using &amp;quot;physics crashes&amp;quot;? (those of you who know what this means... &amp;quot;go for it&amp;quot; and let us know if you can... ;)&lt;br /&gt;
&lt;br /&gt;
There are [[Havok4_Beta_Test_Ideas|Many Things You Can Test In Havok4]] (a list of lots of things that would be helpful for you to test. Feel free to pick and choose from this list and make up your own things to try as well!&lt;br /&gt;
&lt;br /&gt;
===How Do I Stay &amp;quot;In The Loop&amp;quot; With Havok4 Testing?===&lt;br /&gt;
# Attend &amp;quot;[[Regular Havok4 Office Hours In-World]]&amp;quot;&lt;br /&gt;
# TELL US about everything you find using the Public Issue Tracker at &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
Please enter bugs using PROJECT &amp;quot;Second Life Service - SVC&amp;quot; and when entering the bug choose AFFECTS VERSIONS &amp;quot;Havok4 Beta&amp;quot; and COMPONENTS &amp;quot;Physics&amp;quot; to be sure we see them right away!&lt;br /&gt;
&lt;br /&gt;
===How Will Havok4 Be Tested And Rolled Out?===&lt;br /&gt;
This project replaces a core component of Second Life, and being sure that &amp;quot;anything that pushes, collides or has inertia&amp;quot; works right is a pretty extensive task. We have already done a lot of internal testing, and plowed through hundreds of internal bug fixes. We will be taking a phased approach to both catch as many problems as early as possible, and reduce risk of issues as Havok4 is rolled out. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Phase 1 - Internal Testing On Non-Public Test Grid (DONE!)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
We already completed this phase, and had a variety of internal staff work on Havok4 enabled simulators. Basic functions were checked, as well as checking to see that the known physics-related simulator crashes were resolved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Phase 2 - Public Beta Test On Beta Grid (DONE!)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
We expect the public beta test for Havok4 to be very active, with many participants. We have prepared a test grid that allows for many types of physics-related tests. The test regions will include:&lt;br /&gt;
* [[Orientation Islands]]&lt;br /&gt;
* [[Welcome Areas]]&lt;br /&gt;
* [[Lusk]]&lt;br /&gt;
* Several [[sandboxes]]&lt;br /&gt;
* [[Combat sandboxes]]&lt;br /&gt;
* [[Vehicle testing simulators]]&lt;br /&gt;
&lt;br /&gt;
NOTE: The Public Beta viewer will be configured to use the beta grid, which will be a snapshot copy of portions of the main grid and a copy of your user account. You can do &amp;quot;anything you want&amp;quot; on this grid without risking damage to your &amp;quot;real account&amp;quot; on the main grid. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Phase 3 - Havok4 On A Select Few Main Grid Regions (DONE!)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
In this phase we will use the new HetGrid functionality to deploy Havok4 simulators on a small number of regions of the main grid. This will still be a testing phase, and for this phase any participants will need to remember that you will be on the main grid, working with your real inventory (caveat emptor - don&#039;t rez &amp;quot;no copy/transfer&amp;quot; items on these early test Havok4 sims without understanding the potential risks)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Phase 4 - Partial Main Grid Rollout (400-500 regions)  (&amp;quot;YOU ARE HERE!&amp;quot; :)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
At this point, we will have resolved outstanding issues found during beta testing and the Phase 3 &amp;quot;small deployment in a corner of the main grid&amp;quot; and will deploy Havok4 to a subset of the main grid. &lt;br /&gt;
&lt;br /&gt;
After collecting feedback, if all looks good, we will continue to...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Phase 5 - Full Havok4 Rollout On Main Grid (deploy to rest of grid)&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If all is clean at this point, we will then roll out the Havok4 engine to the rest of the main grid, and we&#039;ll be &amp;quot;live&amp;quot; with Havok4 everywhere.&lt;br /&gt;
&lt;br /&gt;
===A Historical Note: Why Did &amp;quot;Doing Havok&amp;quot; Take So Long?===&lt;br /&gt;
Some of you who have been around for a long time will know that we talked about replacing Havok1 a long time ago, and did not seem to get this project done, and finally went silent about it. After several false starts, we decided that it would be best to stop talking about the work, or making public commitments, until we were far closer to the goal, and we believe that we are finally at this point. &lt;br /&gt;
&lt;br /&gt;
For &amp;quot;quite some time&amp;quot; we worked to replace Havok1 with Havok2. After working on that project, we realized that we really should rework the interfaces for how Havok is integrated with Second Life. We realized that we needed to define an abstraction layer - a layer of code that would make it easier to do future physics engine migrations so that they don&#039;t take as much effort as this migration took, and to allow for more flexibility down the road. At this point Havok4 became a much more reasonable target than implementing based on a then-older release... and thus we set Havok4 as the target. This project has been significantly larger than any of us anticipated, however the good news is that we are now here, ready for beta testing, and ready to fix the last minute issues before we bring Havok4-based sims to the main grid!&lt;br /&gt;
&lt;br /&gt;
== New experiences that are normal ==&lt;br /&gt;
&lt;br /&gt;
=== Ejection and separation of interpenetrating objects ===&lt;br /&gt;
One of the largest improvements over the previous Havok I engine is that Havok 4 supports separation of interpenetrating objects. That is, a cube that is embedded into the ground and turned physical will attempt to work its way out and up, until it has separated from from the ground and then rests on the ground.&lt;br /&gt;
&lt;br /&gt;
The previous engine did not handle interpenetrating objects very well. It would go into a deeply recursive processing loop known as the &amp;quot;Deep Think&amp;quot; condition, trying to determine where the overlapping objects should move, causing the simulator to run very slowly.&lt;br /&gt;
&lt;br /&gt;
The new engine quickly and easily separates overlapping objects. The objects are treated like compressed springs, so that a deeper interpenetration imparts a greater ejection force onto the object. The interpenetration resolver attempts to obey movement constraints and will not explode out through enclosing walls, but will expand out through whatever openings or spaces are available.&lt;br /&gt;
&lt;br /&gt;
Here is a Google Video showing an extreme example of how the interpenetration resolver works. A stack of about 200 very large disks about 0.5 meter thick overlap in a short stack about 10 meters tall, and enclosed inside a large hollow tube. When rezzed on the ground and turned physical, the disks explode upward and out of the top of the tube, with some disks shooting over 300 meters high from the repulsive force of the overlap resolution. No scripted movements or pushes are being applied to the disks. The motion is purely from the interpenetration resolver.&lt;br /&gt;
&lt;br /&gt;
Google Video: &#039;&#039;&#039;Second Life Havok 4 - Exploding Can of Disks&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
http://video.google.com/videoplay?docid=-2623683631644524154&lt;br /&gt;
&lt;br /&gt;
=== Simulator lag from huge piles of stacked objects ===&lt;br /&gt;
Even though this is a new and improved physics engine that should not crash as frequently as the original Havok-1 engine, there are times when the new simulator will still experience very bad lag due to a large number of touching physical objects.&lt;br /&gt;
&lt;br /&gt;
This lag is not a bug, and is not like the old Havok-1 Deep Think condition, but is due to a limitation in how physics engines work in general. This same problem affected Havok-1, but it wasn&#039;t as obvious, since large stacks often crashed the simulator before this condition could become apparant.&lt;br /&gt;
&lt;br /&gt;
Normally when physical objects slow down to below a critical speed for a period of time, the engine quiets the physics processing for that object, in order to save CPU time for the more active objects.&lt;br /&gt;
&lt;br /&gt;
In order for the physics processing to settle, the object needs to be in contact with a nonmoving reference object. A single physical bar coming to a stop touching the ground is therefore quieted.&lt;br /&gt;
&lt;br /&gt;
But for multiple stacked physical objects, it is difficult for them all to settle down, because one or more of the other touching objects may still be slightly moving when the other objects settle. This slight movement of the one then reawakens the objects that previously were settled, resulting in small movements rippling through the stack. The feedback of reawakening constantly circulates through the pile so that none of them are ever really able to settle completely. This constant moving and twitching of the spheres is similar to the physical concept of Brownian Motion with atoms.&lt;br /&gt;
&lt;br /&gt;
Google Video example of simulator lag generated from 565 physical spheres held inside a container:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=7316931483709158462&lt;br /&gt;
&lt;br /&gt;
This engine lag is not based on the size of the objects involved. A collection of 500 very small stacked objects can cause as much lag as 500 large stacked objects.&lt;br /&gt;
&lt;br /&gt;
=== Thousands of objects that don&#039;t touch do not lag ===&lt;br /&gt;
&lt;br /&gt;
The Havok-4 simulator will run at full speed, if there is enough space between physical objects so that the reawakening collisions are kept to a mininum.&lt;br /&gt;
&lt;br /&gt;
There can be thousands of physical objects in a simulator without any lag, just so long as the objects minimally touch each other.&lt;br /&gt;
&lt;br /&gt;
Google Video of 2000-3400 physical cubes in a sandbox, with no lag:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=-2779779276874540721&lt;br /&gt;
&lt;br /&gt;
=== Pseudocode for llPushObject (the Havok4 implementation of this function) ===&lt;br /&gt;
[http://wiki.secondlife.com/wiki/LlPushObject/Havok4Implementation Pseudocode for llPushObject]&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linkability_Rules/it&amp;diff=51621</id>
		<title>Linkability Rules/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linkability_Rules/it&amp;diff=51621"/>
		<updated>2008-01-29T12:51:04Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: correct multi-lang template param&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
=== Quando le prim sono linkabili ===&lt;br /&gt;
&lt;br /&gt;
Considerate due primitive, A e B. Per determinare se queste possono essere collegate o meno si calcola lo &#039;&#039;spazio&#039;&#039; dal bordo della sfera che racchiude l&#039;oggetto al bordo opposto dall&#039;altra sfera e confrontandolo con il valore di &#039;&#039;massima distanza di linkabilità&#039;&#039;, che è una funzione dei raggi delle due sfere:&lt;br /&gt;
&lt;br /&gt;
     (1) massima_distanza_link = minimo( 3 * (raggio_di_A + raggio_di_B) + distanza_minima, distanza_massima)&lt;br /&gt;
&lt;br /&gt;
Dove:&lt;br /&gt;
&lt;br /&gt;
     (2) distanza_minima = 1,0 metri &lt;br /&gt;
     (3) distanza_massima = 54,0 metri&lt;br /&gt;
     (4) raggio_X = raggio della sfera contenente la primitiva X (Figura A)&lt;br /&gt;
     (5) minimo (C, D) = al minimo tra C e D&lt;br /&gt;
&lt;br /&gt;
Se la distanza misurata tra le due sfere è inferiore o uguale al &#039;&#039;massima_distanza_link&#039;&#039; allora le corrispondenti primitive possono essere linkate tra loro. In termini matematici:&lt;br /&gt;
&lt;br /&gt;
     (6) A_può_linkare_B = lunghezza (centro_di_A - centro_di_B) + raggio_di_A + raggio_di_B &amp;lt;= massima_distanza_link)&lt;br /&gt;
&lt;br /&gt;
{|align = &amp;quot;right&amp;quot;&lt;br /&gt;
|[[Image:Primitive_diameter.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;bounding sphere&#039;&#039;&#039; è la più piccola sfera che racchiude tutto il &#039;&#039;bounding box&#039;&#039; locale di una primitiva.&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;local bounding box&#039;&#039;&#039; è il cubo centrato nella primitiva nel suo centro geometrico con il sistema di riferimento locale e di dimensioni uguali alla dimensione della primitiva.&lt;br /&gt;
&lt;br /&gt;
Il centro geometrico della primitiva è il suo centro di simmetria locale calcolato prima delle operazioni di &#039;&#039;cut&#039;&#039;, &#039;&#039;shear&#039;&#039;, &#039;&#039;twist&#039;&#039;, &#039;&#039;taper&#039;&#039;, e di &#039;&#039;hollow&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; che una bounding sphere di una  primitiva non è necessariamente la sfera più stretta&lt;br /&gt;
possibile per la sua forma, a meno che la primitiva non sia una semplice box. La sfera di bounding&lt;br /&gt;
dipende esclusivamente dalla posizione della primitiva e dalle sue dimensioni, per cui qualsiasi&lt;br /&gt;
cut o hollow della primitiva la renderà notevolmente più piccola della sua bounding sphere, e non necessariamente vicina al suo centro. Inoltre, una primitiva twistata o shearata può avere gli spigoli che si estendono al di fuori della sua sfera di bounding. Poiché le regole di&lt;br /&gt;
Linkability dipendono solo dalla bounding sphere, che è in ultima analisi dipende solo dalla posizione della primitiva e dalle sue dimensioni, la linkabilità di due prims è indipendente dai cambiamenti della forma e di rotazione.&lt;br /&gt;
&lt;br /&gt;
TODO - abbiamo bisogno di un nuovo figura_A che mostri &#039;&#039;Area&#039;&#039;, invece&#039;&#039;di diametro&#039;&#039;.&lt;br /&gt;
Anche bisogno di nuove figure e _B _C per due correlabili prims e due correlabili multi-cfr oggetti.&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo per la linkabilità ===&lt;br /&gt;
&lt;br /&gt;
Le norme che disciplinano il &#039;&#039;&#039;linkability di oggetti multi-prim&#039;&#039;&#039; è molto simile al caso di due sole primitive. Si applica la stessa formula (1) e (6), ma la bounding sphere di un oggetto multi-prim sono le più piccole sfere che contengono completamente tutte le sfere di bounding delle corrispondenti primitive che si vogliono linkare.&lt;br /&gt;
&lt;br /&gt;
Quando si collegano &#039;&#039;&#039;tre o più oggetti&#039;&#039;&#039; l&#039;algoritmo itera tra gli oggetti candidati fino a quando tutte le prim linkabili sono state trovate. La prim principale dell&#039;oggetto viene testata con ogni candidato e la sfera di bounding diventa più grande ad ogni collegamento calcolato andato a buon fine. Quindi qualsiasi prim scollegata viene testata e fusa man mano ottenendo collezioni più grandi secondo le formule. L&#039;oggetto principale è quindi ri-testato contro la modifica e il processo continua fino a quando tutti gli oggetti sono collegati, o non vengono trovati nuovi collegamenti validi.&lt;br /&gt;
&lt;br /&gt;
=== Casi di fallimento === &lt;br /&gt;
&lt;br /&gt;
Se un &#039;&#039;&#039;insieme non linkabile&#039;&#039;&#039; è testato dall&#039;algoritmo di linkabilità il sottoinsieme finale delle parti linkabili è determinato dall&#039;ordine in cui i candidati sono stati elaborati.&lt;br /&gt;
La banale prova di questo si ha considerano primitiva root tra una griglia di tantissime altre primitive. L&#039;algoritmo non riesce a linkare tutte queste primitive, ma se sono state testate prima tutte quelle a ovest alla fine il sottoinsieme delle prim linkate durante l&#039;operazione di link potrebbe non&lt;br /&gt;
poter collegare parte delle primitive a est che non superano il vincolo della &#039;&#039;distanza_massima&#039;&#039; (3). Il risultato finale potrebbe essere diverso se le primitive a est vengono testate prima delle altre.&lt;br /&gt;
&lt;br /&gt;
Se un &#039;&#039;&#039;insieme linkabile&#039;&#039;&#039; è testato dall&#039;algoritmo di linkabilità il sottoinsieme finale delle parti linkabili &#039;&#039;&#039;non&#039;&#039;&#039; è determinato dall&#039;ordine in cui i candidati sono stati sottoposti. Ciò significa che, se i sottoinsiemi linkabili del caso precedente vengono testati per la linkabilità qualunque permutaziona dei suoi elementi sarà sempre linkabile a prescindere dall&#039;ordine in cui vengono linkati. La prova di ciò è lasciata come un esercizio per il lettore.&lt;br /&gt;
&lt;br /&gt;
=== Esempi ===&lt;br /&gt;
==== Due prim molto piccole ====&lt;br /&gt;
raggio_di_A = ~ 0,01&lt;br /&gt;
&lt;br /&gt;
raggio_di_B = ~ 0,01&lt;br /&gt;
&lt;br /&gt;
distanza_minima = 1,0 metri&lt;br /&gt;
&lt;br /&gt;
distanza_massima = 54,0 metri&lt;br /&gt;
&lt;br /&gt;
massima_distanza_link = 1.06m&lt;br /&gt;
&lt;br /&gt;
==== Uno prim grande con un piccolo prim ====&lt;br /&gt;
raggio_di_A = 5m&lt;br /&gt;
&lt;br /&gt;
raggio_di_B = ~ 0,01&lt;br /&gt;
&lt;br /&gt;
distanza_minima = 1,0 metri&lt;br /&gt;
&lt;br /&gt;
distanza_massima = 54,0 metri&lt;br /&gt;
&lt;br /&gt;
3 * (raggio_di_A + raggio_di_B) + distanza_massima = 15,03 metri&lt;br /&gt;
&lt;br /&gt;
15.03m è inferiore a 54.0m&lt;br /&gt;
&lt;br /&gt;
Così la massima_distanza_link = 15.03m&lt;br /&gt;
&lt;br /&gt;
==== Due prim molto grandi ====&lt;br /&gt;
Il diametro di una sfera bounding è la radice quadrata di x ^ 2 + y ^ 2 + z ^ 2&lt;br /&gt;
&lt;br /&gt;
Quindi, il diametro della sfera che contiene il cubo di dimensioni 10m x 10m x 10m è la radice quadrata di (100 + 100 + 100) = ~ 17.3m&lt;br /&gt;
&lt;br /&gt;
E il diametro di un 10m x 1m x 1m è radice quadrata (100 + 1 + 1) = ~ 10.1m&lt;br /&gt;
&lt;br /&gt;
(Il tipo di prim non importa per questo calcolo. Sono importanti soltanto le dimensioni.)&lt;br /&gt;
&lt;br /&gt;
Prendiamo il caso di due prim di dimensione 10m x 10m x 10m.&lt;br /&gt;
&lt;br /&gt;
raggio_di_A = 8.66m&lt;br /&gt;
&lt;br /&gt;
raggio_di_B = 8.66m&lt;br /&gt;
&lt;br /&gt;
distanza_minima = 1,0 metri&lt;br /&gt;
&lt;br /&gt;
distanza_massima = 54,0 metri&lt;br /&gt;
&lt;br /&gt;
3 * (raggio_di_A + raggio_di_B) + distanza_minima = 52.96m&lt;br /&gt;
&lt;br /&gt;
52.96m è inferiore a 54m&lt;br /&gt;
&lt;br /&gt;
Così la massima_distanza_link = 52.96m&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linkability_Rules/it&amp;diff=51620</id>
		<title>Linkability Rules/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linkability_Rules/it&amp;diff=51620"/>
		<updated>2008-01-29T12:49:01Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: translation of the Linkability Rules page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|Regole di Linkabilità}}&lt;br /&gt;
=== Quando le prim sono linkabili ===&lt;br /&gt;
&lt;br /&gt;
Considerate due primitive, A e B. Per determinare se queste possono essere collegate o meno si calcola lo &#039;&#039;spazio&#039;&#039; dal bordo della sfera che racchiude l&#039;oggetto al bordo opposto dall&#039;altra sfera e confrontandolo con il valore di &#039;&#039;massima distanza di linkabilità&#039;&#039;, che è una funzione dei raggi delle due sfere:&lt;br /&gt;
&lt;br /&gt;
     (1) massima_distanza_link = minimo( 3 * (raggio_di_A + raggio_di_B) + distanza_minima, distanza_massima)&lt;br /&gt;
&lt;br /&gt;
Dove:&lt;br /&gt;
&lt;br /&gt;
     (2) distanza_minima = 1,0 metri &lt;br /&gt;
     (3) distanza_massima = 54,0 metri&lt;br /&gt;
     (4) raggio_X = raggio della sfera contenente la primitiva X (Figura A)&lt;br /&gt;
     (5) minimo (C, D) = al minimo tra C e D&lt;br /&gt;
&lt;br /&gt;
Se la distanza misurata tra le due sfere è inferiore o uguale al &#039;&#039;massima_distanza_link&#039;&#039; allora le corrispondenti primitive possono essere linkate tra loro. In termini matematici:&lt;br /&gt;
&lt;br /&gt;
     (6) A_può_linkare_B = lunghezza (centro_di_A - centro_di_B) + raggio_di_A + raggio_di_B &amp;lt;= massima_distanza_link)&lt;br /&gt;
&lt;br /&gt;
{|align = &amp;quot;right&amp;quot;&lt;br /&gt;
|[[Image:Primitive_diameter.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;bounding sphere&#039;&#039;&#039; è la più piccola sfera che racchiude tutto il &#039;&#039;bounding box&#039;&#039; locale di una primitiva.&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;local bounding box&#039;&#039;&#039; è il cubo centrato nella primitiva nel suo centro geometrico con il sistema di riferimento locale e di dimensioni uguali alla dimensione della primitiva.&lt;br /&gt;
&lt;br /&gt;
Il centro geometrico della primitiva è il suo centro di simmetria locale calcolato prima delle operazioni di &#039;&#039;cut&#039;&#039;, &#039;&#039;shear&#039;&#039;, &#039;&#039;twist&#039;&#039;, &#039;&#039;taper&#039;&#039;, e di &#039;&#039;hollow&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; che una bounding sphere di una  primitiva non è necessariamente la sfera più stretta&lt;br /&gt;
possibile per la sua forma, a meno che la primitiva non sia una semplice box. La sfera di bounding&lt;br /&gt;
dipende esclusivamente dalla posizione della primitiva e dalle sue dimensioni, per cui qualsiasi&lt;br /&gt;
cut o hollow della primitiva la renderà notevolmente più piccola della sua bounding sphere, e non necessariamente vicina al suo centro. Inoltre, una primitiva twistata o shearata può avere gli spigoli che si estendono al di fuori della sua sfera di bounding. Poiché le regole di&lt;br /&gt;
Linkability dipendono solo dalla bounding sphere, che è in ultima analisi dipende solo dalla posizione della primitiva e dalle sue dimensioni, la linkabilità di due prims è indipendente dai cambiamenti della forma e di rotazione.&lt;br /&gt;
&lt;br /&gt;
TODO - abbiamo bisogno di un nuovo figura_A che mostri &#039;&#039;Area&#039;&#039;, invece&#039;&#039;di diametro&#039;&#039;.&lt;br /&gt;
Anche bisogno di nuove figure e _B _C per due correlabili prims e due correlabili multi-cfr oggetti.&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo per la linkabilità ===&lt;br /&gt;
&lt;br /&gt;
Le norme che disciplinano il &#039;&#039;&#039;linkability di oggetti multi-prim&#039;&#039;&#039; è molto simile al caso di due sole primitive. Si applica la stessa formula (1) e (6), ma la bounding sphere di un oggetto multi-prim sono le più piccole sfere che contengono completamente tutte le sfere di bounding delle corrispondenti primitive che si vogliono linkare.&lt;br /&gt;
&lt;br /&gt;
Quando si collegano &#039;&#039;&#039;tre o più oggetti&#039;&#039;&#039; l&#039;algoritmo itera tra gli oggetti candidati fino a quando tutte le prim linkabili sono state trovate. La prim principale dell&#039;oggetto viene testata con ogni candidato e la sfera di bounding diventa più grande ad ogni collegamento calcolato andato a buon fine. Quindi qualsiasi prim scollegata viene testata e fusa man mano ottenendo collezioni più grandi secondo le formule. L&#039;oggetto principale è quindi ri-testato contro la modifica e il processo continua fino a quando tutti gli oggetti sono collegati, o non vengono trovati nuovi collegamenti validi.&lt;br /&gt;
&lt;br /&gt;
=== Casi di fallimento === &lt;br /&gt;
&lt;br /&gt;
Se un &#039;&#039;&#039;insieme non linkabile&#039;&#039;&#039; è testato dall&#039;algoritmo di linkabilità il sottoinsieme finale delle parti linkabili è determinato dall&#039;ordine in cui i candidati sono stati elaborati.&lt;br /&gt;
La banale prova di questo si ha considerano primitiva root tra una griglia di tantissime altre primitive. L&#039;algoritmo non riesce a linkare tutte queste primitive, ma se sono state testate prima tutte quelle a ovest alla fine il sottoinsieme delle prim linkate durante l&#039;operazione di link potrebbe non&lt;br /&gt;
poter collegare parte delle primitive a est che non superano il vincolo della &#039;&#039;distanza_massima&#039;&#039; (3). Il risultato finale potrebbe essere diverso se le primitive a est vengono testate prima delle altre.&lt;br /&gt;
&lt;br /&gt;
Se un &#039;&#039;&#039;insieme linkabile&#039;&#039;&#039; è testato dall&#039;algoritmo di linkabilità il sottoinsieme finale delle parti linkabili &#039;&#039;&#039;non&#039;&#039;&#039; è determinato dall&#039;ordine in cui i candidati sono stati sottoposti. Ciò significa che, se i sottoinsiemi linkabili del caso precedente vengono testati per la linkabilità qualunque permutaziona dei suoi elementi sarà sempre linkabile a prescindere dall&#039;ordine in cui vengono linkati. La prova di ciò è lasciata come un esercizio per il lettore.&lt;br /&gt;
&lt;br /&gt;
=== Esempi ===&lt;br /&gt;
==== Due prim molto piccole ====&lt;br /&gt;
raggio_di_A = ~ 0,01&lt;br /&gt;
&lt;br /&gt;
raggio_di_B = ~ 0,01&lt;br /&gt;
&lt;br /&gt;
distanza_minima = 1,0 metri&lt;br /&gt;
&lt;br /&gt;
distanza_massima = 54,0 metri&lt;br /&gt;
&lt;br /&gt;
massima_distanza_link = 1.06m&lt;br /&gt;
&lt;br /&gt;
==== Uno prim grande con un piccolo prim ====&lt;br /&gt;
raggio_di_A = 5m&lt;br /&gt;
&lt;br /&gt;
raggio_di_B = ~ 0,01&lt;br /&gt;
&lt;br /&gt;
distanza_minima = 1,0 metri&lt;br /&gt;
&lt;br /&gt;
distanza_massima = 54,0 metri&lt;br /&gt;
&lt;br /&gt;
3 * (raggio_di_A + raggio_di_B) + distanza_massima = 15,03 metri&lt;br /&gt;
&lt;br /&gt;
15.03m è inferiore a 54.0m&lt;br /&gt;
&lt;br /&gt;
Così la massima_distanza_link = 15.03m&lt;br /&gt;
&lt;br /&gt;
==== Due prim molto grandi ====&lt;br /&gt;
Il diametro di una sfera bounding è la radice quadrata di x ^ 2 + y ^ 2 + z ^ 2&lt;br /&gt;
&lt;br /&gt;
Quindi, il diametro della sfera che contiene il cubo di dimensioni 10m x 10m x 10m è la radice quadrata di (100 + 100 + 100) = ~ 17.3m&lt;br /&gt;
&lt;br /&gt;
E il diametro di un 10m x 1m x 1m è radice quadrata (100 + 1 + 1) = ~ 10.1m&lt;br /&gt;
&lt;br /&gt;
(Il tipo di prim non importa per questo calcolo. Sono importanti soltanto le dimensioni.)&lt;br /&gt;
&lt;br /&gt;
Prendiamo il caso di due prim di dimensione 10m x 10m x 10m.&lt;br /&gt;
&lt;br /&gt;
raggio_di_A = 8.66m&lt;br /&gt;
&lt;br /&gt;
raggio_di_B = 8.66m&lt;br /&gt;
&lt;br /&gt;
distanza_minima = 1,0 metri&lt;br /&gt;
&lt;br /&gt;
distanza_massima = 54,0 metri&lt;br /&gt;
&lt;br /&gt;
3 * (raggio_di_A + raggio_di_B) + distanza_minima = 52.96m&lt;br /&gt;
&lt;br /&gt;
52.96m è inferiore a 54m&lt;br /&gt;
&lt;br /&gt;
Così la massima_distanza_link = 52.96m&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51575</id>
		<title>Havok4/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51575"/>
		<updated>2008-01-28T23:18:41Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
== Centro Informazioni sul nuovo motore fisico Havok4 in fase Beta Test ==&lt;br /&gt;
=== Introduzione ===&lt;br /&gt;
&amp;amp;Egrave; in corso in Second Life la fase di beta test di Havok4. Questa pagina fornisce informazioni sul progetto, aiuteranno tutti ad assicurarsi che Havok4 sia stato testato per bene prima che sia attivato su tutta la rete Second Life.&lt;br /&gt;
&lt;br /&gt;
Si prega di leggere la [[Havok4 Beta1 Release Notes/it|Havok4 Beta1 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
=== Cos&#039;&amp;amp;egrave; Havok? ===&lt;br /&gt;
Il mondo virtuale Second Life &amp;amp;egrave; composto di molte parti che contribuiscono a tenerla in funzione. Uno di queste &amp;amp;egrave; il motore che simula la Fisica. Un motore fisico &amp;amp;egrave; un componente software specializzato che fa tutti i calcoli del &amp;quot;mondo reale&amp;quot; per capire cosa fare quando:&lt;br /&gt;
* Qualcosa o qualcuno viene spinto&lt;br /&gt;
* Qualcosa o qualcuno si scontra con qualcos&#039;altro o qualcuno&lt;br /&gt;
* Qualcosa o qualcuno &amp;amp;egrave; in movimento e sta ruotando&lt;br /&gt;
* L&#039;attrito rallenta il movimento di qualcosa o qualcuno&lt;br /&gt;
&lt;br /&gt;
Havok &amp;amp;egrave; un motore fisico commerciale, e Second Life &amp;amp;egrave; stato costruito utilizzando Havok1. Con il quale ha funzionato per diversi anni.&lt;br /&gt;
&lt;br /&gt;
=== Come faccio a partecipare alla fase di test per il motore fisico Havok4? ===&lt;br /&gt;
Puoi partecipare al Beta Test di Havok4 con pochi, semplici passaggi:&lt;br /&gt;
# Leggi &amp;quot;[[What&#039;s Changed With Havok4]]&amp;quot; per capire quali differenza dovrebbero esserci nel nuovo motore fisico, e quali sarebbe meglio non avere, testandole sulla griglia Havok4 Beta Test grid.&lt;br /&gt;
# Leggi &amp;quot;[[Linkability_Rules|New Cfr Linkability Regole]]&amp;quot; per capire come funziona il linking tra prim in Havok4 (&amp;amp;egrave; molto migliorato e dovrebbe essere molto pi&amp;amp;ugrave; affidabile!)&lt;br /&gt;
# Fa un login nella Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/Issue Tracker]&amp;quot; per vedere come &amp;amp;egrave; facile esporre i problemi riscontrati durante il beta test&lt;br /&gt;
# [http://secondlife.com/community/preview.php Scaricare il file per installare la Beta Havok4 Viewer qui]&lt;br /&gt;
&lt;br /&gt;
=== Cosa testare? ===&lt;br /&gt;
Assicurarsi che tutti i tuoi oggetti funzionino nella grid Havok4, e prova tutto quello che pensi possa avere a che fare con la fisica... Ecco una breve lista, e un link a una pagina con un elenco più esauriente di idee relative alla fisica degli oggetti:&lt;br /&gt;
* Building, linking, unlinking&lt;br /&gt;
* i veicoli&lt;br /&gt;
* le armi&lt;br /&gt;
* gli &amp;quot;incantesimi&amp;quot;&lt;br /&gt;
* gli shields&lt;br /&gt;
* gli strumenti di costruzione&lt;br /&gt;
* il rezzing di grandi insiemi di prim&lt;br /&gt;
* prova a costruire oggetti semplici e complessi, prendendoli poi in inventario per rezzarli in posti diversi e orientandoti diversamente&lt;br /&gt;
* camminare, sedersi, volare, nuotare, e correre e tutti gli altri movimenti degli avatar funzionano come previsto?&lt;br /&gt;
* gli script funzionano come previsto?&lt;br /&gt;
* prova a creare nuovi script e modificarli&lt;br /&gt;
* i permessi funzionano correttamente?&lt;br /&gt;
* &amp;amp;egrave; possibile mandare in crash la sim facendo crashare il motore fisico? (Quelli di voi che sanno cosa significa ... &amp;quot;fatelo&amp;quot; e fate sapere come ...;)&lt;br /&gt;
&lt;br /&gt;
Ci sono [[Havok4_Beta_Test_Ideas|molte cose che puoi fare per testare Havok4]] (una lista lunghissima di cose utili da provare. Sei libero di sceglierne una ma ancora meglio se provi cose nuove tue!&lt;br /&gt;
&lt;br /&gt;
=== Come posso partecipare al test Havok4 ===&lt;br /&gt;
# Partecipa agli incontri &amp;quot;[[Regular Havok4 Office Hours In-World]]&amp;quot;&lt;br /&gt;
# Comunicaci tutto quello che scopri usando il Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
Segnala i bug trovati usando PROJECT &amp;quot;Second Life Service - SVC&amp;quot; e quando inserisci il bug scegliere aFFECTS VERSIONS &amp;quot;Havok4 Beta&amp;quot; and COMPONENTS &amp;quot;Physics&amp;quot; in questo modo troveremo subito le tue segnalazioni!&lt;br /&gt;
&lt;br /&gt;
=== Come sar&amp;amp;agrave; testato e rilasciato Havok4 ===&lt;br /&gt;
Questo progetto sostituisce un componente fondamentale di Second Life, ed essere certi che &amp;quot;tutto ci&amp;amp;ograve; che spinge, si scontra o ha inerzia&amp;quot; funzioni a dovere &amp;amp;egrave; un compito arduo. abbiamo gi&amp;amp;agrave; fatto un sacco di test interno, e corretto centinaia di bug. Ci saranno impegnati in un approccio graduale sia per accorgerci di molti problemi il prima possibile, sia per ridurre il rischio di problemi causati da Havok4 quando verr&amp;amp;agrave; rilasciato.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 1 - Test interno sulla griglia non pubblica (FATTO!) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Abbiamo gi&amp;amp;agrave; completato questa fase, e il personale interno ha svolto tutta una serie di lavori sui simulatori abilitati con Havok4. Le funzioni di base sono state controllate, come pure sono state controllati e risolti i noti crash dati dal motore fisico nel simulatore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 2 - Public Beta Test su Beta Grid &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Ci aspettiamo che la fase del beta test pubblico di Havok4 sia molto attiva, con molti partecipanti. abbiamo preparato una test grid, per permettere vari test relativi alla fisica. Il regioni di test comprendono:&lt;br /&gt;
* le [[Orientation Islands|Orientation Island]]&lt;br /&gt;
* le [[Welcome areas|Welcome area]]&lt;br /&gt;
* [[Lusk]]&lt;br /&gt;
* Diverse [[sandboxes]]&lt;br /&gt;
* le [[Combat sandboxes]]&lt;br /&gt;
* i [[Vehicle testing simulators|simulatori per il test di veicoli]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTA: Il Public Beta viewer sar&amp;amp;agrave; configurato per accedere alla beta grid, che sar&amp;amp;agrave; una copia di una porzione della main rete e del vostro account utente. Si pu&amp;amp;ograve; fare &amp;quot;tutto ci&amp;amp;ograve; che si desidera&amp;quot; su questa rete senza rischiare di danneggiare il tuo &amp;quot;vero account&amp;quot; sulla griglia principale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 3 - Havok4 su un piccolo gruppo di regioni selezionate ( &amp;quot;SIAMO QUI!&amp;quot;:) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
In questa fase verranno utilizzati le nuove funzionalit&amp;amp;agrave; di HetGrid per la distribuzione dei simulatori Havok4 su un piccolo numero di regioni della griglia principale. Questa continua ad essere una fase di test, e, per questa fase, i partecipanti devono ricordare che sono sulla griglia principale, lavorando con il tuo vero inventario (quindi attenzione, non rezzate oggetti non copiabili / non trasferibili per provare le sim Havok4 se non si &amp;amp;egrave; al corrente dei potenziali rischi)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 4 - Rollout parziale sulla Main Grid (50-100 regioni) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
A questo punto, avremo risolto le questioni in sospeso riscontrate durante il beta testing e durante la Fase 3 &amp;quot;la piccola distribuzione, in un angolo della griglia principale&amp;quot;, per distribuire Havok4 a un sottoinsieme della griglia principale.&lt;br /&gt;
&lt;br /&gt;
Dopo la raccolta di commenti e feedback, se tutto sembra andare bene, ma noi andremo avanti...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 5 - Rollout totale di Havok4 sulla Main Grid (distribuzione alle resto della rete) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Se tutto va a dovere a questo punto, distruibuiremo il motore Havok4 su tutto il resto della griglia principale, e avremo il nuovo motore Havok4 in funzione dappertutto in Second Life.&lt;br /&gt;
&lt;br /&gt;
=== Una nota storica: Perch&amp;amp;eacute; per far funzionare Havok c&#039;&amp;amp;egrave; voluto tanto tempo? ===&lt;br /&gt;
Alcuni di voi che girano da lungo tempo si sa che abbiamo cominciato a parlare della sostituzione di Havok1 molto tempo fa, che sembrava di aver abbandonato questo progetto e, infine, che tutto fosse finito nel silenzio. Dopo diverse false partenze, abbiamo deciso che sarebbe stato meglio smettere di parlare di questo lavoro, o di rendere pubblici gli impegni, fino a quando non fossimo molto più vicini alla meta, e noi crediamo che finalmente siamo giunti a questo punto.&lt;br /&gt;
&lt;br /&gt;
Per un po&#039; di tempo abbiamo lavorato per sostituire Havok1 con Havok2. Dopo aver lavorato su questo progetto, ci siamo resi conto che era davvero necessario rielaborare le interfacce che integrano Havok in Second Life. Ci siamo resi conto che avevamo bisogno di definire un livello di astrazione - uno strato di codice che rendesse più facile poter modificare e migrare il motore fisico, ridurre lo sforzo e per consentire una maggiore flessibilit&amp;amp;agrave; in futuro. a questo punto Havok4 &amp;amp;egrave; risultato la scelta più ragionevole piuttosto che basarsi sulla precedente release ... e per questo motivo abbiamo fissato come obiettivo l&#039;adozione di Havok4. Questo progetto &amp;amp;egrave; stato significativamente più grande di quanto noi potessimo prevedere, ma la buona notizia &amp;amp;egrave; che ora siamo qui, pronti per il beta testing, e pronti a risolvere gli ultimi problemi prima di portare Havok4 sulle sim della griglia principale!&lt;br /&gt;
&lt;br /&gt;
== Nuova esperienze che sono normali ==&lt;br /&gt;
&lt;br /&gt;
=== Eiezione e separazione degli oggetti che si compenetrano ===&lt;br /&gt;
Uno dei maggiori miglioramenti rispetto al precedente motore Havok &amp;amp;egrave; che Havok4 supporta la separazione degli oggetti che si compenetrano. Per esempio un cubo, che &amp;amp;egrave; conficcato nel terreno e viene trasformato in oggetto fisico cercher&amp;amp;agrave; di uscirne, fino a quando non si sar&amp;amp;agrave; separato dalla terra e da quel momento si pogger&amp;amp;agrave; sul terreno.&lt;br /&gt;
&lt;br /&gt;
Il motore precedente non gestiva gli oggetti compenetranti molto bene. andava in un loop per una elaborazione ricorsiva conosciuta come &amp;quot;Deep Think&amp;quot;, una condizione in cui il motore cercava di stabilire dove spostare gli oggetti per evitare la sovrapposizione, causando un gran uso di risorse da parte del simulatore che appariva reagire lentamente per altre richieste.&lt;br /&gt;
&lt;br /&gt;
Il nuovo motore separa gli oggetti che si sovrappongono in modo rapido e semplice. Gli oggetti sono trattati come molle compresse, in modo che maggiore &amp;amp;egrave; la interpenetrazione maggiore &amp;amp;egrave; la forza di espulsione sull&#039;oggetto. Il risolutore dell&#039;interpenetrazione tenta di obbedire ai vincoli di movimento per evitare di essere espulsi per esempio attraverso delle mura che racchiudono un oggetto, ma cercher&amp;amp;agrave; qualunque apertura o spazio disponibile dove dirigere l&#039;oggetto.&lt;br /&gt;
&lt;br /&gt;
Ecco un video di Google che mostra un esempio estremo di come il resolver della compenetrazione opera. Una pila di circa 200 dischi di grandi dimensioni spessi circa mezzo metro si sovrappongono in un pila di circa 10 metri di altezza, il tutto racchiuso all&#039;interno di un grande tubo cavo. Quando questo oggetto viene rezzato sul terreno e trasformato in fisico, i dischi vengono espulsi verso l&#039;alto e fuori verso la parte superiore del tubo, con alcuni dischi che raggiungono più di 300 metri di altezza per la forza repulsiva impressa dal risoluzione. Nessuna spinta viene applicata sui dischi via script o per push. Il movimento &amp;amp;egrave; dato esclusivamente dalla compenetrazione e dai dai calcoli del risolutore.&lt;br /&gt;
&lt;br /&gt;
Google Video: &#039;&#039;&#039;Second Life Havok 4 - Exploding Can of Disks&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
http://video.google.com/videoplay?docid=-2623683631644524154&lt;br /&gt;
&lt;br /&gt;
=== Lag del simulatore per enormi mucchi di oggetti impilati ===&lt;br /&gt;
Anche se si tratta di una nuovo e migliore motore fisico che non dovrebbe bloccarsi cos&amp;amp;igrave; frequentemente come il motore originale Havok-1, ci sono volte in cui anche il nuovo simulatore causa un grande lag quando sono presenti un gran numero oggetti fisici che si toccano fra loro.&lt;br /&gt;
&lt;br /&gt;
Questo ritardo non &amp;amp;egrave; un bug, e non &amp;amp;egrave; come la vecchia condizione chiamata &amp;quot;Deep Think&amp;quot; di Havok-1, ma &amp;amp;egrave; dovuto ad una limitazione intrinseca nel modo in cui i motori fisici lavorano. Questo problema colpiva anche Havok-1, ma non era cos&amp;amp;igrave; evidente, dal momento che spesso grandi cataste crashavano il simulatore prima che questa condizione potesse diventare evidente.&lt;br /&gt;
&lt;br /&gt;
Normalmente, quando oggetti fisici rallentano il simulatore oltre una certa soglia critica, per un periodo di tempo il motore mette in pausa le elaborazioni per la fisica dell&#039;oggetto, in modo da risparmiare tempo CPU per altri oggetti attivi.&lt;br /&gt;
&lt;br /&gt;
Per poter risolvere l&#039;elaborazione degli oggetti fisici, l&#039;oggetto deve essere in contatto con un oggetto di riferimento non in movimento. Una barra fisica si ferma dopo aver toccato il suolo.&lt;br /&gt;
&lt;br /&gt;
Ma per più oggetti fisici impilati l&#039;uno sull&#039;altro, &amp;amp;egrave; difficile che raggiungano la stabilit&amp;amp;agrave;, perch&amp;amp;eacute; uno o più oggetti in movimento possono toccare quelli che si stanno stabilizzando. Questo leggero movimento rimette in moto anche quegli oggetti che si erano fermati, creando come un onda che attraversa la pila di oggetti. Quest&#039;onda si trasmette costantemente attraverso la pila con il risultato che nessuno oggetto si assesti mai del tutto. Questa costante movimento e vibrazioni &amp;amp;egrave; simile al concetto fisico del moto browniano delle molecole di un gas.&lt;br /&gt;
&lt;br /&gt;
L&#039;esempio su Google Video del lag generato in un simulatore da 565 sfere fisiche poste in un contenitore:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=7316931483709158462&lt;br /&gt;
&lt;br /&gt;
Questo lag del motore non dipende dalle dimensioni degli oggetti coinvolti. Una raccolta di 500 oggetti molto piccoli impilati pu&amp;amp;ograve; causare lo stesso ritardo di 500 oggetti grandi accatastati.&lt;br /&gt;
&lt;br /&gt;
=== Migliaia di oggetti che non si toccano non causano lag ===&lt;br /&gt;
&lt;br /&gt;
Il simulatore di Havok-4 funziona a pieno ritmo, se non vi &amp;amp;egrave; abbastanza spazio tra oggetti fisici fa in modo da ridurre il pi&amp;amp;ugrave; possibile le collisioni ravvicinate tra loro.&lt;br /&gt;
&lt;br /&gt;
Ci possono essere migliaia di oggetti fisici in un simulatore creare alcun ritardo, a patto che gli oggetti si tocchino il meno possibile l&#039;uno con l&#039;altro.&lt;br /&gt;
&lt;br /&gt;
Il seguente video su google presenta 2000-3400 cubetti fisici in una sandbox, senza ritardo:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=-2779779276874540721&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51574</id>
		<title>Havok4/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51574"/>
		<updated>2008-01-28T23:14:56Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
== Centro Informazioni sul nuovo motore fisico Havok4 in fase Beta Test ==&lt;br /&gt;
=== Introduzione ===&lt;br /&gt;
&amp;amp;Egrave; in corso in Second Life la fase di beta test di Havok4. Questa pagina fornisce informazioni sul progetto, aiuteranno tutti ad assicurarsi che Havok4 sia stato testato per bene prima che sia attivato su tutta la rete Second Life.&lt;br /&gt;
&lt;br /&gt;
Si prega di leggere la [[Havok4 Beta1 Release Notes/it|Havok4 Beta1 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
=== Cos&#039;&amp;amp;egrave; Havok? ===&lt;br /&gt;
Il mondo virtuale Second Life &amp;amp;egrave; composto di molte parti che contribuiscono a tenerla in funzione. Uno di queste &amp;amp;egrave; il motore che simula la Fisica. Un motore fisico &amp;amp;egrave; un componente software specializzato che fa tutti i calcoli del &amp;quot;mondo reale&amp;quot; per capire cosa fare quando:&lt;br /&gt;
* Qualcosa o qualcuno viene spinto&lt;br /&gt;
* Qualcosa o qualcuno si scontra con qualcos&#039;altro o qualcuno&lt;br /&gt;
* Qualcosa o qualcuno &amp;amp;egrave; in movimento e sta ruotando&lt;br /&gt;
* L&#039;attrito rallenta il movimento di qualcosa o qualcuno&lt;br /&gt;
&lt;br /&gt;
Havok &amp;amp;egrave; un motore fisico commerciale, e Second Life &amp;amp;egrave; stato costruito utilizzando Havok1. Con il quale ha funzionato per diversi anni.&lt;br /&gt;
&lt;br /&gt;
=== Come faccio a partecipare alla fase di test per il motore fisico Havok4? ===&lt;br /&gt;
Puoi partecipare al Beta Test di Havok4 con pochi, semplici passaggi:&lt;br /&gt;
# Leggi &amp;quot;[[What&#039;s Changed With Havok4]]&amp;quot; per capire quali differenza dovrebbero esserci nel nuovo motore fisico, e quali sarebbe meglio non avere, testandole sulla griglia Havok4 Beta Test grid.&lt;br /&gt;
# Leggi &amp;quot;[[Linkability_Rules|New Cfr Linkability Regole]]&amp;quot; per capire come funziona il linking tra prim in Havok4 (&amp;amp;egrave; molto migliorato e dovrebbe essere molto pi&amp;amp;ugrave; affidabile!)&lt;br /&gt;
# Fa un login nella Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/Issue Tracker]&amp;quot; per vedere come &amp;amp;egrave; facile esporre i problemi riscontrati durante il beta test&lt;br /&gt;
# [http://secondlife.com/community/preview.php Scaricare il file per installare la Beta Havok4 Viewer qui]&lt;br /&gt;
&lt;br /&gt;
=== Cosa testare? ===&lt;br /&gt;
assicurarsi che tutti i tuoi oggetti funzionino nella grid Havok4, e prova tutto quello che pensi possa avere a che fare con la fisica... Ecco una breve lista, e un link a una pagina con un elenco più esauriente di idee relative alla fisica degli oggetti:&lt;br /&gt;
* Building, linking, unlinking&lt;br /&gt;
* i veicoli&lt;br /&gt;
* le armi&lt;br /&gt;
* gli &amp;quot;incantesimi&amp;quot;&lt;br /&gt;
* gli shields&lt;br /&gt;
* gli strumenti di costruzione&lt;br /&gt;
* il rezzing di grandi insiemi di prim&lt;br /&gt;
* prova a costruire oggetti semplici e complessi, prendendoli poi in inventario per rezzarli in posti diversi e orientandoti diversamente&lt;br /&gt;
* camminare, sedersi, volare, nuotare, e correre e tutti gli altri movimenti degli avatar funzionano come previsto?&lt;br /&gt;
* gli script funzionano come previsto?&lt;br /&gt;
* prova a creare nuovi script e modificarli&lt;br /&gt;
* i permessi funzionano correttamente?&lt;br /&gt;
* &amp;amp;egrave; possibile mandare in crash la sim facendo crashare il motore fisico? (Quelli di voi che sanno cosa significa ... &amp;quot;fatelo&amp;quot; e fate sapere come ...;)&lt;br /&gt;
&lt;br /&gt;
Ci sono [[Havok4_Beta_Test_Ideas|molte cose che puoi fare per testare Havok4]] (una lista lunghissima di cose utili da provare. Sei libero di sceglierne una ma ancora meglio se provi cose nuove tue!&lt;br /&gt;
&lt;br /&gt;
=== Come posso partecipare al test Havok4 ===&lt;br /&gt;
# Partecipa agli incontri &amp;quot;[[Regular Havok4 Office Hours In-World]]&amp;quot;&lt;br /&gt;
# Comunicaci tutto quello che scopri usando il Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
Segnala i bug trovati usando PROJECT &amp;quot;Second Life Service - SVC&amp;quot; e quando inserisci il bug scegliere aFFECTS VERSIONS &amp;quot;Havok4 Beta&amp;quot; and COMPONENTS &amp;quot;Physics&amp;quot; in questo modo troveremo subito le tue segnalazioni!&lt;br /&gt;
&lt;br /&gt;
=== Come sar&amp;amp;agrave; testato e rilasciato Havok4 ===&lt;br /&gt;
Questo progetto sostituisce un componente fondamentale di Second Life, ed essere certi che &amp;quot;tutto ci&amp;amp;ograve; che spinge, si scontra o ha inerzia&amp;quot; funzioni a dovere &amp;amp;egrave; un compito arduo. abbiamo gi&amp;amp;agrave; fatto un sacco di test interno, e corretto centinaia di bug. Ci saranno impegnati in un approccio graduale sia per accorgerci di molti problemi il prima possibile, sia per ridurre il rischio di problemi causati da Havok4 quando verr&amp;amp;agrave; rilasciato.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 1 - Test interno sulla griglia non pubblica (FaTTO!) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
abbiamo gi&amp;amp;agrave; completato questa fase, e il personale interno ha svolto tutta una serie di lavori sui simulatori abilitati con Havok4. Le funzioni di base sono state controllate, come pure sono state controllati e risolti i noti crash dati dal motore fisico nel simulatore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 2 - Public Beta Test su Beta Grid &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Ci aspettiamo che la fase del beta test pubblico di Havok4 sia molto attiva, con molti partecipanti. abbiamo preparato una test grid, per permettere vari test relativi alla fisica. Il regioni di test comprendono:&lt;br /&gt;
* le [[Orientation Islands|Orientation Island]]&lt;br /&gt;
* le [[Welcome areas|Welcome area]]&lt;br /&gt;
* [[Lusk]]&lt;br /&gt;
* Diverse [[sandboxes]]&lt;br /&gt;
* le [[Combat sandboxes]]&lt;br /&gt;
* i [[Vehicle testing simulators|simulatori per il test di veicoli]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTA: Il Public Beta viewer sar&amp;amp;agrave; configurato per accedere alla beta grid, che sar&amp;amp;agrave; una copia di una porzione della main rete e del vostro account utente. Si pu&amp;amp;ograve; fare &amp;quot;tutto ci&amp;amp;ograve; che si desidera&amp;quot; su questa rete senza rischiare di danneggiare il tuo &amp;quot;vero account&amp;quot; sulla griglia principale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 3 - Havok4 su un piccolo gruppo di regioni selezionate ( &amp;quot;SIaMO QUI!&amp;quot;:) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
In questa fase verranno utilizzati le nuove funzionalit&amp;amp;agrave; di HetGrid per la distribuzione dei simulatori Havok4 su un piccolo numero di regioni della griglia principale. Questa continua ad essere una fase di test, e, per questa fase, i partecipanti devono ricordare che sono sulla griglia principale, lavorando con il tuo vero inventario (quindi attenzione, non rezzate oggetti non copiabili / non trasferibili per provare le sim Havok4 se non si &amp;amp;egrave; al corrente dei potenziali rischi)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 4 - Rollout parziale sulla Main Grid (50-100 regioni) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
a questo punto, avremo risolto le questioni in sospeso riscontrate durante il beta testing e durante la Fase 3 &amp;quot;la piccola distribuzione, in un angolo della griglia principale&amp;quot;, per distribuire Havok4 a un sottoinsieme della griglia principale.&lt;br /&gt;
&lt;br /&gt;
Dopo la raccolta di commenti e feedback, se tutto sembra andare bene, ma noi andremo avanti...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 5 - Rollout totale di Havok4 sulla Main Grid (distribuzione alle resto della rete) &amp;lt;/b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Se tutto va a dovere a questo punto, distruibuiremo il motore Havok4 su tutto il resto della griglia principale, e avremo il nuovo motore Havok4 in funzione dappertutto in Second Life.&lt;br /&gt;
&lt;br /&gt;
=== Una nota storica: Perch&amp;amp;eacute; per far funzionare Havok ci vuole tanto tempo? ===&lt;br /&gt;
alcuni di voi che girano da lungo tempo si sa che abbiamo cominciato a parlare della sostituzione di Havok1 molto tempo fa, che sembrava di aver abbandonato questo progetto e, infine, che tutto fosse finito nel silenzio. Dopo diverse false partenze, abbiamo deciso che sarebbe stato meglio smettere di parlare di questo lavoro, o di rendere pubblici gli impegni, fino a quando non fossimo molto più vicini alla meta, e noi crediamo che finalmente siamo giunti a questo punto.&lt;br /&gt;
&lt;br /&gt;
Per un po&#039; di tempo abbiamo lavorato per sostituire Havok1 con Havok2. Dopo aver lavorato su questo progetto, ci siamo resi conto che era davvero necessario rielaborare le interfacce che integrano Havok in Second Life. Ci siamo resi conto che avevamo bisogno di definire un livello di astrazione - uno strato di codice che rendesse più facile poter modificare e migrare il motore fisico, ridurre lo sforzo e per consentire una maggiore flessibilit&amp;amp;agrave; in futuro. a questo punto Havok4 &amp;amp;egrave; risultato la scelta più ragionevole piuttosto che basarsi sulla precedente release ... e per questo motivo abbiamo fissato come obiettivo l&#039;adozione di Havok4. Questo progetto &amp;amp;egrave; stato significativamente più grande di quanto noi potessimo prevedere, ma la buona notizia &amp;amp;egrave; che ora siamo qui, pronti per il beta testing, e pronti a risolvere gli ultimi problemi prima di portare Havok4 sulle sim della griglia principale!&lt;br /&gt;
&lt;br /&gt;
== Nuova esperienze che sono normali ==&lt;br /&gt;
&lt;br /&gt;
=== Eiezione e separazione degli oggetti che si compenetrano ===&lt;br /&gt;
Uno dei maggiori miglioramenti rispetto al precedente motore Havok &amp;amp;egrave; che Havok4 supporta la separazione degli oggetti che si compenetrano. Per esempio un cubo, che &amp;amp;egrave; conficcato nel terreno e viene trasformato in oggetto fisico cercher&amp;amp;agrave; di uscirne, fino a quando non si sar&amp;amp;agrave; separato dalla terra e da quel momento si pogger&amp;amp;agrave; sul terreno.&lt;br /&gt;
&lt;br /&gt;
Il motore precedente non gestiva gli oggetti compenetranti molto bene. andava in un loop per una elaborazione ricorsiva conosciuta come &amp;quot;Deep Think&amp;quot;, una condizione in cui il motore cercava di stabilire dove spostare gli oggetti per evitare la sovrapposizione, causando un gran uso di risorse da parte del simulatore che appariva reagire lentamente per altre richieste.&lt;br /&gt;
&lt;br /&gt;
Il nuovo motore separa gli oggetti che si sovrappongono in modo rapido e semplice. Gli oggetti sono trattati come molle compresse, in modo che maggiore &amp;amp;egrave; la interpenetrazione maggiore &amp;amp;egrave; la forza di espulsione sull&#039;oggetto. Il risolutore dell&#039;interpenetrazione tenta di obbedire ai vincoli di movimento per evitare di essere espulsi per esempio attraverso delle mura che racchiudono un oggetto, ma cercher&amp;amp;agrave; qualunque apertura o spazio disponibile dove dirigere l&#039;oggetto.&lt;br /&gt;
&lt;br /&gt;
Ecco un video di Google che mostra un esempio estremo di come il resolver della compenetrazione opera. Una pila di circa 200 dischi di grandi dimensioni spessi circa mezzo metro si sovrappongono in un pila di circa 10 metri di altezza, il tutto racchiuso all&#039;interno di un grande tubo cavo. Quando questo oggetto viene rezzato sul terreno e trasformato in fisico, i dischi vengono espulsi verso l&#039;alto e fuori verso la parte superiore del tubo, con alcuni dischi che raggiungono più di 300 metri di altezza per la forza repulsiva impressa dal risoluzione. Nessuna spinta viene applicata sui dischi via script o per push. Il movimento &amp;amp;egrave; dato esclusivamente dalla compenetrazione e dai dai calcoli del risolutore.&lt;br /&gt;
&lt;br /&gt;
Google Video: &#039;&#039;&#039;Second Life Havok 4 - Exploding Can of Disks&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
http://video.google.com/videoplay?docid=-2623683631644524154&lt;br /&gt;
&lt;br /&gt;
=== Lag del simulatore per enormi mucchi di oggetti impilati ===&lt;br /&gt;
anche se si tratta di una nuovo e migliore motore fisico che non dovrebbe bloccarsi cos&amp;amp;igrave; frequentemente come il motore originale Havok-1, ci sono volte in cui anche il nuovo simulatore causa un grande lag quando sono presenti un gran numero oggetti fisici che si toccano fra loro.&lt;br /&gt;
&lt;br /&gt;
Questo ritardo non &amp;amp;egrave; un bug, e non &amp;amp;egrave; come la vecchia condizione chiamata &amp;quot;Deep Think&amp;quot; di Havok-1, ma &amp;amp;egrave; dovuto ad una limitazione intrinseca nel modo in cui i motori fisici lavorano. Questo problema colpiva anche Havok-1, ma non era cos&amp;amp;igrave; evidente, dal momento che spesso grandi cataste crashavano il simulatore prima che questa condizione potesse diventare evidente.&lt;br /&gt;
&lt;br /&gt;
Normalmente, quando oggetti fisici rallentano il simulatore oltre una certa soglia critica, per un periodo di tempo il motore mette in pausa le elaborazioni per la fisica dell&#039;oggetto, in modo da risparmiare tempo CPU per altri oggetti attivi.&lt;br /&gt;
&lt;br /&gt;
Per poter risolvere l&#039;elaborazione degli oggetti fisici, l&#039;oggetto deve essere in contatto con un oggetto di riferimento non in movimento. Una barra fisica si ferma dopo aver toccato il suolo.&lt;br /&gt;
&lt;br /&gt;
Ma per più oggetti fisici impilati l&#039;uno sull&#039;altro, &amp;amp;egrave; difficile che raggiungano la stabilit&amp;amp;agrave;, perch&amp;amp;eacute; uno o più oggetti in movimento possono toccare quelli che si stanno stabilizzando. Questo leggero movimento rimette in moto anche quegli oggetti che si erano fermati, creando come un onda che attraversa la pila di oggetti. Quest&#039;onda si trasmette costantemente attraverso la pila con il risultato che nessuno oggetto si assesti mai del tutto. Questa costante movimento e vibrazioni &amp;amp;egrave; simile al concetto fisico del moto browniano delle molecole di un gas.&lt;br /&gt;
&lt;br /&gt;
L&#039;esempio su Google Video del lag generato in un simulatore da 565 sfere fisiche poste in un contenitore:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=7316931483709158462&lt;br /&gt;
&lt;br /&gt;
Questo lag del motore non dipende dalle dimensioni degli oggetti coinvolti. Una raccolta di 500 oggetti molto piccoli impilati pu&amp;amp;ograve; causare lo stesso ritardo di 500 oggetti grandi accatastati.&lt;br /&gt;
&lt;br /&gt;
=== Migliaia di oggetti che non si toccano non causano lag ===&lt;br /&gt;
&lt;br /&gt;
Il simulatore di Havok-4 funziona a pieno ritmo, se non vi &amp;amp;egrave; abbastanza spazio tra oggetti fisici fa in modo da ridurre il pi&amp;amp;ugrave; possibile le collisioni ravvicinate tra loro.&lt;br /&gt;
&lt;br /&gt;
Ci possono essere migliaia di oggetti fisici in un simulatore creare alcun ritardo, a patto che gli oggetti si tocchino il meno possibile l&#039;uno con l&#039;altro.&lt;br /&gt;
&lt;br /&gt;
Il seguente video su google presenta 2000-3400 cubetti fisici in una sandbox, senza ritardo:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=-2779779276874540721&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51572</id>
		<title>Havok4/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51572"/>
		<updated>2008-01-28T23:13:10Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: multi lang template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
== Centro Informazioni sul nuovo motore fisico Havok4 in fase Beta Test ==&lt;br /&gt;
=== Introduzione ===&lt;br /&gt;
&amp;amp;Egrave; in corso in Second Life la fase di beta test di Havok4. Questa pagina fornisce informazioni sul progetto, aiuteranno tutti ad assicurarsi che Havok4 sia stato testato per bene prima che sia attivato su tutta la rete Second Life.&lt;br /&gt;
&lt;br /&gt;
Si prega di leggere la [[Havok4 Beta1 Release Notes/it|Havok4 Beta1 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
=== Cos&#039;&amp;amp;egrave; Havok? ===&lt;br /&gt;
Il mondo virtuale Second Life &amp;amp;egrave; composto di molte parti che contribuiscono a tenerla in funzione. Uno di queste &amp;amp;egrave; il motore che simula la Fisica. Un motore fisico &amp;amp;egrave; un componente software specializzato che fa tutti i calcoli del &amp;quot;mondo reale&amp;quot; per capire cosa fare quando:&lt;br /&gt;
* Qualcosa o qualcuno viene spinto&lt;br /&gt;
* Qualcosa o qualcuno si scontra con qualcos&#039;altro o qualcuno&lt;br /&gt;
* Qualcosa o qualcuno &amp;amp;egrave; in movimento e sta ruotando&lt;br /&gt;
* L&#039;attrito rallenta il movimento di qualcosa o qualcuno&lt;br /&gt;
&lt;br /&gt;
Havok &amp;amp;egrave; un motore fisico commerciale, e Second Life &amp;amp;egrave; stato costruito utilizzando Havok1. Con il quale ha funzionato per diversi anni.&lt;br /&gt;
&lt;br /&gt;
=== Come faccio a partecipare alla fase di test per il motore fisico Havok4? ===&lt;br /&gt;
Puoi partecipare al Beta Test di Havok4 con pochi, semplici passaggi:&lt;br /&gt;
# Leggi &amp;quot;[[What&#039;s Changed Con Havok4]]&amp;quot; per capire quali differenza dovrebbero esserci nel nuovo motore fisico, e quali sarebbe meglio non avere, testandole sulla griglia Havok4 Beta Test grid.&lt;br /&gt;
# Leggi &amp;quot;[[Linkability_Rules | New Cfr Linkability Regole]]&amp;quot; per capire come funziona il linking tra prim in Havok4 (&amp;amp;egrave; molto migliorato e dovrebbe essere molto pi&amp;amp;ugrave; affidabile!)&lt;br /&gt;
# Fa un login nella Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/Issue Tracker]&amp;quot; per vedere come &amp;amp;egrave; facile esporre i problemi riscontrati durante il beta test&lt;br /&gt;
# [http://secondlife.com/community/preview.php Scaricare il file per installare la Beta Havok4 Viewer qui]&lt;br /&gt;
&lt;br /&gt;
=== Cosa testare? ===&lt;br /&gt;
assicurarsi che tutti i tuoi oggetti funzionino nella grid Havok4, e prova tutto quello che pensi possa avere a che fare con la fisica... Ecco una breve lista, e un link a una pagina con un elenco più esauriente di idee relative alla fisica degli oggetti:&lt;br /&gt;
* Building, linking, unlinking&lt;br /&gt;
* i veicoli&lt;br /&gt;
* le armi&lt;br /&gt;
* gli &amp;quot;incantesimi&amp;quot;&lt;br /&gt;
* gli shields&lt;br /&gt;
* gli strumenti di costruzione&lt;br /&gt;
* il rezzing di grandi insiemi di prim&lt;br /&gt;
* prova a costruire oggetti semplici e complessi, prendendoli poi in inventario per rezzarli in posti diversi e orientandoti diversamente&lt;br /&gt;
* camminare, sedersi, volare, nuotare, e correre e tutti gli altri movimenti degli avatar funzionano come previsto?&lt;br /&gt;
* gli script funzionano come previsto?&lt;br /&gt;
* prova a creare nuovi script e modificarli&lt;br /&gt;
* i permessi funzionano correttamente?&lt;br /&gt;
* &amp;amp;egrave; possibile mandare in crash la sim facendo crashare il motore fisico? (Quelli di voi che sanno cosa significa ... &amp;quot;fatelo&amp;quot; e fate sapere come ...;)&lt;br /&gt;
&lt;br /&gt;
Ci sono [[Havok4_Beta_Test_Ideas|molte cose che puoi fare per testare Havok4]] (una lista lunghissima di cose utili da provare. Sei libero di sceglierne una ma ancora meglio se provi cose nuove tue!&lt;br /&gt;
&lt;br /&gt;
=== Come posso partecipare al test Havok4 ===&lt;br /&gt;
# Partecipa agli incontri &amp;quot;[[Regular Havok4 Office Hours In-World]]&amp;quot;&lt;br /&gt;
# Comunicaci tutto quello che scopri usando il Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
Segnala i bug trovati usando PROJECT &amp;quot;Second Life Service - SVC&amp;quot; e quando inserisci il bug scegliere aFFECTS VERSIONS &amp;quot;Havok4 Beta&amp;quot; and COMPONENTS &amp;quot;Physics&amp;quot; in questo modo troveremo subito le tue segnalazioni!&lt;br /&gt;
&lt;br /&gt;
=== Come sar&amp;amp;agrave; testato e rilasciato Havok4 ===&lt;br /&gt;
Questo progetto sostituisce un componente fondamentale di Second Life, ed essere certi che &amp;quot;tutto ci&amp;amp;ograve; che spinge, si scontra o ha inerzia&amp;quot; funzioni a dovere &amp;amp;egrave; un compito arduo. abbiamo gi&amp;amp;agrave; fatto un sacco di test interno, e corretto centinaia di bug. Ci saranno impegnati in un approccio graduale sia per accorgerci di molti problemi il prima possibile, sia per ridurre il rischio di problemi causati da Havok4 quando verr&amp;amp;agrave; rilasciato.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 1 - Test interno sulla griglia non pubblica (FaTTO!) &amp;lt;/ B&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
abbiamo gi&amp;amp;agrave; completato questa fase, e il personale interno ha svolto tutta una serie di lavori sui simulatori abilitati con Havok4. Le funzioni di base sono state controllate, come pure sono state controllati e risolti i noti crash dati dal motore fisico nel simulatore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 2 - Public Beta Test su Beta Grid &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Ci aspettiamo che la fase del beta test pubblico di Havok4 sia molto attiva, con molti partecipanti. abbiamo preparato una test grid, per permettere vari test relativi alla fisica. Il regioni di test comprendono:&lt;br /&gt;
* le [[Orientation Islands|Orientation Island]]&lt;br /&gt;
* le [[Welcome areas|Welcome area]]&lt;br /&gt;
* [[Lusk]]&lt;br /&gt;
* Diverse [[sandboxes]]&lt;br /&gt;
* le [[Combat sandboxes]]&lt;br /&gt;
* i [[Vehicle testing simulators|simulatori per il test di veicoli]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTa: Il Public Beta viewer sar&amp;amp;agrave; configurato per accedere alla beta grid, che sar&amp;amp;agrave; una copia di una porzione della main rete e del vostro account utente. Si pu&amp;amp;ograve; fare &amp;quot;tutto ci&amp;amp;ograve; che si desidera&amp;quot; su questa rete senza rischiare di danneggiare il tuo &amp;quot;vero account&amp;quot; sulla griglia principale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 3 - Havok4 su un piccolo gruppo di regioni selezionate ( &amp;quot;SIaMO QUI!&amp;quot;:) &amp;lt;/ B&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
In questa fase verranno utilizzati le nuove funzionalit&amp;amp;agrave; di HetGrid per la distribuzione dei simulatori Havok4 su un piccolo numero di regioni della griglia principale. Questa continua ad essere una fase di test, e, per questa fase, i partecipanti devono ricordare che sono sulla griglia principale, lavorando con il tuo vero inventario (quindi attenzione, non rezzate oggetti non copiabili / non trasferibili per provare le sim Havok4 se non si &amp;amp;egrave; al corrente dei potenziali rischi)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 4 - Rollout parziale sulla Main Grid (50-100 regioni) &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
a questo punto, avremo risolto le questioni in sospeso riscontrate durante il beta testing e durante la Fase 3 &amp;quot;la piccola distribuzione, in un angolo della griglia principale&amp;quot;, per distribuire Havok4 a un sottoinsieme della griglia principale.&lt;br /&gt;
&lt;br /&gt;
Dopo la raccolta di commenti e feedback, se tutto sembra andare bene, ma noi andremo avanti...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 5 - Rollout totale di Havok4 sulla Main Grid (distribuzione alle resto della rete) &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Se tutto va a dovere a questo punto, distruibuiremo il motore Havok4 su tutto il resto della griglia principale, e avremo il nuovo motore Havok4 in funzione dappertutto in Second Life.&lt;br /&gt;
&lt;br /&gt;
=== Una nota storica: Perch&amp;amp;eacute; per far funzionare Havok ci vuole tanto tempo? ===&lt;br /&gt;
alcuni di voi che girano da lungo tempo si sa che abbiamo cominciato a parlare della sostituzione di Havok1 molto tempo fa, che sembrava di aver abbandonato questo progetto e, infine, che tutto fosse finito nel silenzio. Dopo diverse false partenze, abbiamo deciso che sarebbe stato meglio smettere di parlare di questo lavoro, o di rendere pubblici gli impegni, fino a quando non fossimo molto più vicini alla meta, e noi crediamo che finalmente siamo giunti a questo punto.&lt;br /&gt;
&lt;br /&gt;
Per un po&#039; di tempo abbiamo lavorato per sostituire Havok1 con Havok2. Dopo aver lavorato su questo progetto, ci siamo resi conto che era davvero necessario rielaborare le interfacce che integrano Havok in Second Life. Ci siamo resi conto che avevamo bisogno di definire un livello di astrazione - uno strato di codice che rendesse più facile poter modificare e migrare il motore fisico, ridurre lo sforzo e per consentire una maggiore flessibilit&amp;amp;agrave; in futuro. a questo punto Havok4 &amp;amp;egrave; risultato la scelta più ragionevole piuttosto che basarsi sulla precedente release ... e per questo motivo abbiamo fissato come obiettivo l&#039;adozione di Havok4. Questo progetto &amp;amp;egrave; stato significativamente più grande di quanto noi potessimo prevedere, ma la buona notizia &amp;amp;egrave; che ora siamo qui, pronti per il beta testing, e pronti a risolvere gli ultimi problemi prima di portare Havok4 sulle sim della griglia principale!&lt;br /&gt;
&lt;br /&gt;
== Nuova esperienze che sono normali ==&lt;br /&gt;
&lt;br /&gt;
=== Eiezione e separazione degli oggetti che si compenetrano ===&lt;br /&gt;
Uno dei maggiori miglioramenti rispetto al precedente motore Havok &amp;amp;egrave; che Havok4 supporta la separazione degli oggetti che si compenetrano. Per esempio un cubo, che &amp;amp;egrave; conficcato nel terreno e viene trasformato in oggetto fisico cercher&amp;amp;agrave; di uscirne, fino a quando non si sar&amp;amp;agrave; separato dalla terra e da quel momento si pogger&amp;amp;agrave; sul terreno.&lt;br /&gt;
&lt;br /&gt;
Il motore precedente non gestiva gli oggetti compenetranti molto bene. andava in un loop per una elaborazione ricorsiva conosciuta come &amp;quot;Deep Think&amp;quot;, una condizione in cui il motore cercava di stabilire dove spostare gli oggetti per evitare la sovrapposizione, causando un gran uso di risorse da parte del simulatore che appariva reagire lentamente per altre richieste.&lt;br /&gt;
&lt;br /&gt;
Il nuovo motore separa gli oggetti che si sovrappongono in modo rapido e semplice. Gli oggetti sono trattati come molle compresse, in modo che maggiore &amp;amp;egrave; la interpenetrazione maggiore &amp;amp;egrave; la forza di espulsione sull&#039;oggetto. Il risolutore dell&#039;interpenetrazione tenta di obbedire ai vincoli di movimento per evitare di essere espulsi per esempio attraverso delle mura che racchiudono un oggetto, ma cercher&amp;amp;agrave; qualunque apertura o spazio disponibile dove dirigere l&#039;oggetto.&lt;br /&gt;
&lt;br /&gt;
Ecco un video di Google che mostra un esempio estremo di come il resolver della compenetrazione opera. Una pila di circa 200 dischi di grandi dimensioni spessi circa mezzo metro si sovrappongono in un pila di circa 10 metri di altezza, il tutto racchiuso all&#039;interno di un grande tubo cavo. Quando questo oggetto viene rezzato sul terreno e trasformato in fisico, i dischi vengono espulsi verso l&#039;alto e fuori verso la parte superiore del tubo, con alcuni dischi che raggiungono più di 300 metri di altezza per la forza repulsiva impressa dal risoluzione. Nessuna spinta viene applicata sui dischi via script o per push. Il movimento &amp;amp;egrave; dato esclusivamente dalla compenetrazione e dai dai calcoli del risolutore.&lt;br /&gt;
&lt;br /&gt;
Google Video: &#039;&#039;&#039;Second Life Havok 4 - Exploding Can of Disks&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
http://video.google.com/videoplay?docid=-2623683631644524154&lt;br /&gt;
&lt;br /&gt;
=== Lag del simulatore per enormi mucchi di oggetti impilati ===&lt;br /&gt;
anche se si tratta di una nuovo e migliore motore fisico che non dovrebbe bloccarsi cos&amp;amp;igrave; frequentemente come il motore originale Havok-1, ci sono volte in cui anche il nuovo simulatore causa un grande lag quando sono presenti un gran numero oggetti fisici che si toccano fra loro.&lt;br /&gt;
&lt;br /&gt;
Questo ritardo non &amp;amp;egrave; un bug, e non &amp;amp;egrave; come la vecchia condizione chiamata &amp;quot;Deep Think&amp;quot; di Havok-1, ma &amp;amp;egrave; dovuto ad una limitazione intrinseca nel modo in cui i motori fisici lavorano. Questo problema colpiva anche Havok-1, ma non era cos&amp;amp;igrave; evidente, dal momento che spesso grandi cataste crashavano il simulatore prima che questa condizione potesse diventare evidente.&lt;br /&gt;
&lt;br /&gt;
Normalmente, quando oggetti fisici rallentano il simulatore oltre una certa soglia critica, per un periodo di tempo il motore mette in pausa le elaborazioni per la fisica dell&#039;oggetto, in modo da risparmiare tempo CPU per altri oggetti attivi.&lt;br /&gt;
&lt;br /&gt;
Per poter risolvere l&#039;elaborazione degli oggetti fisici, l&#039;oggetto deve essere in contatto con un oggetto di riferimento non in movimento. Una barra fisica si ferma dopo aver toccato il suolo.&lt;br /&gt;
&lt;br /&gt;
Ma per più oggetti fisici impilati l&#039;uno sull&#039;altro, &amp;amp;egrave; difficile che raggiungano la stabilit&amp;amp;agrave;, perch&amp;amp;eacute; uno o più oggetti in movimento possono toccare quelli che si stanno stabilizzando. Questo leggero movimento rimette in moto anche quegli oggetti che si erano fermati, creando come un onda che attraversa la pila di oggetti. Quest&#039;onda si trasmette costantemente attraverso la pila con il risultato che nessuno oggetto si assesti mai del tutto. Questa costante movimento e vibrazioni &amp;amp;egrave; simile al concetto fisico del moto browniano delle molecole di un gas.&lt;br /&gt;
&lt;br /&gt;
L&#039;esempio su Google Video del lag generato in un simulatore da 565 sfere fisiche poste in un contenitore:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=7316931483709158462&lt;br /&gt;
&lt;br /&gt;
Questo lag del motore non dipende dalle dimensioni degli oggetti coinvolti. Una raccolta di 500 oggetti molto piccoli impilati pu&amp;amp;ograve; causare lo stesso ritardo di 500 oggetti grandi accatastati.&lt;br /&gt;
&lt;br /&gt;
=== Migliaia di oggetti che non si toccano non causano lag ===&lt;br /&gt;
&lt;br /&gt;
Il simulatore di Havok-4 funziona a pieno ritmo, se non vi &amp;amp;egrave; abbastanza spazio tra oggetti fisici fa in modo da ridurre il pi&amp;amp;ugrave; possibile le collisioni ravvicinate tra loro.&lt;br /&gt;
&lt;br /&gt;
Ci possono essere migliaia di oggetti fisici in un simulatore creare alcun ritardo, a patto che gli oggetti si tocchino il meno possibile l&#039;uno con l&#039;altro.&lt;br /&gt;
&lt;br /&gt;
Il seguente video su google presenta 2000-3400 cubetti fisici in una sandbox, senza ritardo:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=-2779779276874540721&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51571</id>
		<title>Havok4/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51571"/>
		<updated>2008-01-28T23:12:25Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: multi lang template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{Multi-lang}}}&lt;br /&gt;
== Centro Informazioni sul nuovo motore fisico Havok4 in fase Beta Test ==&lt;br /&gt;
=== Introduzione ===&lt;br /&gt;
&amp;amp;Egrave; in corso in Second Life la fase di beta test di Havok4. Questa pagina fornisce informazioni sul progetto, aiuteranno tutti ad assicurarsi che Havok4 sia stato testato per bene prima che sia attivato su tutta la rete Second Life.&lt;br /&gt;
&lt;br /&gt;
Si prega di leggere la [[Havok4 Beta1 Release Notes/it|Havok4 Beta1 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
=== Cos&#039;&amp;amp;egrave; Havok? ===&lt;br /&gt;
Il mondo virtuale Second Life &amp;amp;egrave; composto di molte parti che contribuiscono a tenerla in funzione. Uno di queste &amp;amp;egrave; il motore che simula la Fisica. Un motore fisico &amp;amp;egrave; un componente software specializzato che fa tutti i calcoli del &amp;quot;mondo reale&amp;quot; per capire cosa fare quando:&lt;br /&gt;
* Qualcosa o qualcuno viene spinto&lt;br /&gt;
* Qualcosa o qualcuno si scontra con qualcos&#039;altro o qualcuno&lt;br /&gt;
* Qualcosa o qualcuno &amp;amp;egrave; in movimento e sta ruotando&lt;br /&gt;
* L&#039;attrito rallenta il movimento di qualcosa o qualcuno&lt;br /&gt;
&lt;br /&gt;
Havok &amp;amp;egrave; un motore fisico commerciale, e Second Life &amp;amp;egrave; stato costruito utilizzando Havok1. Con il quale ha funzionato per diversi anni.&lt;br /&gt;
&lt;br /&gt;
=== Come faccio a partecipare alla fase di test per il motore fisico Havok4? ===&lt;br /&gt;
Puoi partecipare al Beta Test di Havok4 con pochi, semplici passaggi:&lt;br /&gt;
# Leggi &amp;quot;[[What&#039;s Changed Con Havok4]]&amp;quot; per capire quali differenza dovrebbero esserci nel nuovo motore fisico, e quali sarebbe meglio non avere, testandole sulla griglia Havok4 Beta Test grid.&lt;br /&gt;
# Leggi &amp;quot;[[Linkability_Rules | New Cfr Linkability Regole]]&amp;quot; per capire come funziona il linking tra prim in Havok4 (&amp;amp;egrave; molto migliorato e dovrebbe essere molto più affidabile!)&lt;br /&gt;
# Fa un login nella Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/Issue Tracker]&amp;quot; per vedere come &amp;amp;egrave; facile esporre i problemi riscontrati durante il beta test&lt;br /&gt;
# [http://secondlife.com/community/preview.php Scaricare il file per installare la Beta Havok4 Viewer qui]&lt;br /&gt;
&lt;br /&gt;
=== Cosa testare? ===&lt;br /&gt;
assicurarsi che tutti i tuoi oggetti funzionino nella grid Havok4, e prova tutto quello che pensi possa avere a che fare con la fisica... Ecco una breve lista, e un link a una pagina con un elenco più esauriente di idee relative alla fisica degli oggetti:&lt;br /&gt;
* Building, linking, unlinking&lt;br /&gt;
* i veicoli&lt;br /&gt;
* le armi&lt;br /&gt;
* gli &amp;quot;incantesimi&amp;quot;&lt;br /&gt;
* gli shields&lt;br /&gt;
* gli strumenti di costruzione&lt;br /&gt;
* il rezzing di grandi insiemi di prim&lt;br /&gt;
* prova a costruire oggetti semplici e complessi, prendendoli poi in inventario per rezzarli in posti diversi e orientandoti diversamente&lt;br /&gt;
* camminare, sedersi, volare, nuotare, e correre e tutti gli altri movimenti degli avatar funzionano come previsto?&lt;br /&gt;
* gli script funzionano come previsto?&lt;br /&gt;
* prova a creare nuovi script e modificarli&lt;br /&gt;
* i permessi funzionano correttamente?&lt;br /&gt;
* &amp;amp;egrave; possibile mandare in crash la sim facendo crashare il motore fisico? (Quelli di voi che sanno cosa significa ... &amp;quot;fatelo&amp;quot; e fate sapere come ...;)&lt;br /&gt;
&lt;br /&gt;
Ci sono [[Havok4_Beta_Test_Ideas|molte cose che puoi fare per testare Havok4]] (una lista lunghissima di cose utili da provare. Sei libero di sceglierne una ma ancora meglio se provi cose nuove tue!&lt;br /&gt;
&lt;br /&gt;
=== Come posso partecipare al test Havok4 ===&lt;br /&gt;
# Partecipa agli incontri &amp;quot;[[Regular Havok4 Office Hours In-World]]&amp;quot;&lt;br /&gt;
# Comunicaci tutto quello che scopri usando il Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
Segnala i bug trovati usando PROJECT &amp;quot;Second Life Service - SVC&amp;quot; e quando inserisci il bug scegliere aFFECTS VERSIONS &amp;quot;Havok4 Beta&amp;quot; and COMPONENTS &amp;quot;Physics&amp;quot; in questo modo troveremo subito le tue segnalazioni!&lt;br /&gt;
&lt;br /&gt;
=== Come sar&amp;amp;agrave; testato e rilasciato Havok4 ===&lt;br /&gt;
Questo progetto sostituisce un componente fondamentale di Second Life, ed essere certi che &amp;quot;tutto ci&amp;amp;ograve; che spinge, si scontra o ha inerzia&amp;quot; funzioni a dovere &amp;amp;egrave; un compito arduo. abbiamo gi&amp;amp;agrave; fatto un sacco di test interno, e corretto centinaia di bug. Ci saranno impegnati in un approccio graduale sia per accorgerci di molti problemi il prima possibile, sia per ridurre il rischio di problemi causati da Havok4 quando verr&amp;amp;agrave; rilasciato.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 1 - Test interno sulla griglia non pubblica (FaTTO!) &amp;lt;/ B&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
abbiamo gi&amp;amp;agrave; completato questa fase, e il personale interno ha svolto tutta una serie di lavori sui simulatori abilitati con Havok4. Le funzioni di base sono state controllate, come pure sono state controllati e risolti i noti crash dati dal motore fisico nel simulatore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 2 - Public Beta Test su Beta Grid &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Ci aspettiamo che la fase del beta test pubblico di Havok4 sia molto attiva, con molti partecipanti. abbiamo preparato una test grid, per permettere vari test relativi alla fisica. Il regioni di test comprendono:&lt;br /&gt;
* le [[Orientation Islands|Orientation Island]]&lt;br /&gt;
* le [[Welcome areas|Welcome area]]&lt;br /&gt;
* [[Lusk]]&lt;br /&gt;
* Diverse [[sandboxes]]&lt;br /&gt;
* le [[Combat sandboxes]]&lt;br /&gt;
* i [[Vehicle testing simulators|simulatori per il test di veicoli]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTa: Il Public Beta viewer sar&amp;amp;agrave; configurato per accedere alla beta grid, che sar&amp;amp;agrave; una copia di una porzione della main rete e del vostro account utente. Si pu&amp;amp;ograve; fare &amp;quot;tutto ci&amp;amp;ograve; che si desidera&amp;quot; su questa rete senza rischiare di danneggiare il tuo &amp;quot;vero account&amp;quot; sulla griglia principale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 3 - Havok4 su un piccolo gruppo di regioni selezionate ( &amp;quot;SIaMO QUI!&amp;quot;:) &amp;lt;/ B&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
In questa fase verranno utilizzati le nuove funzionalit&amp;amp;agrave; di HetGrid per la distribuzione dei simulatori Havok4 su un piccolo numero di regioni della griglia principale. Questa continua ad essere una fase di test, e, per questa fase, i partecipanti devono ricordare che sono sulla griglia principale, lavorando con il tuo vero inventario (quindi attenzione, non rezzate oggetti non copiabili / non trasferibili per provare le sim Havok4 se non si &amp;amp;egrave; al corrente dei potenziali rischi)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 4 - Rollout parziale sulla Main Grid (50-100 regioni) &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
a questo punto, avremo risolto le questioni in sospeso riscontrate durante il beta testing e durante la Fase 3 &amp;quot;la piccola distribuzione, in un angolo della griglia principale&amp;quot;, per distribuire Havok4 a un sottoinsieme della griglia principale.&lt;br /&gt;
&lt;br /&gt;
Dopo la raccolta di commenti e feedback, se tutto sembra andare bene, ma noi andremo avanti...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 5 - Rollout totale di Havok4 sulla Main Grid (distribuzione alle resto della rete) &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Se tutto va a dovere a questo punto, distruibuiremo il motore Havok4 su tutto il resto della griglia principale, e avremo il nuovo motore Havok4 in funzione dappertutto in Second Life.&lt;br /&gt;
&lt;br /&gt;
=== Una nota storica: Perch&amp;amp;eacute; per far funzionare Havok ci vuole tanto tempo? ===&lt;br /&gt;
alcuni di voi che girano da lungo tempo si sa che abbiamo cominciato a parlare della sostituzione di Havok1 molto tempo fa, che sembrava di aver abbandonato questo progetto e, infine, che tutto fosse finito nel silenzio. Dopo diverse false partenze, abbiamo deciso che sarebbe stato meglio smettere di parlare di questo lavoro, o di rendere pubblici gli impegni, fino a quando non fossimo molto più vicini alla meta, e noi crediamo che finalmente siamo giunti a questo punto.&lt;br /&gt;
&lt;br /&gt;
Per un po&#039; di tempo abbiamo lavorato per sostituire Havok1 con Havok2. Dopo aver lavorato su questo progetto, ci siamo resi conto che era davvero necessario rielaborare le interfacce che integrano Havok in Second Life. Ci siamo resi conto che avevamo bisogno di definire un livello di astrazione - uno strato di codice che rendesse più facile poter modificare e migrare il motore fisico, ridurre lo sforzo e per consentire una maggiore flessibilit&amp;amp;agrave; in futuro. a questo punto Havok4 &amp;amp;egrave; risultato la scelta più ragionevole piuttosto che basarsi sulla precedente release ... e per questo motivo abbiamo fissato come obiettivo l&#039;adozione di Havok4. Questo progetto &amp;amp;egrave; stato significativamente più grande di quanto noi potessimo prevedere, ma la buona notizia &amp;amp;egrave; che ora siamo qui, pronti per il beta testing, e pronti a risolvere gli ultimi problemi prima di portare Havok4 sulle sim della griglia principale!&lt;br /&gt;
&lt;br /&gt;
== Nuova esperienze che sono normali ==&lt;br /&gt;
&lt;br /&gt;
=== Eiezione e separazione degli oggetti che si compenetrano ===&lt;br /&gt;
Uno dei maggiori miglioramenti rispetto al precedente motore Havok &amp;amp;egrave; che Havok4 supporta la separazione degli oggetti che si compenetrano. Per esempio un cubo, che &amp;amp;egrave; conficcato nel terreno e viene trasformato in oggetto fisico cercher&amp;amp;agrave; di uscirne, fino a quando non si sar&amp;amp;agrave; separato dalla terra e da quel momento si pogger&amp;amp;agrave; sul terreno.&lt;br /&gt;
&lt;br /&gt;
Il motore precedente non gestiva gli oggetti compenetranti molto bene. andava in un loop per una elaborazione ricorsiva conosciuta come &amp;quot;Deep Think&amp;quot;, una condizione in cui il motore cercava di stabilire dove spostare gli oggetti per evitare la sovrapposizione, causando un gran uso di risorse da parte del simulatore che appariva reagire lentamente per altre richieste.&lt;br /&gt;
&lt;br /&gt;
Il nuovo motore separa gli oggetti che si sovrappongono in modo rapido e semplice. Gli oggetti sono trattati come molle compresse, in modo che maggiore &amp;amp;egrave; la interpenetrazione maggiore &amp;amp;egrave; la forza di espulsione sull&#039;oggetto. Il risolutore dell&#039;interpenetrazione tenta di obbedire ai vincoli di movimento per evitare di essere espulsi per esempio attraverso delle mura che racchiudono un oggetto, ma cercher&amp;amp;agrave; qualunque apertura o spazio disponibile dove dirigere l&#039;oggetto.&lt;br /&gt;
&lt;br /&gt;
Ecco un video di Google che mostra un esempio estremo di come il resolver della compenetrazione opera. Una pila di circa 200 dischi di grandi dimensioni spessi circa mezzo metro si sovrappongono in un pila di circa 10 metri di altezza, il tutto racchiuso all&#039;interno di un grande tubo cavo. Quando questo oggetto viene rezzato sul terreno e trasformato in fisico, i dischi vengono espulsi verso l&#039;alto e fuori verso la parte superiore del tubo, con alcuni dischi che raggiungono più di 300 metri di altezza per la forza repulsiva impressa dal risoluzione. Nessuna spinta viene applicata sui dischi via script o per push. Il movimento &amp;amp;egrave; dato esclusivamente dalla compenetrazione e dai dai calcoli del risolutore.&lt;br /&gt;
&lt;br /&gt;
Google Video: &#039;&#039;&#039;Second Life Havok 4 - Exploding Can of Disks&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
http://video.google.com/videoplay?docid=-2623683631644524154&lt;br /&gt;
&lt;br /&gt;
=== Lag del simulatore per enormi mucchi di oggetti impilati ===&lt;br /&gt;
anche se si tratta di una nuovo e migliore motore fisico che non dovrebbe bloccarsi cos&amp;amp;igrave; frequentemente come il motore originale Havok-1, ci sono volte in cui anche il nuovo simulatore causa un grande lag quando sono presenti un gran numero oggetti fisici che si toccano fra loro.&lt;br /&gt;
&lt;br /&gt;
Questo ritardo non &amp;amp;egrave; un bug, e non &amp;amp;egrave; come la vecchia condizione chiamata &amp;quot;Deep Think&amp;quot; di Havok-1, ma &amp;amp;egrave; dovuto ad una limitazione intrinseca nel modo in cui i motori fisici lavorano. Questo problema colpiva anche Havok-1, ma non era cos&amp;amp;igrave; evidente, dal momento che spesso grandi cataste crashavano il simulatore prima che questa condizione potesse diventare evidente.&lt;br /&gt;
&lt;br /&gt;
Normalmente, quando oggetti fisici rallentano il simulatore oltre una certa soglia critica, per un periodo di tempo il motore mette in pausa le elaborazioni per la fisica dell&#039;oggetto, in modo da risparmiare tempo CPU per altri oggetti attivi.&lt;br /&gt;
&lt;br /&gt;
Per poter risolvere l&#039;elaborazione degli oggetti fisici, l&#039;oggetto deve essere in contatto con un oggetto di riferimento non in movimento. Una barra fisica si ferma dopo aver toccato il suolo.&lt;br /&gt;
&lt;br /&gt;
Ma per più oggetti fisici impilati l&#039;uno sull&#039;altro, &amp;amp;egrave; difficile che raggiungano la stabilit&amp;amp;agrave;, perch&amp;amp;eacute; uno o più oggetti in movimento possono toccare quelli che si stanno stabilizzando. Questo leggero movimento rimette in moto anche quegli oggetti che si erano fermati, creando come un onda che attraversa la pila di oggetti. Quest&#039;onda si trasmette costantemente attraverso la pila con il risultato che nessuno oggetto si assesti mai del tutto. Questa costante movimento e vibrazioni &amp;amp;egrave; simile al concetto fisico del moto browniano delle molecole di un gas.&lt;br /&gt;
&lt;br /&gt;
L&#039;esempio su Google Video del lag generato in un simulatore da 565 sfere fisiche poste in un contenitore:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=7316931483709158462&lt;br /&gt;
&lt;br /&gt;
Questo lag del motore non dipende dalle dimensioni degli oggetti coinvolti. Una raccolta di 500 oggetti molto piccoli impilati pu&amp;amp;ograve; causare lo stesso ritardo di 500 oggetti grandi accatastati.&lt;br /&gt;
&lt;br /&gt;
=== Migliaia di oggetti che non si toccano non causano lag ===&lt;br /&gt;
&lt;br /&gt;
Il simulatore di Havok-4 funziona a pieno ritmo, se non vi &amp;amp;egrave; abbastanza spazio tra oggetti fisici fa in modo da ridurre il pi&amp;amp;ugrave; possibile le collisioni ravvicinate tra loro.&lt;br /&gt;
&lt;br /&gt;
Ci possono essere migliaia di oggetti fisici in un simulatore creare alcun ritardo, a patto che gli oggetti si tocchino il meno possibile l&#039;uno con l&#039;altro.&lt;br /&gt;
&lt;br /&gt;
Il seguente video su google presenta 2000-3400 cubetti fisici in una sandbox, senza ritardo:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=-2779779276874540721&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51567</id>
		<title>Havok4/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Havok4/it&amp;diff=51567"/>
		<updated>2008-01-28T23:07:00Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: italian translation of Havok 4 Beta Test Home page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Centro Informazioni sul nuovo motore fisico Havok4 in fase Beta Test ==&lt;br /&gt;
=== Introduzione ===&lt;br /&gt;
&amp;amp;Egrave; in corso in Second Life la fase di beta test di Havok4. Questa pagina fornisce informazioni sul progetto, aiuteranno tutti ad assicurarsi che Havok4 sia stato testato per bene prima che sia attivato su tutta la rete Second Life.&lt;br /&gt;
&lt;br /&gt;
Si prega di leggere la [[Havok4 Beta1 Release Notes/it|Havok4 Beta1 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
=== Cos&#039;&amp;amp;egrave; Havok? ===&lt;br /&gt;
Il mondo virtuale Second Life &amp;amp;egrave; composto di molte parti che contribuiscono a tenerla in funzione. Uno di queste &amp;amp;egrave; il motore che simula la Fisica. Un motore fisico &amp;amp;egrave; un componente software specializzato che fa tutti i calcoli del &amp;quot;mondo reale&amp;quot; per capire cosa fare quando:&lt;br /&gt;
* Qualcosa o qualcuno viene spinto&lt;br /&gt;
* Qualcosa o qualcuno si scontra con qualcos&#039;altro o qualcuno&lt;br /&gt;
* Qualcosa o qualcuno &amp;amp;egrave; in movimento e sta ruotando&lt;br /&gt;
* L&#039;attrito rallenta il movimento di qualcosa o qualcuno&lt;br /&gt;
&lt;br /&gt;
Havok &amp;amp;egrave; un motore fisico commerciale, e Second Life &amp;amp;egrave; stato costruito utilizzando Havok1. Con il quale ha funzionato per diversi anni.&lt;br /&gt;
&lt;br /&gt;
=== Come faccio a partecipare alla fase di test per il motore fisico Havok4? ===&lt;br /&gt;
Puoi partecipare al Beta Test di Havok4 con pochi, semplici passaggi:&lt;br /&gt;
# Leggi &amp;quot;[[What&#039;s Changed Con Havok4]]&amp;quot; per capire quali differenza dovrebbero esserci nel nuovo motore fisico, e quali sarebbe meglio non avere, testandole sulla griglia Havok4 Beta Test grid.&lt;br /&gt;
# Leggi &amp;quot;[[Linkability_Rules | New Cfr Linkability Regole]]&amp;quot; per capire come funziona il linking tra prim in Havok4 (&amp;amp;egrave; molto migliorato e dovrebbe essere molto più affidabile!)&lt;br /&gt;
# Fa un login nella Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/Issue Tracker]&amp;quot; per vedere come &amp;amp;egrave; facile esporre i problemi riscontrati durante il beta test&lt;br /&gt;
# [http://secondlife.com/community/preview.php Scaricare il file per installare la Beta Havok4 Viewer qui]&lt;br /&gt;
&lt;br /&gt;
=== Cosa testare? ===&lt;br /&gt;
assicurarsi che tutti i tuoi oggetti funzionino nella grid Havok4, e prova tutto quello che pensi possa avere a che fare con la fisica... Ecco una breve lista, e un link a una pagina con un elenco più esauriente di idee relative alla fisica degli oggetti:&lt;br /&gt;
* Building, linking, unlinking&lt;br /&gt;
* i veicoli&lt;br /&gt;
* le armi&lt;br /&gt;
* gli &amp;quot;incantesimi&amp;quot;&lt;br /&gt;
* gli shields&lt;br /&gt;
* gli strumenti di costruzione&lt;br /&gt;
* il rezzing di grandi insiemi di prim&lt;br /&gt;
* prova a costruire oggetti semplici e complessi, prendendoli poi in inventario per rezzarli in posti diversi e orientandoti diversamente&lt;br /&gt;
* camminare, sedersi, volare, nuotare, e correre e tutti gli altri movimenti degli avatar funzionano come previsto?&lt;br /&gt;
* gli script funzionano come previsto?&lt;br /&gt;
* prova a creare nuovi script e modificarli&lt;br /&gt;
* i permessi funzionano correttamente?&lt;br /&gt;
* &amp;amp;egrave; possibile mandare in crash la sim facendo crashare il motore fisico? (Quelli di voi che sanno cosa significa ... &amp;quot;fatelo&amp;quot; e fate sapere come ...;)&lt;br /&gt;
&lt;br /&gt;
Ci sono [[Havok4_Beta_Test_Ideas|molte cose che puoi fare per testare Havok4]] (una lista lunghissima di cose utili da provare. Sei libero di sceglierne una ma ancora meglio se provi cose nuove tue!&lt;br /&gt;
&lt;br /&gt;
=== Come posso partecipare al test Havok4 ===&lt;br /&gt;
# Partecipa agli incontri &amp;quot;[[Regular Havok4 Office Hours In-World]]&amp;quot;&lt;br /&gt;
# Comunicaci tutto quello che scopri usando il Public Issue Tracker su &amp;quot;[https://jira.secondlife.com/ Issue Tracker]&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
Segnala i bug trovati usando PROJECT &amp;quot;Second Life Service - SVC&amp;quot; e quando inserisci il bug scegliere aFFECTS VERSIONS &amp;quot;Havok4 Beta&amp;quot; and COMPONENTS &amp;quot;Physics&amp;quot; in questo modo troveremo subito le tue segnalazioni!&lt;br /&gt;
&lt;br /&gt;
=== Come sar&amp;amp;agrave; testato e rilasciato Havok4 ===&lt;br /&gt;
Questo progetto sostituisce un componente fondamentale di Second Life, ed essere certi che &amp;quot;tutto ci&amp;amp;ograve; che spinge, si scontra o ha inerzia&amp;quot; funzioni a dovere &amp;amp;egrave; un compito arduo. abbiamo gi&amp;amp;agrave; fatto un sacco di test interno, e corretto centinaia di bug. Ci saranno impegnati in un approccio graduale sia per accorgerci di molti problemi il prima possibile, sia per ridurre il rischio di problemi causati da Havok4 quando verr&amp;amp;agrave; rilasciato.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 1 - Test interno sulla griglia non pubblica (FaTTO!) &amp;lt;/ B&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
abbiamo gi&amp;amp;agrave; completato questa fase, e il personale interno ha svolto tutta una serie di lavori sui simulatori abilitati con Havok4. Le funzioni di base sono state controllate, come pure sono state controllati e risolti i noti crash dati dal motore fisico nel simulatore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 2 - Public Beta Test su Beta Grid &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Ci aspettiamo che la fase del beta test pubblico di Havok4 sia molto attiva, con molti partecipanti. abbiamo preparato una test grid, per permettere vari test relativi alla fisica. Il regioni di test comprendono:&lt;br /&gt;
* le [[Orientation Islands|Orientation Island]]&lt;br /&gt;
* le [[Welcome areas|Welcome area]]&lt;br /&gt;
* [[Lusk]]&lt;br /&gt;
* Diverse [[sandboxes]]&lt;br /&gt;
* le [[Combat sandboxes]]&lt;br /&gt;
* i [[Vehicle testing simulators|simulatori per il test di veicoli]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTa: Il Public Beta viewer sar&amp;amp;agrave; configurato per accedere alla beta grid, che sar&amp;amp;agrave; una copia di una porzione della main rete e del vostro account utente. Si pu&amp;amp;ograve; fare &amp;quot;tutto ci&amp;amp;ograve; che si desidera&amp;quot; su questa rete senza rischiare di danneggiare il tuo &amp;quot;vero account&amp;quot; sulla griglia principale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 3 - Havok4 su un piccolo gruppo di regioni selezionate ( &amp;quot;SIaMO QUI!&amp;quot;:) &amp;lt;/ B&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
In questa fase verranno utilizzati le nuove funzionalit&amp;amp;agrave; di HetGrid per la distribuzione dei simulatori Havok4 su un piccolo numero di regioni della griglia principale. Questa continua ad essere una fase di test, e, per questa fase, i partecipanti devono ricordare che sono sulla griglia principale, lavorando con il tuo vero inventario (quindi attenzione, non rezzate oggetti non copiabili / non trasferibili per provare le sim Havok4 se non si &amp;amp;egrave; al corrente dei potenziali rischi)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 4 - Rollout parziale sulla Main Grid (50-100 regioni) &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
a questo punto, avremo risolto le questioni in sospeso riscontrate durante il beta testing e durante la Fase 3 &amp;quot;la piccola distribuzione, in un angolo della griglia principale&amp;quot;, per distribuire Havok4 a un sottoinsieme della griglia principale.&lt;br /&gt;
&lt;br /&gt;
Dopo la raccolta di commenti e feedback, se tutto sembra andare bene, ma noi andremo avanti...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fase 5 - Rollout totale di Havok4 sulla Main Grid (distribuzione alle resto della rete) &amp;lt;/ b&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Se tutto va a dovere a questo punto, distruibuiremo il motore Havok4 su tutto il resto della griglia principale, e avremo il nuovo motore Havok4 in funzione dappertutto in Second Life.&lt;br /&gt;
&lt;br /&gt;
=== Una nota storica: Perch&amp;amp;eacute; per far funzionare Havok ci vuole tanto tempo? ===&lt;br /&gt;
alcuni di voi che girano da lungo tempo si sa che abbiamo cominciato a parlare della sostituzione di Havok1 molto tempo fa, che sembrava di aver abbandonato questo progetto e, infine, che tutto fosse finito nel silenzio. Dopo diverse false partenze, abbiamo deciso che sarebbe stato meglio smettere di parlare di questo lavoro, o di rendere pubblici gli impegni, fino a quando non fossimo molto più vicini alla meta, e noi crediamo che finalmente siamo giunti a questo punto.&lt;br /&gt;
&lt;br /&gt;
Per un po&#039; di tempo abbiamo lavorato per sostituire Havok1 con Havok2. Dopo aver lavorato su questo progetto, ci siamo resi conto che era davvero necessario rielaborare le interfacce che integrano Havok in Second Life. Ci siamo resi conto che avevamo bisogno di definire un livello di astrazione - uno strato di codice che rendesse più facile poter modificare e migrare il motore fisico, ridurre lo sforzo e per consentire una maggiore flessibilit&amp;amp;agrave; in futuro. a questo punto Havok4 &amp;amp;egrave; risultato la scelta più ragionevole piuttosto che basarsi sulla precedente release ... e per questo motivo abbiamo fissato come obiettivo l&#039;adozione di Havok4. Questo progetto &amp;amp;egrave; stato significativamente più grande di quanto noi potessimo prevedere, ma la buona notizia &amp;amp;egrave; che ora siamo qui, pronti per il beta testing, e pronti a risolvere gli ultimi problemi prima di portare Havok4 sulle sim della griglia principale!&lt;br /&gt;
&lt;br /&gt;
== Nuova esperienze che sono normali ==&lt;br /&gt;
&lt;br /&gt;
=== Eiezione e separazione degli oggetti che si compenetrano ===&lt;br /&gt;
Uno dei maggiori miglioramenti rispetto al precedente motore Havok &amp;amp;egrave; che Havok4 supporta la separazione degli oggetti che si compenetrano. Per esempio un cubo, che &amp;amp;egrave; conficcato nel terreno e viene trasformato in oggetto fisico cercher&amp;amp;agrave; di uscirne, fino a quando non si sar&amp;amp;agrave; separato dalla terra e da quel momento si pogger&amp;amp;agrave; sul terreno.&lt;br /&gt;
&lt;br /&gt;
Il motore precedente non gestiva gli oggetti compenetranti molto bene. andava in un loop per una elaborazione ricorsiva conosciuta come &amp;quot;Deep Think&amp;quot;, una condizione in cui il motore cercava di stabilire dove spostare gli oggetti per evitare la sovrapposizione, causando un gran uso di risorse da parte del simulatore che appariva reagire lentamente per altre richieste.&lt;br /&gt;
&lt;br /&gt;
Il nuovo motore separa gli oggetti che si sovrappongono in modo rapido e semplice. Gli oggetti sono trattati come molle compresse, in modo che maggiore &amp;amp;egrave; la interpenetrazione maggiore &amp;amp;egrave; la forza di espulsione sull&#039;oggetto. Il risolutore dell&#039;interpenetrazione tenta di obbedire ai vincoli di movimento per evitare di essere espulsi per esempio attraverso delle mura che racchiudono un oggetto, ma cercher&amp;amp;agrave; qualunque apertura o spazio disponibile dove dirigere l&#039;oggetto.&lt;br /&gt;
&lt;br /&gt;
Ecco un video di Google che mostra un esempio estremo di come il resolver della compenetrazione opera. Una pila di circa 200 dischi di grandi dimensioni spessi circa mezzo metro si sovrappongono in un pila di circa 10 metri di altezza, il tutto racchiuso all&#039;interno di un grande tubo cavo. Quando questo oggetto viene rezzato sul terreno e trasformato in fisico, i dischi vengono espulsi verso l&#039;alto e fuori verso la parte superiore del tubo, con alcuni dischi che raggiungono più di 300 metri di altezza per la forza repulsiva impressa dal risoluzione. Nessuna spinta viene applicata sui dischi via script o per push. Il movimento &amp;amp;egrave; dato esclusivamente dalla compenetrazione e dai dai calcoli del risolutore.&lt;br /&gt;
&lt;br /&gt;
Google Video: &#039;&#039;&#039;Second Life Havok 4 - Exploding Can of Disks&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
http://video.google.com/videoplay?docid=-2623683631644524154&lt;br /&gt;
&lt;br /&gt;
=== Lag del simulatore per enormi mucchi di oggetti impilati ===&lt;br /&gt;
anche se si tratta di una nuovo e migliore motore fisico che non dovrebbe bloccarsi cos&amp;amp;igrave; frequentemente come il motore originale Havok-1, ci sono volte in cui anche il nuovo simulatore causa un grande lag quando sono presenti un gran numero oggetti fisici che si toccano fra loro.&lt;br /&gt;
&lt;br /&gt;
Questo ritardo non &amp;amp;egrave; un bug, e non &amp;amp;egrave; come la vecchia condizione chiamata &amp;quot;Deep Think&amp;quot; di Havok-1, ma &amp;amp;egrave; dovuto ad una limitazione intrinseca nel modo in cui i motori fisici lavorano. Questo problema colpiva anche Havok-1, ma non era cos&amp;amp;igrave; evidente, dal momento che spesso grandi cataste crashavano il simulatore prima che questa condizione potesse diventare evidente.&lt;br /&gt;
&lt;br /&gt;
Normalmente, quando oggetti fisici rallentano il simulatore oltre una certa soglia critica, per un periodo di tempo il motore mette in pausa le elaborazioni per la fisica dell&#039;oggetto, in modo da risparmiare tempo CPU per altri oggetti attivi.&lt;br /&gt;
&lt;br /&gt;
Per poter risolvere l&#039;elaborazione degli oggetti fisici, l&#039;oggetto deve essere in contatto con un oggetto di riferimento non in movimento. Una barra fisica si ferma dopo aver toccato il suolo.&lt;br /&gt;
&lt;br /&gt;
Ma per più oggetti fisici impilati l&#039;uno sull&#039;altro, &amp;amp;egrave; difficile che raggiungano la stabilit&amp;amp;agrave;, perch&amp;amp;eacute; uno o più oggetti in movimento possono toccare quelli che si stanno stabilizzando. Questo leggero movimento rimette in moto anche quegli oggetti che si erano fermati, creando come un onda che attraversa la pila di oggetti. Quest&#039;onda si trasmette costantemente attraverso la pila con il risultato che nessuno oggetto si assesti mai del tutto. Questa costante movimento e vibrazioni &amp;amp;egrave; simile al concetto fisico del moto browniano delle molecole di un gas.&lt;br /&gt;
&lt;br /&gt;
L&#039;esempio su Google Video del lag generato in un simulatore da 565 sfere fisiche poste in un contenutore:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=7316931483709158462&lt;br /&gt;
&lt;br /&gt;
Questo lag del motore non dipende dalle dimensioni degli oggetti coinvolti. Una raccolta di 500 oggetti molto piccoli impilati pu&amp;amp;ograve; causare lo stesso ritardo di 500 oggetti grandi accatastati.&lt;br /&gt;
&lt;br /&gt;
=== Migliaia di oggetti che non si toccano non causano lag ===&lt;br /&gt;
&lt;br /&gt;
Il simulatore di Havok-4 funziona a pieno ritmo, se non vi &amp;amp;egrave; abbastanza spazio tra oggetti fisici fa in modo da ridurre il piu&#039; possibile le collisioni ravvicinate tra loro.&lt;br /&gt;
&lt;br /&gt;
Ci possono essere migliaia di oggetti fisici in un simulatore creare alcun ritardo, a patto che gli oggetti si tocchino il meno possibile l&#039;uno con l&#039;altro.&lt;br /&gt;
&lt;br /&gt;
Il seguente video su google presenta 2000-3400 cubetti fisici in una sandbox, senza ritardo:&lt;br /&gt;
&lt;br /&gt;
http://video.google.com/videoplay?docid=-2779779276874540721&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSLC/it&amp;diff=47305</id>
		<title>Template:LSLC/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSLC/it&amp;diff=47305"/>
		<updated>2008-01-04T22:39:50Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: creato template category italiano&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#if:{{{2|}}}|[[Category:LSL{{#if:{{{1|}}}|_{{{1}}}}}{{{3|/it}}}|{{{2|}}}]]|[[Category:LSL{{#if:{{{1|}}}|_{{{1}}}}}{{{3|/it}}}]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[:Category:LSL {{{1}}}{{{3|/it}}}|{{PAGENAME}}]]&amp;lt;/nowiki&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Header/it&amp;diff=47302</id>
		<title>Template:LSL Header/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Header/it&amp;diff=47302"/>
		<updated>2008-01-04T22:33:54Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=box&amp;gt;&lt;br /&gt;
{{{!}} style=&amp;quot;border-width: 1px 1px 1px 1px;border-spacing: 3px;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!!}} [[LSL Portal/it|Portale&amp;amp;nbsp;LSL]] &lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Functions/it|Funzioni}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Events/it|Eventi}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Types/it|Tipi}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Constants/it|Costanti}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Flow Control/it|Flusso&amp;amp;nbsp;d&#039;esecuzione}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} [[LSL Library|Libreria&amp;amp;nbsp;degli&amp;amp;nbsp;Script]]&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Tutorials|Tutorial}}&lt;br /&gt;
{{#if:  {{{1|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{1|1}}}&lt;br /&gt;
}}{{#if:{{{2|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{2|2}}}&lt;br /&gt;
}}{{#if:{{{3|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{3|3}}}&lt;br /&gt;
}}{{#if:{{{4|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{4|4}}}&lt;br /&gt;
}}{{#if:{{{5|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{5|5}}}&lt;br /&gt;
}}{{#if:{{{6|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{6|6}}}&lt;br /&gt;
}}{{#if:{{{7|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{7|7}}}&lt;br /&gt;
}}{{#if:{{{8|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{8|8}}}&lt;br /&gt;
}}{{#if:{{{9|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{9|9}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:LSL_Header/it&amp;diff=47300</id>
		<title>Template:LSL Header/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:LSL_Header/it&amp;diff=47300"/>
		<updated>2008-01-04T22:32:14Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: creato template header italiano&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=box&amp;gt;&lt;br /&gt;
{{{!}} style=&amp;quot;border-width: 1px 1px 1px 1px;border-spacing: 3px;&amp;quot;&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!!}} [[LSL Portal/it|Portale&amp;amp;nbsp;LSL]] &lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Functions/it|Funzioni}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Events/it|Eventi}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Types/it|Tipi}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Constants/it|}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Flow Control/it|Flusso&amp;amp;nbsp;d&#039;esecuzione}}&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} [[LSL Library|Libreria&amp;amp;nbsp;degli&amp;amp;nbsp;Script]]&lt;br /&gt;
{{!!}} &amp;amp;#124; {{!!}} {{LSLGC|Tutorials|Tutorial}}&lt;br /&gt;
{{#if:  {{{1|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{1|1}}}&lt;br /&gt;
}}{{#if:{{{2|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{2|2}}}&lt;br /&gt;
}}{{#if:{{{3|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{3|3}}}&lt;br /&gt;
}}{{#if:{{{4|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{4|4}}}&lt;br /&gt;
}}{{#if:{{{5|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{5|5}}}&lt;br /&gt;
}}{{#if:{{{6|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{6|6}}}&lt;br /&gt;
}}{{#if:{{{7|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{7|7}}}&lt;br /&gt;
}}{{#if:{{{8|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{8|8}}}&lt;br /&gt;
}}{{#if:{{{9|}}}|{{!!}} &amp;amp;#124; {{!!}} {{{9|9}}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Functions/it&amp;diff=47298</id>
		<title>Category:LSL Functions/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Functions/it&amp;diff=47298"/>
		<updated>2008-01-04T22:16:04Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
{{LSL Header/it}}&lt;br /&gt;
&lt;br /&gt;
Questa categoria contiene le funzioni integrate nel LSL.&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Keywords/it}}{{LSLC|Flow Control/it}}{{LSLC/it|}}&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Functions/it&amp;diff=47295</id>
		<title>Category:LSL Functions/it</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Functions/it&amp;diff=47295"/>
		<updated>2008-01-04T22:12:04Z</updated>

		<summary type="html">&lt;p&gt;Vision Raymaker: traduzione indice categoria&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
Questa categoria contiene le funzioni integrate nel LSL.&lt;br /&gt;
{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>Vision Raymaker</name></author>
	</entry>
</feed>