您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
740 行
35 KiB
740 行
35 KiB
using Unity.Networking.Transport;
|
|
using Unity.NetCode;
|
|
using Unity.Mathematics;
|
|
using Unity.Collections;
|
|
|
|
public struct PlayerStateSnapshotData : ISnapshotData<PlayerStateSnapshotData>
|
|
{
|
|
public uint tick;
|
|
private int PlayerStateplayerId;
|
|
private NativeString64 PlayerStateplayerName;
|
|
private int PlayerStateteamIndex;
|
|
private int PlayerStatescore;
|
|
private uint PlayerStategameModeSystemInitialized;
|
|
private uint PlayerStatedisplayCountDown;
|
|
private int PlayerStatecountDown;
|
|
private uint PlayerStatedisplayScoreBoard;
|
|
private uint PlayerStatedisplayGameScore;
|
|
private uint PlayerStatedisplayGameResult;
|
|
private NativeString64 PlayerStategameResult;
|
|
private uint PlayerStatedisplayGoal;
|
|
private int PlayerStategoalPositionX;
|
|
private int PlayerStategoalPositionY;
|
|
private int PlayerStategoalPositionZ;
|
|
private uint PlayerStategoalDefendersColor;
|
|
private uint PlayerStategoalAttackersColor;
|
|
private uint PlayerStategoalAttackers;
|
|
private uint PlayerStategoalDefenders;
|
|
private NativeString64 PlayerStategoalString;
|
|
private NativeString64 PlayerStateactionString;
|
|
private int PlayerStategoalCompletion;
|
|
uint changeMask0;
|
|
|
|
public uint Tick => tick;
|
|
public int GetPlayerStateplayerId(GhostDeserializerState deserializerState)
|
|
{
|
|
return (int)PlayerStateplayerId;
|
|
}
|
|
public int GetPlayerStateplayerId()
|
|
{
|
|
return (int)PlayerStateplayerId;
|
|
}
|
|
public void SetPlayerStateplayerId(int val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStateplayerId = (int)val;
|
|
}
|
|
public void SetPlayerStateplayerId(int val)
|
|
{
|
|
PlayerStateplayerId = (int)val;
|
|
}
|
|
public NativeString64 GetPlayerStateplayerName(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStateplayerName;
|
|
}
|
|
public NativeString64 GetPlayerStateplayerName()
|
|
{
|
|
return PlayerStateplayerName;
|
|
}
|
|
public void SetPlayerStateplayerName(NativeString64 val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStateplayerName = val;
|
|
}
|
|
public void SetPlayerStateplayerName(NativeString64 val)
|
|
{
|
|
PlayerStateplayerName = val;
|
|
}
|
|
public int GetPlayerStateteamIndex(GhostDeserializerState deserializerState)
|
|
{
|
|
return (int)PlayerStateteamIndex;
|
|
}
|
|
public int GetPlayerStateteamIndex()
|
|
{
|
|
return (int)PlayerStateteamIndex;
|
|
}
|
|
public void SetPlayerStateteamIndex(int val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStateteamIndex = (int)val;
|
|
}
|
|
public void SetPlayerStateteamIndex(int val)
|
|
{
|
|
PlayerStateteamIndex = (int)val;
|
|
}
|
|
public int GetPlayerStatescore(GhostDeserializerState deserializerState)
|
|
{
|
|
return (int)PlayerStatescore;
|
|
}
|
|
public int GetPlayerStatescore()
|
|
{
|
|
return (int)PlayerStatescore;
|
|
}
|
|
public void SetPlayerStatescore(int val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatescore = (int)val;
|
|
}
|
|
public void SetPlayerStatescore(int val)
|
|
{
|
|
PlayerStatescore = (int)val;
|
|
}
|
|
public bool GetPlayerStategameModeSystemInitialized(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStategameModeSystemInitialized!=0;
|
|
}
|
|
public bool GetPlayerStategameModeSystemInitialized()
|
|
{
|
|
return PlayerStategameModeSystemInitialized!=0;
|
|
}
|
|
public void SetPlayerStategameModeSystemInitialized(bool val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategameModeSystemInitialized = val?1u:0;
|
|
}
|
|
public void SetPlayerStategameModeSystemInitialized(bool val)
|
|
{
|
|
PlayerStategameModeSystemInitialized = val?1u:0;
|
|
}
|
|
public bool GetPlayerStatedisplayCountDown(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStatedisplayCountDown!=0;
|
|
}
|
|
public bool GetPlayerStatedisplayCountDown()
|
|
{
|
|
return PlayerStatedisplayCountDown!=0;
|
|
}
|
|
public void SetPlayerStatedisplayCountDown(bool val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatedisplayCountDown = val?1u:0;
|
|
}
|
|
public void SetPlayerStatedisplayCountDown(bool val)
|
|
{
|
|
PlayerStatedisplayCountDown = val?1u:0;
|
|
}
|
|
public int GetPlayerStatecountDown(GhostDeserializerState deserializerState)
|
|
{
|
|
return (int)PlayerStatecountDown;
|
|
}
|
|
public int GetPlayerStatecountDown()
|
|
{
|
|
return (int)PlayerStatecountDown;
|
|
}
|
|
public void SetPlayerStatecountDown(int val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatecountDown = (int)val;
|
|
}
|
|
public void SetPlayerStatecountDown(int val)
|
|
{
|
|
PlayerStatecountDown = (int)val;
|
|
}
|
|
public bool GetPlayerStatedisplayScoreBoard(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStatedisplayScoreBoard!=0;
|
|
}
|
|
public bool GetPlayerStatedisplayScoreBoard()
|
|
{
|
|
return PlayerStatedisplayScoreBoard!=0;
|
|
}
|
|
public void SetPlayerStatedisplayScoreBoard(bool val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatedisplayScoreBoard = val?1u:0;
|
|
}
|
|
public void SetPlayerStatedisplayScoreBoard(bool val)
|
|
{
|
|
PlayerStatedisplayScoreBoard = val?1u:0;
|
|
}
|
|
public bool GetPlayerStatedisplayGameScore(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStatedisplayGameScore!=0;
|
|
}
|
|
public bool GetPlayerStatedisplayGameScore()
|
|
{
|
|
return PlayerStatedisplayGameScore!=0;
|
|
}
|
|
public void SetPlayerStatedisplayGameScore(bool val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatedisplayGameScore = val?1u:0;
|
|
}
|
|
public void SetPlayerStatedisplayGameScore(bool val)
|
|
{
|
|
PlayerStatedisplayGameScore = val?1u:0;
|
|
}
|
|
public bool GetPlayerStatedisplayGameResult(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStatedisplayGameResult!=0;
|
|
}
|
|
public bool GetPlayerStatedisplayGameResult()
|
|
{
|
|
return PlayerStatedisplayGameResult!=0;
|
|
}
|
|
public void SetPlayerStatedisplayGameResult(bool val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatedisplayGameResult = val?1u:0;
|
|
}
|
|
public void SetPlayerStatedisplayGameResult(bool val)
|
|
{
|
|
PlayerStatedisplayGameResult = val?1u:0;
|
|
}
|
|
public NativeString64 GetPlayerStategameResult(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStategameResult;
|
|
}
|
|
public NativeString64 GetPlayerStategameResult()
|
|
{
|
|
return PlayerStategameResult;
|
|
}
|
|
public void SetPlayerStategameResult(NativeString64 val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategameResult = val;
|
|
}
|
|
public void SetPlayerStategameResult(NativeString64 val)
|
|
{
|
|
PlayerStategameResult = val;
|
|
}
|
|
public bool GetPlayerStatedisplayGoal(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStatedisplayGoal!=0;
|
|
}
|
|
public bool GetPlayerStatedisplayGoal()
|
|
{
|
|
return PlayerStatedisplayGoal!=0;
|
|
}
|
|
public void SetPlayerStatedisplayGoal(bool val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStatedisplayGoal = val?1u:0;
|
|
}
|
|
public void SetPlayerStatedisplayGoal(bool val)
|
|
{
|
|
PlayerStatedisplayGoal = val?1u:0;
|
|
}
|
|
public float3 GetPlayerStategoalPosition(GhostDeserializerState deserializerState)
|
|
{
|
|
return GetPlayerStategoalPosition();
|
|
}
|
|
public float3 GetPlayerStategoalPosition()
|
|
{
|
|
return new float3(PlayerStategoalPositionX * 0.01f, PlayerStategoalPositionY * 0.01f, PlayerStategoalPositionZ * 0.01f);
|
|
}
|
|
public void SetPlayerStategoalPosition(float3 val, GhostSerializerState serializerState)
|
|
{
|
|
SetPlayerStategoalPosition(val);
|
|
}
|
|
public void SetPlayerStategoalPosition(float3 val)
|
|
{
|
|
PlayerStategoalPositionX = (int)(val.x * 100);
|
|
PlayerStategoalPositionY = (int)(val.y * 100);
|
|
PlayerStategoalPositionZ = (int)(val.z * 100);
|
|
}
|
|
public uint GetPlayerStategoalDefendersColor(GhostDeserializerState deserializerState)
|
|
{
|
|
return (uint)PlayerStategoalDefendersColor;
|
|
}
|
|
public uint GetPlayerStategoalDefendersColor()
|
|
{
|
|
return (uint)PlayerStategoalDefendersColor;
|
|
}
|
|
public void SetPlayerStategoalDefendersColor(uint val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategoalDefendersColor = (uint)val;
|
|
}
|
|
public void SetPlayerStategoalDefendersColor(uint val)
|
|
{
|
|
PlayerStategoalDefendersColor = (uint)val;
|
|
}
|
|
public uint GetPlayerStategoalAttackersColor(GhostDeserializerState deserializerState)
|
|
{
|
|
return (uint)PlayerStategoalAttackersColor;
|
|
}
|
|
public uint GetPlayerStategoalAttackersColor()
|
|
{
|
|
return (uint)PlayerStategoalAttackersColor;
|
|
}
|
|
public void SetPlayerStategoalAttackersColor(uint val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategoalAttackersColor = (uint)val;
|
|
}
|
|
public void SetPlayerStategoalAttackersColor(uint val)
|
|
{
|
|
PlayerStategoalAttackersColor = (uint)val;
|
|
}
|
|
public uint GetPlayerStategoalAttackers(GhostDeserializerState deserializerState)
|
|
{
|
|
return (uint)PlayerStategoalAttackers;
|
|
}
|
|
public uint GetPlayerStategoalAttackers()
|
|
{
|
|
return (uint)PlayerStategoalAttackers;
|
|
}
|
|
public void SetPlayerStategoalAttackers(uint val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategoalAttackers = (uint)val;
|
|
}
|
|
public void SetPlayerStategoalAttackers(uint val)
|
|
{
|
|
PlayerStategoalAttackers = (uint)val;
|
|
}
|
|
public uint GetPlayerStategoalDefenders(GhostDeserializerState deserializerState)
|
|
{
|
|
return (uint)PlayerStategoalDefenders;
|
|
}
|
|
public uint GetPlayerStategoalDefenders()
|
|
{
|
|
return (uint)PlayerStategoalDefenders;
|
|
}
|
|
public void SetPlayerStategoalDefenders(uint val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategoalDefenders = (uint)val;
|
|
}
|
|
public void SetPlayerStategoalDefenders(uint val)
|
|
{
|
|
PlayerStategoalDefenders = (uint)val;
|
|
}
|
|
public NativeString64 GetPlayerStategoalString(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStategoalString;
|
|
}
|
|
public NativeString64 GetPlayerStategoalString()
|
|
{
|
|
return PlayerStategoalString;
|
|
}
|
|
public void SetPlayerStategoalString(NativeString64 val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategoalString = val;
|
|
}
|
|
public void SetPlayerStategoalString(NativeString64 val)
|
|
{
|
|
PlayerStategoalString = val;
|
|
}
|
|
public NativeString64 GetPlayerStateactionString(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStateactionString;
|
|
}
|
|
public NativeString64 GetPlayerStateactionString()
|
|
{
|
|
return PlayerStateactionString;
|
|
}
|
|
public void SetPlayerStateactionString(NativeString64 val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStateactionString = val;
|
|
}
|
|
public void SetPlayerStateactionString(NativeString64 val)
|
|
{
|
|
PlayerStateactionString = val;
|
|
}
|
|
public float GetPlayerStategoalCompletion(GhostDeserializerState deserializerState)
|
|
{
|
|
return PlayerStategoalCompletion * 0.01f;
|
|
}
|
|
public float GetPlayerStategoalCompletion()
|
|
{
|
|
return PlayerStategoalCompletion * 0.01f;
|
|
}
|
|
public void SetPlayerStategoalCompletion(float val, GhostSerializerState serializerState)
|
|
{
|
|
PlayerStategoalCompletion = (int)(val * 100);
|
|
}
|
|
public void SetPlayerStategoalCompletion(float val)
|
|
{
|
|
PlayerStategoalCompletion = (int)(val * 100);
|
|
}
|
|
|
|
public void PredictDelta(uint tick, ref PlayerStateSnapshotData baseline1, ref PlayerStateSnapshotData baseline2)
|
|
{
|
|
var predictor = new GhostDeltaPredictor(tick, this.tick, baseline1.tick, baseline2.tick);
|
|
PlayerStateplayerId = predictor.PredictInt(PlayerStateplayerId, baseline1.PlayerStateplayerId, baseline2.PlayerStateplayerId);
|
|
PlayerStateteamIndex = predictor.PredictInt(PlayerStateteamIndex, baseline1.PlayerStateteamIndex, baseline2.PlayerStateteamIndex);
|
|
PlayerStatescore = predictor.PredictInt(PlayerStatescore, baseline1.PlayerStatescore, baseline2.PlayerStatescore);
|
|
PlayerStategameModeSystemInitialized = (uint)predictor.PredictInt((int)PlayerStategameModeSystemInitialized, (int)baseline1.PlayerStategameModeSystemInitialized, (int)baseline2.PlayerStategameModeSystemInitialized);
|
|
PlayerStatedisplayCountDown = (uint)predictor.PredictInt((int)PlayerStatedisplayCountDown, (int)baseline1.PlayerStatedisplayCountDown, (int)baseline2.PlayerStatedisplayCountDown);
|
|
PlayerStatecountDown = predictor.PredictInt(PlayerStatecountDown, baseline1.PlayerStatecountDown, baseline2.PlayerStatecountDown);
|
|
PlayerStatedisplayScoreBoard = (uint)predictor.PredictInt((int)PlayerStatedisplayScoreBoard, (int)baseline1.PlayerStatedisplayScoreBoard, (int)baseline2.PlayerStatedisplayScoreBoard);
|
|
PlayerStatedisplayGameScore = (uint)predictor.PredictInt((int)PlayerStatedisplayGameScore, (int)baseline1.PlayerStatedisplayGameScore, (int)baseline2.PlayerStatedisplayGameScore);
|
|
PlayerStatedisplayGameResult = (uint)predictor.PredictInt((int)PlayerStatedisplayGameResult, (int)baseline1.PlayerStatedisplayGameResult, (int)baseline2.PlayerStatedisplayGameResult);
|
|
PlayerStatedisplayGoal = (uint)predictor.PredictInt((int)PlayerStatedisplayGoal, (int)baseline1.PlayerStatedisplayGoal, (int)baseline2.PlayerStatedisplayGoal);
|
|
PlayerStategoalPositionX = predictor.PredictInt(PlayerStategoalPositionX, baseline1.PlayerStategoalPositionX, baseline2.PlayerStategoalPositionX);
|
|
PlayerStategoalPositionY = predictor.PredictInt(PlayerStategoalPositionY, baseline1.PlayerStategoalPositionY, baseline2.PlayerStategoalPositionY);
|
|
PlayerStategoalPositionZ = predictor.PredictInt(PlayerStategoalPositionZ, baseline1.PlayerStategoalPositionZ, baseline2.PlayerStategoalPositionZ);
|
|
PlayerStategoalDefendersColor = (uint)predictor.PredictInt((int)PlayerStategoalDefendersColor, (int)baseline1.PlayerStategoalDefendersColor, (int)baseline2.PlayerStategoalDefendersColor);
|
|
PlayerStategoalAttackersColor = (uint)predictor.PredictInt((int)PlayerStategoalAttackersColor, (int)baseline1.PlayerStategoalAttackersColor, (int)baseline2.PlayerStategoalAttackersColor);
|
|
PlayerStategoalAttackers = (uint)predictor.PredictInt((int)PlayerStategoalAttackers, (int)baseline1.PlayerStategoalAttackers, (int)baseline2.PlayerStategoalAttackers);
|
|
PlayerStategoalDefenders = (uint)predictor.PredictInt((int)PlayerStategoalDefenders, (int)baseline1.PlayerStategoalDefenders, (int)baseline2.PlayerStategoalDefenders);
|
|
PlayerStategoalCompletion = predictor.PredictInt(PlayerStategoalCompletion, baseline1.PlayerStategoalCompletion, baseline2.PlayerStategoalCompletion);
|
|
}
|
|
|
|
public void Serialize(int networkId, ref PlayerStateSnapshotData baseline, DataStreamWriter writer, NetworkCompressionModel compressionModel)
|
|
{
|
|
changeMask0 = (PlayerStateplayerId != baseline.PlayerStateplayerId) ? 1u : 0;
|
|
changeMask0 |= PlayerStateplayerName.Equals(baseline.PlayerStateplayerName) ? 0 : (1u<<1);
|
|
changeMask0 |= (PlayerStateteamIndex != baseline.PlayerStateteamIndex) ? (1u<<2) : 0;
|
|
changeMask0 |= (PlayerStatescore != baseline.PlayerStatescore) ? (1u<<3) : 0;
|
|
changeMask0 |= (PlayerStategameModeSystemInitialized != baseline.PlayerStategameModeSystemInitialized) ? (1u<<4) : 0;
|
|
changeMask0 |= (PlayerStatedisplayCountDown != baseline.PlayerStatedisplayCountDown) ? (1u<<5) : 0;
|
|
changeMask0 |= (PlayerStatecountDown != baseline.PlayerStatecountDown) ? (1u<<6) : 0;
|
|
changeMask0 |= (PlayerStatedisplayScoreBoard != baseline.PlayerStatedisplayScoreBoard) ? (1u<<7) : 0;
|
|
changeMask0 |= (PlayerStatedisplayGameScore != baseline.PlayerStatedisplayGameScore) ? (1u<<8) : 0;
|
|
changeMask0 |= (PlayerStatedisplayGameResult != baseline.PlayerStatedisplayGameResult) ? (1u<<9) : 0;
|
|
changeMask0 |= PlayerStategameResult.Equals(baseline.PlayerStategameResult) ? 0 : (1u<<10);
|
|
changeMask0 |= (PlayerStatedisplayGoal != baseline.PlayerStatedisplayGoal) ? (1u<<11) : 0;
|
|
changeMask0 |= (PlayerStategoalPositionX != baseline.PlayerStategoalPositionX ||
|
|
PlayerStategoalPositionY != baseline.PlayerStategoalPositionY ||
|
|
PlayerStategoalPositionZ != baseline.PlayerStategoalPositionZ) ? (1u<<12) : 0;
|
|
changeMask0 |= (PlayerStategoalDefendersColor != baseline.PlayerStategoalDefendersColor) ? (1u<<13) : 0;
|
|
changeMask0 |= (PlayerStategoalAttackersColor != baseline.PlayerStategoalAttackersColor) ? (1u<<14) : 0;
|
|
changeMask0 |= (PlayerStategoalAttackers != baseline.PlayerStategoalAttackers) ? (1u<<15) : 0;
|
|
changeMask0 |= (PlayerStategoalDefenders != baseline.PlayerStategoalDefenders) ? (1u<<16) : 0;
|
|
changeMask0 |= PlayerStategoalString.Equals(baseline.PlayerStategoalString) ? 0 : (1u<<17);
|
|
changeMask0 |= PlayerStateactionString.Equals(baseline.PlayerStateactionString) ? 0 : (1u<<18);
|
|
changeMask0 |= (PlayerStategoalCompletion != baseline.PlayerStategoalCompletion) ? (1u<<19) : 0;
|
|
writer.WritePackedUIntDelta(changeMask0, baseline.changeMask0, compressionModel);
|
|
if ((changeMask0 & (1 << 0)) != 0)
|
|
writer.WritePackedIntDelta(PlayerStateplayerId, baseline.PlayerStateplayerId, compressionModel);
|
|
if ((changeMask0 & (1 << 1)) != 0)
|
|
{
|
|
writer.WritePackedUIntDelta(PlayerStateplayerName.LengthInBytes, baseline.PlayerStateplayerName.LengthInBytes, compressionModel);
|
|
var PlayerStateplayerNameBaselineLength = (ushort)math.min((uint)PlayerStateplayerName.LengthInBytes, baseline.PlayerStateplayerName.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStateplayerNameBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStateplayerName.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStateplayerName.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b1[sb], b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStateplayerNameBaselineLength; sb < PlayerStateplayerName.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStateplayerName.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b[sb], 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((changeMask0 & (1 << 2)) != 0)
|
|
writer.WritePackedIntDelta(PlayerStateteamIndex, baseline.PlayerStateteamIndex, compressionModel);
|
|
if ((changeMask0 & (1 << 3)) != 0)
|
|
writer.WritePackedIntDelta(PlayerStatescore, baseline.PlayerStatescore, compressionModel);
|
|
if ((changeMask0 & (1 << 4)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStategameModeSystemInitialized, baseline.PlayerStategameModeSystemInitialized, compressionModel);
|
|
if ((changeMask0 & (1 << 5)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStatedisplayCountDown, baseline.PlayerStatedisplayCountDown, compressionModel);
|
|
if ((changeMask0 & (1 << 6)) != 0)
|
|
writer.WritePackedIntDelta(PlayerStatecountDown, baseline.PlayerStatecountDown, compressionModel);
|
|
if ((changeMask0 & (1 << 7)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStatedisplayScoreBoard, baseline.PlayerStatedisplayScoreBoard, compressionModel);
|
|
if ((changeMask0 & (1 << 8)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStatedisplayGameScore, baseline.PlayerStatedisplayGameScore, compressionModel);
|
|
if ((changeMask0 & (1 << 9)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStatedisplayGameResult, baseline.PlayerStatedisplayGameResult, compressionModel);
|
|
if ((changeMask0 & (1 << 10)) != 0)
|
|
{
|
|
writer.WritePackedUIntDelta(PlayerStategameResult.LengthInBytes, baseline.PlayerStategameResult.LengthInBytes, compressionModel);
|
|
var PlayerStategameResultBaselineLength = (ushort)math.min((uint)PlayerStategameResult.LengthInBytes, baseline.PlayerStategameResult.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStategameResultBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStategameResult.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStategameResult.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b1[sb], b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStategameResultBaselineLength; sb < PlayerStategameResult.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStategameResult.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b[sb], 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((changeMask0 & (1 << 11)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStatedisplayGoal, baseline.PlayerStatedisplayGoal, compressionModel);
|
|
if ((changeMask0 & (1 << 12)) != 0)
|
|
{
|
|
writer.WritePackedIntDelta(PlayerStategoalPositionX, baseline.PlayerStategoalPositionX, compressionModel);
|
|
writer.WritePackedIntDelta(PlayerStategoalPositionY, baseline.PlayerStategoalPositionY, compressionModel);
|
|
writer.WritePackedIntDelta(PlayerStategoalPositionZ, baseline.PlayerStategoalPositionZ, compressionModel);
|
|
}
|
|
if ((changeMask0 & (1 << 13)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStategoalDefendersColor, baseline.PlayerStategoalDefendersColor, compressionModel);
|
|
if ((changeMask0 & (1 << 14)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStategoalAttackersColor, baseline.PlayerStategoalAttackersColor, compressionModel);
|
|
if ((changeMask0 & (1 << 15)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStategoalAttackers, baseline.PlayerStategoalAttackers, compressionModel);
|
|
if ((changeMask0 & (1 << 16)) != 0)
|
|
writer.WritePackedUIntDelta(PlayerStategoalDefenders, baseline.PlayerStategoalDefenders, compressionModel);
|
|
if ((changeMask0 & (1 << 17)) != 0)
|
|
{
|
|
writer.WritePackedUIntDelta(PlayerStategoalString.LengthInBytes, baseline.PlayerStategoalString.LengthInBytes, compressionModel);
|
|
var PlayerStategoalStringBaselineLength = (ushort)math.min((uint)PlayerStategoalString.LengthInBytes, baseline.PlayerStategoalString.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStategoalStringBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStategoalString.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStategoalString.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b1[sb], b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStategoalStringBaselineLength; sb < PlayerStategoalString.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStategoalString.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b[sb], 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((changeMask0 & (1 << 18)) != 0)
|
|
{
|
|
writer.WritePackedUIntDelta(PlayerStateactionString.LengthInBytes, baseline.PlayerStateactionString.LengthInBytes, compressionModel);
|
|
var PlayerStateactionStringBaselineLength = (ushort)math.min((uint)PlayerStateactionString.LengthInBytes, baseline.PlayerStateactionString.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStateactionStringBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStateactionString.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStateactionString.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b1[sb], b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStateactionStringBaselineLength; sb < PlayerStateactionString.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStateactionString.buffer.byte0000)
|
|
{
|
|
writer.WritePackedUIntDelta(b[sb], 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((changeMask0 & (1 << 19)) != 0)
|
|
writer.WritePackedIntDelta(PlayerStategoalCompletion, baseline.PlayerStategoalCompletion, compressionModel);
|
|
}
|
|
|
|
public void Deserialize(uint tick, ref PlayerStateSnapshotData baseline, DataStreamReader reader, ref DataStreamReader.Context ctx,
|
|
NetworkCompressionModel compressionModel)
|
|
{
|
|
this.tick = tick;
|
|
changeMask0 = reader.ReadPackedUIntDelta(ref ctx, baseline.changeMask0, compressionModel);
|
|
if ((changeMask0 & (1 << 0)) != 0)
|
|
PlayerStateplayerId = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStateplayerId, compressionModel);
|
|
else
|
|
PlayerStateplayerId = baseline.PlayerStateplayerId;
|
|
if ((changeMask0 & (1 << 1)) != 0)
|
|
{
|
|
PlayerStateplayerName.LengthInBytes = (ushort)reader.ReadPackedUIntDelta(ref ctx, (uint)baseline.PlayerStateplayerName.LengthInBytes, compressionModel);
|
|
var PlayerStateplayerNameBaselineLength = (ushort)math.min((uint)PlayerStateplayerName.LengthInBytes, baseline.PlayerStateplayerName.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStateplayerNameBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStateplayerName.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStateplayerName.buffer.byte0000)
|
|
{
|
|
b1[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStateplayerNameBaselineLength; sb < PlayerStateplayerName.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStateplayerName.buffer.byte0000)
|
|
{
|
|
b[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
PlayerStateplayerName = baseline.PlayerStateplayerName;
|
|
if ((changeMask0 & (1 << 2)) != 0)
|
|
PlayerStateteamIndex = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStateteamIndex, compressionModel);
|
|
else
|
|
PlayerStateteamIndex = baseline.PlayerStateteamIndex;
|
|
if ((changeMask0 & (1 << 3)) != 0)
|
|
PlayerStatescore = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStatescore, compressionModel);
|
|
else
|
|
PlayerStatescore = baseline.PlayerStatescore;
|
|
if ((changeMask0 & (1 << 4)) != 0)
|
|
PlayerStategameModeSystemInitialized = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStategameModeSystemInitialized, compressionModel);
|
|
else
|
|
PlayerStategameModeSystemInitialized = baseline.PlayerStategameModeSystemInitialized;
|
|
if ((changeMask0 & (1 << 5)) != 0)
|
|
PlayerStatedisplayCountDown = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStatedisplayCountDown, compressionModel);
|
|
else
|
|
PlayerStatedisplayCountDown = baseline.PlayerStatedisplayCountDown;
|
|
if ((changeMask0 & (1 << 6)) != 0)
|
|
PlayerStatecountDown = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStatecountDown, compressionModel);
|
|
else
|
|
PlayerStatecountDown = baseline.PlayerStatecountDown;
|
|
if ((changeMask0 & (1 << 7)) != 0)
|
|
PlayerStatedisplayScoreBoard = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStatedisplayScoreBoard, compressionModel);
|
|
else
|
|
PlayerStatedisplayScoreBoard = baseline.PlayerStatedisplayScoreBoard;
|
|
if ((changeMask0 & (1 << 8)) != 0)
|
|
PlayerStatedisplayGameScore = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStatedisplayGameScore, compressionModel);
|
|
else
|
|
PlayerStatedisplayGameScore = baseline.PlayerStatedisplayGameScore;
|
|
if ((changeMask0 & (1 << 9)) != 0)
|
|
PlayerStatedisplayGameResult = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStatedisplayGameResult, compressionModel);
|
|
else
|
|
PlayerStatedisplayGameResult = baseline.PlayerStatedisplayGameResult;
|
|
if ((changeMask0 & (1 << 10)) != 0)
|
|
{
|
|
PlayerStategameResult.LengthInBytes = (ushort)reader.ReadPackedUIntDelta(ref ctx, (uint)baseline.PlayerStategameResult.LengthInBytes, compressionModel);
|
|
var PlayerStategameResultBaselineLength = (ushort)math.min((uint)PlayerStategameResult.LengthInBytes, baseline.PlayerStategameResult.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStategameResultBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStategameResult.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStategameResult.buffer.byte0000)
|
|
{
|
|
b1[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStategameResultBaselineLength; sb < PlayerStategameResult.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStategameResult.buffer.byte0000)
|
|
{
|
|
b[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
PlayerStategameResult = baseline.PlayerStategameResult;
|
|
if ((changeMask0 & (1 << 11)) != 0)
|
|
PlayerStatedisplayGoal = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStatedisplayGoal, compressionModel);
|
|
else
|
|
PlayerStatedisplayGoal = baseline.PlayerStatedisplayGoal;
|
|
if ((changeMask0 & (1 << 12)) != 0)
|
|
{
|
|
PlayerStategoalPositionX = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStategoalPositionX, compressionModel);
|
|
PlayerStategoalPositionY = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStategoalPositionY, compressionModel);
|
|
PlayerStategoalPositionZ = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStategoalPositionZ, compressionModel);
|
|
}
|
|
else
|
|
{
|
|
PlayerStategoalPositionX = baseline.PlayerStategoalPositionX;
|
|
PlayerStategoalPositionY = baseline.PlayerStategoalPositionY;
|
|
PlayerStategoalPositionZ = baseline.PlayerStategoalPositionZ;
|
|
}
|
|
if ((changeMask0 & (1 << 13)) != 0)
|
|
PlayerStategoalDefendersColor = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStategoalDefendersColor, compressionModel);
|
|
else
|
|
PlayerStategoalDefendersColor = baseline.PlayerStategoalDefendersColor;
|
|
if ((changeMask0 & (1 << 14)) != 0)
|
|
PlayerStategoalAttackersColor = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStategoalAttackersColor, compressionModel);
|
|
else
|
|
PlayerStategoalAttackersColor = baseline.PlayerStategoalAttackersColor;
|
|
if ((changeMask0 & (1 << 15)) != 0)
|
|
PlayerStategoalAttackers = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStategoalAttackers, compressionModel);
|
|
else
|
|
PlayerStategoalAttackers = baseline.PlayerStategoalAttackers;
|
|
if ((changeMask0 & (1 << 16)) != 0)
|
|
PlayerStategoalDefenders = reader.ReadPackedUIntDelta(ref ctx, baseline.PlayerStategoalDefenders, compressionModel);
|
|
else
|
|
PlayerStategoalDefenders = baseline.PlayerStategoalDefenders;
|
|
if ((changeMask0 & (1 << 17)) != 0)
|
|
{
|
|
PlayerStategoalString.LengthInBytes = (ushort)reader.ReadPackedUIntDelta(ref ctx, (uint)baseline.PlayerStategoalString.LengthInBytes, compressionModel);
|
|
var PlayerStategoalStringBaselineLength = (ushort)math.min((uint)PlayerStategoalString.LengthInBytes, baseline.PlayerStategoalString.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStategoalStringBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStategoalString.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStategoalString.buffer.byte0000)
|
|
{
|
|
b1[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStategoalStringBaselineLength; sb < PlayerStategoalString.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStategoalString.buffer.byte0000)
|
|
{
|
|
b[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
PlayerStategoalString = baseline.PlayerStategoalString;
|
|
if ((changeMask0 & (1 << 18)) != 0)
|
|
{
|
|
PlayerStateactionString.LengthInBytes = (ushort)reader.ReadPackedUIntDelta(ref ctx, (uint)baseline.PlayerStateactionString.LengthInBytes, compressionModel);
|
|
var PlayerStateactionStringBaselineLength = (ushort)math.min((uint)PlayerStateactionString.LengthInBytes, baseline.PlayerStateactionString.LengthInBytes);
|
|
for (int sb = 0; sb < PlayerStateactionStringBaselineLength; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b1 = &PlayerStateactionString.buffer.byte0000)
|
|
fixed (byte* b2 = &baseline.PlayerStateactionString.buffer.byte0000)
|
|
{
|
|
b1[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, b2[sb], compressionModel);
|
|
}
|
|
}
|
|
}
|
|
for (int sb = PlayerStateactionStringBaselineLength; sb < PlayerStateactionString.LengthInBytes; ++sb)
|
|
{
|
|
unsafe
|
|
{
|
|
fixed (byte* b = &PlayerStateactionString.buffer.byte0000)
|
|
{
|
|
b[sb] = (byte)reader.ReadPackedUIntDelta(ref ctx, 0, compressionModel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
PlayerStateactionString = baseline.PlayerStateactionString;
|
|
if ((changeMask0 & (1 << 19)) != 0)
|
|
PlayerStategoalCompletion = reader.ReadPackedIntDelta(ref ctx, baseline.PlayerStategoalCompletion, compressionModel);
|
|
else
|
|
PlayerStategoalCompletion = baseline.PlayerStategoalCompletion;
|
|
}
|
|
public void Interpolate(ref PlayerStateSnapshotData target, float factor)
|
|
{
|
|
}
|
|
}
|