OsGetInertiaData

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Add exemple)
(Script improvement)
 
(One intermediate revision by one user not shown)
Line 4: Line 4:
 
|delay=0
 
|delay=0
 
|function_syntax=list osGetInertiaData()
 
|function_syntax=list osGetInertiaData()
 +
|description=<div style="background-color:#FFA0A0; padding:10px; padding-bottom:5px; border: 1px #FF544F solid">
 +
'''Caution !''' Only supported by '''ubOde''' for now.</div>
 +
This fonction retrun a list of inertia data.
 +
[
 +
    float mass,    // the total mass of the linkset
 +
    vector center,  // the center of mass offset relative to root prim
 +
    vector Idiag,  // diagonal elements of inertia
 +
    vector Ioffdiag // off diagonal elements of inertia
 +
]
 +
Mass maybe -1 if inertia data is invalid or not avaiable
 
|ossl_example=<source lang="lsl">
 
|ossl_example=<source lang="lsl">
// Example of osGetInertiaData
+
//
 +
// osGetInertiaData Script Exemple
 +
// Author: djphil
 +
//
  
 
default
 
default
Line 11: Line 24:
 
     state_entry()
 
     state_entry()
 
     {
 
     {
 +
        llSay(PUBLIC_CHANNEL, "Touch to see osGetInertiaData usage.");
 
         llSetStatus(STATUS_PHYSICS, TRUE);
 
         llSetStatus(STATUS_PHYSICS, TRUE);
        llSetObjectName("osGetInertiaData");
 
 
     }
 
     }
  
     touch_start(integer n)
+
     touch_start(integer number)
 
     {
 
     {
         list buffer =osGetInertiaData();
+
         list buffer = osGetInertiaData();
 
         float mass = llList2Float(buffer, 0);
 
         float mass = llList2Float(buffer, 0);
 
         vector center = llList2Vector(buffer, 1);
 
         vector center = llList2Vector(buffer, 1);
 
         vector Idiag = llList2Vector(buffer, 2);
 
         vector Idiag = llList2Vector(buffer, 2);
 
         vector Ioffdiag = llList2Vector(buffer, 3);
 
         vector Ioffdiag = llList2Vector(buffer, 3);
         string text;
+
 
        text += "\n• The total mass of the linkset is " + (string)mass;
+
         if (mass == -1)
        text += "\n• The center of mass offset relative to root prim is " + (string)center;
+
        {
        text += "\n• Diagonal elements of inertia is " + (string)Idiag;
+
            llSay(PUBLIC_CHANNEL, "The inertia data is invalid or not avaiable ...");
        text += "\n• Off diagonal elements of inertia is " + (string)Ioffdiag;
+
        }
        llSay(PUBLIC_CHANNEL, text);
+
 
 +
        else
 +
        {
 +
            string text;
 +
            text += "\n• The total mass of the linkset is " + (string)mass;
 +
            text += "\n• The center of mass offset relative to root prim is " + (string)center;
 +
            text += "\n• Diagonal elements of inertia is " + (string)Idiag;
 +
            text += "\n• Off diagonal elements of inertia is " + (string)Ioffdiag;
 +
            llSay(PUBLIC_CHANNEL, text);
 +
        }
 
     }
 
     }
 
}
 
}
 
</source>
 
</source>
|description= returns a list:<br/>
 
[<br/>
 
float mass, // the total mass of the linkset<br/>
 
vector center, // the center of mass offset relative to root prim<br/>
 
vector Idiag, // diagonal elements of inertia<br/>
 
vector Ioffdiag // off diagonal elements of inertia<br/>
 
]
 
 
mass maybe -1 if inertia data is invalid or not avaiable
 
<div style="background-color:#FFA0A0; padding:10px; padding-bottom:5px; border: 1px #FF544F solid">
 
'''Caution !''' Only supported by '''ubOde''' for now
 
</div>
 
 
|additional_info=This function was added in 0.9.0.1}}
 
|additional_info=This function was added in 0.9.0.1}}

Latest revision as of 11:39, 2 December 2020

list osGetInertiaData()
Caution ! Only supported by ubOde for now.

This fonction retrun a list of inertia data.

[
    float mass,     // the total mass of the linkset
    vector center,  // the center of mass offset relative to root prim
    vector Idiag,   // diagonal elements of inertia
    vector Ioffdiag // off diagonal elements of inertia
]

Mass maybe -1 if inertia data is invalid or not avaiable

Threat Level This function does not do a threat level check
Permissions Use of this function is always allowed by default
Extra Delay 0 seconds
Example(s)
//
// osGetInertiaData Script Exemple
// Author: djphil
//
 
default
{
    state_entry()
    {
        llSay(PUBLIC_CHANNEL, "Touch to see osGetInertiaData usage.");
        llSetStatus(STATUS_PHYSICS, TRUE);
    }
 
    touch_start(integer number)
    {
        list buffer = osGetInertiaData();
        float mass = llList2Float(buffer, 0);
        vector center = llList2Vector(buffer, 1);
        vector Idiag = llList2Vector(buffer, 2);
        vector Ioffdiag = llList2Vector(buffer, 3);
 
        if (mass == -1)
        {
            llSay(PUBLIC_CHANNEL, "The inertia data is invalid or not avaiable ...");
        }
 
        else
        {
            string text;
            text += "\n• The total mass of the linkset is " + (string)mass;
            text += "\n• The center of mass offset relative to root prim is " + (string)center;
            text += "\n• Diagonal elements of inertia is " + (string)Idiag;
            text += "\n• Off diagonal elements of inertia is " + (string)Ioffdiag;
            llSay(PUBLIC_CHANNEL, text);
        }
    }
}
Notes
This function was added in 0.9.0.1


Personal tools
General
About This Wiki