Esempio n. 1
0
        private T getProperty <T>(FBXJSAPI api, string name)
        {
            fbxvariant jsvalue = new fbxvariant();

            api.GetProperty(name, jsvalue);
            return(Converter.ToNet3 <T>(jsvalue));
        }
Esempio n. 2
0
        public static void initialize(string entryInfo, FBXJSAPI jsapi, out FBXJSAPI context, out string options)
        {
            string[] args = entryInfo.Split(new char[] { '|' }, 3);
            // args = [0] IntPtr to FBXJSAPI* result, [1] IntPtr to FBXJSAPI* context, [2] passed options

            IntPtr result = (IntPtr)System.Convert.ToInt64(args[0], 16);
            Marshal.WriteIntPtr(result, FBXJSAPI.getCPtr(jsapi).Handle);

            IntPtr contextPtrPtr = (IntPtr)System.Convert.ToInt64(args[1], 16);
            IntPtr contextPtr = Marshal.ReadIntPtr(contextPtrPtr);
            context = new FBXJSAPI(contextPtr, false);

            options = args[2];
        }
Esempio n. 3
0
        public JSObject(FBXJSAPI WrappedObject)
        {
            wrappedObject = WrappedObject;

            /*fbxvariant prototype = new fbxvariant();
             * FBXResult jsresult = wrappedObject.GetProperty("prototype", prototype);
             * if (jsresult.success && prototype.get_type() == "object")
             * {
             *  ObjectJSAPI api = prototype.get_object() as ObjectJSAPI;
             *  if (api != null)
             *  {
             *      type = api.wrappedObject as Type;
             *  }
             * }*/
        }
Esempio n. 4
0
        public void testXMLHTTPRequest(FBXJSAPI xmlHttpClass)
        {
            // var req = new XMLHttpRequest();
            fbxvariant jsxmlreq = new fbxvariant();

            xmlHttpClass.Construct(new VariantVector(), jsxmlreq);
            FBXJSAPI req = Converter.ToNet3 <FBXJSAPI>(jsxmlreq);
            // req.open('GET', 'http://www.google.com', false);
            fbxvariant intermediateResult = new fbxvariant();

            req.Invoke("open", Converter.FromNet2(new object[] { "GET", "./FBControl.htm", false }), intermediateResult);
            // req.send(null);
            req.Invoke("send", Converter.FromNet2(new object[] { null }), intermediateResult);
            // alert(req.responseText);
            MessageBox.Show(getProperty <string>(req, "responseText"), "content of http://www.google.com is...");
        }
Esempio n. 5
0
        public static void initialize(string entryInfo, FBXJSAPI jsapi, out FBXJSAPI context, out string options)
        {
            string[] args = entryInfo.Split(new char[] { '|' }, 3);
            // args = [0] IntPtr to FBXJSAPI* result, [1] IntPtr to FBXJSAPI* context, [2] passed options

            IntPtr result = (IntPtr)System.Convert.ToInt64(args[0], 16);

            Marshal.WriteIntPtr(result, FBXJSAPI.getCPtr(jsapi).Handle);

            IntPtr contextPtrPtr = (IntPtr)System.Convert.ToInt64(args[1], 16);
            IntPtr contextPtr    = Marshal.ReadIntPtr(contextPtrPtr);

            context = new FBXJSAPI(contextPtr, false);

            options = args[2];
        }
Esempio n. 6
0
        public static Object ToNet2(fbxvariant value, Type targetType)
        {
            switch (value.get_type())
            {
            case "bool":
                if (targetType.IsAssignableFrom(typeof(bool)))
                {
                    return(value.get_bool());
                }
                break;

            case "int":
                if (targetType.IsAssignableFrom(typeof(int)))
                {
                    return(value.get_int());
                }
                break;

            case "uint":
                if (targetType.IsAssignableFrom(typeof(uint)))
                {
                    return(value.get_uint());
                }
                break;

            case "double":
            {
                Double v = value.get_double();
                if (targetType.IsAssignableFrom(typeof(double)))
                {
                    return(v);
                }
                if (targetType.IsAssignableFrom(typeof(int)) && (v == (int)v))
                {
                    return((int)v);
                }
            }
            break;

            case "float":
                if (targetType.IsAssignableFrom(typeof(float)))
                {
                    return(value.get_float());
                }
                break;

            case "wstring":
                if (targetType.IsAssignableFrom(typeof(string)))
                {
                    return(value.get_wstring());
                }
                break;

            case "short":
                if (targetType.IsAssignableFrom(typeof(short)))
                {
                    return(value.get_short());
                }
                break;

            case "ushort":
                if (targetType.IsAssignableFrom(typeof(ushort)))
                {
                    return(value.get_ushort());
                }
                break;

            case "char":
                if (targetType.IsAssignableFrom(typeof(char)))
                {
                    return(value.get_char());
                }
                break;

            case "uchar":
                if (targetType.IsAssignableFrom(typeof(byte)))
                {
                    return(value.get_uchar());
                }
                break;

            case "int64":
                if (targetType.IsAssignableFrom(typeof(Int64)))
                {
                    return(value.get_int64());
                }
                break;

            case "uint64":
                if (targetType.IsAssignableFrom(typeof(UInt64)))
                {
                    return(value.get_uint64());
                }
                break;

            case "null":
                if (targetType.IsAssignableFrom(typeof(Nullable)))
                {
                    return(null);
                }
                break;

            case "empty":
                if (targetType.IsAssignableFrom(typeof(Nullable)))
                {
                    return(null);
                }
                break;

            case "object":
            {
                FBXJSAPI v = value.get_object();
                if (targetType.IsAssignableFrom(typeof(FBXJSAPI)))
                {
                    return(v);
                }
                else
                {
                    dynamic    jsObj              = new JSObject(v);
                    int        testInt            = jsObj;
                    Expression conversion         = Expression.Convert(Expression.Constant(jsObj), targetType);
                    Type       delegateType       = typeof(Func <>).MakeGenericType(targetType);
                    Delegate   conversionDelegate = Expression.Lambda(delegateType, conversion).Compile();
                    var        result             = conversionDelegate.DynamicInvoke();
                    return(result);
                }
            }
            }

            throw new InvalidCastException("Cannot cast object of type '" + value.get_type() + "' to type '" + targetType.Name + "'");
        }
Esempio n. 7
0
 public static dynamic js(this FBXJSAPI api)
 {
     return(new JSObject(api));
 }