import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.ColorFormat
import org.openrndr.draw.ColorType
import org.openrndr.draw.colorBuffer
import org.openrndr.draw.tint
import org.openrndr.extra.realsense2.RS2Sensor

/**
 * show how to use multiple RealSense sensors
 *
 * Tested with two sensors, only uses depth stream now
 */
fun main() {
    application {
        configure {
            width = 1280
            height = 720
        }
        program {
            val sensorDescriptions = RS2Sensor.listSensors()

            val sensors = sensorDescriptions.map {
                it.open()
            }

            val depthFrames = sensors.map {
                colorBuffer(640, 480, format = ColorFormat.R, type = ColorType.UINT16)
            }
            sensors.forEachIndexed { index, it ->
                it.depthFrameReceived.listen {
                    it.copyTo(depthFrames[index])
                }
            }
            extend {
                drawer.drawStyle.colorMatrix = tint(ColorRGBa.WHITE.shade(20.0))
                for ((index, sensor) in sensors.withIndex()) {
                    sensor.waitForFrames()
                    drawer.image(depthFrames[index])
                    drawer.translate(640.0, 0.0)
                }
            }
        }
    }
}