topical media & game development
student-ar-org-papervision3d-core-animation-channel-MatrixStackChannel3D.ax
student-ar-org-papervision3d-core-animation-channel-MatrixStackChannel3D.ax
[swf]
flex
package org.papervision3d.core.animation.channel {
import org.papervision3d.core.animation.AnimationKeyFrame3D;
import org.papervision3d.core.math.Matrix3D;
import org.papervision3d.objects.DisplayObject3D;
author: Tim Knip
public class @ax-student-ar-org-papervision3d-core-animation-channel-MatrixStackChannel3D extends AbstractChannel3D
{
Constructor.
@param target
@param name
public function @ax-student-ar-org-papervision3d-core-animation-channel-MatrixStackChannel3D(target:DisplayObject3D, name:String=null)
{
super(target, name);
this.keyFrames = new Array();
_matrixStack = new Array();
}
Adds a MatrixChannel3D to this channel.
@param channel
public function addMatrixChannel(channel:MatrixChannel3D):void
{
if(_matrixStack.length)
{
this.startTime = Math.min(this.startTime, channel.startTime);
this.endTime = Math.max(this.endTime, channel.endTime);
}
else
{
this.startTime = channel.startTime;
this.endTime = channel.endTime;
this.keyFrames = channel.keyFrames;
}
_matrixStack.push(channel);
}
Adds a new keyframe.
@param keyframe
@return The added keyframe.
public override function addKeyFrame(keyframe:AnimationKeyFrame3D):AnimationKeyFrame3D
{
throw new Error("You can't add keyframes to a @ax-student-ar-org-papervision3d-core-animation-channel-MatrixStackChannel3D!");
}
Updates this channel.
@param keyframe
@param target
public override function updateToFrame(keyframe:uint):void
{
super.updateToFrame(keyframe);
var matrix:Matrix3D = Matrix3D.IDENTITY;
for(var i:int = 0; i < _matrixStack.length; i++)
{
var channel:MatrixChannel3D = _matrixStack[i];
channel.updateToFrame(keyframe);
matrix = Matrix3D.multiply(matrix, channel.currentKeyFrame.output[0]);
}
// this.output = [matrix];
// target.copyTransform(this.output[0]);
}
private var _matrixStack:Array;
}
}
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.