public void addPose(string gameObjectName, float time, HmdMatrix34_t trackingInfo, VRControllerState_t controllerState) { if (!started) { return; } bool populated = false; while (!populated) { if (currentKeyframe == null || time > currentKeyframe.time + RECORD_FREQUENCY) { if (currentKeyframe == null) { currentKeyframe = new VrKeyframe(); } currentKeyframe.time = currentKeyframe == null ? 0 : currentKeyframe.time + RECORD_FREQUENCY; currentKeyframe.m0 = trackingInfo.m0; currentKeyframe.m1 = trackingInfo.m1; currentKeyframe.m2 = trackingInfo.m2; currentKeyframe.m3 = trackingInfo.m3; currentKeyframe.m4 = trackingInfo.m4; currentKeyframe.m5 = trackingInfo.m5; currentKeyframe.m6 = trackingInfo.m6; currentKeyframe.m7 = trackingInfo.m7; currentKeyframe.m8 = trackingInfo.m8; currentKeyframe.m9 = trackingInfo.m9; currentKeyframe.m10 = trackingInfo.m10; currentKeyframe.m11 = trackingInfo.m11; currentKeyframe.controllerState = controllerState; populated = true; String str = String.Format("({13}) # ({0}) # {1}/{2}/{3}/{4}/{5}/{6}/{7}/{8}/{9}/{10}/{11}/{12}/{13}/{14}/{15}/{16}/{17}/{18}/{19}/{20}/{21}/{22}/{23}/{24}/{25}", currentKeyframe.time, currentKeyframe.m0, currentKeyframe.m1, currentKeyframe.m2, currentKeyframe.m3, currentKeyframe.m4, currentKeyframe.m5, currentKeyframe.m6, currentKeyframe.m7, currentKeyframe.m8, currentKeyframe.m9, currentKeyframe.m10, currentKeyframe.m11, currentKeyframe.controllerState.ulButtonPressed, currentKeyframe.controllerState.ulButtonTouched, currentKeyframe.controllerState.rAxis0.x, currentKeyframe.controllerState.rAxis0.y, currentKeyframe.controllerState.rAxis1.x, currentKeyframe.controllerState.rAxis1.y, currentKeyframe.controllerState.rAxis2.x, currentKeyframe.controllerState.rAxis2.y, currentKeyframe.controllerState.rAxis3.x, currentKeyframe.controllerState.rAxis3.y, currentKeyframe.controllerState.rAxis4.x, currentKeyframe.controllerState.rAxis4.y, gameObjectName ); trackerArray.Add(str); } else { populated = true; } } }
private void load(string trackerDataFile) { if (new FileInfo(trackerDataFile).Exists == false) { return; } using (FileStream fs = File.OpenRead(trackerDataFile)) { using (StreamReader sr = new StreamReader(fs)) { String line; while ((line = sr.ReadLine()) != null) { String[] parts = line.Split('#'); if (parts[0].StartsWith("(")) { VrKeyframe frame = new VrKeyframe(); frame.name = parts[0].Trim(); if (frame.name.StartsWith("(") && frame.name.EndsWith(")")) { frame.name = frame.name.Substring(1, frame.name.Length - 2); } String timeStr = parts[1].Trim(); if (timeStr.StartsWith("(") && timeStr.EndsWith(")")) { timeStr = timeStr.Substring(1, timeStr.Length - 2); } frame.time = Convert.ToSingle(timeStr); if (clipDuration < frame.time) { clipDuration = frame.time; } String[] mBits = parts[2].Trim().Split('/'); frame.m0 = Convert.ToSingle(mBits[0]); frame.m1 = Convert.ToSingle(mBits[1]); frame.m2 = Convert.ToSingle(mBits[2]); frame.m3 = Convert.ToSingle(mBits[3]); frame.m4 = Convert.ToSingle(mBits[4]); frame.m5 = Convert.ToSingle(mBits[5]); frame.m6 = Convert.ToSingle(mBits[6]); frame.m7 = Convert.ToSingle(mBits[7]); frame.m8 = Convert.ToSingle(mBits[8]); frame.m9 = Convert.ToSingle(mBits[9]); frame.m10 = Convert.ToSingle(mBits[10]); frame.m11 = Convert.ToSingle(mBits[11]); frame.controllerState.ulButtonPressed = Convert.ToUInt64(mBits[12]); frame.controllerState.ulButtonTouched = Convert.ToUInt64(mBits[13]); frame.controllerState.rAxis0.x = Convert.ToSingle(mBits[14]); frame.controllerState.rAxis0.y = Convert.ToSingle(mBits[15]); frame.controllerState.rAxis1.x = Convert.ToSingle(mBits[16]); frame.controllerState.rAxis1.y = Convert.ToSingle(mBits[17]); frame.controllerState.rAxis2.x = Convert.ToSingle(mBits[18]); frame.controllerState.rAxis2.y = Convert.ToSingle(mBits[19]); frame.controllerState.rAxis3.x = Convert.ToSingle(mBits[20]); frame.controllerState.rAxis3.y = Convert.ToSingle(mBits[21]); frame.controllerState.rAxis4.x = Convert.ToSingle(mBits[22]); frame.controllerState.rAxis4.y = Convert.ToSingle(mBits[23]); linkedList.AddLast(frame); } } } } }