/*internal void flyByWire(Vector3 camPos, Vector3 camRot, float scale, Vector3 modelRot) { RecorderFrame frame; frame. }*/ internal void flyByWire(RecorderFrame frameData, PreloadedModelsStorage modelStorage, bool forceCam) { if (forceCam) { //MonoBehaviour.print("Forcing cam to "+frameData.camPos+" , "+frameData.camRot); OVRcamRig.transform.position = frameData.camPos; OVRcamRig.transform.rotation = Quaternion.Euler(frameData.camRot); } if (frameData.textState == RecorderFrame.TEXTSTATE.BIG | frameData.textState == RecorderFrame.TEXTSTATE.BOTH) { setBigText(frameData.bigText); } if (frameData.textState == RecorderFrame.TEXTSTATE.STATE | frameData.textState == RecorderFrame.TEXTSTATE.BOTH) { setStateText(frameData.stateText); } currentZoom = frameData.modelScale; currentRotEuler = frameData.modelRot; for (int i = 0; i < frameData.modelIDs.Length; i++) { MonoBehaviour.print("Assinging model "+frameData.modelFilenames[i]+" to "+frameData.modelIDs[i]); assignSpecific(frameData.modelIDs[i], modelStorage.getModelForcedLoad(frameData.modelFilenames[i])); } }
// Update is called once per frame void FixedUpdate() { if (open) { RecorderFrame frame = new RecorderFrame(); Transform camTransform = GlobalStateHolder.unityInterface.OVRcamera.GetComponent<Transform>(); frame.camPos = camTransform.position; //MonoBehaviour.print(camTransform.name+"(camPos) is "+frame.camPos); frame.camRot = camTransform.rotation.eulerAngles; frame.modelScale = GlobalStateHolder.unityInterface.getCurrentScale(); frame.modelRot = GlobalStateHolder.unityInterface.getCurrentRotation(); //MonoBehaviour.print("scale " + frame.modelScale + " rot " + frame.modelRot); Model[] duplet = GlobalStateHolder.unityInterface.getCurrentDuplet(); if (duplet == null) duplet = new Model[2]; Model[] triplet = GlobalStateHolder.unityInterface.getCurrentTriplet(); if (triplet == null) triplet = new Model[3]; Model[] models = duplet.Concat(triplet).ToArray(); int modelDiff = 0; for (int i = 0; i < models.Length; i++) { if (models[i] != currentModels[i]) { modelDiff++; if (models[i] != null) addUsedModel(models[i]); } } frame.modelIDs = new int[modelDiff]; frame.modelFilenames = new string[modelDiff]; int modelPos = 0; for (int i = 0; i < models.Length; i++) { if (models[i] != currentModels[i]) { currentModels[i] = models[i]; frame.modelIDs[modelPos] = i; if (models[i] != null) frame.modelFilenames[modelPos] = models[i].Path; else frame.modelFilenames[modelPos] = "NO_MODEL"; modelPos++; } } string stateText = GlobalStateHolder.unityInterface.getStateText(); string bigText = GlobalStateHolder.unityInterface.getBigText(); //MonoBehaviour.print("bigText:" + bigText); if ((currentStateText.CompareTo(stateText) != 0)) { frame.stateText = stateText; currentStateText = stateText; } if ((currentBigText.CompareTo(bigText) != 0)) { frame.bigText = bigText; currentBigText = bigText; } frame.textState = RecorderFrame.TEXTSTATE.NONE; if (frame.stateText != null & frame.bigText != null) frame.textState = RecorderFrame.TEXTSTATE.BOTH; else { if (frame.stateText != null) frame.textState = RecorderFrame.TEXTSTATE.STATE; if (frame.bigText != null) frame.textState = RecorderFrame.TEXTSTATE.BIG; } frame.write(writer); MonoBehaviour.print("Wrote recorder frame"); //IMCOScreen currentScreen = unityInterface.g } }