forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using FishNet.Serializing;
 | 
						|
using FishNet.Utility.Extension;
 | 
						|
using System;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
namespace FishNet.Managing.Timing
 | 
						|
{
 | 
						|
 | 
						|
    public struct PreciseTick
 | 
						|
    {
 | 
						|
        /// <summary>
 | 
						|
        /// The current tick.
 | 
						|
        /// </summary>
 | 
						|
        public uint Tick;
 | 
						|
        /// <summary>
 | 
						|
        /// Percentage into the next tick.
 | 
						|
        /// </summary>
 | 
						|
        public double Percent;
 | 
						|
 | 
						|
        public PreciseTick(uint tick, double percent)
 | 
						|
        {
 | 
						|
            Tick = tick;
 | 
						|
            Percent = percent;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public static class PreciseTickSerializer
 | 
						|
    {
 | 
						|
        public static void WritePreciseTick(this Writer writer, PreciseTick value)
 | 
						|
        {
 | 
						|
            writer.WriteUInt32(value.Tick, AutoPackType.Unpacked);
 | 
						|
            /* No reason percent should exist beyond these values, but better to be safe.
 | 
						|
             * There is also no double clamp in Unity so... */
 | 
						|
            double percent = MathFN.ClampDouble(value.Percent, 0d, 1f);
 | 
						|
            byte percentByte = (byte)(percent * 100);
 | 
						|
            writer.WriteByte(percentByte);
 | 
						|
        }
 | 
						|
 | 
						|
        public static PreciseTick ReadPreciseTick(this Reader reader)
 | 
						|
        {
 | 
						|
            uint tick = reader.ReadUInt32(AutoPackType.Unpacked);
 | 
						|
            byte percentByte = reader.ReadByte();
 | 
						|
            double percent = MathFN.ClampDouble((percentByte / 100f), 0d, 1d);
 | 
						|
            return new PreciseTick(tick, percent);
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |