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 "llviewerwindow.h"
#include "llvocache.h"
#include "llcontrolavatar.h"
const F32 MIN_INTERPOLATE_DISTANCE_SQUARED = 0.001f * 0.001f;
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.updateMatrix();
if (mVObjp && mVObjp->isRootEdit() && mVObjp->getControlAvatar())
{
mVObjp->getControlAvatar()->matchVolumeTransform();
}
if (mSpatialBridge)
{
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
updatePositionCaches();
}
if (getControlAvatar() && isRootEdit())
{
getControlAvatar()->matchVolumeTransform();
}
}
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.";
key ToucherID;
@ -20,7 +20,7 @@ default
llListenRemove(listenHandle);
listenHandle = llListen(dialogChannel, "", ToucherID, "");
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)
@ -35,7 +35,7 @@ default
// stop timer since the menu was clicked
llSetTimerEvent(0);
llOwnerSay("Sending message " + message + " on channel " + (string)commandChannel);
//llOwnerSay("Sending message " + message + " on channel " + (string)commandChannel);
llRegionSay(commandChannel, message);
}
@ -45,7 +45,7 @@ default
llSetTimerEvent(0);
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 verbose;
integer num_steps = 50;
integer num_steps = 12;
float circle_time = 5.0;
integer circle_step;
vector circle_pos;
@ -14,12 +14,21 @@ start_circle(vector center, float radius)
circle_radius = radius;
circle_step = 0;
llSetTimerEvent(circle_time/num_steps);
llTargetOmega(<0.0, 0.0, 1.0>, TWO_PI/circle_time, 1.0);
}
stop_circle()
{
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()
@ -32,34 +41,19 @@ next_circle()
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
{
state_entry()
{
llSay(0, "Hello, Avatar!");
//llSay(0, "Hello, Avatar!");
listenHandle = llListen(-2001,"","","");
verbose = 0;
circle_center = llGetPos();
}
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,[" "],[]);
string command = llList2String(words,0);
string option = llList2String(words,1);
@ -85,6 +79,11 @@ default
verbose = 0;
}
}
if (command=="step")
{
llSetTimerEvent(0);
next_circle();
}
}
timer()