void CmdServerMove(int curSeq, Vector3 curPos, bool isRun, bool isRight) { int expectedSeq = ActorRun.MoveSeq + 1; if (curSeq < expectedSeq) { Debug.LogWarning(string.Format("[Seq Late] expectedSeq:{0}, receive:{1}", expectedSeq, curSeq)); } else if (curSeq > expectedSeq) { Debug.LogWarning(string.Format("[Seq Lost] expectedSeq:{0}, receive:{1}", expectedSeq, curSeq)); } if (isRun) { ActorRun.StartRun(isRight); } else { ActorRun.StopRun(); } ActorRun.MoveStep(Time.fixedDeltaTime); CheckCheat(curPos); SetDirtyBit(0xffffffff); }
void SendAdjustOwner() { AdjustSnapShot snapShot = new AdjustSnapShot(); ActorRun.GetSnapShot(ref snapShot); RpcAdjustOwner(snapShot.seq, snapShot.pos, snapShot.isRun, snapShot.isRight, snapShot.speed); }
public override void OnDeserialize(NetworkReader reader, bool initialState) { Vector3 pos = Vector3.zero; Vector3 vel = Vector3.zero; pos = reader.ReadVector3(); vel = reader.ReadVector3(); if (!IsOwner) { ActorRun.OnRecvNew(pos, vel); } }
void RpcAdjustOwner(int seq, Vector3 dsPos, bool isRun, bool isRight, float speed) { if (!IsOwner) { return; } Debug.LogWarning("AdjustOwner Player By DS at seq:" + seq); m_ownerOperateRecords.RemoveAllLessThen(seq); ActorRun.ResetByDS(seq, dsPos, isRun, isRight, speed); ActorRun.AdjustMove(m_ownerOperateRecords); }
public T Actor <T>() { return(ActorRun.Get <T>()); }
protected virtual async void RunActor(int cmd, long id, int runtype, List <IMemoryOwner <byte> > memoryOwners, params object[] args) { try { switch (runtype) { case 0: { ActorRun.SyncAction(id, cmd, OpenAccess.Public, args); Dispose_table(memoryOwners); } break; case 1: { await ActorRun.AsyncAction(id, cmd, OpenAccess.Public, args); Dispose_table(memoryOwners); await SendResult(id); } break; case 2: { var ret_value = await ActorRun.CallFunc <object>(id, cmd, OpenAccess.Public, args); Dispose_table(memoryOwners); switch (ret_value) { case Result result: { result.Id = id; await SendResult(result); } break; default: { await SendResult(id, ret_value); } break; } } break; } } catch (System.Net.Sockets.SocketException) { } catch (NetxException er) { if (er.ErrorType != ErrorType.ActorQueueMaxErr) { Log.Error("Actor Server Err:", er); } SendError(id, $"Actor Server Err:{er.Message}", ErrorType.CallErr); } catch (Exception er) { Log.Error("Actor Server Err:", er); SendError(id, $"Actor Server Err:{er.Message}", ErrorType.CallErr); } }
protected async Task <bool> DataOnByRead(IFiberRw <AsyncToken> fiberRw, int runtype) { var cmd = await fiberRw.ReadInt32(); var id = await fiberRw.ReadInt64(); if (AsyncServicesRegisterDict.TryGetValue(cmd, out MethodRegister? service)) { var argslen = await fiberRw.ReadInt32(); if (argslen == service.ArgsLen) { object[] args = new object[argslen]; List <IMemoryOwner <byte> > mem_disposetable = new List <IMemoryOwner <byte> >(); for (int i = 0; i < argslen; i++) { var(arg, owner) = await base.ReadDataAsync(fiberRw, service.ArgsType[i]); args[i] = arg; if (owner != null) { mem_disposetable.Add(owner); } } RunCall(service, cmd, id, runtype, mem_disposetable, args); return(true); } else { Log.WarnFormat("{RemoteEndPoint} call async service:{cmd} Args Error: len {argslen}->{Length} \r\n to {service}" , fiberRw.Async?.AcceptSocket?.RemoteEndPoint?.ToString() ?? "null" , cmd , argslen , service.ArgsType.Length , service); SendError(id, $"call async service:{cmd} Args Error: len {argslen}->{service.ArgsType.Length}\r\n to {service}", ErrorType.ArgLenErr); return(false); } } else { service = ActorRun.GetCmdService(cmd); if (service != null) { var argslen = await fiberRw.ReadInt32(); if (argslen == service.ArgsLen) { object[] args = new object[argslen]; List <IMemoryOwner <byte> > mem_disposetable = new List <IMemoryOwner <byte> >(); for (int i = 0; i < argslen; i++) { var(arg, owner) = await base.ReadDataAsync(fiberRw, service.ArgsType[i]); args[i] = arg; if (owner != null) { mem_disposetable.Add(owner); } } RunActor(cmd, id, runtype, mem_disposetable, args); return(true); } else { Log.WarnFormat("{RemoteEndPoint} call actor service:{cmd} Args Error: len {argslen}->{Length} \r\n to {service}" , fiberRw.Async?.AcceptSocket?.RemoteEndPoint?.ToString() ?? "null" , cmd , argslen , service.ArgsType.Length , service); SendError(id, $"call actor service:{cmd} Args Error: len {argslen}->{service.ArgsType.Length}\r\n to {service}", ErrorType.ArgLenErr); return(false); } } else { Log.WarnFormat($"{fiberRw.Async?.AcceptSocket?.RemoteEndPoint} call service:{cmd} not find cmd "); SendError(id, $"call service:{cmd} not find the cmd,please check it", ErrorType.NotCmd); return(false); } } }