예제 #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:
            {
                Quaternion inv_target_quat = target_to_top_quat.Inverse();
                Vector3    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:
            {
                Quaternion inv_target_quat = target_to_top_quat.Inverse();
                Vector3    inv_target_vec  = QuatRotate(inv_target_quat, -1 * target_to_top_vec);
                result_vec  = QuatRotate(inv_target_quat, source_to_top_vec) + inv_target_vec;
                result_quat = inv_target_quat * source_to_top_quat;
            }
            break;
            }
            this.time = time;
        }
예제 #2
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, -1 * target_to_top_vec);
                 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;
 }
예제 #3
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;
        }
예제 #4
0
 public override void finalize(WalkEnding end, ulong time)
 {
 }
예제 #5
0
 public abstract void finalize(WalkEnding end, ulong time);
예제 #6
0
 public override void Finalize(WalkEnding end, ulong time)
 {
 }
예제 #7
0
 public abstract void Finalize(WalkEnding end, ulong time);