@Override
    public void onCameraTransformUpdate(float posX, float poxY, float posZ,
                                        float rotEulerX, float rotEulerY, float rotEulerZ,
                                        float forwardX, float forwardY, float forwardZ,
                                        float upX, float upY, float upZ) {
        VRTComponent node = weakComponent.get();
        if (node == null) {
            return;
        }

        // This applies to all scenes (AR and non-AR)
        if (node instanceof VRTScene) {
            final VRTScene scene = (VRTScene) node;

            WritableMap event = Arguments.createMap();

            WritableArray cameraTransformArray = Arguments.createArray();
            cameraTransformArray.pushDouble(posX);
            cameraTransformArray.pushDouble(poxY);
            cameraTransformArray.pushDouble(posZ);
            cameraTransformArray.pushDouble(Math.toDegrees(rotEulerX));
            cameraTransformArray.pushDouble(Math.toDegrees(rotEulerY));
            cameraTransformArray.pushDouble(Math.toDegrees(rotEulerZ));
            cameraTransformArray.pushDouble(forwardX);
            cameraTransformArray.pushDouble(forwardY);
            cameraTransformArray.pushDouble(forwardZ);
            cameraTransformArray.pushDouble(upX);
            cameraTransformArray.pushDouble(upY);
            cameraTransformArray.pushDouble(upZ);

            event.putArray("cameraTransform", cameraTransformArray);

            scene.getReactContext().getJSModule(RCTEventEmitter.class).receiveEvent(
                    scene.getId(),
                    ViroEvents.ON_CAMERA_TRANSFORM_UPDATE,
                    event);
        }
    }
Represents all java-to-javascript calls that can be triggered from an EventDelegate.
android/viro_bridge/src/main/java/com/viromedia/bridge/utility/ComponentEventDelegate.java