/// Input from a float source, value's coming in from 0-100 and should be tamped down to 0-1. public static void SetValues(this RTable <double> instance, Godot.Collections.Dictionary input) { // GD.Print("attempting to assign RTable......."); // GD.Print(input["values"].GetType()); //Structure of dict: {values=[PoolRealArray tbl], floor=0, ceiling=100, use_log=false...} instance.floor = Convert.ToDouble(input["floor"]); instance.ceiling = Convert.ToDouble(input["ceiling"]); instance.use_log = Convert.ToBoolean(input["use_log"]); //Convert values to our maximum. var vals = (System.Single[])input["values"]; for (int i = 0; i < vals.Length; i++) { instance.values[i] = (double)vals[i] / 100.0; } instance.RecalcValues(); }
//Input from a serialized source, value's coming in from 0-1. public static void SetValues(this RTable <double> instance, GdsFMJson.JSONObject input, bool tableOnly = false) { // GD.Print("attempting to assign RTable......."); //Structure of dict: {values=[PoolRealArray tbl], floor=0, ceiling=100, use_log=false...} if (!tableOnly) { instance.floor = input.GetItem("floor", (float)instance.floor); instance.ceiling = input.GetItem("ceiling", (float)instance.ceiling); instance.use_log = input.GetItem("use_log", instance.use_log); } //Convert values to our maximum. var vals = (GdsFMJson.JSONArray)input.GetItem("values"); for (int i = 0; i < vals.Length; i++) { instance.values[i] = vals[i].ToFloat(); } instance.RecalcValues(); }