您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
191 行
10 KiB
191 行
10 KiB
using Unity.Networking.Transport;
|
|
using Unity.NetCode;
|
|
using Unity.Mathematics;
|
|
|
|
public struct TeleporterSnapshotData : ISnapshotData<TeleporterSnapshotData>
|
|
{
|
|
public uint tick;
|
|
private int TeleporterPresentationDataeffectTick;
|
|
private int TranslationValueX;
|
|
private int TranslationValueY;
|
|
private int TranslationValueZ;
|
|
private int Child0TranslationValueX;
|
|
private int Child0TranslationValueY;
|
|
private int Child0TranslationValueZ;
|
|
private int Child1TranslationValueX;
|
|
private int Child1TranslationValueY;
|
|
private int Child1TranslationValueZ;
|
|
uint changeMask0;
|
|
|
|
public uint Tick => tick;
|
|
public int GetTeleporterPresentationDataeffectTick(GhostDeserializerState deserializerState)
|
|
{
|
|
return (int)TeleporterPresentationDataeffectTick;
|
|
}
|
|
public int GetTeleporterPresentationDataeffectTick()
|
|
{
|
|
return (int)TeleporterPresentationDataeffectTick;
|
|
}
|
|
public void SetTeleporterPresentationDataeffectTick(int val, GhostSerializerState serializerState)
|
|
{
|
|
TeleporterPresentationDataeffectTick = (int)val;
|
|
}
|
|
public void SetTeleporterPresentationDataeffectTick(int val)
|
|
{
|
|
TeleporterPresentationDataeffectTick = (int)val;
|
|
}
|
|
public float3 GetTranslationValue(GhostDeserializerState deserializerState)
|
|
{
|
|
return GetTranslationValue();
|
|
}
|
|
public float3 GetTranslationValue()
|
|
{
|
|
return new float3(TranslationValueX * 0.01f, TranslationValueY * 0.01f, TranslationValueZ * 0.01f);
|
|
}
|
|
public void SetTranslationValue(float3 val, GhostSerializerState serializerState)
|
|
{
|
|
SetTranslationValue(val);
|
|
}
|
|
public void SetTranslationValue(float3 val)
|
|
{
|
|
TranslationValueX = (int)(val.x * 100);
|
|
TranslationValueY = (int)(val.y * 100);
|
|
TranslationValueZ = (int)(val.z * 100);
|
|
}
|
|
public float3 GetChild0TranslationValue(GhostDeserializerState deserializerState)
|
|
{
|
|
return GetChild0TranslationValue();
|
|
}
|
|
public float3 GetChild0TranslationValue()
|
|
{
|
|
return new float3(Child0TranslationValueX * 0.01f, Child0TranslationValueY * 0.01f, Child0TranslationValueZ * 0.01f);
|
|
}
|
|
public void SetChild0TranslationValue(float3 val, GhostSerializerState serializerState)
|
|
{
|
|
SetChild0TranslationValue(val);
|
|
}
|
|
public void SetChild0TranslationValue(float3 val)
|
|
{
|
|
Child0TranslationValueX = (int)(val.x * 100);
|
|
Child0TranslationValueY = (int)(val.y * 100);
|
|
Child0TranslationValueZ = (int)(val.z * 100);
|
|
}
|
|
public float3 GetChild1TranslationValue(GhostDeserializerState deserializerState)
|
|
{
|
|
return GetChild1TranslationValue();
|
|
}
|
|
public float3 GetChild1TranslationValue()
|
|
{
|
|
return new float3(Child1TranslationValueX * 0.01f, Child1TranslationValueY * 0.01f, Child1TranslationValueZ * 0.01f);
|
|
}
|
|
public void SetChild1TranslationValue(float3 val, GhostSerializerState serializerState)
|
|
{
|
|
SetChild1TranslationValue(val);
|
|
}
|
|
public void SetChild1TranslationValue(float3 val)
|
|
{
|
|
Child1TranslationValueX = (int)(val.x * 100);
|
|
Child1TranslationValueY = (int)(val.y * 100);
|
|
Child1TranslationValueZ = (int)(val.z * 100);
|
|
}
|
|
|
|
public void PredictDelta(uint tick, ref TeleporterSnapshotData baseline1, ref TeleporterSnapshotData baseline2)
|
|
{
|
|
var predictor = new GhostDeltaPredictor(tick, this.tick, baseline1.tick, baseline2.tick);
|
|
TeleporterPresentationDataeffectTick = predictor.PredictInt(TeleporterPresentationDataeffectTick, baseline1.TeleporterPresentationDataeffectTick, baseline2.TeleporterPresentationDataeffectTick);
|
|
TranslationValueX = predictor.PredictInt(TranslationValueX, baseline1.TranslationValueX, baseline2.TranslationValueX);
|
|
TranslationValueY = predictor.PredictInt(TranslationValueY, baseline1.TranslationValueY, baseline2.TranslationValueY);
|
|
TranslationValueZ = predictor.PredictInt(TranslationValueZ, baseline1.TranslationValueZ, baseline2.TranslationValueZ);
|
|
Child0TranslationValueX = predictor.PredictInt(Child0TranslationValueX, baseline1.Child0TranslationValueX, baseline2.Child0TranslationValueX);
|
|
Child0TranslationValueY = predictor.PredictInt(Child0TranslationValueY, baseline1.Child0TranslationValueY, baseline2.Child0TranslationValueY);
|
|
Child0TranslationValueZ = predictor.PredictInt(Child0TranslationValueZ, baseline1.Child0TranslationValueZ, baseline2.Child0TranslationValueZ);
|
|
Child1TranslationValueX = predictor.PredictInt(Child1TranslationValueX, baseline1.Child1TranslationValueX, baseline2.Child1TranslationValueX);
|
|
Child1TranslationValueY = predictor.PredictInt(Child1TranslationValueY, baseline1.Child1TranslationValueY, baseline2.Child1TranslationValueY);
|
|
Child1TranslationValueZ = predictor.PredictInt(Child1TranslationValueZ, baseline1.Child1TranslationValueZ, baseline2.Child1TranslationValueZ);
|
|
}
|
|
|
|
public void Serialize(int networkId, ref TeleporterSnapshotData baseline, DataStreamWriter writer, NetworkCompressionModel compressionModel)
|
|
{
|
|
changeMask0 = (TeleporterPresentationDataeffectTick != baseline.TeleporterPresentationDataeffectTick) ? 1u : 0;
|
|
changeMask0 |= (TranslationValueX != baseline.TranslationValueX ||
|
|
TranslationValueY != baseline.TranslationValueY ||
|
|
TranslationValueZ != baseline.TranslationValueZ) ? (1u<<1) : 0;
|
|
changeMask0 |= (Child0TranslationValueX != baseline.Child0TranslationValueX ||
|
|
Child0TranslationValueY != baseline.Child0TranslationValueY ||
|
|
Child0TranslationValueZ != baseline.Child0TranslationValueZ) ? (1u<<2) : 0;
|
|
changeMask0 |= (Child1TranslationValueX != baseline.Child1TranslationValueX ||
|
|
Child1TranslationValueY != baseline.Child1TranslationValueY ||
|
|
Child1TranslationValueZ != baseline.Child1TranslationValueZ) ? (1u<<3) : 0;
|
|
writer.WritePackedUIntDelta(changeMask0, baseline.changeMask0, compressionModel);
|
|
if ((changeMask0 & (1 << 0)) != 0)
|
|
writer.WritePackedIntDelta(TeleporterPresentationDataeffectTick, baseline.TeleporterPresentationDataeffectTick, compressionModel);
|
|
if ((changeMask0 & (1 << 1)) != 0)
|
|
{
|
|
writer.WritePackedIntDelta(TranslationValueX, baseline.TranslationValueX, compressionModel);
|
|
writer.WritePackedIntDelta(TranslationValueY, baseline.TranslationValueY, compressionModel);
|
|
writer.WritePackedIntDelta(TranslationValueZ, baseline.TranslationValueZ, compressionModel);
|
|
}
|
|
if ((changeMask0 & (1 << 2)) != 0)
|
|
{
|
|
writer.WritePackedIntDelta(Child0TranslationValueX, baseline.Child0TranslationValueX, compressionModel);
|
|
writer.WritePackedIntDelta(Child0TranslationValueY, baseline.Child0TranslationValueY, compressionModel);
|
|
writer.WritePackedIntDelta(Child0TranslationValueZ, baseline.Child0TranslationValueZ, compressionModel);
|
|
}
|
|
if ((changeMask0 & (1 << 3)) != 0)
|
|
{
|
|
writer.WritePackedIntDelta(Child1TranslationValueX, baseline.Child1TranslationValueX, compressionModel);
|
|
writer.WritePackedIntDelta(Child1TranslationValueY, baseline.Child1TranslationValueY, compressionModel);
|
|
writer.WritePackedIntDelta(Child1TranslationValueZ, baseline.Child1TranslationValueZ, compressionModel);
|
|
}
|
|
}
|
|
|
|
public void Deserialize(uint tick, ref TeleporterSnapshotData 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)
|
|
TeleporterPresentationDataeffectTick = reader.ReadPackedIntDelta(ref ctx, baseline.TeleporterPresentationDataeffectTick, compressionModel);
|
|
else
|
|
TeleporterPresentationDataeffectTick = baseline.TeleporterPresentationDataeffectTick;
|
|
if ((changeMask0 & (1 << 1)) != 0)
|
|
{
|
|
TranslationValueX = reader.ReadPackedIntDelta(ref ctx, baseline.TranslationValueX, compressionModel);
|
|
TranslationValueY = reader.ReadPackedIntDelta(ref ctx, baseline.TranslationValueY, compressionModel);
|
|
TranslationValueZ = reader.ReadPackedIntDelta(ref ctx, baseline.TranslationValueZ, compressionModel);
|
|
}
|
|
else
|
|
{
|
|
TranslationValueX = baseline.TranslationValueX;
|
|
TranslationValueY = baseline.TranslationValueY;
|
|
TranslationValueZ = baseline.TranslationValueZ;
|
|
}
|
|
if ((changeMask0 & (1 << 2)) != 0)
|
|
{
|
|
Child0TranslationValueX = reader.ReadPackedIntDelta(ref ctx, baseline.Child0TranslationValueX, compressionModel);
|
|
Child0TranslationValueY = reader.ReadPackedIntDelta(ref ctx, baseline.Child0TranslationValueY, compressionModel);
|
|
Child0TranslationValueZ = reader.ReadPackedIntDelta(ref ctx, baseline.Child0TranslationValueZ, compressionModel);
|
|
}
|
|
else
|
|
{
|
|
Child0TranslationValueX = baseline.Child0TranslationValueX;
|
|
Child0TranslationValueY = baseline.Child0TranslationValueY;
|
|
Child0TranslationValueZ = baseline.Child0TranslationValueZ;
|
|
}
|
|
if ((changeMask0 & (1 << 3)) != 0)
|
|
{
|
|
Child1TranslationValueX = reader.ReadPackedIntDelta(ref ctx, baseline.Child1TranslationValueX, compressionModel);
|
|
Child1TranslationValueY = reader.ReadPackedIntDelta(ref ctx, baseline.Child1TranslationValueY, compressionModel);
|
|
Child1TranslationValueZ = reader.ReadPackedIntDelta(ref ctx, baseline.Child1TranslationValueZ, compressionModel);
|
|
}
|
|
else
|
|
{
|
|
Child1TranslationValueX = baseline.Child1TranslationValueX;
|
|
Child1TranslationValueY = baseline.Child1TranslationValueY;
|
|
Child1TranslationValueZ = baseline.Child1TranslationValueZ;
|
|
}
|
|
}
|
|
public void Interpolate(ref TeleporterSnapshotData target, float factor)
|
|
{
|
|
}
|
|
}
|