예제 #1
0
        /// <summary>
        /// Deserialize
        /// </summary>
        /// <param name="binaryReader">BinaryReader</param>
        public virtual void Deserialize(BinaryReader binaryReader)
        {
            name      = binaryReader.ReadString();
            mHandle   = binaryReader.ReadInt32();
            rootCount = binaryReader.ReadInt32();
            var len = binaryReader.ReadInt32();

            if (len != -1)
            {
                List <CameraKun> cameraKuns = new List <CameraKun>();

                mGameObjectKuns = new GameObjectKun[len];
                for (var i = 0; i < len; i++)
                {
                    mGameObjectKuns[i] = new GameObjectKun();
                    mGameObjectKuns[i].Deserialize(binaryReader);

                    var cameraKun = mGameObjectKuns[i].GetComponentKun <CameraKun>();
                    if (cameraKun != null)
                    {
                        cameraKuns.Add(cameraKun);
                    }
                }
                if (cameraKuns.Count > 0)
                {
                    CameraKun.allCameraList = cameraKuns;
                }
                else
                {
                    CameraKun.allCameraList = null;
                }
            }
        }
예제 #2
0
 public void Writeback(GameObjectKun gameObjectKun)
 {
     gameObjectKun.activeSelf = isActive;
     gameObjectKun.name       = name;
     gameObjectKun.isStatic   = isStatic;
     gameObjectKun.tag        = tag;
     gameObjectKun.layer      = layer;
 }
예제 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bytes"></param>
        public void OnMessageEventPush(BinaryReader binaryReader)
        {
            var gameObjectKun = new GameObjectKun();

            gameObjectKun.Deserialize(binaryReader);
            foreach (var obj in UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects())
            {
                var go = FindGameObjectInChildren(obj, gameObjectKun.instanceID);
                if (go != null)
                {
                    gameObjectKun.WriteBack(go);
                    return;
                }
            }
        }
예제 #4
0
 public void Set(GameObjectKun gameObjectKun)
 {
     if (gameObjectKun == null)
     {
         isDraw = false;
     }
     else
     {
         isDraw   = true;
         isActive = gameObjectKun.activeSelf;
         name     = gameObjectKun.name;
         isStatic = gameObjectKun.isStatic;
         tag      = gameObjectKun.tag;
         layer    = gameObjectKun.layer;
     }
 }
예제 #5
0
        /// <summary>
        /// Deserialize
        /// </summary>
        /// <param name="binaryReader">BinaryReader</param>
        public virtual void Deserialize(BinaryReader binaryReader)
        {
            name      = binaryReader.ReadString();
            rootCount = binaryReader.ReadInt32();
            var len = binaryReader.ReadInt32();

            if (len != -1)
            {
                mGameObjectKuns = new GameObjectKun[len];
                for (var i = 0; i < len; i++)
                {
                    mGameObjectKuns[i] = new GameObjectKun();
                    mGameObjectKuns[i].Deserialize(binaryReader);
                }
            }
        }
예제 #6
0
        /// <summary>
        /// TreeViewを再帰的に構築する
        /// </summary>
        /// <param name="go">起点となるGameObjectKun</param>
        /// <param name="depth">起点の深さ</param>
        /// <returns>GameObjectKunのTreeViewIten</returns>
        TreeViewItem MakeTreeViewRecursive(GameObjectKun go, int depth)
        {
            var treeViewItem = new TreeViewItem(id: go.instanceID, depth: depth, displayName: go.name);
            var children     = sceneKun.gameObjectKuns.Where((q) => q.transformKun.parentInstanceID == go.transformKun.instanceID);

            if (children != null && children.Count() != 0)
            {
                treeViewItem.children = new List <TreeViewItem>();
                foreach (var child in children)
                {
                    var tvi = MakeTreeViewRecursive(child, depth + 1);
                    tvi.parent = treeViewItem;
                    treeViewItem.children.Add(tvi);
                }
            }
            return(treeViewItem);
        }
예제 #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="go"></param>
        /// <param name="list"></param>
        private void AddGameObjectKunInChildren(GameObject go, List <GameObjectKun> list)
        {
            if (go == null || list == null)
            {
                return;
            }
            var gk = new GameObjectKun(go);

            list.Add(gk);
            if (go.transform != null)
            {
                for (var i = 0; i < go.transform.childCount; i++)
                {
                    AddGameObjectKunInChildren(go.transform.GetChild(i).gameObject, list);
                }
            }
        }
예제 #8
0
 void BuildComponentView(GameObjectKun gameObjectKun)
 {
     componentViews.Clear();
     if (gameObjectKun != null)
     {
         m_selectGameObujectKunID = gameObjectKun.instanceID;
         for (var i = 0; i < gameObjectKun.componentKuns.Length; i++)
         {
             var type          = ComponentView.GetComponentViewSyetemType(gameObjectKun.componentKunTypes[i]);
             var componentView = System.Activator.CreateInstance(type) as ComponentView;
             componentView.SetComponentKun(gameObjectKun.componentKuns[i]);
             componentViews.Add(componentView);
         }
     }
     else
     {
         m_selectGameObujectKunID = -1;
     }
 }
예제 #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bytes"></param>
        public void OnMessageEventPush(BinaryReader binaryReader)
        {
            var gameObjectKun = new GameObjectKun();

            gameObjectKun.Deserialize(binaryReader);
            for (var i = 0; i < SceneManager.sceneCount; i++)
            {
                var scene = SceneManager.GetSceneAt(i);
                foreach (var obj in scene.GetRootGameObjects())
                {
                    var go = FindGameObjectInChildren(obj, gameObjectKun.instanceID);
                    if (go != null)
                    {
                        gameObjectKun.WriteBack(go);
                        return;
                    }
                }
            }
        }
예제 #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(object obj)
        {
            var other = obj as SceneKun;

            if (other == null)
            {
                return(false);
            }
            if (!string.Equals(name, other.name))
            {
                return(false);
            }
            if (this.handle != other.handle)
            {
                return(false);
            }
            if (!int.Equals(rootCount, other.rootCount))
            {
                return(false);
            }
            if (mGameObjectKuns != null)
            {
                if (other.mGameObjectKuns == null)
                {
                    return(false);
                }
                if (mGameObjectKuns.Length != other.mGameObjectKuns.Length)
                {
                    return(false);
                }
                for (var i = 0; i < mGameObjectKuns.Length; i++)
                {
                    if (!GameObjectKun.Equals(mGameObjectKuns[i], other.mGameObjectKuns[i]))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
예제 #11
0
        public void MoveGameObjectToScene(GameObjectKun gameObjectKun, SceneKun sceneKun)
        {
            // RootGameObjectの場合、元のSceneから削除する
            for (var i = 0; i < sceneKuns.Length; i++)
            {
                var list = new List <GameObjectKun>(sceneKuns[i].gameObjectKuns);
                if (list.Contains(gameObjectKun))
                {
                    list.Remove(gameObjectKun);
                    sceneKuns[i].gameObjectKuns = list.ToArray();
                    break;
                }
            }

            // 移動先のSceneへ追加
            {
                var list = new List <GameObjectKun>(sceneKun.gameObjectKuns);
                list.Add(gameObjectKun);
                sceneKun.gameObjectKuns            = list.ToArray();
                gameObjectKun.transformKun.sceneHn = sceneKun.handle;
            }
        }