该项目的目的是同时测试和演示来自 Unity DOTS 技术堆栈的多个新包。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

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)
{
}
}