//HUD\\
CODE
float updateInterval = 0.5;
integer active = FALSE;
vector hudColor = <0,1,1>;
float hudAlpha = 0.8;
integer throttle = 0;
float GetAngle(float x, float y)
{
float targetAngle = llAsin(y) * RAD_TO_DEG;
if (x < 0.0)
{
if (y < 0.0)
{
targetAngle = -180.0 - targetAngle;
}
else
{
targetAngle = 180 - targetAngle;
}
}
return targetAngle;
}
rotation Inverse(rotation r)
{
r.x = -r.x;
r.y = -r.y;
r.z = -r.z;
return r;
}
rotation GetParentRot()
{
return Inverse(llGetLocalRot()) * llGetRot();
}
activate()
{
active = TRUE;
llSetTimerEvent(updateInterval);
}
deactivate()
{
active = FALSE;
}
default
{
state_entry()
{
llSetText("", hudColor, hudAlpha);
}
timer()
{
if (active == FALSE)
{
llSetTimerEvent(0.0);
llSetText("", hudColor, hudAlpha);
}
else
{
vector xAxis = llRot2Fwd(GetParentRot());
integer aoa = (integer)llFabs((GetAngle(0.9, -xAxis.z) + 0.5));
integer heading = (integer)(GetAngle(xAxis.y, xAxis.x) + 180.5);
vector velocity = llGetVel();
integer speed = (integer)(llVecMag(velocity) * 1.94384449 + 0.5);
integer vSpeed = (integer)(velocity.z * 10.0);
string vSpeedString = (string)vSpeed;
if (llStringLength(vSpeedString) == 1)
{
vSpeedString = "0" + vSpeedString;
}
vSpeedString = llInsertString(vSpeedString, llStringLength(vSpeedString) - 1, ".");
vector myPos = llGetPos();
float groundLevel = 0.0;
if (llGround(ZERO_VECTOR) > llWater(ZERO_VECTOR))
{
groundLevel = llGround(ZERO_VECTOR);
}
else
{
groundLevel = llWater(ZERO_VECTOR);
}
integer agl = (integer)(myPos.z - groundLevel - 2.0);
if (agl < 0)
{
agl = 0;
}
llSetText("Speed: " + (string)throttle + "% Airspeed " + (string)speed + " kts\nHeading " + (string)heading + " Alt(AGL) " + (string)agl + "m\nVert " + (string)vSpeedString + "m/sec\n \n \n ", hudColor, hudAlpha);
}
}
link_message(integer sender, integer num, string message, key id)
{
if (message == "stop")
{
deactivate();
}
else if(message == "start")
{
activate();
}
else if(num = 5)
{
message = (string)throttle;
}
else if (message == "hud")
{
if (num == 1)
{
activate();
}
else if (num == 2)
{
deactivate();
}
}
}
}
//Listen in main\\
CODE
listen( integer channel, string name, key id, string message )
{
//
}
else if (llStringLength(message) == 1 && (string)((integer)message) == message)
{
speed = (integer)message;
llMessageLinked( LINK_ALL_CHILDREN , 5 , message ,NULL_KEY );
}
else if(message == "current speed")
{
llWhisper(0,"Current Speed at " + (string)speed);
}
}