Ejemplo n.º 1
0
        bool InterpolrateTransform()
        {
            var count = _recievedData.Count;

            if (count <= 0)
            {
                return(false);
            }

            var tnow    = Time.timeSinceLevelLoad;
            var tinterp = -latency *GetNetworkSendInterval() + tnow;

            while (_recievedData.Count >= 2 && _recievedData [1].time <= tinterp)
            {
                _recievedData.RemoveAt(0);
            }

            var d0 = _recievedData [0];
            var d1 = d0;

            if (_recievedData.Count >= 2)
            {
                d1 = _recievedData [1];
            }

            TransformData.Load(transform, d0, d1, tinterp);
            return(true);
        }
Ejemplo n.º 2
0
            public static void Load(Transform transform, TransformData d0, TransformData d1, float time)
            {
                var dt = d1.time - d0.time;

                if (-EPSILON < dt && dt < EPSILON)
                {
                    d0.Load(transform);
                    return;
                }

                var t = Mathf.Clamp01((time - d0.time) / (d1.time - d0.time));

                Load(transform,
                     Vector3.Lerp(d0.position, d1.position, t),
                     Quaternion.Lerp(d0.rotation, d1.rotation, t),
                     Vector3.Lerp(d0.scale, d1.scale, t));
            }