예제 #1
0
        public override void lerp(FrameEncoding a, FrameEncoding b, float alpha)
        {
            CurlFrameEncoding start  = a as CurlFrameEncoding;
            CurlFrameEncoding finish = b as CurlFrameEncoding;

            if (a != null && b != null)
            {
                if (!(start.LPos == Vector3.zero || finish.LPos == Vector3.zero))
                {
                    LPos = Vector3.LerpUnclamped(start.LPos, finish.LPos, alpha);
                }
                else
                {
                    LPos = Vector3.zero;
                }
                if (!(start.RPos == Vector3.zero || finish.RPos == Vector3.zero))
                {
                    RPos = Vector3.LerpUnclamped(start.RPos, finish.RPos, alpha);
                }
                else
                {
                    RPos = Vector3.zero;
                }
                LRot = Quaternion.SlerpUnclamped(start.LRot, finish.LRot, alpha);
                RRot = Quaternion.SlerpUnclamped(start.RRot, finish.RRot, alpha);
                for (int i = 0; i < LCurl.Length; i++)
                {
                    LCurl[i] = (byte)((float)start.LCurl[i] + alpha * ((float)finish.LCurl[i] - (float)start.LCurl[i]));
                    RCurl[i] = (byte)((float)start.RCurl[i] + alpha * ((float)finish.RCurl[i] - (float)start.RCurl[i]));
                }
            }
        }
예제 #2
0
        public CurlFrameEncoding Copy()
        {
            CurlFrameEncoding state = new CurlFrameEncoding();

            state.LPos.Set(LPos.x, LPos.y, LPos.z);
            state.RPos.Set(RPos.x, RPos.y, RPos.z);
            state.LRot.Set(LRot.x, LRot.y, LRot.z, LRot.w);
            state.RRot.Set(RRot.x, RRot.y, RRot.z, RRot.w);
            state.LCurl = new byte[6];
            state.RCurl = new byte[6];
            for (int i = 0; i < 6; i++)
            {
                state.LCurl[i] = LCurl[i];
                state.RCurl[i] = RCurl[i];
            }
            return(state);
        }