public static Vector3 ToVector3(this JavaScriptValue v) { switch (v.ValueType) { case JavaScriptValueType.Array: var length = v.Length(); if (!length.HasValue || length.Value != 3) { return(new Vector3(0, 0, 0)); } return(new Vector3( (float)v.Get(0).ToDouble(), (float)v.Get(1).ToDouble(), (float)v.Get(2).ToDouble() )); case JavaScriptValueType.Object: if (v.Has("x") && v.Has("y") && v.Has("z")) { return(new Vector3( (float)v.Get("x").ConvertToNumber().ToDouble(), (float)v.Get("y").ConvertToNumber().ToDouble(), (float)v.Get("z").ConvertToNumber().ToDouble() )); } else { return(new Vector3(0, 0, 0)); } default: return(new Vector3(0, 0, 0)); } }
public static Color ToColor(this JavaScriptValue v) { switch (v.ValueType) { case JavaScriptValueType.String: var s = v.ToString(); // TODO: do this return(Color.White); case JavaScriptValueType.Object: if (v.Has("r") && v.Has("g") && v.Has("b")) { var a = v.Has("a") ? v.Get("a").ConvertToNumber().ToInt32() : 255; return(Color.FromByteFormat( (byte)v.Get("r").ConvertToNumber().ToInt32(), (byte)v.Get("g").ConvertToNumber().ToInt32(), (byte)v.Get("b").ConvertToNumber().ToInt32(), (byte)a)); } else { return(Color.White); } case JavaScriptValueType.Array: var length = v.Length(); if (length == 4) { return(Color.FromByteFormat( (byte)v.Get(0).ConvertToNumber().ToInt32(), (byte)v.Get(1).ConvertToNumber().ToInt32(), (byte)v.Get(2).ConvertToNumber().ToInt32(), (byte)v.Get(3).ConvertToNumber().ToInt32())); } else if (length == 3) { return(Color.FromByteFormat( (byte)v.Get(0).ConvertToNumber().ToInt32(), (byte)v.Get(1).ConvertToNumber().ToInt32(), (byte)v.Get(2).ConvertToNumber().ToInt32(), 0)); } else { return(Color.White); } default: return(Color.White); } }