Skip to content

Commit

Permalink
First steps in Path refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
DerSchmale committed Jul 10, 2012
1 parent 0342492 commit 7c318a8
Show file tree
Hide file tree
Showing 17 changed files with 627 additions and 769 deletions.
28 changes: 14 additions & 14 deletions src/away3d/animators/PathAnimator.as
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package away3d.animators
{
import away3d.core.base.Object3D;
import away3d.events.PathEvent;
import away3d.extrusions.utils.IPath;
import away3d.extrusions.utils.IPathSegment;
import away3d.extrusions.utils.PathUtils;
import away3d.paths.IPath;
import away3d.paths.IPathSegment;
import away3d.paths.utils.PathUtils;

import flash.events.EventDispatcher;
import flash.geom.Vector3D;
Expand Down Expand Up @@ -90,18 +90,18 @@ package away3d.animators

} else if (t >= 1){
t = 1;
_lastSegment = _path.length - 1;
_lastSegment = _path.numSegments - 1;
}

if (_bCycle && t <= 0.1 && _lastSegment == _path.length - 1)
if (_bCycle && t <= 0.1 && _lastSegment == _path.numSegments - 1)
dispatchEvent(new PathEvent(PathEvent.CYCLE));

_lastTime = t;

var multi:Number = _path.length*t;
var multi:Number = _path.numSegments*t;
_index = multi;

if (_index == _path.length) index--;
if (_index == _path.numSegments) index--;

if (_offset != null)
_target.position = _basePosition;
Expand Down Expand Up @@ -177,11 +177,11 @@ package away3d.animators
if (!_path) throw new Error("No Path object set for this class");

t = (t < 0) ? 0 : (t > 1) ? 1 : t;
var m:Number = _path.length*t;
var m:Number = _path.numSegments*t;
var i:uint = m;
var ps:IPathSegment = _path.segments[i];

return PathUtils.calcPosition(m - i, ps, out);
return ps.getPointOnSegment(m - i, out);
}

/**
Expand All @@ -203,11 +203,11 @@ package away3d.animators

var t:Number = Math.abs(ms)/duration;
t = (t < 0) ? 0 : (t > 1) ? 1 : t;
var m:Number = _path.length*t;
var m:Number = _path.numSegments*t;
var i:uint = m;
var ps:IPathSegment = _path.segments[i];

return PathUtils.calcPosition(m - i, ps, out);
return ps.getPointOnSegment(m - i, out);
}

/**
Expand Down Expand Up @@ -269,7 +269,7 @@ package away3d.animators
public function getTimeSegment(t:Number = NaN):Number
{
t = (isNaN(t)) ? _time : t;
return Math.floor(path.length*t);
return Math.floor(path.numSegments*t);
}

/**
Expand Down Expand Up @@ -326,7 +326,7 @@ package away3d.animators
*/
public function set index(val:uint):void
{
_index = (val > _path.length - 1) ? _path.length - 1 : (val > 0) ? val : 0;
_index = (val > _path.numSegments - 1) ? _path.numSegments - 1 : (val > 0) ? val : 0;
}


Expand Down Expand Up @@ -411,7 +411,7 @@ package away3d.animators

private function updatePosition(t:Number, ps:IPathSegment):void
{
_basePosition = PathUtils.calcPosition(t, ps, _basePosition);
_basePosition = ps.getPointOnSegment(t, _basePosition);

_position.x = _basePosition.x;
_position.y = _basePosition.y;
Expand Down
9 changes: 5 additions & 4 deletions src/away3d/extrusions/PathDuplicator.as
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package away3d.extrusions {
import away3d.containers.ObjectContainer3D;
import away3d.containers.Scene3D;
import away3d.entities.Mesh;
import away3d.extrusions.utils.IPath;
import away3d.extrusions.utils.PathUtils;
import away3d.paths.IPath;
import away3d.paths.SegmentedPathBase;
import away3d.paths.utils.PathUtils;

import flash.geom.Matrix3D;
import flash.geom.Vector3D;
Expand Down Expand Up @@ -35,7 +36,7 @@ package away3d.extrusions {
* @param path [optional] A Path object. The _path definition. either Cubic or Quadratic path
* @param meshes [optional] Vector.&lt;Mesh&gt;. One or more meshes to repeat along the path.
* @param scene [optional] Scene3D. The scene where to addchild the meshes if no ObjectContainer3D is provided.
* @param repeat [optional] uint. Howmany times a mesh is cloned per PathSegment. Default is 1.
* @param repeat [optional] uint. How many times a mesh is cloned per PathSegment. Default is 1.
* @param alignToPath [optional] Boolean. If the alignment of the clones must follow the path. Default is true.
* @param segmentSpread [optional] Boolean. If more than one Mesh is passed, it defines if the clones alternate themselves per PathSegment or each repeat. Default is false.
* @param container [optional] ObjectContainer3D. If an ObjectContainer3D is provided, the meshes are addChilded to it instead of directly into the scene. The container is NOT addChilded to the scene by default.
Expand Down Expand Up @@ -182,7 +183,7 @@ package away3d.extrusions {
_count = 0;
_clones = new Vector.<Mesh>();

var segments:Vector.<Vector.<Vector3D>> = PathUtils.getPointsOnCurve(_path, _repeat);
var segments:Vector.<Vector.<Vector3D>> = _path.getPointsOnCurve(_repeat);
var tmppt:Vector3D = new Vector3D();

var i:uint;
Expand Down
18 changes: 9 additions & 9 deletions src/away3d/extrusions/PathExtrude.as
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ package away3d.extrusions{
import away3d.core.base.data.UV;
import away3d.core.base.data.Vertex;
import away3d.entities.Mesh;
import away3d.extrusions.utils.IPath;
import away3d.extrusions.utils.IPathSegment;
import away3d.extrusions.utils.PathUtils;
import away3d.paths.IPath;
import away3d.paths.IPathSegment;
import away3d.paths.utils.PathUtils;
import away3d.loaders.parsers.data.DefaultBitmapData;
import away3d.materials.MaterialBase;
import away3d.materials.TextureMaterial;
Expand Down Expand Up @@ -963,7 +963,7 @@ package away3d.extrusions{

private function distributeVectors():Vector.<Vector.<Vector3D>>
{
var segs:Vector.<Vector.<Vector3D>>= PathUtils.getPointsOnCurve(_path, _subdivision);
var segs:Vector.<Vector.<Vector3D>>= _path.getPointsOnCurve(_subdivision);
var nSegs:Vector.<Vector.<Vector3D>> = new Vector.<Vector.<Vector3D>>();

var seg:Vector.<Vector3D>;
Expand Down Expand Up @@ -1014,7 +1014,7 @@ package away3d.extrusions{
ignore = true;
break;
} else {
tmpV = PathUtils.calcPosition(t, ps, tmpV);
tmpV = ps.getPointOnSegment(t, tmpV);
tmpVDist = Vector3D.distance(prevV, tmpV);
}
}
Expand Down Expand Up @@ -1056,7 +1056,7 @@ package away3d.extrusions{
private function buildExtrude():void
{

if(_path == null || _path.length == 0 || _profile == null || _profile.length < 2)
if(_path == null || _path.numSegments == 0 || _profile == null || _profile.length < 2)
throw new Error("PathExtrude error: invalid Path or profile with unsufficient data");

_geomDirty = false;
Expand All @@ -1070,7 +1070,7 @@ package away3d.extrusions{
if(_distribute){
vSegPts = distributeVectors();
} else {
vSegPts = PathUtils.getPointsOnCurve(_path, _subdivision);
vSegPts = _path.getPointsOnCurve(_subdivision);
}

if(_distributeU) generateUlist();
Expand Down Expand Up @@ -1104,9 +1104,9 @@ package away3d.extrusions{
if(_smoothScale && rescale){
var nextscale:Vector3D = new Vector3D(1, 1, 1);
var vScales:Vector.<Vector3D> = Vector.<Vector3D>([lastscale]);
if(_scales.length!=_path.length+2){
if(_scales.length!=_path.numSegments+2){
var lastScl:Vector3D = _scales[_scales.length-1];
while (_scales.length!=_path.length+2){
while (_scales.length!=_path.numSegments+2){
_scales.push(lastScl);
}
}
Expand Down
131 changes: 0 additions & 131 deletions src/away3d/extrusions/utils/CubicPath.as

This file was deleted.

11 changes: 0 additions & 11 deletions src/away3d/extrusions/utils/IPathSegment.as

This file was deleted.

Loading

0 comments on commit 7c318a8

Please sign in to comment.