My favorites | Sign in
Project Logo
                
Changes to /trunk/src/com/as3dmod/modifiers/Break.as
r0 vs. r89   Edit
  Compare: vs.   Format:
Revision r89
Go to: 
Project members, sign in to write a code review
/trunk/src/com/as3dmod/modifiers/Break.as   r0 /trunk/src/com/as3dmod/modifiers/Break.as   r89
  1 package com.as3dmod.modifiers {
  2 import com.as3dmod.IModifier;
  3 import com.as3dmod.core.Matrix4;
  4 import com.as3dmod.core.MeshProxy;
  5 import com.as3dmod.core.Modifier;
  6 import com.as3dmod.core.Vector3;
  7 import com.as3dmod.core.VertexProxy;
  8 import com.as3dmod.util.Range;
  9
  10 /**
  11 * @author bartekd
  12 */
  13 public class Break extends Modifier implements IModifier {
  14
  15 // private var bv:Vector3 = new Vector3(0, 0, 1);
  16 private var bv:Vector3 = new Vector3(0, 1, 0);
  17 public var _offset:Number;
  18 public var angle:Number;
  19
  20 public var range:Range = new Range(0,1);
  21
  22 public function Break(o:Number = 0, a:Number = 0) {
  23 this.angle = a;
  24 this._offset = o;
  25 }
  26
  27 public function apply():void {
  28 var vs:Array = mod.getVertices();
  29 var vc:int = vs.length;
  30
  31 // var pv:Vector3 = new Vector3(-(mod.minX + mod.width / 2), -(mod.minY + mod.height * offset), 0);
  32 var pv:Vector3 = new Vector3(0, 0, -(mod.minZ + mod.depth * offset));
  33
  34
  35 for (var i:int = 0;i < vc; i++) {
  36 var v:VertexProxy = vs[i] as VertexProxy;
  37 var c:Vector3 = v.vector;
  38 c = c.add(pv);
  39
  40 if(c.z >= 0 && range.isIn(v.ratioY)) {
  41 var ta:Number = angle;
  42
  43 var rm:Matrix4 = Matrix4.rotationMatrix(bv.x, bv.y, bv.z, ta);
  44 Matrix4.multiplyVector(rm, c);
  45 }
  46
  47
  48 var npv:Vector3 = pv.negate();
  49 c = c.add(npv);
  50
  51 v.x = c.x;
  52 v.y = c.y;
  53 v.z = c.z;
  54 }
  55 }
  56
  57 public function get offset():Number {
  58 return _offset;
  59 }
  60
  61 public function set offset(offset:Number):void {
  62 _offset = offset;
  63 }
  64 }
  65 }
Hosted by Google Code