Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Documenting placement and other details of Objects

Spirit Landar
Seeking Englightenment
Join date: 11 Jun 2008
Posts: 40
07-01-2009 14:05
Is there a (good) tool for documenting the details of an object (size, rotation, placement, etc.)?

I have used screen shots, but you have to take 3 or 4...and they have to be cropped, etc.

I am hoping that someone has realized that keeping track of this info can be useful.

Thanks,

Love, as always,

Spirit
Sling Trebuchet
Deleted User
Join date: 20 Jan 2007
Posts: 4,548
07-01-2009 14:41
There must be a scripted tool out there. Look for building gadgets.

I check object coordinates manually, and record them in the Description field.
_____________________
Maggie: We give our residents a lot of tools, to build, create, and manage their lands and objects. That flexibility also requires people to exercise judgment about when things should be used.
http://www.ace-exchange.com/home/story/BDVR/589
Hugsy Penguin
Sky Junkie
Join date: 20 Jun 2005
Posts: 851
07-01-2009 23:16
May or may not be helpful (set the value of SCRIPT_NAME to what you call the script):

CODE

//////////////////////////////////////////////////////////////////////////////
//
// Object Store/Restore
//
// Version: 1.0
// Date: July 1, 2009
//
// Usage: 1. Rez object.
//
// 2. Drop script onto object, click object, and pick "Store".
// (Object position/rotation is stored in object description.)
//
// 3. Take object to inventory; time passes.
//
// 4. Rez object.
//
// 5. Drop script onto object, click object, and pick "Restore".
// (Object moves to position/rotation stored in description.)
//
/////////////////////////////////////////////////////////////////////////////

//---------------------------------------------------------------------------
// Constants
//---------------------------------------------------------------------------
integer LISTEN_TIMEOUT = 30;
string SCRIPT_NAME = "HPE Store/Restore Location";

//---------------------------------------------------------------------------
// Globals
//---------------------------------------------------------------------------
integer gDialogChannel;
integer gListenHandle;

//---------------------------------------------------------------------------
// Functions
//---------------------------------------------------------------------------

//
// Store postion/rotation in description and kill script
//
Store()
{
vector pos = llGetPos();
rotation rot = llGetRot();
string data =
(string)pos.x + "," +
(string)pos.y + "," +
(string)pos.z + "," +
(string)rot.x + "," +
(string)rot.y + "," +
(string)rot.z + "," +
(string)rot.s;
llSetObjectDesc(data);
KillScript();
}

//
// Restore position/rotation from description and kill script
//
Restore()
{
string data = llGetObjectDesc();
list dataList = llCSV2List(data);

vector pos;
pos.x = llList2Float(dataList, 0);
pos.y = llList2Float(dataList, 1);
pos.z = llList2Float(dataList, 2);

rotation rot;
rot.x = llList2Float(dataList, 3);
rot.y = llList2Float(dataList, 4);
rot.z = llList2Float(dataList, 5);
rot.s = llList2Float(dataList, 6);

warpPos(pos);
llSetRot(rot);
KillScript();
}

//
// WarpPos!
//
// From: http://wiki.secondlife.com/wiki/WarpPos
//
// R&D by Keknehv Psaltery, 05/25/2006
// with a little poking by Strife, and a bit more
// some more munging by Talarus Luan
// Final cleanup by Keknehv Psaltery
// Changed jump value to 411 (4096 ceiling) by Jesse Barnett
warpPos(vector destpos)
{
// Compute the number of jumps necessary
integer jumps = (integer)(llVecDist(destpos, llGetPos()) / 10.0) + 1;
// Try and avoid stack/heap collisions
if (jumps > 411)
jumps = 411;
list rules = [ PRIM_POSITION, destpos ]; //The start for the rules list
integer count = 1;
while ( ( count = count << 1 ) < jumps)
rules = (rules=[]) + rules + rules; //should tighten memory use.
llSetPrimitiveParams( rules + llList2List( rules, (count - jumps) << 1, count) );
if ( llVecDist( llGetPos(), destpos ) > .001 ) //Failsafe
while ( --jumps )
llSetPos( destpos );
}

//
// Kill script
//
KillScript()
{
llSetScriptState(SCRIPT_NAME, FALSE);
llRemoveInventory(SCRIPT_NAME);
}

//
// Generate a random channel to listen on.
//
integer RandomChannel()
{
integer min = 1;
integer max = 2147483647;
integer rndchn = (integer)(llFrand(max - min) + min);

return rndchn;
}

//---------------------------------------------------------------------------
// States - default
//---------------------------------------------------------------------------
default
{
touch_start(integer total_number)
{
gDialogChannel = RandomChannel();
llDialog(llGetOwner(), "\nSelect option:",
["Store", "Restore"],
gDialogChannel);
gListenHandle = llListen(gDialogChannel, "", NULL_KEY, "");
llSetTimerEvent(LISTEN_TIMEOUT);
}

listen(integer channel, string name, key id, string message)
{
if (message == "Store")
{
Store();
}
else if (message == "Restore")
{
Restore();
}
}

timer()
{
llSetTimerEvent(0);
llListenRemove(gListenHandle);
llWhisper(0, "Dialog timed-out. Try again.");
}
}
_____________________
--
Hugsy Penguin
Spirit Landar
Seeking Englightenment
Join date: 11 Jun 2008
Posts: 40
07-02-2009 13:53
Hugsy Penguin -> WOW!

Thank you.

Love, as always,

Spirit