View difference between Paste ID: ehxsKqnr and FDvRWvdT
SHOW: | | - or go back to the newest paste.
1
float spin_rate = 0.20;
2
float roll_rate = 0.00;
3
float yaw_rate  = 0.00;
4
5
integer LOCAL_AXIS = TRUE; 
6
7
string  CONTROLLER_ID = "A";
8
integer AUTO_START = TRUE;
9
10
rotation adjustment = ZERO_ROTATION;
11
12
integer iStarted = FALSE;
13
14
randomllTargetOmega()
15
{
16
        spin_rate = llFrand(2.0) - 1.0;
17
        roll_rate = llFrand(2.0) - 1.0;
18
        yaw_rate  = llFrand(2.0) - 1.0;
19
20
        llTargetOmega( <roll_rate, yaw_rate, spin_rate>*adjustment, 2.0, 2.0 );
21
}
22
default
23
{
24
    state_entry()
25
    {
26
        llSetTimerEvent(0.1);
27
28
        if ( LOCAL_AXIS ) adjustment = llGetRot();
29
30
        if ( AUTO_START )
31
        {
32
         iStarted = TRUE;
33
        }
34
35
    }
36
37
    link_message( integer sibling, integer num, string mesg, key target_key )
38
    {
39
        if ( mesg != CONTROLLER_ID )
40
        {
41
            return;
42
        }
43
        else if ( num == 0 )
44
        {
45
            llTargetOmega( <0, 0, 0>, 1.0, 1.0 );
46
            iStarted = FALSE;
47
            llSetLocalRot( llGetLocalRot() );
48
        }
49
        else if ( num == 1 )
50
        {
51
            iStarted = TRUE;
52
        }
53
        else
54
        {
55
        }
56
    }
57
    timer()
58
    {
59
     if (iStarted)
60
     {
61
      randomllTargetOmega();
62
     }
63
    }    changed(integer change)
64
    {
65-
        
65+
        if (change & CHANGED_LINK)
66
        {
67
            if (llGetNumberOfPrims() > 7)
68
            {
69
                if ( AUTO_START )
70
                {
71
                 iStarted = TRUE;
72
                }
73
            } else {
74
                if (iStarted)
75
                {
76
                    llTargetOmega( <0, 0, 0>, 1.0, 1.0 );
77
                    iStarted = FALSE;
78
                    llSetLocalRot( llGetLocalRot() );
79
                }
80
            }
81
        }
82
    }
83
}