Normally, we would like to hide the mouse pointer when we call 
glfwSetInputMode(windows, 
GLFW_CURSOR, GLFW_CURSOR_HIDDEN); in C++, but that doesn't always happen 
from user event. It could be generated from the game script trying to hide 
mouse pointer in specific cases.

As you suspected, this needs to be a user event that triggers the pointer 
lock. Turns out it works if I do this:

canvas.onclick = function() {
    canvas.requestPointerLock();
}

I haven't tried SDL and Glut, but most likely its the same limitation. Does 
anyone know of a good workaround so that we don't require the user's input 
to do this?

Thanks!


On Friday, November 6, 2015 at 11:53:53 AM UTC-5, Alon Zakai wrote:
>
> Does it work in SDL and glut on your browser? There have been browser bugs 
> in the past.
>
> If it does work in them, then there must be some difference. One possible 
> issue is that there needs to be a user event that triggers the pointer 
> lock. What originates the call to there?
>
> Is there an error in the web console.?
>
> On Fri, Nov 6, 2015 at 8:14 AM, Robert Goulet <[email protected] 
> <javascript:>> wrote:
>
>> Greetings!
>>
>> I tried to implement the missing glfwSetInputMode with the following code:
>>
>>     setInputMode: function(winid, mode, value) {
>>       var win = GLFW.WindowFromId(winid);
>>       if (!win) return;
>>
>>       switch(mode) {
>>         case 0x00033001: // GLFW_CURSOR
>>         {
>>           switch(value) {
>>             case 0x00034001: // GLFW_CURSOR_NORMAL
>>               win.inputModes[mode] = value;
>>               Module['canvas'].exitPointerLock();
>>               break;
>>
>>             case 0x00034002: // GLFW_CURSOR_HIDDEN
>>               console.log("glfwSetInputMode called with 
>> GLFW_CURSOR_HIDDEN value not implemented.");
>>               break;
>>
>>             case 0x00034003: // GLFW_CURSOR_DISABLED
>>               win.inputModes[mode] = value;
>>               Module['canvas'].requestPointerLock();
>>               break;
>>             
>>             default:
>>               console.log("glfwSetInputMode called with unknown value 
>> parameter value: " + value + ".");
>>               break;
>>           }
>>         }
>>         break;
>>
>>         case 0x00033002: // GLFW_STICKY_KEYS
>>           console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode 
>> not implemented.");
>>           break;
>>
>>         case 0x00033003: // GLFW_STICKY_MOUSE_BUTTONS
>>           console.log("glfwSetInputMode called with 
>> GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");
>>           break;
>>
>>         default:
>>           console.log("glfwSetInputMode called with unknown mode 
>> parameter value: " + mode + ".");
>>           break;
>>       }
>>     },
>>
>> But it is not working for me. I did the exact same call as in SDL and 
>> Glut implementation. I verified that the flow control does indeed get to 
>> execute Module['canvas'].requestPointerLock(); and that both 
>> Module['canvas'] and Module['canvas'].requestPointerLock are not null 
>> pointers. So it does properly call the function, but the browser is not 
>> doing anything at all. Any idea why this is not working?
>>
>> Thanks!
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to