|
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): ////////////////////////////////////////////////////////////////////////////// // // 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
|