// Awake is called first at app startup.
 void Awake()
 {
     running = false;
     bridge  = new XRNativeBridge(enableRemote);
     bridge.Create(GetRenderingSystem());
     if (EnableRemote())
     {
         editorBridge = new XREditorBridge();
     }
     xrEnvironment = XRNativeBridge.GetXREnvironment();
     Application.targetFrameRate = 60;
 }
    void Update()
    {
        if (!explicitlyPaused)
        {
            RunIfPaused();
        }

        updateNumber++;

        if (EnableRemote())
        {
            bridge.SetEditorAppInfo(editorBridge.EditorAppInfo());

            bool firstConnect = false;
            if (!remoteConnected)
            {
                remoteConnected = bridge.IsRemoteConnected();
                firstConnect    = remoteConnected;
            }
            if (remoteConnected)
            {
                var remoteData = bridge.GetXRRemote();
                if (firstConnect)
                {
                    editorBridge.SetPlayerAspect(remoteData);
                    xrEnvironment = XRNativeBridge.GetXREnvironment();
                }
                editorBridge.SendDeviceInfo(remoteData);
                editorBridge.Update();

                // Send camera aspect info to editor on every frame, in case the preview size changes.
                ConfigureXR();
            }
            else
            {
                editorBridge.CheckADB();
            }
        }

        var r = GetCurrentReality();

        if (lastRealityMicros >= r.getEventId().getEventTimeMicros())
        {
            return;
        }
        lastRealityMicros = r.getEventId().getEventTimeMicros();
    }