//广播移动 public void BroadcastMoveTo(ObjCharacter _this) { if (!_this.mActive) { return; } if (null == _this.Zone) { return; } var msg = new CharacterMoveMsg { ObjId = _this.ObjId }; foreach (var pos in _this.mTargetPos) { msg.TargetPos.Add(new Vector2Int32 { x = Utility.MultiplyPrecision(pos.X), y = Utility.MultiplyPrecision(pos.Y) }); } if (ObjCharacter.BroadcastMoveToType == 1) { _this.Zone.PushMoveToMsg(msg); return; } SceneServer.Instance.ServerControl.SyncMoveTo(_this.EnumAllVisiblePlayerIdExclude(_this.ObjId), msg); }
public void PushMoveToMsg(Zone _this, CharacterMoveMsg temp) { _this.movetoList.Moves.Add(temp); if (_this.movetoTrigger == null) { _this.movetoTrigger = SceneServerControl.Timer.CreateTrigger(DateTime.Now.AddMilliseconds(ObjCharacter.BroadcastCd), () => { MoveToSend(_this); }); } }
public void SyncMoveTo(CharacterMoveMsg msg) { var character = ObjManager.Instance.FindCharacterById(msg.ObjId); if (null == character) { Logger.Warn("NotifyMoveTo: obj[{0}]=null", msg.ObjId); return; } if (msg.ObjId == PlayerDataManager.Instance.GetGuid()) { return; } var v = msg.TargetPos.Select( item => new Vector3(GameUtils.DividePrecision(item.x), 0, GameUtils.DividePrecision(item.y))).ToList(); character.MoveTo(v, 0); if (character.GetObjType() == OBJ.TYPE.NPC) { (character as ObjNPC).DelayedMove = null; } }
public void PushMoveToMsg(CharacterMoveMsg temp) { mImpl.PushMoveToMsg(this, temp); }