rust-xplm icon indicating copy to clipboard operation
rust-xplm copied to clipboard

Accessing array datarefs

Open realskudd opened this issue 1 year ago • 2 comments

I'd like to be able to read and write sim/flightmodel/weight/m_fuel, but with it being an array of floats, I'm not entirely sure how to make it work with xplm.

I've tried this:

        let fuel_weights: DataRef<f64, ReadOnly> = DataRef::find("sim/flightmodel/weight/m_fuel")?;

        let tanks = fuel_weights.get();
        let tank1 = tanks[0];
        let tank2 = tanks[1];

But it's not valid, given the f64 that .get() returns.

What's the right way to accomplish this? Is it even implemented yet?

realskudd avatar Mar 08 '24 17:03 realskudd

This is not obvious and there probably should be more examples, but it should work:

  • Create a DataRef<[f32], ReadOnly> or DataRef<[f32], ReadWrite>
  • That implements ArrayRead<[f32]>
  • Call as_vec to get a Vec<f32> with a copy of the dataref values. If performance is important, you can instead use get with a pre-allocated buffer.

samcrow avatar Mar 09 '24 01:03 samcrow