void SyncTankPosition(SyncTankPositionMsg msg) { //uses quaternion and position info to set tank transform if (msg.TankID == TankID) { Vector3 NewPos; Quaternion NewRot = new Quaternion(msg.xQuat, msg.yQuat, msg.zQuat, msg.wQuat); NewPos.x = msg.xPos; NewPos.y = msg.yPos; NewPos.z = msg.zPos; transform.position = NewPos; transform.rotation = NewRot; } }
// Update is called once per frame void FixedUpdate() { CurrentFrame = Time.frameCount; //madbrew : what about order on recieving end? MoveTank(); HealStamina(); if (CurrentFrame == NextMoveUpdateFrame) { NextMoveUpdateFrame = LastMoveUpdateFrame; SyncTankPositionMsg msg = new SyncTankPositionMsg( CurrentFrame, TankID, transform.position, transform.rotation ); GameUtilities.Broadcast("SyncTankPosition", msg); } }
void SyncTankPosition(SyncTankPositionMsg msg) { if (msg.External) { return; } WebsockAdaptorSend( SyncTankPositionID + "," + msg.FrameNo + "," + msg.TankID + "," + msg.xPos + "," + msg.yPos + "," + msg.zPos + "," + msg.xQuat + "," + msg.yQuat + "," + msg.zQuat + "," + msg.wQuat ); }
static SyncTankPositionMsg ReconstructSyncTankPositionMsg(string message) { string[] parts = message.Split(new char[] { ',' }); SyncTankPositionMsg msg = new SyncTankPositionMsg(); int part = 0; msg.External = true; msg.FrameNo = int.Parse(parts[part++]); msg.TankID = byte.Parse(parts[part++]); msg.xPos = float.Parse(parts[part++]); msg.yPos = float.Parse(parts[part++]); msg.zPos = float.Parse(parts[part++]); msg.xQuat = float.Parse(parts[part++]); msg.yQuat = float.Parse(parts[part++]); msg.zQuat = float.Parse(parts[part++]); msg.wQuat = float.Parse(parts[part++]); return(msg); }