static void ReceviceCommandComponent(SyncSession session, ProtocolRequestBase e) { CommandComponent msg = new CommandComponent(); { Dictionary <string, object> data2 = (Dictionary <string, object>)e.m_data["movedir"]; SyncVector3 tmp2 = new SyncVector3(); tmp2.x = (int)data2["x"]; tmp2.y = (int)data2["y"]; tmp2.z = (int)data2["z"]; msg.moveDir = tmp2; } { Dictionary <string, object> data2 = (Dictionary <string, object>)e.m_data["skilldir"]; SyncVector3 tmp2 = new SyncVector3(); tmp2.x = (int)data2["x"]; tmp2.y = (int)data2["y"]; tmp2.z = (int)data2["z"]; msg.skillDir = tmp2; } msg.isFire = (bool)e.m_data["isfire"]; msg.id = (int)e.m_data["id"]; msg.frame = (int)e.m_data["frame"]; EventService.DispatchTypeEvent(session, msg); }
void UpdateMove(EntityBase entity, int deltaTime) { MoveComponent mc = (MoveComponent)entity.GetComp("MoveComponent"); SyncVector3 newPos = mc.pos.DeepCopy(); newPos.x += (mc.dir.x * deltaTime / 1000) * mc.m_velocity / 1000; newPos.y += (mc.dir.y * deltaTime / 1000) * mc.m_velocity / 1000; newPos.z += (mc.dir.z * deltaTime / 1000) * mc.m_velocity / 1000; if (!entity.GetExistComp("FlyObjectComponent") && entity.GetExistComp("CollisionComponent")) { CollisionComponent cc = (CollisionComponent)entity.GetComp("CollisionComponent"); cc.area.position = newPos.ToVector(); if (!IsCollisionBlock(cc.area)) { mc.pos = newPos; } } else { mc.pos = newPos; } if (SyncDebugSystem.isDebug && SyncDebugSystem.IsFilter("MoveSystem")) { string content = "id: " + mc.Entity.ID + " m_pos " + mc.pos.ToVector() + " deltaTime " + deltaTime + " m_velocity " + mc.m_velocity + " m_dir " + mc.dir.ToVector(); //Debug.Log(content); //SyncDebugSystem.syncLog += content + "\n"; } }
private void Awake() { _view = GetComponent <NetView>(); _actorRpc = new ActorViewRpc(_view); _moveController = GetComponent <CharacterController>(); _netPosition = transform.position; }
void UpdateMove(EntityBase entity, int deltaTime) { MoveComponent mc = entity.GetComp <MoveComponent>(); SyncVector3 newPos = mc.pos.DeepCopy(); newPos.x += mc.dir.x * deltaTime * mc.m_velocity / (1000 * 1000); newPos.y += mc.dir.y * deltaTime * mc.m_velocity / (1000 * 1000); newPos.z += mc.dir.z * deltaTime * mc.m_velocity / (1000 * 1000); if (entity.GetExistComp <CollisionComponent>()) { CollisionComponent cc = entity.GetComp <CollisionComponent>(); cc.area.position = newPos.ToVector(); if (!IsCollisionBlock(cc.area)) { mc.pos = newPos; } } else { mc.pos = newPos; } }
public static SyncVector3 operator *(SyncVector3 a, SyncVector3 b) { SyncVector3 result = new SyncVector3(); result.x = a.x * b.x / 1000; result.y = a.y * b.y / 1000; result.z = a.z * b.z / 1000; return(result); }
public static SyncVector3 operator -(SyncVector3 a, SyncVector3 b) { SyncVector3 result = new SyncVector3(); result.x = a.x - b.x; result.y = a.y - b.y; result.z = a.z - b.z; return(result); }
public SyncVector3 DeepCopy() { SyncVector3 sv = new SyncVector3(); sv.x = x; sv.y = y; sv.z = z; return(sv); }
public static SyncVector3 operator /(SyncVector3 a, float b) { SyncVector3 result = new SyncVector3(); result.x = (int)(a.x / b); result.y = (int)(a.y / b); result.z = (int)(a.z / b); return(result); }
//顺时针 public SyncVector3 RotateInXZ2(float angle) { SyncVector3 result = new SyncVector3(); angle *= Mathf.Deg2Rad; result.x = (int)(x * Mathf.Cos(angle) + z * Mathf.Sin(angle)); result.z = (int)(-x * Mathf.Sin(angle) + z * Mathf.Cos(angle)); return(result); }
public static SyncVector3 operator /(SyncVector3 a, int b) { SyncVector3 result = new SyncVector3(); result.x = a.x / b; result.y = a.y / b; result.z = a.z / b; return(result); }
public void FromCommand(CommandComponent comp) { moveDir = comp.moveDir.DeepCopy(); skillDir = comp.skillDir.DeepCopy(); element1 = comp.element1; element2 = comp.element2; isFire = comp.isFire; frame = comp.frame; id = comp.id; }
void UpdateMove(EntityBase entity, int deltaTime) { MoveComponent mc = (MoveComponent)entity.GetComp("MoveComponent"); SyncVector3 newPos = mc.pos.DeepCopy(); newPos.x += (mc.dir.x * deltaTime / 1000) * mc.m_velocity / 1000; newPos.y += (mc.dir.y * deltaTime / 1000) * mc.m_velocity / 1000; newPos.z += (mc.dir.z * deltaTime / 1000) * mc.m_velocity / 1000; mc.pos = newPos; }
public bool Equals(SyncVector3 sv) { if (sv.x != x) { return(false); } if (sv.y != y) { return(false); } if (sv.z != z) { return(false); } return(true); }
SyncVector3 Offset_Circle_Circle(Area area) { float distance = Vector3.Distance(position, area.position); float r = radius + area.radius; //Debug.Log("distance " + distance + " r " + r + " "); if (distance < r) { SyncVector3 offset = new SyncVector3(); offset.FromVector((area.position - position).normalized * (r - distance)); return(offset); } else { return(new SyncVector3()); } }
public void OverlapLogic(EntityBase entity) { CollisionComponent cc = (CollisionComponent)entity.GetComp("CollisionComponent"); MoveComponent mc = (MoveComponent)entity.GetComp("MoveComponent"); cc.area.position = mc.pos.ToVector(); SyncVector3 offset = new SyncVector3(); for (int i = 0; i < cc.CollisionList.Count; i++) { if (cc.CollisionList[i].GetExistComp("BlockComponent")) { CollisionComponent cctmp = (CollisionComponent)cc.CollisionList[i].GetComp("CollisionComponent"); offset += cctmp.area.GetOffsetPos(cc.area); } } mc.pos = mc.pos + offset; }
static void ReceviceCommandMsg(SyncSession session, ProtocolRequestBase e) { Protocol.CommandMsg msg = new Protocol.CommandMsg(); msg.frame = (int)e.m_data["frame"]; msg.serverTime = (int)e.m_data["servertime"]; { List <Dictionary <string, object> > data2 = (List <Dictionary <string, object> >)e.m_data["msg"]; List <Protocol.CommandInfo> list2 = new List <Protocol.CommandInfo>(); for (int i2 = 0; i2 < data2.Count; i2++) { Protocol.CommandInfo tmp2 = new Protocol.CommandInfo(); tmp2.frame = (int)data2[i2]["frame"]; tmp2.id = (int)data2[i2]["id"]; { Dictionary <string, object> data4 = (Dictionary <string, object>)data2[i2]["movedir"]; SyncVector3 tmp4 = new SyncVector3(); tmp4.x = (int)data4["x"]; tmp4.y = (int)data4["y"]; tmp4.z = (int)data4["z"]; tmp2.moveDir = tmp4; } { Dictionary <string, object> data4 = (Dictionary <string, object>)data2[i2]["skilldir"]; SyncVector3 tmp4 = new SyncVector3(); tmp4.x = (int)data4["x"]; tmp4.y = (int)data4["y"]; tmp4.z = (int)data4["z"]; tmp2.skillDir = tmp4; } tmp2.element1 = (int)data2[i2]["element1"]; tmp2.element2 = (int)data2[i2]["element2"]; tmp2.isFire = (bool)data2[i2]["isfire"]; list2.Add(tmp2); } msg.msg = list2; } EventService.DispatchTypeEvent(session, msg); }
void UpdateMove(EntityBase entity, int deltaTime) { TestMoveComponent mc = (TestMoveComponent)entity.GetComp("TestMoveComponent"); TestCommandComponent cc = (TestCommandComponent)entity.GetComp("TestCommandComponent"); mc.dir = cc.moveDir; mc.m_velocity = 4000; //Debug.Log("LockStepTestMoveSystem " + mc.dir); SyncVector3 newPos = mc.pos.DeepCopy(); newPos.x += (mc.dir.x * deltaTime / 1000) * mc.m_velocity / 1000; newPos.y += (mc.dir.y * deltaTime / 1000) * mc.m_velocity / 1000; newPos.z += (mc.dir.z * deltaTime / 1000) * mc.m_velocity / 1000; //Debug.Log("mc.pos "+ mc.pos + " newPos " + newPos + " mc.dir.x " + mc.dir.x + " mc.m_velocity " + mc.m_velocity); mc.pos = newPos; //Debug.DrawRay(newPos.ToVector(), Vector3.up, Color.yellow, 10); }
List <CreatPostionInfo> GetCreatePostionInfos(SkillDataGenerate skillData, EntityBase skiller, int Length) { MoveComponent mc = skiller.GetComp <MoveComponent>(); SkillStatusComponent ssc = skiller.GetComp <SkillStatusComponent>(); List <CreatPostionInfo> result = new List <CreatPostionInfo>(); //result.Clear(); if (Length == 0) { return(result); } HardPointEnum l_FXCreatPoint = skillData.m_FlyCreatPoint; SyncVector3 forward = new SyncVector3().FromVector(ssc.skillDir.ToVector().normalized); SyncVector3 dir = forward; SyncVector3 pos = mc.pos; SyncVector3 leftBorder = new SyncVector3(); SyncVector3 leftDir = new SyncVector3(); SyncVector3 leftPos = new SyncVector3(); float sectorStep = 0; float rectangleStep = 0; AreaDataGenerate area = DataGenerateManager <AreaDataGenerate> .GetData(skillData.m_FlyObjectArea); switch (area.m_SkewDirection) { case DirectionEnum.Forward: break; case DirectionEnum.Backward: forward *= -1; break; //case DirectionEnum.Close: forward = (emc.pos - mc.pos); break; //case DirectionEnum.Leave: forward = (mc.pos - emc.pos); break; } switch (area.m_Shape) { case AreaType.Circle: leftBorder = forward.RotateInXZ(360 * 0.5f); sectorStep = 360 / (Length + 1); break; case AreaType.Sector: leftBorder = forward.RotateInXZ(area.m_Angle * 0.5f); sectorStep = area.m_Angle / (Length + 1); pos = pos + forward * area.m_SkewDistance; break; case AreaType.Rectangle: leftDir = forward.RotateInXZ(90); leftPos = pos + leftDir * area.m_Width * 0.5f; rectangleStep = area.m_Width / (Length + 1); break; } for (int i = 0; i < Length; i++) { switch (area.m_Shape) { case AreaType.Circle: case AreaType.Sector: dir = leftBorder.RotateInXZ2((i + 1) * sectorStep); break; case AreaType.Rectangle: pos = leftPos - leftDir * rectangleStep * (i + 1); break; } CreatPostionInfo cpi = new CreatPostionInfo(); pos.y = 0; dir.y = 0; cpi.m_pos = pos; cpi.m_dir = dir; result.Add(cpi); //CreatPostionInfo cpi = new CreatPostionInfo(); //cpi.m_pos = mc.pos.DeepCopy(); //cpi.m_dir.FromVector( ssc.skillDir.DeepCopy().ToVector().normalized); //result.Add(cpi); } return(result); }