/**
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
* If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.
* You may add additional accurate notices of copyright ownership.
*
* It is desirable to notify that Covered Software was "Powered by AlternativaPlatform" with link to http://www.alternativaplatform.com/
* */
package alternativa.engine3d.animation {
import alternativa.engine3d.alternativa3d;
import alternativa.engine3d.animation.events.NotifyEvent;
import alternativa.engine3d.core.Object3D;
import flash.utils.Dictionary;
import flash.utils.getTimer;
use namespace alternativa3d;
/**
* Controls animation playback and blending. I.e. it animates model using information
* stored in AnimationClip-s and generated by AnimationSwitcher
* and AnimationCouple blenders.
* You have to call method update() each frame,
* which refreshes all child animation clips and blenders, which return
* list of properties and values to controller after that. You can use this list
* to set those properties. Controller sets those values and as a result
* the animation goes on. Animation control is carried out with the
* help of animated flag, and with AnimationSwitcher blender,
* which can transfer clip from active state to passive and vice versa.
*
*
* @see alternativa.engine3d.animation.AnimationClip
* @see alternativa.engine3d.animation.AnimationCouple
* @see alternativa.engine3d.animation.AnimationSwitcher
*/
public class AnimationController {
/**
* @private
*/
private var _root:AnimationNode;
/**
* @private
*/
private var _objects:Vector.