Jump to content

GManB

Resident
  • Posts

    237
  • Joined

  • Last visited

Everything posted by GManB

  1. haha, it is I who missed something!! Thanks Rolig. Great idea! G
  2. I have an art installation with nine rotating objects. Six of which are very large, 30+m on one axis, and link-sets of 12 links. All are transparent and phantom. To work on this, sometimes just finding the right angle to click on an interior object it difficult. I force my cam in towards the interior objects to try to click but cam can get caught up in the motion and the effort is considerable. At first the rotating objects had a start/stop toggle in touch_start. I rewrote the scripts to listen to channel 500 on local chat and parse a command. This works fine except that because of the size I have to fly my av to within 20m of the root prim of the link set. And then only those within 20m get the command. I have thought of two designs involving an object that relays the incoming command from local chat and calls llRegionSay. Design one simply uses an object close to my av but this requires me to keep my av w/in 20m of the relay object. The second just attaches the relay, probably small and transparent so it stays with my av. Also, this installation is in Burn2 and my camp is at a region edge so either method will fail if my av wanders into the neighboring region. Seems like this is a common problem in SL. I would love to hear how others have solved it or any general comments or suggestions. Thanks, G
  3. Thanks for the nice explanation. Sounds about right. I can imagine this idea will have pretty low priority .. G
  4. The Jira issue I created for this feature request has been 'Accepted' by Mazidox Linden. No expected implementation date is given but I assume the feature will just show up sometime in the future? I.e., does 'Acceptance' imply that it will be implemented? G
  5. Just to close this, DoteDote and I did some experiments and could not re-create what I (thought) I initially saw. I know I did see what I reported initially. And, I have subsequently seen one of my rotating objects stop for a while... not just super slow, stopped. Then, after less than a minute, it starts again. So, as Rolig says, llTargetOmega() s an odd duck. G
  6. GManB

    Funny Bug

    Agree. Calling llRegionSayTo() before llListen() was a coding error. The coding error introduced an 'artificial' race condition Thinking a bit deeper, we should be able to assume that the script calling llListen() will actually have all the mechanism in place and be ready to listen before llListen() returns. If this is true then calling llListen() before, e.g., llRegionSayTo() is correct and will never result in a race condition. I can't imagine the opposite being the case. G
  7. Ultimately, that's that I had to do with the teak bench swing I built. llTargetOmega and keyframed motion just were not doing well.
  8. Must be the different viewers then. When you said Morris I thought maybe it was some sort of test harness I'll come by and we can look at the object with the different viewers and determine if we see different things.. G
  9. DoteDote, What's 'Morris'? And the script I posted does work for me too. But, if I make the call to llTargetOmega() in the timer it does not. So, exactly what did you test? I am on Firestorm version 6.3.9.58205 (6.3.9.58205) G
  10. GManB

    Funny Bug

    Even though the lsl execution environment does it's best to abstract the fact that, when we have code communication among objects, which is a lot, we are building Distributed Systems (in the fullest sense) we are still building Distributed Systems. Hence all the concurrency issues that arise in such systems need to be considered. I have a system of one object (the main board of a game, MB) communicating with up to 30 player HUDs. Communications are pretty simple but concurrency issues still occur. I had the system about ready for a beta test with some friends so went through the two files and did a global replace to comment out all the llOwnerSay() calls. (I wanted local clear of degug messages so friends and I could chat). System totally deadlocked when the first HUD was attached (lucky I caught this before friends came over lol). Files are about 500 or so lines. But I had no idea where the bug might be. So I undid 1/2 the global replace in one file and lucked out in that the system worked properly.. So took out 1/4 of the llOwnerSay calls... and proceeded until I found the bug. I happened to have an llRegionSayTo() and llListen() in a function, which was in the initialization phase of the system, with a few calls to llOwnerSay() between them. Taking out the llOwnerSay() calls meant the message got to the receiver and the receiver responded before the llListen() was called. Swapping the order of llRegionSayTo() and llListen() fixed the issue... something I SHOULD have caught when I was coding... sighs.. I did get all the llOwnerSay() calls out and system working as friends were arriving! G
  11. @Mollymews, you are welcome. Feels great to have helped! @Phate, when llSetTimerEvent(secondsTillNextChange) is called secondsTillNextChange does have whatever value came back from llFRand() and it is on the stack of timer() but, I would assume, llSetTimerEvent has the value on it's stack and does what is necessary and should, very much, not depend on the value on the stack of the calling function (in our case timer()) being valid when llSetTimerEvent returns. @Rolig, when it works, given the slow rotation value, it works fine and rotates fine. I have been using PI/48.0 in lots of objects and have not seen anomalous behavior you describe. But, there is a fix, and I am moderately ok... I still do not like not understanding issues like this. Gives me a slightly creepy feeling about the underlying execution environment. G
  12. this is the code the two params to llTO are on the stack of timer() for the calls that do not work but they are also on the stack of ChangeRotation... integer spinON = FALSE; ChangeRotation(float r, float dir) { llTargetOmega(<0,0,1>,(dir*PI/r),1.0); } default { state_entry() { //llOwnerSay("Hi"); } touch_start(integer total_number) { if (spinON == FALSE) { spinON = TRUE; llSetTimerEvent(1.0); } else { spinON = FALSE; llSetTimerEvent(0.0); llTargetOmega(ZERO_VECTOR,0,0); } } timer() { float rateDenominator; float spinDirection; float secondsTillNextChange; // get a new rate between 10.0 and 50.0 rateDenominator = llFrand(40.6) + 10.0; if (llFrand(1.1)< 0.5) { spinDirection = -1.0; } else { spinDirection = 1.0; } //llTargetOmega(<0,0,1>,(spinDirection*PI/rateDenominator),1.0); THIS DOES NOT WORK //llTargetOmega(<0,0,1>,-PI/48,1.0); THIS DOES NOT WORK ChangeRotation(rateDenominator, spinDirection); // This works // randomly set next change between 20.0 seconds and 60.0 seconds llSetTimerEvent(secondsTillNextChange); } }
  13. I called llTargetOmega from within timer() and nothing happens. I moved llTargetOmega into a function *called* from the same line in timer() and it works as expected. Is this really a thing? If so, anyone have an explanation? The doc doesn't seem to say anything negative about calling llTargetOmega from within an event handler, or I missed it. Furthermore, how is a function call that executes llTargetOmega any different than calling it directly vis a vis the event queue model. Severely puzzled, G
  14. Thanks All!! Nick, that website is perfect. Got the animated gif and script in a minute or so! Now, any way to stream a video to a prim face??? Thanks, G
  15. Thanks. Then just run it as you would any animated texture. Got it. G
  16. Is it possible to run an animated GIF, Gyazo variety, in a loop as a texture on an object? Thanks, G
  17. Rolig, While starting to read the Bug_Tracker page the thought occurred to me that this probably wouldn't be considered a 'bug' by the powers that be. Probably more like a feature request. I have seen a page for feature requests. I'll poke around and see if I can find it. G
  18. I am doing the same. And often get myself confused. On my current project I have two objects and two scripts. One object with its script goes into the Contents of the other object. I try to keep version numbers the same for all four assets. But even being careful I realized yesterday that I was using v0.8.3 of one script when all the others were v0.9.0. And, one script reference the other object by name so I have to update that in the code when I change versions. sighs...
  19. How to I file a jira issue? Happy to do so. on illegal chars, also, '.', when it isn't in x.y format, can cause weirdness.. but easy enough to do a replace when the name goes out to the external editor and to use only the UUID when the file is saved and thus goes back in-world. G
  20. Ah, right. It has, I'll admit, taken me a bit of time to get used to having more than one file in an inventory 'directory' with the same name, whether they are the same file or different files lol. I get that names of assets in SL are display names and the underlying names in the OS filesystem are unique. Just, a bit different to get used to. G
  21. Quick question for those who use Sublime Text as an external editor for editing scripts. Then I click 'Edit' on a script up in-world Sublime Text opens the file fine but the filename displayed in the tab of Sublime Text is of the following format, sl_script_<UUID>.lsl. I would greatly prefer to see the in-world name of the script file in the tab. Any ideas? Thanks, G
×
×
  • Create New...