예제 #1
0
    /// TODO:  Get and Set for clipboard compatible data.  Use a JSONObject with iotype and table only...?
    public GdsFMJson.JSONObject JsonMetadata()
    {
        var output = new GdsFMJson.JSONObject();
        var v      = new GdsFMJson.JSONArray();

        if (typeof(T) == typeof(float) || typeof(T) == typeof(double))
        {
            for (int i = 0; i < values.Length; i++)
            {
                v.AddPrim((float)Convert.ChangeType(values[i], typeof(float)));
            }
        }
        else if (typeof(T) == typeof(int) || typeof(T) == typeof(byte) || typeof(T) == typeof(short))
        {
            for (int i = 0; i < values.Length; i++)
            {
                v.AddPrim((int)Convert.ChangeType(values[i], typeof(int)));
            }
        }

        output.AddItem("values", v);
        output.AddPrim("floor", floor);
        output.AddPrim("ceiling", ceiling);
        output.AddPrim("use_log", use_log);

        return(output);
    }
예제 #2
0
    //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();
    }