public void Leave(MapUnit mapUnit, bool isLeaveRoom)
        {
            if (!IsOnSameRoom(mapUnit))
            {
                return;
            }

            mapUnit.SendChannel = null;

            var obj = OtherHelper.Search(PositionMambers, e => e.Uid == mapUnit.Uid);

            if (obj != null)
            {
                PositionMambers.Remove(mapUnit);
            }

            if (isLeaveRoom)
            {
                //如果MapUnit是離開Room,要告知MapUnitDestroy
                m2C_MapUnitDestroy.MapUnitId = mapUnit.Id;
                SendMessage(m2C_MapUnitDestroy);
            }
            else
            {
                //如果MapUnit是離開Block,不就要告知觀看者MapUnitDestroy
                for (int i = 0; i < mapUnit.LookAtSources.Count; i++)
                {
                    Unlook(mapUnit.LookAtSources[i]);
                }
                m2C_MapUnitDestroy.MapUnitId = mapUnit.Id;
                SendMessage(m2C_MapUnitDestroy);
            }
        }
        public void Enter(MapUnit mapUnit, double position)
        {
            if (!IsOnSameRoom(mapUnit))
            {
                return;
            }

            mapUnit.SendChannel = this;

            var obj = OtherHelper.Search(PositionMambers, e => e.Uid == mapUnit.Uid);

            if (obj == null)
            {
                PositionMambers.Add(mapUnit);
            }
            m2C_MapUnitCreate.MapUnitInfo = mapUnit.Info;
            SendMessage(m2C_MapUnitCreate);
            var lookAtSources = mapUnit.GetLookAtSources();

            for (int i = 0; i < lookAtSources.Count; i++)
            {
                Look(lookAtSources[i]);
            }
        }
 public void Release()
 {
     Block = null;
     PositionMambers.Clear();
     ReceviceMambers.Clear();
 }
 public BlockChannel(Block block)
 {
     Block = block;
     PositionMambers.Clear();
     ReceviceMambers.Clear();
 }