Esempio n. 1
0
        public override void finalize(WalkEnding end, ulong _time)
        {
            switch (end)
            {
            case WalkEnding.Identity:
                break;

            case WalkEnding.TargetParentOfSource:
                result_vec  = source_to_top_vec;
                result_quat = source_to_top_quat;
                break;

            case WalkEnding.SourceParentOfTarget:
            {
                emQuaternion inv_target_quat = target_to_top_quat.inverse();
                emVector3    inv_target_vec  = quatRotate(inv_target_quat, -1 * target_to_top_vec);
                result_quat = inv_target_quat;
                result_vec  = inv_target_vec;
            }
            break;

            case WalkEnding.FullPath:
            {
                emQuaternion inv_target_quat = target_to_top_quat.inverse();
                emVector3    inv_target_vec  = quatRotate(inv_target_quat, new emVector3(-target_to_top_vec.x, -target_to_top_vec.y, -target_to_top_vec.z));
                result_vec  = quatRotate(inv_target_quat, source_to_top_vec) + inv_target_vec;
                result_quat = inv_target_quat * source_to_top_quat;
            }
            break;
            }
            time = _time;
        }