mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-26 01:49:11 -07:00
164 lines
5.6 KiB
ActionScript
164 lines
5.6 KiB
ActionScript
package package_125
|
|
{
|
|
import alternativa.engine3d.alternativa3d;
|
|
import flash.geom.Matrix3D;
|
|
import flash.geom.Orientation3D;
|
|
import flash.geom.Vector3D;
|
|
import package_124.name_749;
|
|
|
|
use namespace alternativa3d;
|
|
|
|
public class name_759 extends name_709
|
|
{
|
|
private static var tempQuat:Vector3D = new Vector3D();
|
|
|
|
private static var temp:name_787 = new name_787();
|
|
|
|
private var name_783:name_787;
|
|
|
|
public function name_759(object:String)
|
|
{
|
|
super();
|
|
this.object = object;
|
|
}
|
|
|
|
override alternativa3d function get keyFramesList() : name_748
|
|
{
|
|
return this.name_783;
|
|
}
|
|
|
|
override alternativa3d function set keyFramesList(value:name_748) : void
|
|
{
|
|
this.name_783 = name_787(value);
|
|
}
|
|
|
|
public function method_257(time:Number, matrix:Matrix3D) : name_787
|
|
{
|
|
var key:name_787 = null;
|
|
key = new name_787();
|
|
key.alternativa3d::var_420 = time;
|
|
var components:Vector.<Vector3D> = matrix.decompose(Orientation3D.QUATERNION);
|
|
key.alternativa3d::x = components[0].x;
|
|
key.alternativa3d::y = components[0].y;
|
|
key.alternativa3d::z = components[0].z;
|
|
key.alternativa3d::rotation = components[1];
|
|
key.alternativa3d::scaleX = components[2].x;
|
|
key.alternativa3d::scaleY = components[2].y;
|
|
key.alternativa3d::scaleZ = components[2].z;
|
|
alternativa3d::method_849(key);
|
|
return key;
|
|
}
|
|
|
|
public function method_929(time:Number, x:Number = 0, y:Number = 0, z:Number = 0, rotationX:Number = 0, rotationY:Number = 0, rotationZ:Number = 0, scaleX:Number = 1, scaleY:Number = 1, scaleZ:Number = 1) : name_787
|
|
{
|
|
var key:name_787 = new name_787();
|
|
key.alternativa3d::var_420 = time;
|
|
key.alternativa3d::x = x;
|
|
key.alternativa3d::y = y;
|
|
key.alternativa3d::z = z;
|
|
key.alternativa3d::rotation = this.method_928(rotationX,rotationY,rotationZ);
|
|
key.alternativa3d::scaleX = scaleX;
|
|
key.alternativa3d::scaleY = scaleY;
|
|
key.alternativa3d::scaleZ = scaleZ;
|
|
alternativa3d::method_849(key);
|
|
return key;
|
|
}
|
|
|
|
private function method_926(quat:Vector3D, additive:Vector3D) : void
|
|
{
|
|
var ww:Number = additive.w * quat.w - additive.x * quat.x - additive.y * quat.y - additive.z * quat.z;
|
|
var xx:Number = additive.w * quat.x + additive.x * quat.w + additive.y * quat.z - additive.z * quat.y;
|
|
var yy:Number = additive.w * quat.y + additive.y * quat.w + additive.z * quat.x - additive.x * quat.z;
|
|
var zz:Number = additive.w * quat.z + additive.z * quat.w + additive.x * quat.y - additive.y * quat.x;
|
|
quat.w = ww;
|
|
quat.x = xx;
|
|
quat.y = yy;
|
|
quat.z = zz;
|
|
}
|
|
|
|
private function method_927(quat:Vector3D) : void
|
|
{
|
|
var d:Number = quat.w * quat.w + quat.x * quat.x + quat.y * quat.y + quat.z * quat.z;
|
|
if(d == 0)
|
|
{
|
|
quat.w = 1;
|
|
}
|
|
else
|
|
{
|
|
d = 1 / Math.sqrt(d);
|
|
quat.w *= d;
|
|
quat.x *= d;
|
|
quat.y *= d;
|
|
quat.z *= d;
|
|
}
|
|
}
|
|
|
|
private function method_925(quat:Vector3D, x:Number, y:Number, z:Number, angle:Number) : void
|
|
{
|
|
quat.w = Math.cos(0.5 * angle);
|
|
var k:Number = Math.sin(0.5 * angle) / Math.sqrt(x * x + y * y + z * z);
|
|
quat.x = x * k;
|
|
quat.y = y * k;
|
|
quat.z = z * k;
|
|
}
|
|
|
|
private function method_928(x:Number, y:Number, z:Number) : Vector3D
|
|
{
|
|
var result:Vector3D = new Vector3D();
|
|
this.method_925(result,1,0,0,x);
|
|
this.method_925(tempQuat,0,1,0,y);
|
|
this.method_926(result,tempQuat);
|
|
this.method_927(result);
|
|
this.method_925(tempQuat,0,0,1,z);
|
|
this.method_926(result,tempQuat);
|
|
this.method_927(result);
|
|
return result;
|
|
}
|
|
|
|
override alternativa3d function blend(time:Number, weight:Number, state:name_749) : void
|
|
{
|
|
var prev:name_787 = null;
|
|
var next:name_787 = this.name_783;
|
|
while(next != null && next.alternativa3d::var_420 < time)
|
|
{
|
|
prev = next;
|
|
next = next.alternativa3d::next;
|
|
}
|
|
if(prev != null)
|
|
{
|
|
if(next != null)
|
|
{
|
|
temp.interpolate(prev,next,(time - prev.alternativa3d::var_420) / (next.alternativa3d::var_420 - prev.alternativa3d::var_420));
|
|
state.method_920(temp,weight);
|
|
}
|
|
else
|
|
{
|
|
state.method_920(prev,weight);
|
|
}
|
|
}
|
|
else if(next != null)
|
|
{
|
|
state.method_920(next,weight);
|
|
}
|
|
}
|
|
|
|
override alternativa3d function createKeyFrame() : name_748
|
|
{
|
|
return new name_787();
|
|
}
|
|
|
|
override alternativa3d function interpolateKeyFrame(dest:name_748, a:name_748, b:name_748, value:Number) : void
|
|
{
|
|
name_787(dest).interpolate(name_787(a),name_787(b),value);
|
|
}
|
|
|
|
override public function slice(start:Number, end:Number = 1.7976931348623157e+308) : name_709
|
|
{
|
|
var track:name_759 = new name_759(object);
|
|
alternativa3d::method_851(track,start,end);
|
|
return track;
|
|
}
|
|
}
|
|
}
|
|
|