Skip to content
This repository has been archived by the owner on Feb 28, 2024. It is now read-only.

[BUG-5763] AGENT_MOUSELOOK flag is often incorrect when llGetAgentInfo() is called within control() event #13684

Open
5 tasks
sl-service-account opened this issue Apr 16, 2014 · 1 comment

Comments

@sl-service-account
Copy link

sl-service-account commented Apr 16, 2014

Steps to Reproduce

  1. Save the below script in a box, and wear the box on a HUD position

  2. Enter mouselook

  3. Crouch periodically to trigger the script's control event (and have it update the floating text)

  4. Verify whether "_MOUSELOOK" always appears when the agent is in mouselook
    I found that "_MOUSELOOK" only appears sometimes in this case (it seems to trigger sometimes when the key press is released).

    default
    {
        state_entry()
        {
            llSetScale(<0.2, 0.2, 0.2>);
            llSetTimerEvent(0.5);
            llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
        }
        attach(key id)
        {
            if(id != NULL_KEY) llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
        }
        run_time_permissions(integer perm)
        {
            if(perm & PERMISSION_TAKE_CONTROLS)
            {
                llOwnerSay("taking controls");
                llTakeControls(CONTROL_DOWN, TRUE, TRUE);
            }
        }
        control(key agent, integer level, integer edge)
        {
                integer agentinfo = llGetAgentInfo(llGetOwner());
                list info_list = ["llGetAgentInfo() for owner"];
                /*if(agentinfo & AGENT_AWAY) info_list += "_AWAY";
                if(agentinfo & AGENT_BUSY) info_list += "_BUSY";
                if(agentinfo & AGENT_SITTING) info_list += "_SITTING";
                if(agentinfo & AGENT_ON_OBJECT) info_list += "_ON_OBJECT";
                if(agentinfo & AGENT_ALWAYS_RUN) info_list += "_ALWAYS_RUN";
                if(agentinfo & AGENT_FLYING) info_list += "_FLYING";
                if(agentinfo & AGENT_WALKING) info_list += "_WALKING";*/
                if(agentinfo & AGENT_MOUSELOOK) info_list += "_MOUSELOOK";
                /*if(agentinfo & AGENT_TYPING) info_list += "_TYPING";
                if(agentinfo & AGENT_ATTACHMENTS) info_list += "_ATTACHMENTS";
                if(agentinfo & AGENT_AUTOPILOT) info_list += "_AUTOPILOT";
                if(agentinfo & AGENT_CROUCHING) info_list += "_CROUCHING";
                if(agentinfo & AGENT_IN_AIR) info_list += "_IN_AIR";
                if(agentinfo & AGENT_SCRIPTED) info_list += "_SCRIPTED";*/
                info_list += "at " + llGetTimestamp();
                llSetText(llDumpList2String(info_list, "\n"), <0,1,0>, 1.0);�
        }
    }

Actual Behavior

In Second Life RC Magnum 14.04.11.288970, it seems that when llGetAgentInfo() is called within control() event and the agent is in mouselook, the AGENT_MOUSELOOK flag is often unset, incorrectly. This is a regression.

Expected Behavior

The AGENT_MOUSELOOK flag should always be set when the agent is in mouselook.

Other information

  • I do not see this bug when the function is called in other events, such as timer().
  • When I'm not in mouselook, AGENT_MOUSELOOK is always disabled, as expected.
  • This issue is almost certainly related to the BUG-5533 fix

Links

Related

Duplicates

Original Jira Fields
Field Value
Issue BUG-5763
Summary AGENT_MOUSELOOK flag is often incorrect when llGetAgentInfo() is called within control() event
Type Bug
Priority Unset
Status Accepted
Resolution Accepted
Reporter Maestro Linden (maestro.linden)
Created at 2014-04-16T21:40:27Z
Updated at 2014-04-22T17:21:02Z
{
  'Business Unit': ['Platform'],
  "Is there anything you'd like to add?": "* I do not see this bug when the function is called in other events, such as timer().\r\n* When I'm not in mouselook, AGENT_MOUSELOOK is always disabled, as expected.\r\n* This issue is almost certainly related to the BUG-5533 fix",
  'Regression?': ['Issue is a Regression'],
  'System': 'SL Simulator',
  'Target Viewer Version': 'viewer-development',
  'What just happened?': 'In Second Life RC Magnum 14.04.11.288970, it seems that when llGetAgentInfo() is called within control() event and the agent is in mouselook, the AGENT_MOUSELOOK flag is often unset, incorrectly.  This is a regression.\r\n\r\n',
  'What were you doing when it happened?': '# Save the below script in a box, and wear the box on a HUD position\r\n# Enter mouselook\r\n# Crouch periodically to trigger the script\'s control event (and have it update the floating text)\r\n# Verify whether "_MOUSELOOK" always appears when the agent is in mouselook\r\nI found that "_MOUSELOOK" only appears sometimes in this case (it seems to trigger sometimes when the key press is released).\r\n\r\n{code}default\r\n{\r\n    state_entry()\r\n    {\r\n        llSetScale(<0.2, 0.2, 0.2>);\r\n        llSetTimerEvent(0.5);\r\n        llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);\r\n    }\r\n    attach(key id)\r\n    {\r\n        if(id != NULL_KEY) llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);\r\n    }\r\n    run_time_permissions(integer perm)\r\n    {\r\n        if(perm & PERMISSION_TAKE_CONTROLS)\r\n        {\r\n            llOwnerSay("taking controls");\r\n            llTakeControls(CONTROL_DOWN, TRUE, TRUE);\r\n        }\r\n    }\r\n    control(key agent, integer level, integer edge)\r\n    {\r\n            integer agentinfo = llGetAgentInfo(llGetOwner());\r\n            list info_list = ["llGetAgentInfo() for owner"];\r\n            /*if(agentinfo & AGENT_AWAY) info_list += "_AWAY";\r\n            if(agentinfo & AGENT_BUSY) info_list += "_BUSY";\r\n            if(agentinfo & AGENT_SITTING) info_list += "_SITTING";\r\n            if(agentinfo & AGENT_ON_OBJECT) info_list += "_ON_OBJECT";\r\n            if(agentinfo & AGENT_ALWAYS_RUN) info_list += "_ALWAYS_RUN";\r\n            if(agentinfo & AGENT_FLYING) info_list += "_FLYING";\r\n            if(agentinfo & AGENT_WALKING) info_list += "_WALKING";*/\r\n            if(agentinfo & AGENT_MOUSELOOK) info_list += "_MOUSELOOK";\r\n            /*if(agentinfo & AGENT_TYPING) info_list += "_TYPING";\r\n            if(agentinfo & AGENT_ATTACHMENTS) info_list += "_ATTACHMENTS";\r\n            if(agentinfo & AGENT_AUTOPILOT) info_list += "_AUTOPILOT";\r\n            if(agentinfo & AGENT_CROUCHING) info_list += "_CROUCHING";\r\n            if(agentinfo & AGENT_IN_AIR) info_list += "_IN_AIR";\r\n            if(agentinfo & AGENT_SCRIPTED) info_list += "_SCRIPTED";*/\r\n            info_list += "at " + llGetTimestamp();\r\n            llSetText(llDumpList2String(info_list, "\\n"), <0,1,0>, 1.0);\x07\r\n    }\r\n}{code}',
  'What were you expecting to happen instead?': 'The AGENT_MOUSELOOK flag should always be set when the agent is in mouselook.',
  'Where': 'http://maps.secondlife.com/secondlife/Magnum%20Sandbox%203/212/182/23',
}
@sl-service-account
Copy link
Author

Maestro Linden commented at 2014-04-17T00:03:57Z

A fix for this bug is on the beta grid, with DRTSIM-251 14.04.16.289178. So far, the fix seems to work - the repro script shows correct behavior, at least.

In case anybody wants to try out the fix firsthand, region "GC Test 10" is on this channel and allows anybody to build and run scripts:
secondlife://Aditi/secondlife/GC%20Test%2010/145/187/27

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant