Пример #1
0
 public void DoExit()
 {
     foreach (string trigger in triggers)
     {
         TriggerMgr.ToggleTrigger(trigger, false);
     }
     ResourceMgr.CleanAllGameObjects();
 }
Пример #2
0
 public static void Reset()
 {
     CameraMgr.UseDefaultSkybox();
     CameraMgr.Place(Vector3.zero);
     CameraMgr.Euler(Vector3.zero);
     ResourceMgr.ToggleAllGameObjects(false);
     TriggerMgr.ToggleAllTrigger(false);
     fsm.Reset();
 }
Пример #3
0
 public static void Clean()
 {
     CameraMgr.UseDefaultSkybox();
     CameraMgr.Place(Vector3.zero);
     CameraMgr.Euler(Vector3.zero);
     ResourceMgr.CleanAllGameObjects();
     TriggerMgr.Clean();
     fsm.Clean();
     images.Clear();
 }
Пример #4
0
        public static void Scale(string _uuid, float _x, float _y, float _z, OnErrorDelegate _onError)
        {
            GameObject go = ResourceMgr.FindGameObject(_uuid);

            if (null == go)
            {
                _onError(string.Format("{0} is not exists !!!", _uuid));
                return;
            }
            go.transform.localScale = new Vector3(_x, _y, _z);
        }
Пример #5
0
        // TO DO
        public static void SmoothFollow(string _selfUUID, string _targetUUID, float _height, float _heightDamping, float _rotationDamping, OnErrorDelegate _onError)
        {
            GameObject self = ResourceMgr.FindGameObject(_selfUUID);

            if (null == self)
            {
                _onError(string.Format("{0} is not exists !!!", _selfUUID));
                return;
            }
            GameObject target = ResourceMgr.FindGameObject(_targetUUID);

            if (null == target)
            {
                _onError(string.Format("{0} is not exists !!!", _targetUUID));
                return;
            }
        }
Пример #6
0
        public static void BatchDownloadRes(List <string> _list, OnSuccessFinishDelegate _onFinish)
        {
            operations.Clear();
            List <string> tasks = new List <string>();

            foreach (string task in _list)
            {
                string file = Path.GetFileName(task);
                // All files will store in the persistentDataPath
                ResourceMgr.UseExternalBundle(file);
                if (!File.Exists(resPath + file))
                {
                    tasks.Add(task);
                }
            }

            Log.Info("HttpMgr", "BatchDownload [{0}] tasks", tasks.Count);
            if (0 == tasks.Count)
            {
                _onFinish();
                return;
            }

            int count = 0;

            foreach (string task in tasks)
            {
                string file = Path.GetFileName(task);
                Log.Debug("HttpMgr", "Async Get: {0}", task);
                Http.Operation operation = http.AsyncGET(task, (_data) =>
                {
                    Log.Debug("HttpMgr", "Get Finish: {0}", task);
                    System.IO.File.WriteAllBytes(resPath + file, _data);
                    onFinish(ref count, tasks.Count, _onFinish);
                }, (_err) =>
                {
                    Log.Error("HttpMgr", _err);
                });
                operations.Add(task, operation);
            }
        }
Пример #7
0
        private static void preloadAssets(List <string> assets, CallBack _onFinish)
        {
            if (assets.Count <= 0)
            {
                _onFinish();
                return;
            }

            string assetID = assets[0];

            assets.RemoveAt(0);
            string package = assetID.Split('@')[0];
            string file    = assetID.Split('@')[1];

            // has '.' is ugc file
            if (!file.Contains("."))
            {
                Log.Trace("SlateMgr", "preload asset package:{0} file:{1}", package, file);
                ResourceMgr.PreloadAsset(package, file
                                         , () =>
                {
                    Log.Trace("SlateMgr", "ready preload asset package:{0} file:{1}", package, file);
                }
                                         , (_obj) =>
                {
                    Log.Trace("SlateMgr", "finish preload asset package:{0} file:{1}", package, file);
                    preloadAssets(assets, _onFinish);
                }
                                         , (_error) =>
                {
                    Log.Error("SlateMgr", "preload asset package:{0} file:{1} has error:{2}", package, file, _error);
                    preloadAssets(assets, _onFinish);
                });
            }
            else
            {
                Log.Trace("SlateMgr", "skip preload ugcfile :{0}", file);
                _onFinish();
            }
        }
Пример #8
0
        public void DoEnter()
        {
            //preload assets
            foreach (Asset asset in assets.Values)
            {
                // asset has format like as .wav
                if (asset.file.Contains("."))
                {
                    byte[] data = UGCMgr.Take(asset.file);
                    if (null == data)
                    {
                        this.LogError("Missing asset, group:{0} package:{1} file:{2} ", asset.group, asset.package, asset.file);
                        continue;
                    }
                    if (asset.group.Equals("skybox"))
                    {
                        Material skybox = UGCMgr.BuildSkybox(data);
                        CameraMgr.ApplySkybox(skybox);
                    }
                }
                else
                {
                    Object obj = ResourceMgr.FindFromPreload(asset.package, asset.file);
                    if (null == obj)
                    {
                        this.LogError("Missing asset, group:{0} package:{1} file:{2} ", asset.group, asset.package, asset.file);
                        continue;
                    }

                    if (asset.group.Equals("agent"))
                    {
                        GameObject clone = ResourceMgr.CloneGameObject(asset.package, asset.file, asset.guid);
                        agents.Add(asset.guid);
                        clone.transform.position   = new Vector3(asset.px, asset.py, asset.pz);
                        clone.transform.rotation   = Quaternion.Euler(asset.rx, asset.ry, asset.rz);
                        clone.transform.localScale = new Vector3(asset.sx, asset.sy, asset.sz);

                        if (asset.gaze)
                        {
                            ReticleHandler handler = clone.AddComponent <ReticleHandler>();
                            handler.path    = asset.slate;
                            handler.trigger = asset.gazeAlias;
                            EventTrigger et = clone.AddComponent <EventTrigger>();

                            EventTrigger.Entry entryEnter = new EventTrigger.Entry();
                            entryEnter.eventID = EventTriggerType.PointerEnter;
                            entryEnter.callback.AddListener((data) => { handler.onPointerEnter(); });
                            et.triggers.Add(entryEnter);

                            EventTrigger.Entry entryExit = new EventTrigger.Entry();
                            entryExit.eventID = EventTriggerType.PointerExit;
                            entryExit.callback.AddListener((data) => { handler.onPointerExit(); });
                            et.triggers.Add(entryExit);

                            EventTrigger.Entry entryClick = new EventTrigger.Entry();
                            entryClick.eventID = EventTriggerType.PointerClick;
                            entryClick.callback.AddListener((data) => { handler.onPointerClick(); });
                            et.triggers.Add(entryClick);

                            Collider collider = clone.GetComponent <Collider>();
                            if (null != collider)
                            {
                                collider.enabled = true;
                            }
                        }
                    }
                    else if (asset.group.Equals("skybox"))
                    {
                        CameraMgr.ApplySkybox(obj as Material);
                    }
                }
            }

            //hide all triggers
            TriggerMgr.ToggleAllTrigger(false);
            //show trigger in current slate
            foreach (string trigger in triggers)
            {
                TriggerMgr.ToggleTrigger(trigger, true);
            }

            // execute startup blocks
            foreach (string guid in blocks)
            {
                Block block = BlockMgr.FindBlock(guid);
                if (block.action.Equals("Entry:Startup"))
                {
                    block.Execute();
                }
            }
        }
Пример #9
0
        private static void batchPreloadAsset(List <Dictionary <string, string> > _assets, onBatchPreloadFinishDelegate _onFinish)
        {
            if (_assets.Count == 0)
            {
                _onFinish();
                return;
            }

            Dictionary <string, string> asset = _assets[0];
            string packageUUID = asset["package"];
            string fileUUID    = asset["file"];
            string imageUUID   = asset["image"];
            string cloneUUID   = asset["uuid"];
            string type        = asset["type"];


            _assets.RemoveAt(0);

            if (type.Equals("skybox"))
            {
                Log.Debug("EditorMgr:importVCB", "preload skybox {0}", fileUUID);
                ResourceMgr.PreloadAsset(packageUUID, fileUUID
                                         , () =>
                {
                    Log.Debug("EditorMgr::importVCB", "ready load skybox {0}@{1}", packageUUID, fileUUID);
                }
                                         , (_obj) =>
                {
                    Editor.Image image = fsm.FindState(imageUUID) as Editor.Image;
                    image.skybox       = _obj as Material;
                    Log.Debug("EditorMgr::importVCB", "load skybox {0}@{1} success", packageUUID, fileUUID);
                    batchPreloadAsset(_assets, _onFinish);
                }
                                         , (_err) =>
                {
                    //onNotify(_err);
                    Log.Error("EditorMgr::importVCB", "load skybox {0}@{1} failed: {2}", packageUUID, fileUUID, _err);
                    batchPreloadAsset(_assets, _onFinish);
                });
            }
            else if (type.Equals("agent"))
            {
                float posX   = float.Parse(asset["pos.x"]);
                float posY   = float.Parse(asset["pos.y"]);
                float posZ   = float.Parse(asset["pos.z"]);
                float rotX   = float.Parse(asset["rot.x"]);
                float rotY   = float.Parse(asset["rot.y"]);
                float rotZ   = float.Parse(asset["rot.z"]);
                float scaleX = float.Parse(asset["scale.x"]);
                float scaleY = float.Parse(asset["scale.y"]);
                float scaleZ = float.Parse(asset["scale.z"]);
                Log.Debug("EditorMgr:importVCB", "preload agent {0}", fileUUID);
                ResourceMgr.PreloadAsset(packageUUID, fileUUID
                                         , () =>
                {
                    Log.Debug("EditorMgr::importVCB", "ready load agent {0}@{1}", packageUUID, fileUUID);
                }
                                         , (_obj) =>
                {
                    Editor.Image image = fsm.FindState(imageUUID) as Editor.Image;

                    GameObject go = ResourceMgr.CloneGameObject(packageUUID, fileUUID, cloneUUID);
                    go.SetActive(false);

                    go.transform.position   = new Vector3(posX, posY, posZ);
                    go.transform.rotation   = Quaternion.Euler(rotX, rotY, rotZ);
                    go.transform.localScale = new Vector3(scaleX, scaleY, scaleZ);

                    Collider collider = go.GetComponent <Collider>();
                    if (null != collider)
                    {
                        collider.enabled = true;
                    }

                    Battlehub.RTEditor.ExposeToEditor script = go.GetComponent <Battlehub.RTEditor.ExposeToEditor>();
                    if (null == script)
                    {
                        script = go.AddComponent <Battlehub.RTEditor.ExposeToEditor>();
                        //Debug.Log(script);
                    }
                    if (!image.objs.Contains(cloneUUID))
                    {
                        image.objs.Add(cloneUUID);
                    }
                    Log.Debug("EditorMgr::importVCB", "load agent {0}@{1} success", packageUUID, fileUUID);
                    batchPreloadAsset(_assets, _onFinish);
                }
                                         , (_err) =>
                {
                    Log.Error("EditorMgr::importVCB", "load agent {0}@{1} failed: {2}", packageUUID, fileUUID, _err);
                    batchPreloadAsset(_assets, _onFinish);
                });
            }
        }
Пример #10
0
        private static IEnumerator importVX()
        {
            string path = System.IO.Path.Combine(VRXX.Platform.GetPersistentDataPath(), "latest.vx");
            WWW    www  = new WWW(path);

            yield return(www);

            if (null != www.error)
            {
                Log.Error("EditorMgr::importVX", www.error);
                yield break;
            }

            try
            {
                //Read json
                int    jsonSize = VRXX.Convert.ByteToInt(www.bytes, 0);
                string json     = VRXX.Convert.ByteToString(www.bytes, 4, jsonSize);

                Log.Info("EditorMgr::importVX", "parse bean success");

                JSONNode  root     = JSON.Parse(json);
                JSONArray slateAry = root["slates"].AsArray;

                foreach (JSONNode slateNode in slateAry)
                {
                    string slateUUID = slateNode["guid"].Value;
                    Log.Trace("EditorMgr:importVX", "new a image {0}", slateUUID);
                    NewImage(slateUUID);
                    Editor.Image image = fsm.FindState(slateUUID) as Editor.Image;

                    JSONArray preloadAry = slateNode["preloads"].AsArray;
                    foreach (JSONNode node in preloadAry)
                    {
                        string group   = node["group"].Value;
                        string package = node["package"].Value;
                        string file    = node["file"].Value;
                        string guid    = node["guid"].Value;
                        //string id = package + "@" + file;

                        if (group.Equals("skybox"))
                        {
                            ResourceMgr.PreloadAsset(package, file
                                                     , () =>
                            {
                                //startLoading();
                            }
                                                     , (_obj) =>
                            {
                                image.skybox = _obj as Material;
                            }
                                                     , (_err) =>
                            {
                                //onNotify(_err);
                            });
                        }
                    }

                    JSONArray triggerAry = slateNode["triggers"].AsArray;
                    foreach (JSONNode node in triggerAry)
                    {
                        string cloneUUID = node["uuid"].Value;
                        string alias     = node["alias"].Value;
                        float  px        = node["px"].AsFloat;
                        float  py        = node["py"].AsFloat;
                        float  pz        = node["pz"].AsFloat;
                        float  rx        = node["rx"].AsFloat;
                        float  ry        = node["ry"].AsFloat;
                        float  rz        = node["rz"].AsFloat;
                    }
                }

                //offset
                int count_ugcfile = VRXX.Convert.ByteToInt(www.bytes, 4 + jsonSize);
                Log.Info("EditorMgr", "has {0} ugcfiles", count_ugcfile);

                int offset = 4 + jsonSize + 4;
                for (int i = 0; i < count_ugcfile; ++i)
                {
                    int filenamesize = VRXX.Convert.ByteToInt(www.bytes, offset);
                    offset += 4;

                    string filename = VRXX.Convert.ByteToString(www.bytes, offset, filenamesize);
                    offset += filenamesize;

                    Log.Info("EditorMgr", "ugcfile is {0}", filename);

                    int filesize = VRXX.Convert.ByteToInt(www.bytes, offset);
                    offset += 4;

                    byte[] bytes = new byte[filesize];
                    System.Array.Copy(www.bytes, offset, bytes, 0, filesize);
                    offset += filesize;
                    UGCMgr.Cache(filename, bytes);
                }
            }
            catch (System.Exception e)
            {
                Log.Exception("EditorMgr::importVX", e);
            }
            JSAPI.MessageToJS(JSAPI.MSG.JSEditorOnImportFinish, "", "");
        }