Skip to content

Commit

Permalink
vertexAnimation-example
Browse files Browse the repository at this point in the history
  • Loading branch information
80prozent committed May 30, 2013
1 parent 7262124 commit 86f7b79
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 41 deletions.
28 changes: 15 additions & 13 deletions awaybuilder-core/src/awaybuilder/model/SmartDocumentServiceBase.as
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
package awaybuilder.model
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.net.URLRequest;
import flash.utils.ByteArray;

import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.managers.CursorManager;

import spark.components.Application;

import away3d.containers.ObjectContainer3D;
import away3d.entities.Mesh;
import away3d.entities.TextureProjector;
Expand All @@ -9,6 +22,7 @@ package awaybuilder.model
import away3d.library.assets.AssetType;
import away3d.library.assets.BitmapDataAsset;
import away3d.lights.LightBase;
import away3d.loaders.parsers.AWDParser;
import away3d.loaders.parsers.Parsers;
import away3d.materials.MaterialBase;
import away3d.primitives.SkyBox;
Expand All @@ -19,21 +33,8 @@ package awaybuilder.model
import awaybuilder.model.vo.scene.CubeTextureVO;
import awaybuilder.utils.logging.AwayBuilderLoadErrorLogger;

import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.net.URLRequest;
import flash.utils.ByteArray;

import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.managers.CursorManager;

import org.robotlegs.mvcs.Actor;

import spark.components.Application;

public class SmartDocumentServiceBase extends Actor
{

Expand Down Expand Up @@ -182,6 +183,7 @@ package awaybuilder.model
case AssetType.ANIMATION_STATE:
case AssetType.ANIMATION_NODE:
case AssetType.SKELETON:
case AssetType.ANIMATOR:
//case AssetType.SKELETON_POSE:
_document.animations.addItem( assets.GetAsset( event.asset ) );
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,7 @@ package awaybuilder.model
asset.castsShadows = item.castsShadows;
asset.subMeshes = new ArrayCollection();
asset.geometry = GetAsset(item.geometry) as GeometryVO;
asset.animator = GetAsset(item.animator) as AnimatorVO;
for each( var subMesh:SubMesh in item.subMeshes )
{
var sm:SubMeshVO = GetAsset(subMesh) as SubMeshVO;
Expand Down
112 changes: 84 additions & 28 deletions awaybuilder-core/src/awaybuilder/view/mediators/CoreEditorMediator.as
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
package awaybuilder.view.mediators
{
import flash.display.BitmapData;
import flash.display3D.textures.Texture;
import flash.display3D.textures.TextureBase;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.UncaughtErrorEvent;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Vector3D;
import flash.ui.Keyboard;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.Text;
import mx.core.FlexGlobals;
import mx.utils.ObjectUtil;

import spark.collections.Sort;

import away3d.animators.AnimationSetBase;
import away3d.animators.AnimatorBase;
import away3d.animators.SkeletonAnimationSet;
Expand Down Expand Up @@ -124,27 +144,7 @@ package awaybuilder.view.mediators
import awaybuilder.view.scene.controls.TextureProjectorGizmo3D;
import awaybuilder.view.scene.events.Scene3DManagerEvent;

import flash.display.BitmapData;
import flash.display3D.textures.Texture;
import flash.display3D.textures.TextureBase;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.UncaughtErrorEvent;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Vector3D;
import flash.ui.Keyboard;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.Text;
import mx.core.FlexGlobals;
import mx.utils.ObjectUtil;

import org.robotlegs.mvcs.Mediator;

import spark.collections.Sort;

public class CoreEditorMediator extends Mediator
{
Expand Down Expand Up @@ -309,8 +309,17 @@ package awaybuilder.view.mediators
{
if( _currentAnimator && _currentAnimation )
{
var animator:SkeletonAnimator = assets.GetObject(_currentAnimator ) as SkeletonAnimator;
if( animator.activeState is SkeletonClipState )
var animator:AnimatorBase;
switch (_currentAnimator.type){
case "SkeletonAnimator":
animator = assets.GetObject(_currentAnimator ) as SkeletonAnimator;
break;
case "VertexAnimator":
animator = assets.GetObject(_currentAnimator ) as VertexAnimator;
break;

}
if( animator.activeState)
{
var time:int = animator.time*animator.playbackSpeed;
if ( animator.time >= _currentAnimation.totalDuration )
Expand All @@ -337,7 +346,16 @@ package awaybuilder.view.mediators

private function contect_playHandler(event:AnimationEvent):void
{
var animator:SkeletonAnimator = assets.GetObject( event.animator ) as SkeletonAnimator;
//trace(event.animator.type);
var animator:AnimatorBase;
switch (event.animator.type){
case "SkeletonAnimator":
animator = assets.GetObject( event.animator ) as SkeletonAnimator;
break;
case "VertexAnimator":
animator = assets.GetObject( event.animator ) as VertexAnimator;
break;
}

animator.updatePosition = false;
event.animation.isPlaying = true;
Expand All @@ -348,7 +366,14 @@ package awaybuilder.view.mediators
}
else
{
animator.play(event.animation.name, null, event.animation.currentPosition);
switch (event.animator.type){
case "SkeletonAnimator":
SkeletonAnimator(animator).play(event.animation.name, null, event.animation.currentPosition);
break;
case "VertexAnimator":
VertexAnimator(animator).play(event.animation.name, null, event.animation.currentPosition);
break;
}
event.animator.activeAnimationNodeName = event.animation.name;
}

Expand All @@ -358,15 +383,31 @@ package awaybuilder.view.mediators
}
private function contect_pauseHandler(event:AnimationEvent):void
{
var animator:SkeletonAnimator = assets.GetObject( event.animator ) as SkeletonAnimator;
var animator:AnimatorBase;
switch (event.animator.type){
case "SkeletonAnimator":
animator = assets.GetObject( event.animator ) as SkeletonAnimator;
break;
case "VertexAnimator":
animator = assets.GetObject( event.animator ) as VertexAnimator;
break;
}
event.animation.isPlaying = false;
animator.stop();
this.view.removeEventListener(Event.ENTER_FRAME, view_enterFrameHandler );
}

private function contect_stopHandler(event:AnimationEvent):void
{
var animator:SkeletonAnimator = assets.GetObject( event.animator ) as SkeletonAnimator;
var animator:AnimatorBase;
switch (event.animator.type){
case "SkeletonAnimator":
animator = assets.GetObject( event.animator ) as SkeletonAnimator;
break;
case "VertexAnimator":
animator = assets.GetObject( event.animator ) as VertexAnimator;
break;
}
event.animation.isPlaying = false;
animator.stop();
animator.time = 0;
Expand All @@ -377,11 +418,26 @@ package awaybuilder.view.mediators
}
private function contect_seekHandler(event:AnimationEvent):void
{
var animator:SkeletonAnimator = assets.GetObject( event.animator ) as SkeletonAnimator;
var animator:AnimatorBase;
switch (event.animator.type){
case "SkeletonAnimator":
animator = assets.GetObject( event.animator ) as SkeletonAnimator;
break;
case "VertexAnimator":
animator = assets.GetObject( event.animator ) as VertexAnimator;
break;
}
event.animation.isPlaying = false;
if( event.animation.name != event.animator.activeAnimationNodeName )
{
animator.play(event.animation.name, null, event.animation.currentPosition);
switch (event.animator.type){
case "SkeletonAnimator":
SkeletonAnimator(animator).play(event.animation.name, null, event.animation.currentPosition);
break;
case "VertexAnimator":
VertexAnimator(animator).play(event.animation.name, null, event.animation.currentPosition);
break;
}
animator.stop();
event.animator.activeAnimationNodeName = event.animation.name;
}
Expand Down
Binary file not shown.
Binary file added exampleScenes/awd/bear/PolarBear_c4d_Vertex.awd
Binary file not shown.

0 comments on commit 86f7b79

Please sign in to comment.