SL-751, SL-691 - test lsl scripts update, better syncing between skeleton and drawable

master
Brad Payne (Vir Linden) 2017-07-21 20:01:40 +01:00
parent bbe5681d05
commit 30880e062a
4 changed files with 29 additions and 28 deletions

View File

@ -50,6 +50,7 @@
#include "llviewerobjectlist.h" #include "llviewerobjectlist.h"
#include "llviewerwindow.h" #include "llviewerwindow.h"
#include "llvocache.h" #include "llvocache.h"
#include "llcontrolavatar.h"
const F32 MIN_INTERPOLATE_DISTANCE_SQUARED = 0.001f * 0.001f; const F32 MIN_INTERPOLATE_DISTANCE_SQUARED = 0.001f * 0.001f;
const F32 MAX_INTERPOLATE_DISTANCE_SQUARED = 10.f * 10.f; const F32 MAX_INTERPOLATE_DISTANCE_SQUARED = 10.f * 10.f;
@ -697,6 +698,11 @@ F32 LLDrawable::updateXform(BOOL undamped)
mXform.setScale(LLVector3(1,1,1)); //no scale in drawable transforms (IT'S A RULE!) mXform.setScale(LLVector3(1,1,1)); //no scale in drawable transforms (IT'S A RULE!)
mXform.updateMatrix(); mXform.updateMatrix();
if (mVObjp && mVObjp->isRootEdit() && mVObjp->getControlAvatar())
{
mVObjp->getControlAvatar()->matchVolumeTransform();
}
if (mSpatialBridge) if (mSpatialBridge)
{ {
gPipeline.markMoved(mSpatialBridge, FALSE); gPipeline.markMoved(mSpatialBridge, FALSE);

View File

@ -4062,10 +4062,6 @@ void LLViewerObject::setPosition(const LLVector3 &pos, BOOL damped)
// position caches need to be up to date on root objects // position caches need to be up to date on root objects
updatePositionCaches(); updatePositionCaches();
} }
if (getControlAvatar() && isRootEdit())
{
getControlAvatar()->matchVolumeTransform();
}
} }
void LLViewerObject::setPositionGlobal(const LLVector3d &pos_global, BOOL damped) void LLViewerObject::setPositionGlobal(const LLVector3d &pos_global, BOOL damped)

View File

@ -1,4 +1,4 @@
list buttons = ["anim start", "anim stop", " ", "verbose on", "verbose off", " "]; list buttons = ["anim start", "anim stop", "step", "verbose on", "verbose off", " "];
string dialogInfo = "\nPlease make a choice."; string dialogInfo = "\nPlease make a choice.";
key ToucherID; key ToucherID;
@ -20,7 +20,7 @@ default
llListenRemove(listenHandle); llListenRemove(listenHandle);
listenHandle = llListen(dialogChannel, "", ToucherID, ""); listenHandle = llListen(dialogChannel, "", ToucherID, "");
llDialog(ToucherID, dialogInfo, buttons, dialogChannel); llDialog(ToucherID, dialogInfo, buttons, dialogChannel);
llSetTimerEvent(60.0); // Here we set a time limit for responses //llSetTimerEvent(60.0); // Here we set a time limit for responses
} }
listen(integer channel, string name, key id, string message) listen(integer channel, string name, key id, string message)
@ -35,7 +35,7 @@ default
// stop timer since the menu was clicked // stop timer since the menu was clicked
llSetTimerEvent(0); llSetTimerEvent(0);
llOwnerSay("Sending message " + message + " on channel " + (string)commandChannel); //llOwnerSay("Sending message " + message + " on channel " + (string)commandChannel);
llRegionSay(commandChannel, message); llRegionSay(commandChannel, message);
} }
@ -45,7 +45,7 @@ default
llSetTimerEvent(0); llSetTimerEvent(0);
llListenRemove(listenHandle); llListenRemove(listenHandle);
llWhisper(0, "Sorry. You snooze; you lose."); //llWhisper(0, "Sorry. You snooze; you lose.");
} }
} }

View File

@ -1,6 +1,6 @@
integer listenHandle; integer listenHandle;
integer verbose; integer verbose;
integer num_steps = 50; integer num_steps = 12;
float circle_time = 5.0; float circle_time = 5.0;
integer circle_step; integer circle_step;
vector circle_pos; vector circle_pos;
@ -14,12 +14,21 @@ start_circle(vector center, float radius)
circle_radius = radius; circle_radius = radius;
circle_step = 0; circle_step = 0;
llSetTimerEvent(circle_time/num_steps); llSetTimerEvent(circle_time/num_steps);
llTargetOmega(<0.0, 0.0, 1.0>, TWO_PI/circle_time, 1.0);
} }
stop_circle() stop_circle()
{ {
llSetTimerEvent(0); llSetTimerEvent(0);
llSetRegionPos(circle_center); llTargetOmega(<0.0, 0.0, 1.0>, TWO_PI/circle_time, 0.0);
integer i;
for (i=0; i<10; i++)
{
vector new_pos = circle_center;
new_pos.x += llFrand(0.01);
llSetRegionPos(new_pos);
llSleep(0.1);
}
} }
next_circle() next_circle()
@ -32,34 +41,19 @@ next_circle()
circle_step = (circle_step+1)%num_steps; circle_step = (circle_step+1)%num_steps;
} }
circle_path(vector center, float radius)
{
integer i;
integer num_steps = 50;
float circle_time = 5.0; // seconds
for (i=0; i<num_steps; ++i)
{
float rad = (i * TWO_PI)/num_steps;
float x = center.x + llCos(rad)*radius;
float y = center.y + llSin(rad)*radius;
float z = center.z;
llSetRegionPos(<x,y,z>);
llSleep(circle_time/num_steps);
}
}
default default
{ {
state_entry() state_entry()
{ {
llSay(0, "Hello, Avatar!"); //llSay(0, "Hello, Avatar!");
listenHandle = llListen(-2001,"","",""); listenHandle = llListen(-2001,"","","");
verbose = 0; verbose = 0;
circle_center = llGetPos();
} }
listen(integer channel, string name, key id, string message) listen(integer channel, string name, key id, string message)
{ {
llOwnerSay("got message " + name + " " + (string) id + " " + message); //llOwnerSay("got message " + name + " " + (string) id + " " + message);
list words = llParseString2List(message,[" "],[]); list words = llParseString2List(message,[" "],[]);
string command = llList2String(words,0); string command = llList2String(words,0);
string option = llList2String(words,1); string option = llList2String(words,1);
@ -85,6 +79,11 @@ default
verbose = 0; verbose = 0;
} }
} }
if (command=="step")
{
llSetTimerEvent(0);
next_circle();
}
} }
timer() timer()