fabmax / physx-js-webidl

Javascript WASM bindings for Nvidia PhysX
MIT License
121 stars 28 forks source link

Running as node.js server #16

Open EibrielInv opened 2 years ago

EibrielInv commented 2 years ago

Hi!

I'm looking to run the library on Node for the server of a game, but I'm running with issues: self or document not defined on lines 189 and 191

I'm not able to set the correct combination of ENVIRONMENT variables :

// Determine the runtime environment we are in. You can customize this by
// setting the ENVIRONMENT setting at compile time (see settings.js).

var ENVIRONMENT_IS_WEB = false;
var ENVIRONMENT_IS_WORKER = false;
var ENVIRONMENT_IS_NODE = true;
var ENVIRONMENT_IS_SHELL = false;

What should I do to run the library on a Node script, in the command line?

fabmax commented 2 years ago

I think you have to recompile the library to use it with Node. It should be enough to follow the Build Instructions and change the emscripten environment mode to node before executing the generate and build steps.

To change the environment mode you have to edit the cmake script PhysX/physx/source/compiler/cmake/emscripten/PhysXWebBindings.cmake. In line 49 the ENVIRONMENT is set. I assume you have to change web to node here. I never tried this though.

EibrielInv commented 2 years ago

Thanks, will give it a try

JohnnyStreet commented 1 year ago

Can anyone please provide any updated info on this subject? I just set up a linux VM for the sole purposes of trying these steps. I was able to build with docker but I get Error: environment detection error at runtime.

regnaio commented 2 months ago

Thank you for the pointer, @fabmax

@JohnnyStreet I made the change in the file:

./physx-js-webidl/PhysX/physx/source/compiler/cmake/emscripten/PhysXWasmBindings.cmake:

# Replace
-s ENVIRONMENT=web,worker

# with
-s ENVIRONMENT=node,worker

This appears to work in Node