コード例 #1
0
        protected IEnumerator UploadAndHandlePhoto(byte[] photo, Matrix4x4 cameraToWorldMatrix)
        {
            if (_photoTaken != null)
            {
                UnityMainThreadDispatcher.Instance().Enqueue(() => {
                    _photoTaken.Play();
                });
            }
            using (UnityWebRequest client = CreateRequest(photo)) {
                                #if UNITY_2017_2_OR_NEWER
                yield return(client.SendWebRequest());
                                #else
                yield return(client.Send());
                                #endif

                if (client.isNetworkError || client.isHttpError)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error + " - " + client.responseCode);
                    ReturnOrLoop(null, Vector3.zero, Quaternion.identity);
                }
                else
                {
                    string jsonString = client.downloadHandler.text;
                    // System.Text.Encoding.UTF8.GetString(client.downloadHandler.data)

                    // Position the camera for raycasting
                    Vector3    position = cameraToWorldMatrix.MultiplyPoint(Vector3.zero);
                    Quaternion rotation = Quaternion.LookRotation(-cameraToWorldMatrix.GetColumn(2), cameraToWorldMatrix.GetColumn(1));
                    ReturnOrLoop(jsonString, position, rotation);
                }
            }
        }
コード例 #2
0
        public override GameObject BuildScene(string name, bool saveToDisk = false)
        {
            try {
                Dictionary <int, JSONNode> dict = new Dictionary <int, JSONNode> ();
                foreach (KeyValuePair <string, JSONNode> pair in lmvtkDef)
                {
                    dict.Add(pair.Value ["id"].AsInt, pair.Value);
                }
                foreach (Eppy.Tuple <int, GameObject> index in dbIds)
                {
                    JSONNode jsonProps = dict [index.Item1];

                    ForgeProperties propertiesOnObj = index.Item2.AddComponent <ForgeProperties> ();
                    propertiesOnObj.Properties = jsonProps;

                    JSONNode j = FindProperty(jsonProps, "name");
                    if (j != null)
                    {
                        name = GetDefaultValueIfUndefined(j, "value", "");
                        if (!string.IsNullOrEmpty(name))
                        {
                            index.Item2.name = name;
                        }
                    }
                }
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            }

            base.BuildScene(name, saveToDisk);
            return(gameObject);
        }
コード例 #3
0
ファイル: RestClient.cs プロジェクト: jkredzvr/hox
        public virtual IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            using (client = UnityWebRequest.Get(uri.AbsoluteUri)) {
                foreach (DictionaryEntry entry in headers)
                {
                    client.SetRequestHeader(entry.Key.ToString(), entry.Value.ToString());
                }
                state = RequestStatus.ePending;
                //client.DownloadDataAsync (uri, this) ;
                yield return(client.Send());

                if (client.isNetworkError /*client.isNetworkError*/)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error);
                    state = RequestStatus.eError;
                }
                else
                {
                    //client.downloadHandler.data
                    //client.downloadHandler.text
                    if (callback != null)
                    {
                        DownloadDataCompletedEventArgs args = new DownloadDataCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.data;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #4
0
        //public override void CancelRequest () ;

        public override void ProcessResponse(AsyncCompletedEventArgs e)
        {
            //TimeSpan tm = DateTime.Now - emitted;
            //UnityEngine.Debug.Log ("Received: " + tm.TotalSeconds.ToString () + " / " + uri.ToString ());
            DownloadStringCompletedEventArgs args = e as DownloadStringCompletedEventArgs;
            string result = "";

            if (args == null)
            {
                DownloadDataCompletedEventArgs args2 = e as DownloadDataCompletedEventArgs;
                byte [] bytes = args2.Result;
                //WebHeaderCollection headerCollection = this.client.ResponseHeaders;
                //for ( int i = 0 ; i < headerCollection.Count ; i++ ) {
                //	if ( headerCollection.GetKey (i).ToLower () == "content-encoding" && headerCollection.Get (i).ToLower () == "gzip" ) {
                //		Debug.Log (headerCollection.GetKey (i));
                //	}
                //}
                byte [] b = RequestObjectInterface.Decompress(bytes);
                result = Encoding.UTF8.GetString(b);
            }
            else
            {
                result = args.Result;
            }
            try {
                lmvtkDef = JSONNode.Parse(result);
                state    = SceneLoadingStatus.eReceived;
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            } finally {
            }
        }
コード例 #5
0
ファイル: RequestQueue.cs プロジェクト: Grit-Virtual/au_demo
 public virtual void FireRequest(Action <object, AsyncCompletedEventArgs> callback = null)
 {
     emitted = DateTime.Now;
     try {
         using (client = new WebClient()) {
             //client.Headers.Add ("Connection", "keep-alive") ;
             if (callback != null)
             {
                 client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(callback);
             }
             if (!string.IsNullOrEmpty(bearer))
             {
                 client.Headers.Add("Authorization", "Bearer " + bearer);
             }
             if (RequestObjectInterface.IsHoloLens || ForgeLoaderConstants._forceHololens)
             {
                 client.Headers.Add("x-ads-device", "hololens");
             }
             if (RequestObjectInterface.IsDAQRI || ForgeLoaderConstants._forceDAQRI)
             {
                 client.Headers.Add("x-ads-device", "daqri");
             }
             client.Headers.Add("Keep-Alive", "timeout=15, max=100");
             if (compression == true)
             {
                 client.Headers.Add("Accept-Encoding", "gzip, deflate");
             }
             state = SceneLoadingStatus.ePending;
             client.DownloadDataAsync(uri, this);
         }
     } catch (Exception ex) {
         Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
         state = SceneLoadingStatus.eError;
     }
 }
コード例 #6
0
ファイル: OauthKeys.cs プロジェクト: Grit-Virtual/au_demo
        public virtual void FireRequest(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            emitted = DateTime.Now;
            try {
                using (client = new WebClient()) {
                    if (callback != null)
                    {
                        //client.UploadValuesCompleted +=new UploadValuesCompletedEventHandler (callback) ;
                        client.UploadStringCompleted += new UploadStringCompletedEventHandler(callback);
                    }
                    client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

                    NameValueCollection form = new NameValueCollection();
                    form.Add("client_id", _CLIENT_ID);
                    form.Add("client_secret", _CLIENT_SECRET);
                    form.Add("grant_type", "client_credentials");
                    form.Add("scope", "viewables:read%20data:read");

                    string data = "client_id=" + _CLIENT_ID
                                  + "&client_secret=" + _CLIENT_SECRET
                                  + "&grant_type=client_credentials"
                                  + "&scope=viewables:read%20data:read";

                    state = RequestStatus.ePending;
                    //client.UploadValuesAsync (new Uri (ForgeLoaderConstants._forgeoAuth2legged), "POST", form, this) ;
                    client.UploadStringAsync(new Uri(ForgeLoaderConstants._forgeoAuth2legged), "POST", data, this);
                }
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = RequestStatus.eError;
            }
        }
コード例 #7
0
 public override void FireRequest(Action <object, AsyncCompletedEventArgs> callback = null)
 {
     emitted = DateTime.Now;
     try {
         System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
         using (client = new WebClient()) {
             //client.Headers.Add ("Connection", "keep-alive") ;
             if (callback != null)
             {
                 client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(callback);
             }
             client.Headers.Add("x-ads-format", "openctm");
             if (!string.IsNullOrEmpty(bearer))
             {
                 client.Headers.Add("Authorization", "Bearer " + bearer);
             }
             client.Headers.Add("Keep-Alive", "timeout=15, max=100");
             if (compression == true)
             {
                 client.Headers.Add("Accept-Encoding", "gzip, deflate");
             }
             state = SceneLoadingStatus.ePending;
             client.DownloadDataAsync(uri, this);
         }
     } catch (Exception ex) {
         Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
         state = SceneLoadingStatus.eError;
     }
 }
コード例 #8
0
        public virtual IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
            using (client = UnityWebRequest.Get(uri.AbsoluteUri)) {
                foreach (DictionaryEntry entry in headers)
                {
                    client.SetRequestHeader(entry.Key.ToString(), entry.Value.ToString());
                }
                state = RequestStatus.ePending;
                //client.DownloadDataAsync (uri, this) ;
                                #if UNITY_2017_2_OR_NEWER
                yield return(client.SendWebRequest());
                                #else
                yield return(client.Send());
                                #endif

                if (client.isNetworkError || client.isHttpError)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error + " - " + client.responseCode);
                    state = RequestStatus.eError;
                }
                else
                {
                    //client.downloadHandler.data
                    //client.downloadHandler.text
                    if (callback != null)
                    {
                        DownloadDataCompletedEventArgs args = new DownloadDataCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.data;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #9
0
        public override IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            //using ( client =new UnityWebRequest (uri.AbsoluteUri) ) {
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
            using (client = UnityWebRequest.Get(uri.AbsoluteUri)) {
                //client.SetRequestHeader ("Connection", "keep-alive") ;
                //client.method =UnityWebRequest.kHttpVerbGET ;
                //if ( callback != null )
                //	client.DownloadStringCompleted +=new DownloadStringCompletedEventHandler (callback) ;
                if (!string.IsNullOrEmpty(bearer))
                {
                    client.SetRequestHeader("Authorization", "Bearer " + bearer);
                }
                //client.SetRequestHeader ("Keep-Alive", "timeout=15, max=100");
                if (compression == true)
                {
                    client.SetRequestHeader("Accept-Encoding", "gzip, deflate");
                }
                state = SceneLoadingStatus.ePending;
                //client.DownloadStringAsync (uri, this) ;
#if UNITY_2017_2_OR_NEWER
                yield return(client.SendWebRequest());
#else
                yield return(client.Send());
#endif

                if (client.isNetworkError || client.isHttpError)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error + " - " + client.responseCode);
                    state = SceneLoadingStatus.eError;
                }
                else
                {
                    //client.downloadHandler.data
                    //client.downloadHandler.text
                    if (callback != null)
                    {
                        if (compression == true)
                        {
                            DownloadDataCompletedEventArgs args = new DownloadDataCompletedEventArgs(null, false, this);
                            args.Result = client.downloadHandler.data;
                            callback(this, args);
                        }
                        else
                        {
                            DownloadStringCompletedEventArgs args = new DownloadStringCompletedEventArgs(null, false, this);
                            args.Result = client.downloadHandler.text;
                            callback(this, args);
                        }
                    }
                }
            }
        }
コード例 #10
0
        //public override void FireRequest (Action<object, AsyncCompletedEventArgs> callback =null) ;

        //public override void CancelRequest () ;

        public override void ProcessResponse(AsyncCompletedEventArgs e)
        {
            DownloadDataCompletedEventArgs args = e as DownloadDataCompletedEventArgs;

            try {
                image = args.Result;
                state = SceneLoadingStatus.eReceived;
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            } finally {
            }
        }
コード例 #11
0
ファイル: RequestQueue.cs プロジェクト: Grit-Virtual/au_demo
        public virtual IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            //using ( client =new UnityWebRequest (uri.AbsoluteUri) ) {
            using (client = UnityWebRequest.Get(uri.AbsoluteUri)) {
                //client.SetRequestHeader ("Connection", "keep-alive") ;
                //client.method =UnityWebRequest.kHttpVerbGET ;
                //if ( callback != null )
                //	client.DownloadDataCompleted +=new DownloadDataCompletedEventHandler (callback) ;
                if (!string.IsNullOrEmpty(bearer))
                {
                    client.SetRequestHeader("Authorization", "Bearer " + bearer);
                }
                if (RequestObjectInterface.IsHoloLens || ForgeLoaderConstants._forceHololens)
                {
                    client.SetRequestHeader("x-ads-device", "hololens");
                }
                if (RequestObjectInterface.IsDAQRI || ForgeLoaderConstants._forceDAQRI)
                {
                    client.SetRequestHeader("x-ads-device", "daqri");
                }
                //client.SetRequestHeader ("Keep-Alive", "timeout=15, max=100");
                if (compression == true)
                {
                    client.SetRequestHeader("Accept-Encoding", "gzip, deflate");
                }
                state = SceneLoadingStatus.ePending;
                //client.DownloadDataAsync (uri, this) ;
                                #if UNITY_2017_2_OR_NEWER
                yield return(client.SendWebRequest());
                                #else
                yield return(client.Send());
                                #endif

                if (client.isNetworkError || client.isHttpError)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error + " - " + client.responseCode);
                    state = SceneLoadingStatus.eError;
                }
                else
                {
                    //client.downloadHandler.data
                    //client.downloadHandler.text
                    if (callback != null)
                    {
                        DownloadDataCompletedEventArgs args = new DownloadDataCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.data;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #12
0
        protected void oAuth2Legged()
        {
            oAuth2Legged rest = new oAuth2Legged(CLIENTID, CLIENTSECRET);

            rest.FireRequest(
                (object sender, AsyncCompletedEventArgs args) => {
                if (args == null || args.UserState == null)
                {
                    return;
                }
                if (args.Error != null)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        Debug.Log(ForgeLoader.GetCurrentMethod() + " " + args.Error.Message);
                    });
                    return;
                }

                //UploadValuesCompletedEventArgs args2 =args as UploadValuesCompletedEventArgs ;
                //byte[] data =args2.Result ;
                //string textData =System.Text.Encoding.UTF8.GetString (data) ;

                UploadValuesCompletedEventArgs args2 = args as UploadValuesCompletedEventArgs;
                string textData = Encoding.UTF8.GetString(args2.Result);

                JSONNode json = JSON.Parse(textData);

                BEARER = json ["access_token"];
                UnityMainThreadDispatcher.Instance().Enqueue(() => {
                    oAuthCompleted.Invoke(BEARER);
                });

                if (LOADERS != null)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        for (int i = 0; i < LOADERS.Count; i++)
                        {
                            GameObject loader       = LOADERS [i];
                            ForgeLoader forgeLoader = loader.GetComponent <ForgeLoader> ();
                            forgeLoader.BEARER      = BEARER;
                            if (string.IsNullOrEmpty(forgeLoader.URN) || string.IsNullOrEmpty(forgeLoader.SCENEID))
                            {
                                continue;
                            }
                            loader.SetActive(true);
                        }
                    });
                }
            }
                );
        }
コード例 #13
0
        //public override void CancelRequest () ;

        public override void ProcessResponse(AsyncCompletedEventArgs e)
        {
            //TimeSpan tm = DateTime.Now - emitted;
            //UnityEngine.Debug.Log ("Received: " + tm.TotalSeconds.ToString () + " / " + uri.ToString ());
            DownloadStringCompletedEventArgs args = e as DownloadStringCompletedEventArgs;

            try {
                lmvtkDef = JSON.Parse(args.Result);
                state    = SceneLoadingStatus.eReceived;
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            } finally {
            }
        }
コード例 #14
0
        public void oAuth2Legged()
        {
            oAuth2Legged rest = new oAuth2Legged();

            rest.FireRequest(
                (object sender, AsyncCompletedEventArgs args) => {
                if (args == null || args.UserState == null)
                {
                    return;
                }
                if (args.Error != null)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        Debug.Log(Autodesk.Forge.ARKit.ForgeLoader.GetCurrentMethod() + " " + args.Error.Message);
                    });
                    return;
                }

                //UploadValuesCompletedEventArgs args2 =args as UploadValuesCompletedEventArgs ;
                //byte[] data =args2.Result ;
                //string textData =System.Text.Encoding.UTF8.GetString (data) ;

                UploadStringCompletedEventArgs args2 = args as UploadStringCompletedEventArgs;
                string textData = args2.Result;

                JSONNode json = JSONNode.Parse(textData);

                bearer = json ["access_token"];
                UnityMainThreadDispatcher.Instance().Enqueue(() => {
                    oAuthCompleted.Invoke(bearer);
                });

                if (loader != null)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        ForgeLoader forgeLoader = loader.GetComponent <ForgeLoader> ();
                        forgeLoader.BEARER      = bearer;
                        if (string.IsNullOrEmpty(forgeLoader.URN) || string.IsNullOrEmpty(forgeLoader.SCENEID))
                        {
                            return;
                        }
                        loader.SetActive(true);
                    });
                }
            }
                );
        }
コード例 #15
0
ファイル: ForgeLoader.cs プロジェクト: jkredzvr/hox
        public static ForgeLoader AddLoaderToGameObject(GameObject root, string urn, string sceneID, string bearer, bool loadMetdata = true, bool loadMesh = true)
        {
            if (root == null)
            {
                root = new GameObject(ForgeConstants.ROOT);
            }
            root.SetActive(false);
            ForgeLoader loader = root.AddComponent <ForgeLoader> ();

            loader.URN          = urn;
            loader.BEARER       = bearer;
            loader.SCENEID      = sceneID;
            loader.LoadMesh     = loadMesh;
            loader.LoadMetadata = loadMetdata;
            root.SetActive(true);
            return(loader);
        }
コード例 #16
0
        public void AsyncRequestCompleted(object sender, AsyncCompletedEventArgs args)
        {
            if (args == null || args.UserState == null)
            {
                return;
            }
            IRequestInterface item = args.UserState as IRequestInterface;

            if (args.Error != null)
            {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + args.Error.Message);
                item.state = SceneLoadingStatus.eError;
                return;
            }
            //item.state =item.resolved ;
            item.ProcessResponse(args);
        }
コード例 #17
0
        public override GameObject BuildScene(string name, bool saveToDisk = false)
        {
            try {
                if (_vertices.Length == 0 || _triangles.Length == 0)
                {
                    state = SceneLoadingStatus.eCancelled;
                    return(gameObject);
                }
                Mesh mesh = new Mesh();
                mesh.vertices  = _vertices;
                mesh.triangles = _triangles;
                if (_uvs != null && _uvs.Length != 0)
                {
                    mesh.uv = _uvs;
                }
                mesh.RecalculateNormals();
                mesh.RecalculateBounds();

                MeshFilter filter = gameObject.AddComponent <MeshFilter> ();
                filter.sharedMesh = mesh;
                MeshRenderer renderer = gameObject.AddComponent <MeshRenderer> ();
                renderer.sharedMaterial = ForgeLoaderEngine.GetDefaultMaterial();
                if (createCollider)
                {
                    MeshCollider collider = gameObject.AddComponent <MeshCollider>();
                    collider.sharedMesh = mesh;
                }
#if UNITY_EDITOR
                if (saveToDisk)
                {
                    AssetDatabase.CreateAsset(mesh, ForgeConstants._resourcesPath + this.loader.PROJECTID + "/" + name + ".asset");
                    //AssetDatabase.SaveAssets () ;
                    //AssetDatabase.Refresh () ;
                    //mesh =AssetDatabase.LoadAssetAtPath<Mesh> (ForgeConstants._resourcesPath + this.loader.PROJECTID + "/" + name + ".asset") ;
                }
#endif

                base.BuildScene(name, saveToDisk);
                state = SceneLoadingStatus.eWaitingMaterial;
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            }
            return(gameObject);
        }
コード例 #18
0
        //public override void CancelRequest () ;

        public override void ProcessResponse(AsyncCompletedEventArgs e)
        {
            //TimeSpan tm = DateTime.Now - emitted;
            //UnityEngine.Debug.Log ("Received: " + tm.TotalSeconds.ToString () + " / " + uri.ToString ());
            DownloadDataCompletedEventArgs args = e as DownloadDataCompletedEventArgs;

            try {
                byte [] bytes = args.Result;
                if (compression)
                {
                    bytes = RequestObjectInterface.Decompress(bytes);
                }

                List <Eppy.Tuple <int, int, OpenCTM.Mesh> > tmp = new List <Eppy.Tuple <int, int, OpenCTM.Mesh> > ();
                int len = BitConverter.ToInt32(bytes, 0);
                for (int i = 0; i < len; i++)
                {
                    int dbId   = BitConverter.ToInt32(bytes, ((i * 3) + 1) * sizeof(Int32));
                    int fragId = BitConverter.ToInt32(bytes, ((i * 3) + 2) * sizeof(Int32));
                    int offset = BitConverter.ToInt32(bytes, ((i * 3) + 3) * sizeof(Int32));
                    int end    = bytes.Length;
                    if (i < len - 1)
                    {
                        end = BitConverter.ToInt32(bytes, (((i + 1) * 3) + 3) * sizeof(Int32));
                    }

                    byte [] ctm = RequestObjectInterface.Decompress(bytes.Skip(offset).Take(end - offset).ToArray());

                    System.IO.Stream      readMemory = new System.IO.MemoryStream(ctm);                // (bytes, offset, end - offset);
                    OpenCTM.CtmFileReader reader     = new OpenCTM.CtmFileReader(readMemory);
                    //_openctm.Add (new Eppy.Tuple<int, int, OpenCTM.Mesh> (dbId, fragId, reader.decode ()));
                    Eppy.Tuple <int, int, OpenCTM.Mesh> mesh = _openctm.Single(x => x.Item1 == dbId && x.Item2 == fragId);
                    tmp.Add(new Eppy.Tuple <int, int, OpenCTM.Mesh> (mesh.Item1, mesh.Item2, reader.decode()));
                }
                _openctm.Clear();
                _openctm = tmp;

                state = SceneLoadingStatus.eReceived;
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            } finally {
            }
        }
コード例 #19
0
        //public override void FireRequest () ;

        //public override void CancelRequest () ;

        public override void ProcessResponse(AsyncCompletedEventArgs e)
        {
            //TimeSpan tm = DateTime.Now - emitted;
            //UnityEngine.Debug.Log ("Received: " + tm.TotalSeconds.ToString () + " / " + uri.ToString ());
            DownloadDataCompletedEventArgs args = e as DownloadDataCompletedEventArgs;

            try {
                byte [] bytes = args.Result;
                if (compression)
                {
                    bytes = RequestObjectInterface.Decompress(bytes);
                }

                int      nbCoords = getInt(bytes, 0);
                int      index    = sizeof(Int32);
                float [] coords   = getFloats(bytes, nbCoords, sizeof(int));
                index    += nbCoords * sizeof(float);
                _vertices = new Vector3 [nbCoords / 3];
                for (int i = 0, ii = 0; i < nbCoords; i += 3, ii++)
                {
                    _vertices [ii] = new Vector3(coords [i], coords [i + 1], coords [i + 2]);
                }

                int nbTriangles = getInt(bytes, index);
                index     += sizeof(Int32);
                _triangles = getInts(bytes, nbTriangles, index);
                index     += nbTriangles * sizeof(Int32);

                int nbUVs = getInt(bytes, index);
                index += sizeof(Int32);
                float [] uv_a = nbUVs != 0 ? getFloats(bytes, nbUVs, index) : null;
                _uvs = nbUVs != 0 ? new Vector2 [nbUVs / 2] : null;
                for (int i = 0, ii = 0; i < nbUVs; i += 2, ii++)
                {
                    _uvs [ii] = new Vector2(uv_a [i], uv_a [i + 1]);
                }

                state = SceneLoadingStatus.eReceived;
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            } finally {
            }
        }
コード例 #20
0
        public void ListScenes(string bearer)
        {
            _bearer = bearer;
            ForgeLoader forgeLoader = loader.GetComponent <ForgeLoader> ();
            string      url         = ForgeLoaderConstants._endpoint1 + forgeLoader.URN + "/scenes";
            Hashtable   headers     = new Hashtable();

            headers.Add("Authorization", "Bearer " + _bearer);
            RestClient rest = new RestClient(new System.Uri(url), headers);

            rest.FireRequest(
                (object sender, AsyncCompletedEventArgs args) => {
                if (args == null || args.UserState == null)
                {
                    return;
                }
                if (args.Error != null)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        Debug.Log(Autodesk.Forge.ARKit.ForgeLoader.GetCurrentMethod() + " " + args.Error.Message);
                    });
                    return;
                }

                DownloadDataCompletedEventArgs args2 = args as DownloadDataCompletedEventArgs;
                string textData = System.Text.Encoding.UTF8.GetString(args2.Result);

                scenesList = JSON.Parse(textData);

                if (scenesList.AsArray.Count > 0)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        Dropdown dd = combobox.GetComponent <Dropdown> ();
                        foreach (JSONNode child in scenesList.AsArray)
                        {
                            dd.options.Add(new Dropdown.OptionData(child.Value));
                        }
                        combobox.SetActive(true);
                    });
                }
            }
                );
        }
コード例 #21
0
        public virtual IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
            WWWForm form = new WWWForm();

            form.AddField("client_id", CLIENT_ID);
            form.AddField("client_secret", CLIENT_SECRET);
            form.AddField("grant_type", "client_credentials");
            form.AddField("scope", "viewables:read data:read");

            using (client = UnityWebRequest.Post(uri.AbsoluteUri, form)) {
                foreach (DictionaryEntry entry in headers)
                {
                    client.SetRequestHeader(entry.Key.ToString(), entry.Value.ToString());
                }
                client.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");

                state = RequestStatus.ePending;
                //client.DownloadDataAsync (uri, this) ;
                                #if UNITY_2017_2_OR_NEWER
                yield return(client.SendWebRequest());
                                #else
                yield return(client.Send());
                                #endif

                if (client.isNetworkError || client.isHttpError)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error + " - " + client.responseCode);
                    state = RequestStatus.eError;
                }
                else
                {
                    if (callback != null)
                    {
                        UploadValuesCompletedEventArgs args = new UploadValuesCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.data;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #22
0
        public void LoadScene(int scene)
        {
            if (scene <= 0 || scene > scenesList.AsArray.Count)
            {
                return;
            }
            scene--;
            ForgeLoader forgeLoader = loader.GetComponent <ForgeLoader> ();

            GameObject obj = new GameObject();

            obj.SetActive(false);
            ForgeLoader objLoader = obj.AddComponent <ForgeLoader> ();

            objLoader.URN                      = forgeLoader.URN;
            objLoader.BEARER                   = _bearer;
            objLoader.SCENEID                  = scenesList.AsArray [scene].Value;
            objLoader.ProcessedNodes           = forgeLoader.ProcessedNodes;
            objLoader.ProcessingNodesCompleted = forgeLoader.ProcessingNodesCompleted;
            obj.SetActive(true);
        }
コード例 #23
0
 public override void FireRequest(Action <object, AsyncCompletedEventArgs> callback = null)
 {
     emitted = DateTime.Now;
     try {
         using (client = new WebClient()) {
             if (callback != null)
             {
                 if (compression == true)
                 {
                     client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(callback);
                 }
                 else
                 {
                     client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(callback);
                 }
             }
             if (!string.IsNullOrEmpty(bearer))
             {
                 client.Headers.Add("Authorization", "Bearer " + bearer);
             }
             client.Headers.Add("Keep-Alive", "timeout=15, max=100");
             if (compression == true)
             {
                 client.Headers.Add("Accept-Encoding", "gzip, deflate");
             }
             state = SceneLoadingStatus.ePending;
             if (compression == true)
             {
                 client.DownloadDataAsync(uri, this);
             }
             else
             {
                 client.DownloadStringAsync(uri, this);
             }
         }
     } catch (Exception ex) {
         Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
         state = SceneLoadingStatus.eError;
     }
 }
コード例 #24
0
ファイル: RestClient.cs プロジェクト: jkredzvr/hox
 public virtual void FireRequest(Action <object, AsyncCompletedEventArgs> callback = null)
 {
     emitted = DateTime.Now;
     try {
         using (client = new WebClient()) {
             if (callback != null)
             {
                 client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(callback);
             }
             foreach (DictionaryEntry entry in headers)
             {
                 client.Headers.Add(entry.Key.ToString(), entry.Value.ToString());
             }
             client.Headers.Add("Keep-Alive", "timeout=15, max=100");
             state = RequestStatus.ePending;
             client.DownloadDataAsync(uri, this);
         }
     } catch (Exception ex) {
         Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
         state = RequestStatus.eError;
     }
 }
コード例 #25
0
        public override void Refresh()
        {
            if (!string.IsNullOrEmpty(_BEARER))
            {
                _CredentialsReceived.Invoke(_BEARER);

                for (int i = 0; _ForgeLoaders != null && i < _ForgeLoaders.Count; i++)
                {
                    GameObject  loader      = _ForgeLoaders [i];
                    ForgeLoader forgeLoader = loader.GetComponent <ForgeLoader> ();
                    if (forgeLoader == null)
                    {
                        continue;
                    }
                    forgeLoader._BEARER = _BEARER;
                    if (string.IsNullOrEmpty(forgeLoader.URN) || string.IsNullOrEmpty(forgeLoader.SCENEID))
                    {
                        continue;
                    }
                    loader.SetActive(true);
                }
            }
        }
コード例 #26
0
        public virtual void FireRequest(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            emitted = DateTime.Now;
            try {
                System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
                using (client = new WebClient()) {
                    if (callback != null)
                    {
                        //client.UploadValuesCompleted +=new UploadValuesCompletedEventHandler (callback) ;
                        client.UploadStringCompleted += new UploadStringCompletedEventHandler(callback);
                    }
                    foreach (DictionaryEntry entry in headers)
                    {
                        client.Headers.Add(entry.Key.ToString(), entry.Value.ToString());
                    }
                    client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

                    NameValueCollection form = new NameValueCollection();
                    form.Add("client_id", CLIENT_ID);
                    form.Add("client_secret", CLIENT_SECRET);
                    form.Add("grant_type", "client_credentials");
                    form.Add("scope", "viewables:read%20data:read");

                    string data = "client_id=" + CLIENT_ID
                                  + "&client_secret=" + CLIENT_SECRET
                                  + "&grant_type=client_credentials"
                                  + "&scope=viewables:read%20data:read";

                    state = RequestStatus.ePending;
                    //client.UploadValuesAsync (uri, "POST", form, this) ;
                    client.UploadStringAsync(uri, "POST", data, this);
                }
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = RequestStatus.eError;
            }
        }
コード例 #27
0
ファイル: MaterialRequest.cs プロジェクト: jkredzvr/hox
        public override IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            //using ( client =new UnityWebRequest (uri.AbsoluteUri) ) {
            using (client = UnityWebRequest.Get(uri.AbsoluteUri)) {
                //client.SetRequestHeader ("Connection", "keep-alive") ;
                //client.method =UnityWebRequest.kHttpVerbGET ;
                //if ( callback != null )
                //	client.DownloadStringCompleted +=new DownloadStringCompletedEventHandler (callback) ;
                if (!string.IsNullOrEmpty(bearer))
                {
                    client.SetRequestHeader("Authorization", "Bearer " + bearer);
                }
                client.SetRequestHeader("Keep-Alive", "timeout=15, max=100");
                //if ( compression == true )
                //	client.SetRequestHeader ("Accept-Encoding", "gzip, deflate");
                state = SceneLoadingStatus.ePending;
                //client.DownloadStringAsync (uri, this) ;
                yield return(client.Send());

                if (client.isNetworkError /*client.isNetworkError*/)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error);
                    state = SceneLoadingStatus.eError;
                }
                else
                {
                    //client.downloadHandler.data
                    //client.downloadHandler.text
                    if (callback != null)
                    {
                        DownloadStringCompletedEventArgs args = new DownloadStringCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.text;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #28
0
        public virtual IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            WWWForm form = new WWWForm();

            form.AddField("client_id", ForgeLoaderConstants.FORGE_CLIENT_ID);
            form.AddField("client_secret", ForgeLoaderConstants.FORGE_CLIENT_SECRET);
            form.AddField("grant_type", "client_credentials");
            form.AddField("scope", "viewables:read data:read");

            using (client = UnityWebRequest.Post(uri.AbsoluteUri, form)) {
                foreach (DictionaryEntry entry in headers)
                {
                    client.SetRequestHeader(entry.Key.ToString(), entry.Value.ToString());
                }
                client.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");

                state = RequestStatus.ePending;
                //client.DownloadDataAsync (uri, this) ;
                yield return(client.Send());

                if (client.isNetworkError /*client.isNetworkError*/)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error);
                    state = RequestStatus.eError;
                }
                else
                {
                    if (callback != null)
                    {
                        UploadValuesCompletedEventArgs args = new UploadValuesCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.data;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #29
0
ファイル: OauthKeys.cs プロジェクト: Grit-Virtual/au_demo
        public virtual IEnumerator _FireRequest_(Action <object, AsyncCompletedEventArgs> callback = null)
        {
            WWWForm form = new WWWForm();

            form.AddField("client_id", _CLIENT_ID);
            form.AddField("client_secret", _CLIENT_SECRET);
            form.AddField("grant_type", "client_credentials");
            form.AddField("scope", "viewables:read data:read");

            using (client = UnityWebRequest.Post(ForgeLoaderConstants._forgeoAuth2legged, form)) {
                client.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");

                state = RequestStatus.ePending;
                //client.DownloadDataAsync (new Uri (ForgeLoaderConstants._forgeoAuth2legged), this) ;
                                #if UNITY_2017_2_OR_NEWER
                yield return(client.SendWebRequest());
                                #else
                yield return(client.Send());
                                #endif

                if (client.isNetworkError || client.isHttpError)
                {
                    Debug.Log(ForgeLoader.GetCurrentMethod() + " " + client.error + " - " + client.responseCode);
                    state = RequestStatus.eError;
                }
                else
                {
                    if (callback != null)
                    {
                        UploadValuesCompletedEventArgs args = new UploadValuesCompletedEventArgs(null, false, this);
                        args.Result = client.downloadHandler.data;
                        callback(this, args);
                    }
                }
            }
        }
コード例 #30
0
        public override GameObject BuildScene(string name, bool saveToDisk = false)
        {
            try {
                properties = gameObject.AddComponent <ForgeProperties> ();
                //properties.PropertiesString = lmvtkDef [0].ToString();
                properties.Properties = lmvtkDef [0];

                JSONNode j = FindProperty(lmvtkDef [0], "name");
                if (j != null)
                {
                    name = GetDefaultValueIfUndefined(j, "value", "");
                    if (!string.IsNullOrEmpty(name))
                    {
                        gameObject.name = name;
                    }
                }
            } catch (Exception ex) {
                Debug.Log(ForgeLoader.GetCurrentMethod() + " " + ex.Message);
                state = SceneLoadingStatus.eError;
            }

            base.BuildScene(name, saveToDisk);
            return(gameObject);
        }