Create an ILArray of the needed size and use the incoming float[] System.Arrays directly in order to fill the values:
public void PlotPoints(float[] x, float[] y, float[] z) {
using (ILScope.Enter()) {
ILArray<float> starPositions = ILMath.zeros<float>(3, x.Length);
starPositions["0;:"] = x;
starPositions["1;:"] = y;
starPositions["2;:"] = z;
ilPanel1.Scene.First<ILPlotCube>().Add<ILPoints>(new ILPoints { Positions = starPositions });
// (... or update accordingly, if the shape exists already)
// at the end of all modifications, call Configure()
ilPanel1.Scene.Configure();
ilPanel1.Refresh();
}
}
Don't forget to call Configure() on the modified shape (or any parent node on the path to the root) afterwards! Also, I usually wrap all ILArray related code in an using (ILScope.Enter()) { ..
block. It helps to increase the performance for frequent updates significantly.