(rigs: Map<RigId, Rig>)
| 109 | * Write rigs.bin. |
| 110 | */ |
| 111 | export function writeRigsBinary(rigs: Map<RigId, Rig>): ArrayBuffer { |
| 112 | const writer = new BinaryWriter(); |
| 113 | |
| 114 | writer.writeUint64FromNumber(rigs.size); |
| 115 | |
| 116 | for (const rigId of sortedKeys(rigs)) { |
| 117 | const rig = rigs.get(rigId)!; |
| 118 | |
| 119 | writer.writeUint32(rigId); |
| 120 | writer.writeUint32(rig.sensors.length); |
| 121 | |
| 122 | if (rig.sensors.length > 0) { |
| 123 | const refSensorType = rig.refSensorId?.type ?? 0; |
| 124 | const refSensorId = rig.refSensorId?.id ?? 0; |
| 125 | writer.writeInt32(refSensorType); |
| 126 | writer.writeUint32(refSensorId); |
| 127 | |
| 128 | for (let i = 1; i < rig.sensors.length; i++) { |
| 129 | const sensor = rig.sensors[i]; |
| 130 | writer.writeInt32(sensor.sensorId.type); |
| 131 | writer.writeUint32(sensor.sensorId.id); |
| 132 | writer.writeUint8(sensor.hasPose ? 1 : 0); |
| 133 | |
| 134 | if (sensor.hasPose && sensor.pose) { |
| 135 | writer.writeFloat64(sensor.pose.qvec[0]); |
| 136 | writer.writeFloat64(sensor.pose.qvec[1]); |
| 137 | writer.writeFloat64(sensor.pose.qvec[2]); |
| 138 | writer.writeFloat64(sensor.pose.qvec[3]); |
| 139 | writer.writeFloat64(sensor.pose.tvec[0]); |
| 140 | writer.writeFloat64(sensor.pose.tvec[1]); |
| 141 | writer.writeFloat64(sensor.pose.tvec[2]); |
| 142 | } |
| 143 | } |
| 144 | } |
| 145 | } |
| 146 | |
| 147 | return writer.toArrayBuffer(); |
| 148 | } |
| 149 | |
| 150 | /** |
| 151 | * Write frames.bin. |
no test coverage detected