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(); }