private void updatePhysicsBodyProperties(ReadableMap map){
        if (map.hasKey("mass")) {
            float mass = (float)map.getDouble("mass");
            String bodyType = map.getString("type");
            String bodyTypeError = PhysicsBody.checkIsValidBodyType(bodyType, mass);
            if (bodyTypeError != null){
                throw new JSApplicationCausedNativeException(bodyTypeError);
            }
            mNodeJni.getPhysicsBody().setMass(mass);
        }

        if (map.hasKey("inertia")){
            ReadableArray paramsArray = map.getArray("inertia");
            float inertiaArray[] = new float[paramsArray.size()];
            for (int i = 0; i < paramsArray.size(); i ++){
                inertiaArray[i] = (float) paramsArray.getDouble(i);
            }

            if (inertiaArray.length != 3){
                throw new JSApplicationCausedNativeException("Incorrect parameters " +
                        "provided for inertia, expected: [x, y, z]!");
            }

            mNodeJni.getPhysicsBody().setMomentOfInertia(new Vector(inertiaArray));
        }

        if (map.hasKey("friction")) {
            mNodeJni.getPhysicsBody().setFriction((float)map.getDouble("friction"));
        }

        if (map.hasKey("restitution")) {
            mNodeJni.getPhysicsBody().setRestitution((float)map.getDouble("restitution"));
        }

        if (map.hasKey("enabled")) {
            mPhysicsEnabled = map.getBoolean("enabled");
        } else {
            mPhysicsEnabled = true;
        }
        mNodeJni.getPhysicsBody().setEnabled(shouldAppear() && mPhysicsEnabled);

        if (map.hasKey("useGravity")) {
            String bodyType = map.getString("type");
            if (!bodyType.equalsIgnoreCase("dynamic")){
                ViroLog.warn(TAG,"Attempted to set useGravity for non-dynamic phsyics bodies.");
            } else {
                mNodeJni.getPhysicsBody().setUseGravity(map.getBoolean("useGravity"));
            }
        }

        if (map.hasKey("velocity")) {
            ReadableArray paramsArray = map.getArray("velocity");
            float velocityArray[] = new float[paramsArray.size()];
            for (int i = 0; i < paramsArray.size(); i ++){
                velocityArray[i] = (float) paramsArray.getDouble(i);
            }

            if (velocityArray.length != 3){
                throw new JSApplicationCausedNativeException("Incorrect parameters " +
                        "provided for velocity, expected: [x, y, z]!");
            }

            mNodeJni.getPhysicsBody().setVelocity(new Vector(velocityArray), true);
        } else {
            mNodeJni.getPhysicsBody().setVelocity(new Vector(0, 0, 0), true);
        }
    }
Explicitly call setMaterials again with mMaterials. Allows children who override
setMaterials to modify them.
android/viro_bridge/src/main/java/com/viromedia/bridge/component/node/VRTNode.java