mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-26 09:59:07 -07:00
Initial commit
This commit is contained in:
109
src/package_123/class_43.as
Normal file
109
src/package_123/class_43.as
Normal file
@@ -0,0 +1,109 @@
|
||||
package package_123
|
||||
{
|
||||
import flash.utils.ByteArray;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class class_43
|
||||
{
|
||||
private static var _byteArray:ByteArray = new ByteArray();
|
||||
|
||||
public var document:name_707;
|
||||
|
||||
public var data:XML;
|
||||
|
||||
private var var_697:int = -1;
|
||||
|
||||
public function class_43(data:XML, document:name_707)
|
||||
{
|
||||
super();
|
||||
this.document = document;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public function name_708(str:String) : String
|
||||
{
|
||||
if(str == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
_byteArray.position = 0;
|
||||
_byteArray.writeUTF(str);
|
||||
_byteArray.position = 0;
|
||||
return _byteArray.readUTF();
|
||||
}
|
||||
|
||||
public function method_314() : Boolean
|
||||
{
|
||||
if(this.var_697 < 0)
|
||||
{
|
||||
this.var_697 = this.parseImplementation() ? 1 : 0;
|
||||
return this.var_697 != 0;
|
||||
}
|
||||
return this.var_697 != 0;
|
||||
}
|
||||
|
||||
protected function parseImplementation() : Boolean
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function name_565(element:XML) : Array
|
||||
{
|
||||
return element.text().toString().split(/\s+/);
|
||||
}
|
||||
|
||||
protected function method_866(element:XML) : Array
|
||||
{
|
||||
var value:String = null;
|
||||
var arr:Array = element.text().toString().split(/\s+/);
|
||||
for(var i:int = 0,var count:int = int(arr.length); i < count; i++)
|
||||
{
|
||||
value = arr[i];
|
||||
if(value.indexOf(",") != -1)
|
||||
{
|
||||
value = value.replace(/,/,".");
|
||||
}
|
||||
arr[i] = parseFloat(value);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
protected function method_867(element:XML) : Array
|
||||
{
|
||||
var value:String = null;
|
||||
var arr:Array = element.text().toString().split(/\s+/);
|
||||
for(var i:int = 0,var count:int = int(arr.length); i < count; i++)
|
||||
{
|
||||
value = arr[i];
|
||||
arr[i] = parseInt(value,10);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
protected function method_761(element:XML) : Number
|
||||
{
|
||||
var value:String = element.toString().replace(/,/,".");
|
||||
return parseFloat(value);
|
||||
}
|
||||
|
||||
public function get id() : String
|
||||
{
|
||||
var idXML:XML = this.data.@id[0];
|
||||
return idXML == null ? null : idXML.toString();
|
||||
}
|
||||
|
||||
public function get sid() : String
|
||||
{
|
||||
var attr:XML = this.data.@sid[0];
|
||||
return attr == null ? null : attr.toString();
|
||||
}
|
||||
|
||||
public function get name() : String
|
||||
{
|
||||
var nameXML:XML = this.data.@name[0];
|
||||
return nameXML == null ? null : nameXML.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
5
src/package_123/collada.as
Normal file
5
src/package_123/collada.as
Normal file
@@ -0,0 +1,5 @@
|
||||
package package_123
|
||||
{
|
||||
public namespace collada = "http://www.collada.org/2005/11/COLLADASchema";
|
||||
}
|
||||
|
||||
567
src/package_123/name_706.as
Normal file
567
src/package_123/name_706.as
Normal file
@@ -0,0 +1,567 @@
|
||||
package package_123
|
||||
{
|
||||
import flash.geom.Matrix3D;
|
||||
import flash.geom.Vector3D;
|
||||
import package_124.name_705;
|
||||
import package_125.name_709;
|
||||
import package_125.name_759;
|
||||
import package_125.name_760;
|
||||
import package_19.name_380;
|
||||
import package_19.name_528;
|
||||
import package_21.name_116;
|
||||
import package_21.name_78;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class name_706 extends class_43
|
||||
{
|
||||
public var scene:name_737;
|
||||
|
||||
public var parent:name_706;
|
||||
|
||||
public var skinOrTopmostJoint:Boolean = false;
|
||||
|
||||
private var channels:Vector.<name_742>;
|
||||
|
||||
private var var_699:Vector.<name_757>;
|
||||
|
||||
public var nodes:Vector.<name_706>;
|
||||
|
||||
public var objects:Vector.<name_711>;
|
||||
|
||||
public var skins:Vector.<name_711>;
|
||||
|
||||
public function name_706(data:XML, document:name_707, scene:name_737 = null, parent:name_706 = null)
|
||||
{
|
||||
super(data,document);
|
||||
this.scene = scene;
|
||||
this.parent = parent;
|
||||
this.method_879();
|
||||
}
|
||||
|
||||
public function get method_872() : String
|
||||
{
|
||||
var n:String = this.name;
|
||||
return n == null ? this.id : n;
|
||||
}
|
||||
|
||||
private function method_879() : void
|
||||
{
|
||||
var node:name_706 = null;
|
||||
var nodesList:XMLList = data.node;
|
||||
var count:int = int(nodesList.length());
|
||||
this.nodes = new Vector.<name_706>(count);
|
||||
for(var i:int = 0; i < count; i++)
|
||||
{
|
||||
node = new name_706(nodesList[i],document,this.scene,this);
|
||||
if(node.id != null)
|
||||
{
|
||||
document.nodes[node.id] = node;
|
||||
}
|
||||
this.nodes[i] = node;
|
||||
}
|
||||
}
|
||||
|
||||
internal function registerInstanceControllers() : void
|
||||
{
|
||||
var i:int = 0;
|
||||
var instanceControllerXML:XML = null;
|
||||
var instanceController:name_757 = null;
|
||||
var jointNodes:Vector.<name_706> = null;
|
||||
var numNodes:int = 0;
|
||||
var jointNode:name_706 = null;
|
||||
var j:int = 0;
|
||||
var instanceControllerXMLs:XMLList = data.instance_controller;
|
||||
var count:int = int(instanceControllerXMLs.length());
|
||||
for(i = 0; i < count; )
|
||||
{
|
||||
this.skinOrTopmostJoint = true;
|
||||
instanceControllerXML = instanceControllerXMLs[i];
|
||||
instanceController = new name_757(instanceControllerXML,document,this);
|
||||
if(instanceController.method_314())
|
||||
{
|
||||
jointNodes = instanceController.topmostJoints;
|
||||
numNodes = int(jointNodes.length);
|
||||
if(numNodes > 0)
|
||||
{
|
||||
jointNode = jointNodes[0];
|
||||
jointNode.method_875(instanceController);
|
||||
for(j = 0; j < numNodes; j++)
|
||||
{
|
||||
jointNodes[j].skinOrTopmostJoint = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
count = int(this.nodes.length);
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
this.nodes[i].registerInstanceControllers();
|
||||
}
|
||||
}
|
||||
|
||||
public function name_747(channel:name_742) : void
|
||||
{
|
||||
if(this.channels == null)
|
||||
{
|
||||
this.channels = new Vector.<name_742>();
|
||||
}
|
||||
this.channels.push(channel);
|
||||
}
|
||||
|
||||
public function method_875(controller:name_757) : void
|
||||
{
|
||||
if(this.var_699 == null)
|
||||
{
|
||||
this.var_699 = new Vector.<name_757>();
|
||||
}
|
||||
this.var_699.push(controller);
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
this.skins = this.method_880();
|
||||
this.objects = this.method_878();
|
||||
return true;
|
||||
}
|
||||
|
||||
private function method_874(geometry:XML) : Object
|
||||
{
|
||||
var instance:name_758 = null;
|
||||
var instances:Object = new Object();
|
||||
var list:XMLList = geometry.bind_material.technique_common.instance_material;
|
||||
for(var i:int = 0,var count:int = int(list.length()); i < count; i++)
|
||||
{
|
||||
instance = new name_758(list[i],document);
|
||||
instances[instance.symbol] = instance;
|
||||
}
|
||||
return instances;
|
||||
}
|
||||
|
||||
public function getNodeBySid(sid:String) : name_706
|
||||
{
|
||||
var i:int = 0;
|
||||
var temp:Vector.<Vector.<name_706>> = null;
|
||||
var children:Vector.<name_706> = null;
|
||||
var count:int = 0;
|
||||
var j:int = 0;
|
||||
var node:name_706 = null;
|
||||
if(sid == this.sid)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
var levelNodes:Vector.<Vector.<name_706>> = new Vector.<Vector.<name_706>>();
|
||||
var levelNodes2:Vector.<Vector.<name_706>> = new Vector.<Vector.<name_706>>();
|
||||
levelNodes.push(this.nodes);
|
||||
for(var len:int = int(levelNodes.length); len > 0; )
|
||||
{
|
||||
for(i = 0; i < len; i++)
|
||||
{
|
||||
children = levelNodes[i];
|
||||
count = int(children.length);
|
||||
for(j = 0; j < count; )
|
||||
{
|
||||
node = children[j];
|
||||
if(node.sid == sid)
|
||||
{
|
||||
return node;
|
||||
}
|
||||
if(node.nodes.length > 0)
|
||||
{
|
||||
levelNodes2.push(node.nodes);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
temp = levelNodes;
|
||||
levelNodes = levelNodes2;
|
||||
levelNodes2 = temp;
|
||||
levelNodes2.length = 0;
|
||||
len = int(levelNodes.length);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function method_880() : Vector.<name_711>
|
||||
{
|
||||
var instanceController:name_757 = null;
|
||||
var skinAndAnimatedJoints:name_711 = null;
|
||||
var skin:name_528 = null;
|
||||
if(this.var_699 == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var skins:Vector.<name_711> = new Vector.<name_711>();
|
||||
for(var i:int = 0,var count:int = int(this.var_699.length); i < count; )
|
||||
{
|
||||
instanceController = this.var_699[i];
|
||||
instanceController.method_314();
|
||||
skinAndAnimatedJoints = instanceController.method_429(this.method_874(instanceController.data));
|
||||
if(skinAndAnimatedJoints != null)
|
||||
{
|
||||
skin = name_528(skinAndAnimatedJoints.object);
|
||||
skin.name = name_708(instanceController.node.name);
|
||||
skins.push(skinAndAnimatedJoints);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return skins.length > 0 ? skins : null;
|
||||
}
|
||||
|
||||
public function method_878() : Vector.<name_711>
|
||||
{
|
||||
var i:int = 0;
|
||||
var count:int = 0;
|
||||
var child:XML = null;
|
||||
var lightInstance:name_741 = null;
|
||||
var geom:name_736 = null;
|
||||
var light:name_116 = null;
|
||||
var rotXMatrix:Matrix3D = null;
|
||||
var mesh:name_380 = null;
|
||||
var objects:Vector.<name_711> = new Vector.<name_711>();
|
||||
var children:XMLList = data.children();
|
||||
for(i = 0,count = int(children.length()); i < count; )
|
||||
{
|
||||
child = children[i];
|
||||
switch(child.localName())
|
||||
{
|
||||
case "instance_light":
|
||||
lightInstance = document.findLight(child.@url[0]);
|
||||
if(lightInstance != null)
|
||||
{
|
||||
light = lightInstance.name_762();
|
||||
if(light != null)
|
||||
{
|
||||
light.name = name_708(name);
|
||||
if(lightInstance.name_761)
|
||||
{
|
||||
rotXMatrix = new Matrix3D();
|
||||
rotXMatrix.appendRotation(180,Vector3D.X_AXIS);
|
||||
objects.push(new name_711(this.name_710(light,rotXMatrix)));
|
||||
}
|
||||
else
|
||||
{
|
||||
objects.push(this.name_714(this.name_710(light)));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(child.@url[0]);
|
||||
}
|
||||
break;
|
||||
case "instance_geometry":
|
||||
geom = document.findGeometry(child.@url[0]);
|
||||
if(geom != null)
|
||||
{
|
||||
geom.method_314();
|
||||
mesh = geom.method_727(this.method_874(child));
|
||||
if(mesh != null)
|
||||
{
|
||||
mesh.name = name_708(name);
|
||||
objects.push(this.name_714(this.name_710(mesh)));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(child.@url[0]);
|
||||
}
|
||||
break;
|
||||
case "instance_node":
|
||||
document.logger.logInstanceNodeError(child);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return objects.length > 0 ? objects : null;
|
||||
}
|
||||
|
||||
private function method_873(initialMatrix:Matrix3D = null) : Matrix3D
|
||||
{
|
||||
var components:Array = null;
|
||||
var child:XML = null;
|
||||
var sid:XML = null;
|
||||
var matrix:Matrix3D = initialMatrix == null ? new Matrix3D() : initialMatrix;
|
||||
var children:XMLList = data.children();
|
||||
for(var i:int = children.length() - 1; i >= 0; i--)
|
||||
{
|
||||
child = children[i];
|
||||
sid = child.@sid[0];
|
||||
if(sid != null && sid.toString() == "post-rotationY")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
switch(child.localName())
|
||||
{
|
||||
case "scale":
|
||||
components = method_866(child);
|
||||
matrix.appendScale(components[0],components[1],components[2]);
|
||||
break;
|
||||
case "rotate":
|
||||
components = method_866(child);
|
||||
matrix.appendRotation(components[3],new Vector3D(components[0],components[1],components[2]));
|
||||
break;
|
||||
case "translate":
|
||||
components = method_866(child);
|
||||
matrix.appendTranslation(components[0] * document.unitScaleFactor,components[1] * document.unitScaleFactor,components[2] * document.unitScaleFactor);
|
||||
break;
|
||||
case "matrix":
|
||||
components = method_866(child);
|
||||
matrix.append(new Matrix3D(Vector.<Number>([components[0],components[4],components[8],components[12],components[1],components[5],components[9],components[13],components[2],components[6],components[10],components[14],components[3] * document.unitScaleFactor,components[7] * document.unitScaleFactor,components[11] * document.unitScaleFactor,components[15]])));
|
||||
break;
|
||||
case "lookat":
|
||||
break;
|
||||
case "skew":
|
||||
document.logger.logSkewError(child);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return matrix;
|
||||
}
|
||||
|
||||
public function name_710(object:name_78, prepend:Matrix3D = null, append:Matrix3D = null) : name_78
|
||||
{
|
||||
var matrix:Matrix3D = this.method_873(prepend);
|
||||
if(append != null)
|
||||
{
|
||||
matrix.append(append);
|
||||
}
|
||||
var vs:Vector.<Vector3D> = matrix.decompose();
|
||||
var t:Vector3D = vs[0];
|
||||
var r:Vector3D = vs[1];
|
||||
var s:Vector3D = vs[2];
|
||||
object.x = t.x;
|
||||
object.y = t.y;
|
||||
object.z = t.z;
|
||||
object.rotationX = r.x;
|
||||
object.rotationY = r.y;
|
||||
object.rotationZ = r.z;
|
||||
object.scaleX = s.x;
|
||||
object.scaleY = s.y;
|
||||
object.scaleZ = s.z;
|
||||
return object;
|
||||
}
|
||||
|
||||
public function name_714(object:name_78) : name_711
|
||||
{
|
||||
var animation:name_705 = this.method_747(object);
|
||||
if(animation == null)
|
||||
{
|
||||
return new name_711(object);
|
||||
}
|
||||
object.name = this.method_872;
|
||||
animation.method_861(object,false);
|
||||
return new name_711(object,animation);
|
||||
}
|
||||
|
||||
public function method_747(object:name_78 = null) : name_705
|
||||
{
|
||||
if(this.channels == null || !this.method_877())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var channel:name_742 = this.method_620(name_742.PARAM_MATRIX);
|
||||
if(channel != null)
|
||||
{
|
||||
return this.method_876(channel.tracks);
|
||||
}
|
||||
var clip:name_705 = new name_705();
|
||||
var components:Vector.<Vector3D> = object != null ? null : this.method_873().decompose();
|
||||
channel = this.method_620(name_742.PARAM_TRANSLATE);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
channel = this.method_620(name_742.PARAM_TRANSLATE_X);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("x",object == null ? Number(components[0].x) : object.x));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_TRANSLATE_Y);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("y",object == null ? Number(components[0].y) : object.y));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_TRANSLATE_Z);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("z",object == null ? Number(components[0].z) : object.z));
|
||||
}
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_ROTATION_X);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("rotationX",object == null ? Number(components[1].x) : object.rotationX));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_ROTATION_Y);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("rotationY",object == null ? Number(components[1].y) : object.rotationY));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_ROTATION_Z);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("rotationZ",object == null ? Number(components[1].z) : object.rotationZ));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_SCALE);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
channel = this.method_620(name_742.PARAM_SCALE_X);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("scaleX",object == null ? Number(components[2].x) : object.scaleX));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_SCALE_Y);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("scaleY",object == null ? Number(components[2].y) : object.scaleY));
|
||||
}
|
||||
channel = this.method_620(name_742.PARAM_SCALE_Z);
|
||||
if(channel != null)
|
||||
{
|
||||
this.method_870(clip,channel.tracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.name_712(this.method_871("scaleZ",object == null ? Number(components[2].z) : object.scaleZ));
|
||||
}
|
||||
}
|
||||
if(clip.numTracks > 0)
|
||||
{
|
||||
return clip;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_876(tracks:Vector.<name_709>) : name_705
|
||||
{
|
||||
var clip:name_705 = new name_705();
|
||||
for(var i:int = 0,var count:int = int(tracks.length); i < count; i++)
|
||||
{
|
||||
clip.name_712(tracks[i]);
|
||||
}
|
||||
return clip;
|
||||
}
|
||||
|
||||
private function method_870(clip:name_705, tracks:Vector.<name_709>) : void
|
||||
{
|
||||
for(var i:int = 0,var count:int = int(tracks.length); i < count; i++)
|
||||
{
|
||||
clip.name_712(tracks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private function method_877() : Boolean
|
||||
{
|
||||
var channel:name_742 = null;
|
||||
var result:Boolean = false;
|
||||
for(var i:int = 0,var count:int = int(this.channels.length); i < count; )
|
||||
{
|
||||
channel = this.channels[i];
|
||||
channel.method_314();
|
||||
result = channel.name_756 == name_742.PARAM_MATRIX;
|
||||
result ||= channel.name_756 == name_742.PARAM_TRANSLATE;
|
||||
result ||= channel.name_756 == name_742.PARAM_TRANSLATE_X;
|
||||
result ||= channel.name_756 == name_742.PARAM_TRANSLATE_Y;
|
||||
result ||= channel.name_756 == name_742.PARAM_TRANSLATE_Z;
|
||||
result ||= channel.name_756 == name_742.PARAM_ROTATION_X;
|
||||
result ||= channel.name_756 == name_742.PARAM_ROTATION_Y;
|
||||
result ||= channel.name_756 == name_742.PARAM_ROTATION_Z;
|
||||
result ||= channel.name_756 == name_742.PARAM_SCALE;
|
||||
result ||= channel.name_756 == name_742.PARAM_SCALE_X;
|
||||
result ||= channel.name_756 == name_742.PARAM_SCALE_Y;
|
||||
result ||= channel.name_756 == name_742.PARAM_SCALE_Z;
|
||||
if(result)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function method_620(param:String) : name_742
|
||||
{
|
||||
var channel:name_742 = null;
|
||||
for(var i:int = 0,var count:int = int(this.channels.length); i < count; )
|
||||
{
|
||||
channel = this.channels[i];
|
||||
channel.method_314();
|
||||
if(channel.name_756 == param)
|
||||
{
|
||||
return channel;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_881(source:Vector.<name_709>, dest:Vector.<name_709>) : void
|
||||
{
|
||||
for(var i:int = 0,var count:int = int(source.length); i < count; i++)
|
||||
{
|
||||
dest.push(source[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private function method_871(property:String, value:Number) : name_709
|
||||
{
|
||||
var track:name_760 = new name_760(this.method_872,property);
|
||||
track.method_257(0,value);
|
||||
return track;
|
||||
}
|
||||
|
||||
public function name_715() : name_759
|
||||
{
|
||||
var track:name_759 = new name_759(this.method_872);
|
||||
track.method_257(0,this.method_873());
|
||||
return track;
|
||||
}
|
||||
|
||||
public function get layer() : String
|
||||
{
|
||||
var layerXML:XML = data.@layer[0];
|
||||
return layerXML == null ? null : layerXML.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
287
src/package_123/name_707.as
Normal file
287
src/package_123/name_707.as
Normal file
@@ -0,0 +1,287 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_707
|
||||
{
|
||||
public var scene:name_737;
|
||||
|
||||
private var data:XML;
|
||||
|
||||
internal var var_690:Object;
|
||||
|
||||
internal var arrays:Object;
|
||||
|
||||
internal var vertices:Object;
|
||||
|
||||
public var geometries:Object;
|
||||
|
||||
internal var nodes:Object;
|
||||
|
||||
internal var lights:Object;
|
||||
|
||||
internal var images:Object;
|
||||
|
||||
internal var effects:Object;
|
||||
|
||||
internal var var_692:Object;
|
||||
|
||||
internal var var_691:Object;
|
||||
|
||||
public var materials:Object;
|
||||
|
||||
internal var logger:name_743;
|
||||
|
||||
public var versionMajor:uint;
|
||||
|
||||
public var versionMinor:uint;
|
||||
|
||||
public var unitScaleFactor:Number = 1;
|
||||
|
||||
public function name_707(document:XML, units:Number)
|
||||
{
|
||||
super();
|
||||
this.data = document;
|
||||
var versionComponents:Array = this.data.@version[0].toString().split(/[.,]/);
|
||||
this.versionMajor = parseInt(versionComponents[1],10);
|
||||
this.versionMinor = parseInt(versionComponents[2],10);
|
||||
var colladaUnit:Number = Number(parseFloat(this.data.asset[0].unit[0].@meter));
|
||||
if(units > 0)
|
||||
{
|
||||
this.unitScaleFactor = colladaUnit / units;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.unitScaleFactor = 1;
|
||||
}
|
||||
this.logger = new name_743();
|
||||
this.method_848();
|
||||
this.method_847();
|
||||
this.registerInstanceControllers();
|
||||
this.method_846();
|
||||
}
|
||||
|
||||
private function method_845(url:XML) : String
|
||||
{
|
||||
var path:String = url.toString();
|
||||
if(path.charAt(0) == "#")
|
||||
{
|
||||
return path.substr(1);
|
||||
}
|
||||
this.logger.name_745(url);
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_848() : void
|
||||
{
|
||||
var element:XML = null;
|
||||
var source:name_740 = null;
|
||||
var light:name_741 = null;
|
||||
var image:name_734 = null;
|
||||
var effect:name_738 = null;
|
||||
var material:name_713 = null;
|
||||
var geom:name_736 = null;
|
||||
var controller:name_735 = null;
|
||||
var node:name_706 = null;
|
||||
this.var_690 = new Object();
|
||||
this.arrays = new Object();
|
||||
for each(element in this.data..source)
|
||||
{
|
||||
source = new name_740(element,this);
|
||||
if(source.id != null)
|
||||
{
|
||||
this.var_690[source.id] = source;
|
||||
}
|
||||
}
|
||||
this.lights = new Object();
|
||||
for each(element in this.data.library_lights.light)
|
||||
{
|
||||
light = new name_741(element,this);
|
||||
if(light.id != null)
|
||||
{
|
||||
this.lights[light.id] = light;
|
||||
}
|
||||
}
|
||||
this.images = new Object();
|
||||
for each(element in this.data.library_images.image)
|
||||
{
|
||||
image = new name_734(element,this);
|
||||
if(image.id != null)
|
||||
{
|
||||
this.images[image.id] = image;
|
||||
}
|
||||
}
|
||||
this.effects = new Object();
|
||||
for each(element in this.data.library_effects.effect)
|
||||
{
|
||||
effect = new name_738(element,this);
|
||||
if(effect.id != null)
|
||||
{
|
||||
this.effects[effect.id] = effect;
|
||||
}
|
||||
}
|
||||
this.materials = new Object();
|
||||
for each(element in this.data.library_materials.material)
|
||||
{
|
||||
material = new name_713(element,this);
|
||||
if(material.id != null)
|
||||
{
|
||||
this.materials[material.id] = material;
|
||||
}
|
||||
}
|
||||
this.geometries = new Object();
|
||||
this.vertices = new Object();
|
||||
for each(element in this.data.library_geometries.geometry)
|
||||
{
|
||||
geom = new name_736(element,this);
|
||||
if(geom.id != null)
|
||||
{
|
||||
this.geometries[geom.id] = geom;
|
||||
}
|
||||
}
|
||||
this.var_692 = new Object();
|
||||
for each(element in this.data.library_controllers.controller)
|
||||
{
|
||||
controller = new name_735(element,this);
|
||||
if(controller.id != null)
|
||||
{
|
||||
this.var_692[controller.id] = controller;
|
||||
}
|
||||
}
|
||||
this.nodes = new Object();
|
||||
for each(element in this.data.library_nodes.node)
|
||||
{
|
||||
node = new name_706(element,this);
|
||||
if(node.id != null)
|
||||
{
|
||||
this.nodes[node.id] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function method_847() : void
|
||||
{
|
||||
var element:XML = null;
|
||||
var vscene:name_737 = null;
|
||||
var vsceneURL:XML = this.data.scene.instance_visual_scene.@url[0];
|
||||
var vsceneID:String = this.method_845(vsceneURL);
|
||||
for each(element in this.data.library_visual_scenes.visual_scene)
|
||||
{
|
||||
vscene = new name_737(element,this);
|
||||
if(vscene.id == vsceneID)
|
||||
{
|
||||
this.scene = vscene;
|
||||
}
|
||||
}
|
||||
if(vsceneID != null && this.scene == null)
|
||||
{
|
||||
this.logger.logNotFoundError(vsceneURL);
|
||||
}
|
||||
}
|
||||
|
||||
private function registerInstanceControllers() : void
|
||||
{
|
||||
var i:int = 0;
|
||||
var count:int = 0;
|
||||
if(this.scene != null)
|
||||
{
|
||||
for(i = 0,count = int(this.scene.nodes.length); i < count; i++)
|
||||
{
|
||||
this.scene.nodes[i].registerInstanceControllers();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function method_846() : void
|
||||
{
|
||||
var element:XML = null;
|
||||
var sampler:name_739 = null;
|
||||
var channel:name_742 = null;
|
||||
var node:name_706 = null;
|
||||
this.var_691 = new Object();
|
||||
for each(element in this.data.library_animations..sampler)
|
||||
{
|
||||
sampler = new name_739(element,this);
|
||||
if(sampler.id != null)
|
||||
{
|
||||
this.var_691[sampler.id] = sampler;
|
||||
}
|
||||
}
|
||||
for each(element in this.data.library_animations..channel)
|
||||
{
|
||||
channel = new name_742(element,this);
|
||||
node = channel.node;
|
||||
if(node != null)
|
||||
{
|
||||
node.name_747(channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function findArray(url:XML) : name_746
|
||||
{
|
||||
return this.arrays[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findSource(url:XML) : name_740
|
||||
{
|
||||
return this.var_690[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findLight(url:XML) : name_741
|
||||
{
|
||||
return this.lights[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findImage(url:XML) : name_734
|
||||
{
|
||||
return this.images[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findImageByID(id:String) : name_734
|
||||
{
|
||||
return this.images[id];
|
||||
}
|
||||
|
||||
public function findEffect(url:XML) : name_738
|
||||
{
|
||||
return this.effects[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findMaterial(url:XML) : name_713
|
||||
{
|
||||
return this.materials[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findVertices(url:XML) : name_744
|
||||
{
|
||||
return this.vertices[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findGeometry(url:XML) : name_736
|
||||
{
|
||||
return this.geometries[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findNode(url:XML) : name_706
|
||||
{
|
||||
return this.nodes[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findNodeByID(id:String) : name_706
|
||||
{
|
||||
return this.nodes[id];
|
||||
}
|
||||
|
||||
public function findController(url:XML) : name_735
|
||||
{
|
||||
return this.var_692[this.method_845(url)];
|
||||
}
|
||||
|
||||
public function findSampler(url:XML) : name_739
|
||||
{
|
||||
return this.var_691[this.method_845(url)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
22
src/package_123/name_711.as
Normal file
22
src/package_123/name_711.as
Normal file
@@ -0,0 +1,22 @@
|
||||
package package_123
|
||||
{
|
||||
import package_124.name_705;
|
||||
import package_21.name_78;
|
||||
|
||||
public class name_711
|
||||
{
|
||||
public var object:name_78;
|
||||
|
||||
public var animation:name_705;
|
||||
|
||||
public var jointNode:name_706;
|
||||
|
||||
public function name_711(object:name_78, animation:name_705 = null)
|
||||
{
|
||||
super();
|
||||
this.object = object;
|
||||
this.animation = animation;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
57
src/package_123/name_713.as
Normal file
57
src/package_123/name_713.as
Normal file
@@ -0,0 +1,57 @@
|
||||
package package_123
|
||||
{
|
||||
import package_116.name_641;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class name_713 extends class_43
|
||||
{
|
||||
public var material:name_641;
|
||||
|
||||
public var var_698:String;
|
||||
|
||||
public var used:Boolean = false;
|
||||
|
||||
public function name_713(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
private function method_869() : Object
|
||||
{
|
||||
var element:XML = null;
|
||||
var param:name_754 = null;
|
||||
var params:Object = new Object();
|
||||
var list:XMLList = data.instance_effect.setparam;
|
||||
for each(element in list)
|
||||
{
|
||||
param = new name_754(element,document);
|
||||
params[param.ref] = param;
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
private function get method_868() : XML
|
||||
{
|
||||
return data.instance_effect.@url[0];
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var effect:name_738 = document.findEffect(this.method_868);
|
||||
if(effect != null)
|
||||
{
|
||||
effect.method_314();
|
||||
this.material = effect.name_755(this.method_869());
|
||||
this.var_698 = effect.var_698;
|
||||
if(this.material != null)
|
||||
{
|
||||
this.material.name = name_708(name);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
29
src/package_123/name_734.as
Normal file
29
src/package_123/name_734.as
Normal file
@@ -0,0 +1,29 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_734 extends class_43
|
||||
{
|
||||
public function name_734(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
public function get init_from() : String
|
||||
{
|
||||
var refXML:XML = null;
|
||||
var element:XML = data.init_from[0];
|
||||
if(element != null)
|
||||
{
|
||||
if(document.versionMajor > 4)
|
||||
{
|
||||
refXML = element.ref[0];
|
||||
return refXML == null ? null : refXML.text().toString();
|
||||
}
|
||||
return element.text().toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
634
src/package_123/name_735.as
Normal file
634
src/package_123/name_735.as
Normal file
@@ -0,0 +1,634 @@
|
||||
package package_123
|
||||
{
|
||||
import alternativa.engine3d.*;
|
||||
import flash.utils.ByteArray;
|
||||
import flash.utils.Dictionary;
|
||||
import flash.utils.Endian;
|
||||
import package_116.name_641;
|
||||
import package_124.name_705;
|
||||
import package_19.name_528;
|
||||
import package_19.name_700;
|
||||
import package_21.name_126;
|
||||
import package_21.name_78;
|
||||
import package_28.name_119;
|
||||
|
||||
use namespace collada;
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_735 extends class_43
|
||||
{
|
||||
private var var_726:Vector.<Vector.<Number>>;
|
||||
|
||||
private var var_725:Array;
|
||||
|
||||
private var indices:Array;
|
||||
|
||||
private var var_728:name_784;
|
||||
|
||||
private var var_727:name_784;
|
||||
|
||||
private var var_729:int;
|
||||
|
||||
private var geometry:name_119;
|
||||
|
||||
private var primitives:Vector.<name_768>;
|
||||
|
||||
private var var_724:int = 0;
|
||||
|
||||
private var var_723:Vector.<Number>;
|
||||
|
||||
public function name_735(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
private function get method_912() : name_736
|
||||
{
|
||||
var geom:name_736 = document.findGeometry(data.skin.@source[0]);
|
||||
if(geom == null)
|
||||
{
|
||||
document.logger.logNotFoundError(data.@source[0]);
|
||||
}
|
||||
return geom;
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var i:int = 0;
|
||||
var j:int = 0;
|
||||
var count:int = 0;
|
||||
var vertices:Vector.<name_770> = null;
|
||||
var source:name_119 = null;
|
||||
var localMaxJointsPerVertex:int = 0;
|
||||
var attributes:Array = null;
|
||||
var numSourceAttributes:int = 0;
|
||||
var index:int = 0;
|
||||
var numMappings:int = 0;
|
||||
var sourceData:ByteArray = null;
|
||||
var data:ByteArray = null;
|
||||
var byteArray:ByteArray = null;
|
||||
var attribute:int = 0;
|
||||
var vertexWeightsXML:XML = this.data.skin.vertex_weights[0];
|
||||
if(vertexWeightsXML == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var vcountsXML:XML = vertexWeightsXML.vcount[0];
|
||||
if(vcountsXML == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.var_725 = method_867(vcountsXML);
|
||||
var indicesXML:XML = vertexWeightsXML.v[0];
|
||||
if(indicesXML == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.indices = method_867(indicesXML);
|
||||
this.method_909();
|
||||
this.method_906();
|
||||
for(i = 0; i < this.var_725.length; )
|
||||
{
|
||||
count = int(this.var_725[i]);
|
||||
if(this.var_724 < count)
|
||||
{
|
||||
this.var_724 = count;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
var geom:name_736 = this.method_912;
|
||||
this.var_723 = this.method_904();
|
||||
if(geom != null)
|
||||
{
|
||||
geom.method_314();
|
||||
vertices = geom.var_716;
|
||||
source = geom.geometry;
|
||||
localMaxJointsPerVertex = this.var_724 % 2 != 0 ? this.var_724 + 1 : this.var_724;
|
||||
this.geometry = new name_119();
|
||||
this.geometry.alternativa3d::_indices = source.alternativa3d::_indices.slice();
|
||||
attributes = source.method_279(0);
|
||||
numSourceAttributes = int(attributes.length);
|
||||
index = numSourceAttributes;
|
||||
for(i = 0; i < localMaxJointsPerVertex; i += 2)
|
||||
{
|
||||
attribute = int(name_126.JOINTS[int(i / 2)]);
|
||||
attributes[int(index++)] = attribute;
|
||||
attributes[int(index++)] = attribute;
|
||||
attributes[int(index++)] = attribute;
|
||||
attributes[int(index++)] = attribute;
|
||||
}
|
||||
numMappings = int(attributes.length);
|
||||
sourceData = source.alternativa3d::_vertexStreams[0].data;
|
||||
data = new ByteArray();
|
||||
data.endian = Endian.LITTLE_ENDIAN;
|
||||
data.length = 4 * numMappings * source.alternativa3d::_numVertices;
|
||||
sourceData.position = 0;
|
||||
for(i = 0; i < source.alternativa3d::_numVertices; i++)
|
||||
{
|
||||
data.position = 4 * numMappings * i;
|
||||
for(j = 0; j < numSourceAttributes; j++)
|
||||
{
|
||||
data.writeFloat(sourceData.readFloat());
|
||||
}
|
||||
}
|
||||
byteArray = this.createVertexBuffer(vertices,localMaxJointsPerVertex);
|
||||
byteArray.position = 0;
|
||||
for(i = 0; i < source.alternativa3d::_numVertices; i++)
|
||||
{
|
||||
data.position = 4 * (numMappings * i + numSourceAttributes);
|
||||
for(j = 0; j < localMaxJointsPerVertex; j++)
|
||||
{
|
||||
data.writeFloat(byteArray.readFloat());
|
||||
data.writeFloat(byteArray.readFloat());
|
||||
}
|
||||
}
|
||||
this.geometry.addVertexStream(attributes);
|
||||
this.geometry.alternativa3d::_vertexStreams[0].data = data;
|
||||
this.geometry.alternativa3d::_numVertices = source.alternativa3d::_numVertices;
|
||||
this.method_908(this.geometry);
|
||||
this.primitives = geom.primitives;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private function method_908(geometry:name_119) : void
|
||||
{
|
||||
var x:Number = NaN;
|
||||
var y:Number = NaN;
|
||||
var z:Number = NaN;
|
||||
var data:ByteArray = geometry.alternativa3d::_vertexStreams[0].data;
|
||||
var numMappings:int = int(geometry.alternativa3d::_vertexStreams[0].attributes.length);
|
||||
for(var i:int = 0; i < geometry.alternativa3d::_numVertices; i++)
|
||||
{
|
||||
data.position = 4 * numMappings * i;
|
||||
x = Number(data.readFloat());
|
||||
y = Number(data.readFloat());
|
||||
z = Number(data.readFloat());
|
||||
data.position -= 12;
|
||||
data.writeFloat(x * this.var_723[0] + y * this.var_723[1] + z * this.var_723[2] + this.var_723[3]);
|
||||
data.writeFloat(x * this.var_723[4] + y * this.var_723[5] + z * this.var_723[6] + this.var_723[7]);
|
||||
data.writeFloat(x * this.var_723[8] + y * this.var_723[9] + z * this.var_723[10] + this.var_723[11]);
|
||||
}
|
||||
}
|
||||
|
||||
private function createVertexBuffer(vertices:Vector.<name_770>, localMaxJointsPerVertex:int) : ByteArray
|
||||
{
|
||||
var i:int = 0;
|
||||
var count:int = 0;
|
||||
var vertexOutIndices:Vector.<uint> = null;
|
||||
var vertex:name_770 = null;
|
||||
var vec:Vector.<uint> = null;
|
||||
var jointsPerVertex:int = 0;
|
||||
var j:int = 0;
|
||||
var k:int = 0;
|
||||
var index:int = 0;
|
||||
var jointIndex:int = 0;
|
||||
var weightIndex:int = 0;
|
||||
var jointsOffset:int = this.var_728.offset;
|
||||
var weightsOffset:int = this.var_727.offset;
|
||||
var weightsSource:name_740 = this.var_727.prepareSource(1);
|
||||
var weights:Vector.<Number> = weightsSource.numbers;
|
||||
var weightsStride:int = weightsSource.stride;
|
||||
var verticesDict:Dictionary = new Dictionary();
|
||||
var byteArray:ByteArray = new ByteArray();
|
||||
byteArray.length = vertices.length * localMaxJointsPerVertex * 8;
|
||||
byteArray.endian = Endian.LITTLE_ENDIAN;
|
||||
for(i = 0,count = int(vertices.length); i < count; i++)
|
||||
{
|
||||
vertex = vertices[i];
|
||||
if(vertex != null)
|
||||
{
|
||||
vec = verticesDict[vertex.name_785];
|
||||
if(vec == null)
|
||||
{
|
||||
vec = verticesDict[vertex.name_785] = new Vector.<uint>();
|
||||
}
|
||||
vec.push(vertex.name_786);
|
||||
}
|
||||
}
|
||||
var vertexIndex:int = 0;
|
||||
for(i = 0,count = int(this.var_725.length); i < count; i++)
|
||||
{
|
||||
jointsPerVertex = int(this.var_725[i]);
|
||||
vertexOutIndices = verticesDict[i];
|
||||
for(j = 0; j < vertexOutIndices.length; j++)
|
||||
{
|
||||
byteArray.position = vertexOutIndices[j] * localMaxJointsPerVertex * 8;
|
||||
for(k = 0; k < jointsPerVertex; k++)
|
||||
{
|
||||
index = this.var_729 * (vertexIndex + k);
|
||||
jointIndex = int(this.indices[int(index + jointsOffset)]);
|
||||
if(jointIndex >= 0)
|
||||
{
|
||||
byteArray.writeFloat(jointIndex * 3);
|
||||
weightIndex = int(this.indices[int(index + weightsOffset)]);
|
||||
byteArray.writeFloat(weights[int(weightsStride * weightIndex)]);
|
||||
}
|
||||
else
|
||||
{
|
||||
byteArray.position += 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
vertexIndex += jointsPerVertex;
|
||||
}
|
||||
byteArray.position = 0;
|
||||
return byteArray;
|
||||
}
|
||||
|
||||
private function method_909() : void
|
||||
{
|
||||
var input:name_784 = null;
|
||||
var semantic:String = null;
|
||||
var offset:int = 0;
|
||||
var inputsList:XMLList = data.skin.vertex_weights.input;
|
||||
var maxInputOffset:int = 0;
|
||||
for(var i:int = 0,var count:int = int(inputsList.length()); i < count; offset = input.offset,maxInputOffset = offset > maxInputOffset ? offset : maxInputOffset,i++)
|
||||
{
|
||||
input = new name_784(inputsList[i],document);
|
||||
semantic = input.semantic;
|
||||
if(semantic == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
switch(semantic)
|
||||
{
|
||||
case "JOINT":
|
||||
if(this.var_728 == null)
|
||||
{
|
||||
this.var_728 = input;
|
||||
}
|
||||
break;
|
||||
case "WEIGHT":
|
||||
if(this.var_727 == null)
|
||||
{
|
||||
this.var_727 = input;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.var_729 = maxInputOffset + 1;
|
||||
}
|
||||
|
||||
private function method_906() : void
|
||||
{
|
||||
var jointsXML:XML = null;
|
||||
var jointsSource:name_740 = null;
|
||||
var stride:int = 0;
|
||||
var count:int = 0;
|
||||
var i:int = 0;
|
||||
var index:int = 0;
|
||||
var matrix:Vector.<Number> = null;
|
||||
var j:int = 0;
|
||||
jointsXML = data.skin.joints.input.(@semantic == "INV_BIND_MATRIX")[0];
|
||||
if(jointsXML != null)
|
||||
{
|
||||
jointsSource = document.findSource(jointsXML.@source[0]);
|
||||
if(jointsSource != null)
|
||||
{
|
||||
if(jointsSource.method_314() && jointsSource.numbers != null && jointsSource.stride >= 16)
|
||||
{
|
||||
stride = jointsSource.stride;
|
||||
count = jointsSource.numbers.length / stride;
|
||||
this.var_726 = new Vector.<Vector.<Number>>(count);
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
index = stride * i;
|
||||
matrix = new Vector.<Number>(16);
|
||||
this.var_726[i] = matrix;
|
||||
for(j = 0; j < 16; j++)
|
||||
{
|
||||
matrix[j] = jointsSource.numbers[int(index + j)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(jointsXML.@source[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function method_429(materials:Object, topmostJoints:Vector.<name_706>, skeletons:Vector.<name_706>) : name_711
|
||||
{
|
||||
var numJoints:int = 0;
|
||||
var skin:name_528 = null;
|
||||
var joints:Vector.<name_711> = null;
|
||||
var i:int = 0;
|
||||
var p:name_768 = null;
|
||||
var instanceMaterial:name_758 = null;
|
||||
var material:name_641 = null;
|
||||
var daeMaterial:name_713 = null;
|
||||
var skinXML:XML = data.skin[0];
|
||||
if(skinXML != null)
|
||||
{
|
||||
this.var_723 = this.method_904();
|
||||
numJoints = int(this.var_726.length);
|
||||
skin = new name_528(this.var_724,numJoints);
|
||||
skin.geometry = this.geometry;
|
||||
joints = this.method_915(skin,topmostJoints,this.method_902(skeletons));
|
||||
this.method_910(joints);
|
||||
skin.var_631 = this.method_905(joints,numJoints);
|
||||
if(this.primitives != null)
|
||||
{
|
||||
for(i = 0; i < this.primitives.length; i++)
|
||||
{
|
||||
p = this.primitives[i];
|
||||
instanceMaterial = materials[p.name_774];
|
||||
if(instanceMaterial != null)
|
||||
{
|
||||
daeMaterial = instanceMaterial.material;
|
||||
if(daeMaterial != null)
|
||||
{
|
||||
daeMaterial.method_314();
|
||||
material = daeMaterial.material;
|
||||
daeMaterial.used = true;
|
||||
}
|
||||
}
|
||||
skin.addSurface(material,p.indexBegin,p.numTriangles);
|
||||
}
|
||||
}
|
||||
return new name_711(skin,this.method_913(skin,joints));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_905(joints:Vector.<name_711>, numJoints:int) : Vector.<name_700>
|
||||
{
|
||||
var result:Vector.<name_700> = new Vector.<name_700>();
|
||||
for(var i:int = 0; i < numJoints; i++)
|
||||
{
|
||||
result[i] = name_700(joints[i].object);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private function method_913(skin:name_528, joints:Vector.<name_711>) : name_705
|
||||
{
|
||||
var animatedObject:name_711 = null;
|
||||
var clip:name_705 = null;
|
||||
var object:name_78 = null;
|
||||
var t:int = 0;
|
||||
if(!this.method_911(joints))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var result:name_705 = new name_705();
|
||||
var resultObjects:Array = [skin];
|
||||
for(var i:int = 0,var count:int = int(joints.length); i < count; i++)
|
||||
{
|
||||
animatedObject = joints[i];
|
||||
clip = animatedObject.animation;
|
||||
if(clip != null)
|
||||
{
|
||||
for(t = 0; t < clip.numTracks; t++)
|
||||
{
|
||||
result.name_712(clip.name_716(t));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result.name_712(animatedObject.jointNode.name_715());
|
||||
}
|
||||
object = animatedObject.object;
|
||||
object.name = animatedObject.jointNode.method_872;
|
||||
resultObjects.push(object);
|
||||
}
|
||||
result.alternativa3d::var_346 = resultObjects;
|
||||
return result;
|
||||
}
|
||||
|
||||
private function method_911(joints:Vector.<name_711>) : Boolean
|
||||
{
|
||||
var object:name_711 = null;
|
||||
for(var i:int = 0,var count:int = int(joints.length); i < count; )
|
||||
{
|
||||
object = joints[i];
|
||||
if(object.animation != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function method_910(animatedJoints:Vector.<name_711>) : void
|
||||
{
|
||||
var animatedJoint:name_711 = null;
|
||||
var bindMatrix:Vector.<Number> = null;
|
||||
for(var i:int = 0,var count:int = int(this.var_726.length); i < count; i++)
|
||||
{
|
||||
animatedJoint = animatedJoints[i];
|
||||
bindMatrix = this.var_726[i];
|
||||
name_700(animatedJoint.object).alternativa3d::name_701(bindMatrix);
|
||||
}
|
||||
}
|
||||
|
||||
private function method_915(skin:name_528, topmostJoints:Vector.<name_706>, nodes:Vector.<name_706>) : Vector.<name_711>
|
||||
{
|
||||
var i:int = 0;
|
||||
var topmostJoint:name_706 = null;
|
||||
var animatedJoint:name_711 = null;
|
||||
var nodesDictionary:Dictionary = new Dictionary();
|
||||
var count:int = int(nodes.length);
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
nodesDictionary[nodes[i]] = i;
|
||||
}
|
||||
var animatedJoints:Vector.<name_711> = new Vector.<name_711>(count);
|
||||
var numTopmostJoints:int = int(topmostJoints.length);
|
||||
for(i = 0; i < numTopmostJoints; i++)
|
||||
{
|
||||
topmostJoint = topmostJoints[i];
|
||||
animatedJoint = this.method_914(skin,topmostJoint,animatedJoints,nodesDictionary);
|
||||
this.method_901(name_700(animatedJoint.object),animatedJoints,topmostJoint,nodesDictionary);
|
||||
}
|
||||
return animatedJoints;
|
||||
}
|
||||
|
||||
private function method_914(skin:name_528, node:name_706, animatedJoints:Vector.<name_711>, nodes:Dictionary) : name_711
|
||||
{
|
||||
var joint:name_700 = new name_700();
|
||||
joint.name = name_708(node.name);
|
||||
skin.addChild(joint);
|
||||
var animatedJoint:name_711 = node.name_714(node.name_710(joint));
|
||||
animatedJoint.jointNode = node;
|
||||
if(node in nodes)
|
||||
{
|
||||
animatedJoints[nodes[node]] = animatedJoint;
|
||||
}
|
||||
else
|
||||
{
|
||||
animatedJoints.push(animatedJoint);
|
||||
}
|
||||
return animatedJoint;
|
||||
}
|
||||
|
||||
private function method_901(parent:name_700, animatedJoints:Vector.<name_711>, parentNode:name_706, nodes:Dictionary) : void
|
||||
{
|
||||
var object:name_711 = null;
|
||||
var child:name_706 = null;
|
||||
var joint:name_700 = null;
|
||||
var children:Vector.<name_706> = parentNode.nodes;
|
||||
for(var i:int = 0,var count:int = int(children.length); i < count; )
|
||||
{
|
||||
child = children[i];
|
||||
if(child in nodes)
|
||||
{
|
||||
joint = new name_700();
|
||||
joint.name = name_708(child.name);
|
||||
object = child.name_714(child.name_710(joint));
|
||||
object.jointNode = child;
|
||||
animatedJoints[nodes[child]] = object;
|
||||
parent.addChild(joint);
|
||||
this.method_901(joint,animatedJoints,child,nodes);
|
||||
}
|
||||
else if(this.method_903(child,nodes))
|
||||
{
|
||||
joint = new name_700();
|
||||
joint.name = name_708(child.name);
|
||||
object = child.name_714(child.name_710(joint));
|
||||
object.jointNode = child;
|
||||
animatedJoints.push(object);
|
||||
parent.addChild(joint);
|
||||
this.method_901(joint,animatedJoints,child,nodes);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private function method_903(parentNode:name_706, nodes:Dictionary) : Boolean
|
||||
{
|
||||
var child:name_706 = null;
|
||||
var children:Vector.<name_706> = parentNode.nodes;
|
||||
for(var i:int = 0,var count:int = int(children.length); i < count; )
|
||||
{
|
||||
child = children[i];
|
||||
if(child in nodes || this.method_903(child,nodes))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function method_904() : Vector.<Number>
|
||||
{
|
||||
var matrix:Array = null;
|
||||
var i:int = 0;
|
||||
var matrixXML:XML = data.skin.bind_shape_matrix[0];
|
||||
var res:Vector.<Number> = new Vector.<Number>(16,true);
|
||||
if(matrixXML != null)
|
||||
{
|
||||
matrix = name_565(matrixXML);
|
||||
for(i = 0; i < matrix.length; i++)
|
||||
{
|
||||
res[i] = Number(matrix[i]);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
private function method_907(node:name_706, nodes:Dictionary) : Boolean
|
||||
{
|
||||
for(var parent:name_706 = node.parent; parent != null; )
|
||||
{
|
||||
if(parent in nodes)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
parent = parent.parent;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function method_916(skeletons:Vector.<name_706>) : Vector.<name_706>
|
||||
{
|
||||
var nodesDictionary:Dictionary = null;
|
||||
var rootNodes:Vector.<name_706> = null;
|
||||
var node:name_706 = null;
|
||||
var nodes:Vector.<name_706> = this.method_902(skeletons);
|
||||
var i:int = 0;
|
||||
var count:int = int(nodes.length);
|
||||
if(count > 0)
|
||||
{
|
||||
nodesDictionary = new Dictionary();
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
nodesDictionary[nodes[i]] = i;
|
||||
}
|
||||
rootNodes = new Vector.<name_706>();
|
||||
for(i = 0; i < count; )
|
||||
{
|
||||
node = nodes[i];
|
||||
if(this.method_907(node,nodesDictionary))
|
||||
{
|
||||
rootNodes.push(node);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return rootNodes;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function findNode(nodeName:String, skeletons:Vector.<name_706>) : name_706
|
||||
{
|
||||
var node:name_706 = null;
|
||||
var count:int = int(skeletons.length);
|
||||
for(var i:int = 0; i < count; )
|
||||
{
|
||||
node = skeletons[i].getNodeBySid(nodeName);
|
||||
if(node != null)
|
||||
{
|
||||
return node;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_902(skeletons:Vector.<name_706>) : Vector.<name_706>
|
||||
{
|
||||
var jointsXML:XML = null;
|
||||
var jointsSource:name_740 = null;
|
||||
var stride:int = 0;
|
||||
var count:int = 0;
|
||||
var nodes:Vector.<name_706> = null;
|
||||
var i:int = 0;
|
||||
var node:name_706 = null;
|
||||
jointsXML = data.skin.joints.input.(@semantic == "JOINT")[0];
|
||||
if(jointsXML != null)
|
||||
{
|
||||
jointsSource = document.findSource(jointsXML.@source[0]);
|
||||
if(jointsSource != null)
|
||||
{
|
||||
if(jointsSource.method_314() && jointsSource.names != null)
|
||||
{
|
||||
stride = jointsSource.stride;
|
||||
count = jointsSource.names.length / stride;
|
||||
nodes = new Vector.<name_706>(count);
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
node = this.findNode(jointsSource.names[int(stride * i)],skeletons);
|
||||
if(node == null)
|
||||
{
|
||||
}
|
||||
nodes[i] = node;
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(jointsXML.@source[0]);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
209
src/package_123/name_736.as
Normal file
209
src/package_123/name_736.as
Normal file
@@ -0,0 +1,209 @@
|
||||
package package_123
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import flash.utils.ByteArray;
|
||||
import flash.utils.Endian;
|
||||
import package_116.name_641;
|
||||
import package_19.name_380;
|
||||
import package_21.name_126;
|
||||
import package_28.name_119;
|
||||
|
||||
use namespace collada;
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_736 extends class_43
|
||||
{
|
||||
internal var var_716:Vector.<name_770>;
|
||||
|
||||
internal var primitives:Vector.<name_768>;
|
||||
|
||||
internal var geometry:name_119;
|
||||
|
||||
private var vertices:name_744;
|
||||
|
||||
public function name_736(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
this.method_888();
|
||||
}
|
||||
|
||||
private function method_888() : void
|
||||
{
|
||||
var verticesXML:XML = data.mesh.vertices[0];
|
||||
if(verticesXML != null)
|
||||
{
|
||||
this.vertices = new name_744(verticesXML,document);
|
||||
document.vertices[this.vertices.id] = this.vertices;
|
||||
}
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var numVertices:int = 0;
|
||||
var i:int = 0;
|
||||
var p:name_768 = null;
|
||||
var channels:uint = 0;
|
||||
var attributes:Array = null;
|
||||
var index:int = 0;
|
||||
var data:ByteArray = null;
|
||||
var numMappings:int = 0;
|
||||
var vertex:name_770 = null;
|
||||
var j:int = 0;
|
||||
if(this.vertices != null)
|
||||
{
|
||||
this.method_889();
|
||||
this.vertices.method_314();
|
||||
numVertices = this.vertices.name_771.numbers.length / this.vertices.name_771.stride;
|
||||
this.geometry = new name_119();
|
||||
this.var_716 = new Vector.<name_770>(numVertices);
|
||||
channels = 0;
|
||||
for(i = 0; i < this.primitives.length; )
|
||||
{
|
||||
p = this.primitives[i];
|
||||
p.method_314();
|
||||
if(p.name_772(this.vertices))
|
||||
{
|
||||
numVertices = int(this.var_716.length);
|
||||
channels |= p.name_773(this.geometry,this.var_716);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
attributes = new Array(3);
|
||||
attributes[0] = name_126.POSITION;
|
||||
attributes[1] = name_126.POSITION;
|
||||
attributes[2] = name_126.POSITION;
|
||||
index = 3;
|
||||
if(Boolean(channels & name_768.NORMALS))
|
||||
{
|
||||
var _loc11_:* = index++;
|
||||
attributes[_loc11_] = name_126.NORMAL;
|
||||
var _loc12_:* = index++;
|
||||
attributes[_loc12_] = name_126.NORMAL;
|
||||
var _loc13_:* = index++;
|
||||
attributes[_loc13_] = name_126.NORMAL;
|
||||
}
|
||||
if(Boolean(channels & name_768.TANGENT4))
|
||||
{
|
||||
_loc11_ = index++;
|
||||
attributes[_loc11_] = name_126.TANGENT4;
|
||||
_loc12_ = index++;
|
||||
attributes[_loc12_] = name_126.TANGENT4;
|
||||
_loc13_ = index++;
|
||||
attributes[_loc13_] = name_126.TANGENT4;
|
||||
var _loc14_:* = index++;
|
||||
attributes[_loc14_] = name_126.TANGENT4;
|
||||
}
|
||||
for(i = 0; i < 8; )
|
||||
{
|
||||
if(Boolean(channels & name_768.TEXCOORDS[i]))
|
||||
{
|
||||
_loc11_ = index++;
|
||||
attributes[_loc11_] = name_126.TEXCOORDS[i];
|
||||
_loc12_ = index++;
|
||||
attributes[_loc12_] = name_126.TEXCOORDS[i];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
this.geometry.addVertexStream(attributes);
|
||||
numVertices = int(this.var_716.length);
|
||||
data = new ByteArray();
|
||||
data.endian = Endian.LITTLE_ENDIAN;
|
||||
numMappings = int(attributes.length);
|
||||
data.length = 4 * numMappings * numVertices;
|
||||
for(i = 0; i < numVertices; )
|
||||
{
|
||||
vertex = this.var_716[i];
|
||||
if(vertex != null)
|
||||
{
|
||||
data.position = 4 * numMappings * i;
|
||||
data.writeFloat(vertex.x);
|
||||
data.writeFloat(vertex.y);
|
||||
data.writeFloat(vertex.z);
|
||||
if(vertex.normal != null)
|
||||
{
|
||||
data.writeFloat(vertex.normal.x);
|
||||
data.writeFloat(vertex.normal.y);
|
||||
data.writeFloat(vertex.normal.z);
|
||||
}
|
||||
if(vertex.name_769 != null)
|
||||
{
|
||||
data.writeFloat(vertex.name_769.x);
|
||||
data.writeFloat(vertex.name_769.y);
|
||||
data.writeFloat(vertex.name_769.z);
|
||||
data.writeFloat(vertex.name_769.w);
|
||||
}
|
||||
for(j = 0; j < vertex.uvs.length; )
|
||||
{
|
||||
data.writeFloat(vertex.uvs[j]);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
this.geometry.alternativa3d::_vertexStreams[0].data = data;
|
||||
this.geometry.alternativa3d::_numVertices = numVertices;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function method_889() : void
|
||||
{
|
||||
var child:XML = null;
|
||||
var p:name_768 = null;
|
||||
this.primitives = new Vector.<name_768>();
|
||||
var children:XMLList = data.mesh.children();
|
||||
for(var i:int = 0,var count:int = int(children.length()); i < count; )
|
||||
{
|
||||
child = children[i];
|
||||
switch(child.localName())
|
||||
{
|
||||
case "polygons":
|
||||
case "polylist":
|
||||
case "triangles":
|
||||
case "trifans":
|
||||
case "tristrips":
|
||||
p = new name_768(child,document);
|
||||
this.primitives.push(p);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
public function method_727(materials:Object) : name_380
|
||||
{
|
||||
var mesh:name_380 = null;
|
||||
var i:int = 0;
|
||||
var p:name_768 = null;
|
||||
var instanceMaterial:name_758 = null;
|
||||
var material:name_641 = null;
|
||||
var daeMaterial:name_713 = null;
|
||||
if(data.mesh.length() > 0)
|
||||
{
|
||||
mesh = new name_380();
|
||||
mesh.geometry = this.geometry;
|
||||
for(i = 0; i < this.primitives.length; i++)
|
||||
{
|
||||
p = this.primitives[i];
|
||||
instanceMaterial = materials[p.name_774];
|
||||
if(instanceMaterial != null)
|
||||
{
|
||||
daeMaterial = instanceMaterial.material;
|
||||
if(daeMaterial != null)
|
||||
{
|
||||
daeMaterial.method_314();
|
||||
material = daeMaterial.material;
|
||||
daeMaterial.used = true;
|
||||
}
|
||||
}
|
||||
mesh.addSurface(material,p.indexBegin,p.numTriangles);
|
||||
}
|
||||
mesh.calculateBoundBox();
|
||||
return mesh;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
33
src/package_123/name_737.as
Normal file
33
src/package_123/name_737.as
Normal file
@@ -0,0 +1,33 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_737 extends class_43
|
||||
{
|
||||
public var nodes:Vector.<name_706>;
|
||||
|
||||
public function name_737(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
this.method_879();
|
||||
}
|
||||
|
||||
public function method_879() : void
|
||||
{
|
||||
var node:name_706 = null;
|
||||
var nodesList:XMLList = data.node;
|
||||
var count:int = int(nodesList.length());
|
||||
this.nodes = new Vector.<name_706>(count);
|
||||
for(var i:int = 0; i < count; i++)
|
||||
{
|
||||
node = new name_706(nodesList[i],document,this);
|
||||
if(node.id != null)
|
||||
{
|
||||
document.nodes[node.id] = node;
|
||||
}
|
||||
this.nodes[i] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
255
src/package_123/name_738.as
Normal file
255
src/package_123/name_738.as
Normal file
@@ -0,0 +1,255 @@
|
||||
package package_123
|
||||
{
|
||||
import package_116.name_641;
|
||||
import package_28.name_167;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class name_738 extends class_43
|
||||
{
|
||||
public static var commonAlways:Boolean = false;
|
||||
|
||||
private var var_717:Object;
|
||||
|
||||
private var var_718:Object;
|
||||
|
||||
private var var_719:Object;
|
||||
|
||||
private var diffuse:name_775;
|
||||
|
||||
private var ambient:name_775;
|
||||
|
||||
private var transparent:name_775;
|
||||
|
||||
private var transparency:name_775;
|
||||
|
||||
private var bump:name_775;
|
||||
|
||||
private var reflective:name_775;
|
||||
|
||||
private var emission:name_775;
|
||||
|
||||
private var specular:name_775;
|
||||
|
||||
public function name_738(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
this.method_891();
|
||||
}
|
||||
|
||||
private function method_891() : void
|
||||
{
|
||||
var element:XML = null;
|
||||
var image:name_734 = null;
|
||||
var list:XMLList = data..image;
|
||||
for each(element in list)
|
||||
{
|
||||
image = new name_734(element,document);
|
||||
if(image.id != null)
|
||||
{
|
||||
document.images[image.id] = image;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var shader:XML;
|
||||
var element:XML = null;
|
||||
var param:name_754 = null;
|
||||
var technique:XML = null;
|
||||
var bumpXML:XML = null;
|
||||
var diffuseXML:XML = null;
|
||||
var transparentXML:XML = null;
|
||||
var transparencyXML:XML = null;
|
||||
var ambientXML:XML = null;
|
||||
var reflectiveXML:XML = null;
|
||||
var emissionXML:XML = null;
|
||||
var specularXML:XML = null;
|
||||
this.var_717 = new Object();
|
||||
for each(element in data.newparam)
|
||||
{
|
||||
param = new name_754(element,document);
|
||||
this.var_717[param.sid] = param;
|
||||
}
|
||||
this.var_718 = new Object();
|
||||
for each(element in data.profile_COMMON.newparam)
|
||||
{
|
||||
param = new name_754(element,document);
|
||||
this.var_718[param.sid] = param;
|
||||
}
|
||||
this.var_719 = new Object();
|
||||
technique = data.profile_COMMON.technique[0];
|
||||
if(technique != null)
|
||||
{
|
||||
for each(element in technique.newparam)
|
||||
{
|
||||
param = new name_754(element,document);
|
||||
this.var_719[param.sid] = param;
|
||||
}
|
||||
}
|
||||
shader = data.profile_COMMON.technique.*.(localName() == "constant" || localName() == "lambert" || localName() == "phong" || localName() == "blinn")[0];
|
||||
if(shader != null)
|
||||
{
|
||||
diffuseXML = null;
|
||||
if(shader.localName() == "constant")
|
||||
{
|
||||
diffuseXML = shader.emission[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
diffuseXML = shader.diffuse[0];
|
||||
emissionXML = shader.emission[0];
|
||||
if(emissionXML != null)
|
||||
{
|
||||
this.emission = new name_775(emissionXML,this);
|
||||
}
|
||||
}
|
||||
if(diffuseXML != null)
|
||||
{
|
||||
this.diffuse = new name_775(diffuseXML,this);
|
||||
}
|
||||
if(shader.localName() == "phong" || shader.localName() == "blinn")
|
||||
{
|
||||
specularXML = shader.specular[0];
|
||||
if(specularXML != null)
|
||||
{
|
||||
this.specular = new name_775(specularXML,this);
|
||||
}
|
||||
}
|
||||
transparentXML = shader.transparent[0];
|
||||
if(transparentXML != null)
|
||||
{
|
||||
this.transparent = new name_775(transparentXML,this);
|
||||
}
|
||||
transparencyXML = shader.transparency[0];
|
||||
if(transparencyXML != null)
|
||||
{
|
||||
this.transparency = new name_775(transparencyXML,this);
|
||||
}
|
||||
ambientXML = shader.ambient[0];
|
||||
if(ambientXML != null)
|
||||
{
|
||||
this.ambient = new name_775(ambientXML,this);
|
||||
}
|
||||
reflectiveXML = shader.reflective[0];
|
||||
if(reflectiveXML != null)
|
||||
{
|
||||
this.reflective = new name_775(reflectiveXML,this);
|
||||
}
|
||||
}
|
||||
bumpXML = data.profile_COMMON.technique.extra.technique.(Boolean(hasOwnProperty("@profile")) && @profile == "OpenCOLLADA3dsMax").bump[0];
|
||||
if(bumpXML != null)
|
||||
{
|
||||
this.bump = new name_775(bumpXML,this);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
internal function method_893(name:String, setparams:Object) : name_754
|
||||
{
|
||||
var param:name_754 = setparams[name];
|
||||
if(param != null)
|
||||
{
|
||||
return param;
|
||||
}
|
||||
param = this.var_719[name];
|
||||
if(param != null)
|
||||
{
|
||||
return param;
|
||||
}
|
||||
param = this.var_718[name];
|
||||
if(param != null)
|
||||
{
|
||||
return param;
|
||||
}
|
||||
return this.var_717[name];
|
||||
}
|
||||
|
||||
private function method_892(value:Array, alpha:Boolean = true) : uint
|
||||
{
|
||||
var a:uint = 0;
|
||||
var r:uint = value[0] * 255;
|
||||
var g:uint = value[1] * 255;
|
||||
var b:uint = value[2] * 255;
|
||||
if(alpha)
|
||||
{
|
||||
a = value[3] * 255;
|
||||
return a << 24 | r << 16 | g << 8 | b;
|
||||
}
|
||||
return r << 16 | g << 8 | b;
|
||||
}
|
||||
|
||||
public function name_755(setparams:Object) : name_641
|
||||
{
|
||||
var material:name_641 = null;
|
||||
if(this.diffuse != null)
|
||||
{
|
||||
material = new name_641();
|
||||
if(Boolean(this.diffuse))
|
||||
{
|
||||
this.method_890(material,this.diffuse,setparams);
|
||||
}
|
||||
if(this.specular != null)
|
||||
{
|
||||
this.method_890(material,this.specular,setparams);
|
||||
}
|
||||
if(this.emission != null)
|
||||
{
|
||||
this.method_890(material,this.emission,setparams);
|
||||
}
|
||||
if(this.transparency != null)
|
||||
{
|
||||
material.transparency = this.transparency.name_777(setparams);
|
||||
}
|
||||
if(this.transparent != null)
|
||||
{
|
||||
this.method_890(material,this.transparent,setparams);
|
||||
}
|
||||
if(this.bump != null)
|
||||
{
|
||||
this.method_890(material,this.bump,setparams);
|
||||
}
|
||||
if(Boolean(this.ambient))
|
||||
{
|
||||
this.method_890(material,this.ambient,setparams);
|
||||
}
|
||||
if(Boolean(this.reflective))
|
||||
{
|
||||
this.method_890(material,this.reflective,setparams);
|
||||
}
|
||||
return material;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_890(material:name_641, param:name_775, setparams:Object) : void
|
||||
{
|
||||
var image:name_734 = null;
|
||||
var color:Array = param.method_273(setparams);
|
||||
if(color != null)
|
||||
{
|
||||
material.colors[name_708(param.data.localName())] = this.method_892(color,true);
|
||||
}
|
||||
else
|
||||
{
|
||||
image = param.method_604(setparams);
|
||||
if(image != null)
|
||||
{
|
||||
material.textures[name_708(param.data.localName())] = new name_167(name_708(image.init_from));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function get var_698() : String
|
||||
{
|
||||
var channel:String = null;
|
||||
channel = channel == null && this.diffuse != null ? this.diffuse.name_776 : channel;
|
||||
channel = channel == null && this.transparent != null ? this.transparent.name_776 : channel;
|
||||
channel = channel == null && this.bump != null ? this.bump.name_776 : channel;
|
||||
channel = channel == null && this.emission != null ? this.emission.name_776 : channel;
|
||||
return channel == null && this.specular != null ? this.specular.name_776 : channel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
135
src/package_123/name_739.as
Normal file
135
src/package_123/name_739.as
Normal file
@@ -0,0 +1,135 @@
|
||||
package package_123
|
||||
{
|
||||
import flash.geom.Matrix3D;
|
||||
import package_125.name_709;
|
||||
import package_125.name_759;
|
||||
import package_125.name_760;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class name_739 extends class_43
|
||||
{
|
||||
private var var_720:Vector.<Number>;
|
||||
|
||||
private var values:Vector.<Number>;
|
||||
|
||||
private var var_721:int;
|
||||
|
||||
private var var_722:int;
|
||||
|
||||
public function name_739(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var inputSource:name_740 = null;
|
||||
var outputSource:name_740 = null;
|
||||
var input:name_784 = null;
|
||||
var semantic:String = null;
|
||||
var inputsList:XMLList = data.input;
|
||||
for(var i:int = 0,var count:int = int(inputsList.length()); i < count; i++)
|
||||
{
|
||||
input = new name_784(inputsList[i],document);
|
||||
semantic = input.semantic;
|
||||
if(semantic == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
switch(semantic)
|
||||
{
|
||||
case "INPUT":
|
||||
inputSource = input.prepareSource(1);
|
||||
if(inputSource != null)
|
||||
{
|
||||
this.var_720 = inputSource.numbers;
|
||||
this.var_721 = inputSource.stride;
|
||||
}
|
||||
break;
|
||||
case "OUTPUT":
|
||||
outputSource = input.prepareSource(1);
|
||||
if(outputSource != null)
|
||||
{
|
||||
this.values = outputSource.numbers;
|
||||
this.var_722 = outputSource.stride;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function name_780(objectName:String, property:String) : name_760
|
||||
{
|
||||
var track:name_760 = null;
|
||||
var count:int = 0;
|
||||
var i:int = 0;
|
||||
if(this.var_720 != null && this.values != null && this.var_721 > 0)
|
||||
{
|
||||
track = new name_760(objectName,property);
|
||||
count = this.var_720.length / this.var_721;
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
track.method_257(this.var_720[int(this.var_721 * i)],this.values[int(this.var_722 * i)]);
|
||||
}
|
||||
return track;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function name_782(objectName:String) : name_709
|
||||
{
|
||||
var track:name_759 = null;
|
||||
var count:int = 0;
|
||||
var i:int = 0;
|
||||
var index:int = 0;
|
||||
var matrix:Matrix3D = null;
|
||||
if(this.var_720 != null && this.values != null && this.var_721 != 0)
|
||||
{
|
||||
track = new name_759(objectName);
|
||||
count = this.var_720.length / this.var_721;
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
index = this.var_722 * i;
|
||||
matrix = new Matrix3D(Vector.<Number>([this.values[index],this.values[index + 4],this.values[index + 8],this.values[index + 12],this.values[index + 1],this.values[index + 5],this.values[index + 9],this.values[index + 13],this.values[index + 2],this.values[index + 6],this.values[index + 10],this.values[index + 14],this.values[index + 3],this.values[index + 7],this.values[index + 11],this.values[index + 15]]));
|
||||
track.method_257(this.var_720[i * this.var_721],matrix);
|
||||
}
|
||||
return track;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function name_779(objectName:String, xProperty:String, yProperty:String, zProperty:String) : Vector.<name_709>
|
||||
{
|
||||
var xTrack:name_760 = null;
|
||||
var yTrack:name_760 = null;
|
||||
var zTrack:name_760 = null;
|
||||
var count:int = 0;
|
||||
var i:int = 0;
|
||||
var index:int = 0;
|
||||
var time:Number = NaN;
|
||||
if(this.var_720 != null && this.values != null && this.var_721 != 0)
|
||||
{
|
||||
xTrack = new name_760(objectName,xProperty);
|
||||
xTrack.object = objectName;
|
||||
yTrack = new name_760(objectName,yProperty);
|
||||
yTrack.object = objectName;
|
||||
zTrack = new name_760(objectName,zProperty);
|
||||
zTrack.object = objectName;
|
||||
count = this.var_720.length / this.var_721;
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
index = i * this.var_722;
|
||||
time = this.var_720[i * this.var_721];
|
||||
xTrack.method_257(time,this.values[index]);
|
||||
yTrack.method_257(time,this.values[index + 1]);
|
||||
zTrack.method_257(time,this.values[index + 2]);
|
||||
}
|
||||
return Vector.<name_709>([xTrack,yTrack,zTrack]);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
170
src/package_123/name_740.as
Normal file
170
src/package_123/name_740.as
Normal file
@@ -0,0 +1,170 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_740 extends class_43
|
||||
{
|
||||
private const const_9:String = "float_array";
|
||||
|
||||
private const const_7:String = "int_array";
|
||||
|
||||
private const const_8:String = "Name_array";
|
||||
|
||||
public var numbers:Vector.<Number>;
|
||||
|
||||
public var var_549:Vector.<int>;
|
||||
|
||||
public var names:Vector.<String>;
|
||||
|
||||
public var stride:int;
|
||||
|
||||
public function name_740(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
this.method_898();
|
||||
}
|
||||
|
||||
private function method_898() : void
|
||||
{
|
||||
var child:XML = null;
|
||||
var array:name_746 = null;
|
||||
var children:XMLList = data.children();
|
||||
for(var i:int = 0,var count:int = int(children.length()); i < count; )
|
||||
{
|
||||
child = children[i];
|
||||
switch(child.localName())
|
||||
{
|
||||
case this.const_9:
|
||||
case this.const_7:
|
||||
case this.const_8:
|
||||
array = new name_746(child,document);
|
||||
if(array.id != null)
|
||||
{
|
||||
document.arrays[array.id] = array;
|
||||
}
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private function get accessor() : XML
|
||||
{
|
||||
return data.technique_common.accessor[0];
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var arrayXML:XML = null;
|
||||
var array:name_746 = null;
|
||||
var countXML:String = null;
|
||||
var count:int = 0;
|
||||
var offsetXML:XML = null;
|
||||
var strideXML:XML = null;
|
||||
var offset:int = 0;
|
||||
var stride:int = 0;
|
||||
var accessor:XML = this.accessor;
|
||||
if(accessor != null)
|
||||
{
|
||||
arrayXML = accessor.@source[0];
|
||||
array = arrayXML == null ? null : document.findArray(arrayXML);
|
||||
if(array != null)
|
||||
{
|
||||
countXML = accessor.@count[0];
|
||||
if(countXML != null)
|
||||
{
|
||||
count = int(parseInt(countXML.toString(),10));
|
||||
offsetXML = accessor.@offset[0];
|
||||
strideXML = accessor.@stride[0];
|
||||
offset = offsetXML == null ? 0 : int(parseInt(offsetXML.toString(),10));
|
||||
stride = strideXML == null ? 1 : int(parseInt(strideXML.toString(),10));
|
||||
array.method_314();
|
||||
if(array.array.length < offset + count * stride)
|
||||
{
|
||||
document.logger.logNotEnoughDataError(accessor);
|
||||
return false;
|
||||
}
|
||||
this.stride = this.method_900(offset,count,stride,array.array,array.type);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(arrayXML);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private function method_899(params:XMLList) : int
|
||||
{
|
||||
var res:int = 0;
|
||||
for(var i:int = 0,var count:int = int(params.length()); i < count; )
|
||||
{
|
||||
if(params[i].@name[0] != null)
|
||||
{
|
||||
res++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
private function method_900(offset:int, count:int, stride:int, array:Array, type:String) : int
|
||||
{
|
||||
var param:XML = null;
|
||||
var j:int = 0;
|
||||
var value:String = null;
|
||||
var params:XMLList = this.accessor.param;
|
||||
var arrStride:int = int(Math.max(this.method_899(params),stride));
|
||||
switch(type)
|
||||
{
|
||||
case this.const_9:
|
||||
this.numbers = new Vector.<Number>(int(arrStride * count));
|
||||
break;
|
||||
case this.const_7:
|
||||
this.var_549 = new Vector.<int>(int(arrStride * count));
|
||||
break;
|
||||
case this.const_8:
|
||||
this.names = new Vector.<String>(int(arrStride * count));
|
||||
}
|
||||
var curr:int = 0;
|
||||
for(var i:int = 0; i < arrStride; )
|
||||
{
|
||||
param = params[i];
|
||||
if(param == null || Boolean(param.hasOwnProperty("@name")))
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case this.const_9:
|
||||
for(j = 0; j < count; j++)
|
||||
{
|
||||
value = array[int(offset + stride * j + i)];
|
||||
if(value.indexOf(",") != -1)
|
||||
{
|
||||
value = value.replace(/,/,".");
|
||||
}
|
||||
this.numbers[int(arrStride * j + curr)] = parseFloat(value);
|
||||
}
|
||||
break;
|
||||
case this.const_7:
|
||||
for(j = 0; j < count; j++)
|
||||
{
|
||||
this.var_549[int(arrStride * j + curr)] = parseInt(array[int(offset + stride * j + i)],10);
|
||||
}
|
||||
break;
|
||||
case this.const_8:
|
||||
for(j = 0; j < count; j++)
|
||||
{
|
||||
this.names[int(arrStride * j + curr)] = array[int(offset + stride * j + i)];
|
||||
}
|
||||
}
|
||||
curr++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return arrStride;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
137
src/package_123/name_741.as
Normal file
137
src/package_123/name_741.as
Normal file
@@ -0,0 +1,137 @@
|
||||
package package_123
|
||||
{
|
||||
import package_21.name_116;
|
||||
import package_24.DirectionalLight;
|
||||
import package_24.OmniLight;
|
||||
import package_24.SpotLight;
|
||||
import package_24.name_376;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class name_741 extends class_43
|
||||
{
|
||||
public function name_741(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
private function method_892(value:Array) : uint
|
||||
{
|
||||
var r:uint = value[0] * 255;
|
||||
var g:uint = value[1] * 255;
|
||||
var b:uint = value[2] * 255;
|
||||
return r << 16 | g << 8 | b | 4278190080;
|
||||
}
|
||||
|
||||
public function get name_761() : Boolean
|
||||
{
|
||||
var info:XML = data.technique_common.children()[0];
|
||||
return info == null ? false : info.localName() == "directional" || info.localName() == "spot";
|
||||
}
|
||||
|
||||
public function name_762() : name_116
|
||||
{
|
||||
var info:XML = null;
|
||||
var extra:XML = null;
|
||||
var light:name_116 = null;
|
||||
var color:uint = 0;
|
||||
var constantAttenuationXML:XML = null;
|
||||
var linearAttenuationXML:XML = null;
|
||||
var linearAttenuation:Number = NaN;
|
||||
var attenuationStart:Number = NaN;
|
||||
var attenuationEnd:Number = NaN;
|
||||
var dLight:DirectionalLight = null;
|
||||
var oLight:OmniLight = null;
|
||||
var hotspot:Number = NaN;
|
||||
var fallof:Number = NaN;
|
||||
var DEG2RAD:Number = NaN;
|
||||
var sLight:SpotLight = null;
|
||||
info = data.technique_common.children()[0];
|
||||
extra = data.extra.technique.(@profile[0] == "OpenCOLLADA3dsMax").light[0];
|
||||
light = null;
|
||||
if(info != null)
|
||||
{
|
||||
color = this.method_892(method_866(info.color[0]));
|
||||
linearAttenuation = 0;
|
||||
attenuationStart = 0;
|
||||
attenuationEnd = 1;
|
||||
switch(info.localName())
|
||||
{
|
||||
case "ambient":
|
||||
light = new name_376(color);
|
||||
break;
|
||||
case "directional":
|
||||
dLight = new DirectionalLight(color);
|
||||
light = dLight;
|
||||
break;
|
||||
case "point":
|
||||
if(extra != null)
|
||||
{
|
||||
attenuationStart = method_761(extra.attenuation_far_start[0]);
|
||||
attenuationEnd = method_761(extra.attenuation_far_end[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
constantAttenuationXML = info.constant_attenuation[0];
|
||||
linearAttenuationXML = info.linear_attenuation[0];
|
||||
if(constantAttenuationXML != null)
|
||||
{
|
||||
attenuationStart = -method_761(constantAttenuationXML);
|
||||
}
|
||||
if(linearAttenuationXML != null)
|
||||
{
|
||||
linearAttenuation = method_761(linearAttenuationXML);
|
||||
}
|
||||
if(linearAttenuation > 0)
|
||||
{
|
||||
attenuationEnd = 1 / linearAttenuation + attenuationStart;
|
||||
}
|
||||
else
|
||||
{
|
||||
attenuationEnd = attenuationStart + 1;
|
||||
}
|
||||
}
|
||||
oLight = new OmniLight(color,attenuationStart,attenuationEnd);
|
||||
light = oLight;
|
||||
break;
|
||||
case "spot":
|
||||
hotspot = 0;
|
||||
fallof = Math.PI / 4;
|
||||
DEG2RAD = Math.PI / 180;
|
||||
if(extra != null)
|
||||
{
|
||||
attenuationStart = method_761(extra.attenuation_far_start[0]);
|
||||
attenuationEnd = method_761(extra.attenuation_far_end[0]);
|
||||
hotspot = DEG2RAD * method_761(extra.hotspot_beam[0]);
|
||||
fallof = DEG2RAD * method_761(extra.falloff[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
constantAttenuationXML = info.constant_attenuation[0];
|
||||
linearAttenuationXML = info.linear_attenuation[0];
|
||||
if(constantAttenuationXML != null)
|
||||
{
|
||||
attenuationStart = -method_761(constantAttenuationXML);
|
||||
}
|
||||
if(linearAttenuationXML != null)
|
||||
{
|
||||
linearAttenuation = method_761(linearAttenuationXML);
|
||||
}
|
||||
if(linearAttenuation > 0)
|
||||
{
|
||||
attenuationEnd = 1 / linearAttenuation + attenuationStart;
|
||||
}
|
||||
else
|
||||
{
|
||||
attenuationEnd = attenuationStart + 1;
|
||||
}
|
||||
}
|
||||
sLight = new SpotLight(color,attenuationStart,attenuationEnd,hotspot,fallof);
|
||||
light = sLight;
|
||||
}
|
||||
}
|
||||
return light;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
232
src/package_123/name_742.as
Normal file
232
src/package_123/name_742.as
Normal file
@@ -0,0 +1,232 @@
|
||||
package package_123
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import package_125.name_709;
|
||||
import package_125.name_760;
|
||||
import package_125.name_778;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_742 extends class_43
|
||||
{
|
||||
public static const PARAM_UNDEFINED:String = "undefined";
|
||||
|
||||
public static const PARAM_TRANSLATE_X:String = "x";
|
||||
|
||||
public static const PARAM_TRANSLATE_Y:String = "y";
|
||||
|
||||
public static const PARAM_TRANSLATE_Z:String = "z";
|
||||
|
||||
public static const PARAM_SCALE_X:String = "scaleX";
|
||||
|
||||
public static const PARAM_SCALE_Y:String = "scaleY";
|
||||
|
||||
public static const PARAM_SCALE_Z:String = "scaleZ";
|
||||
|
||||
public static const PARAM_ROTATION_X:String = "rotationX";
|
||||
|
||||
public static const PARAM_ROTATION_Y:String = "rotationY";
|
||||
|
||||
public static const PARAM_ROTATION_Z:String = "rotationZ";
|
||||
|
||||
public static const PARAM_TRANSLATE:String = "translate";
|
||||
|
||||
public static const PARAM_SCALE:String = "scale";
|
||||
|
||||
public static const PARAM_MATRIX:String = "matrix";
|
||||
|
||||
public var tracks:Vector.<name_709>;
|
||||
|
||||
public var name_756:String = "undefined";
|
||||
|
||||
public var method_872:String;
|
||||
|
||||
public function name_742(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
public function get node() : name_706
|
||||
{
|
||||
var targetParts:Array = null;
|
||||
var node:name_706 = null;
|
||||
var i:int = 0;
|
||||
var count:int = 0;
|
||||
var sid:String = null;
|
||||
var targetXML:XML = data.@target[0];
|
||||
if(targetXML != null)
|
||||
{
|
||||
targetParts = targetXML.toString().split("/");
|
||||
node = document.findNodeByID(targetParts[0]);
|
||||
if(node != null)
|
||||
{
|
||||
targetParts.pop();
|
||||
for(i = 1,count = int(targetParts.length); i < count; )
|
||||
{
|
||||
sid = targetParts[i];
|
||||
node = node.getNodeBySid(sid);
|
||||
if(node == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
this.method_895();
|
||||
this.method_894();
|
||||
return true;
|
||||
}
|
||||
|
||||
private function method_895() : void
|
||||
{
|
||||
var transformationXML:XML = null;
|
||||
var child:XML = null;
|
||||
var attr:XML = null;
|
||||
var componentName:String = null;
|
||||
var axis:Array = null;
|
||||
var targetXML:XML = data.@target[0];
|
||||
if(targetXML == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var targetParts:Array = targetXML.toString().split("/");
|
||||
var sid:String = targetParts.pop();
|
||||
var sidParts:Array = sid.split(".");
|
||||
var sidPartsCount:int = int(sidParts.length);
|
||||
var node:name_706 = this.node;
|
||||
if(node == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.method_872 = node.method_872;
|
||||
var children:XMLList = node.data.children();
|
||||
for(var i:int = 0,var count:int = int(children.length()); i < count; )
|
||||
{
|
||||
child = children[i];
|
||||
attr = child.@sid[0];
|
||||
if(attr != null && attr.toString() == sidParts[0])
|
||||
{
|
||||
transformationXML = child;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
var transformationName:String = transformationXML != null ? transformationXML.localName() as String : null;
|
||||
if(sidPartsCount > 1)
|
||||
{
|
||||
componentName = sidParts[1];
|
||||
loop1:
|
||||
switch(transformationName)
|
||||
{
|
||||
case "translate":
|
||||
switch(componentName)
|
||||
{
|
||||
case "X":
|
||||
this.name_756 = PARAM_TRANSLATE_X;
|
||||
break loop1;
|
||||
case "Y":
|
||||
this.name_756 = PARAM_TRANSLATE_Y;
|
||||
break loop1;
|
||||
case "Z":
|
||||
this.name_756 = PARAM_TRANSLATE_Z;
|
||||
}
|
||||
break;
|
||||
case "rotate":
|
||||
axis = method_866(transformationXML);
|
||||
switch(axis.indexOf(1))
|
||||
{
|
||||
case 0:
|
||||
this.name_756 = PARAM_ROTATION_X;
|
||||
break loop1;
|
||||
case 1:
|
||||
this.name_756 = PARAM_ROTATION_Y;
|
||||
break loop1;
|
||||
case 2:
|
||||
this.name_756 = PARAM_ROTATION_Z;
|
||||
}
|
||||
break;
|
||||
case "scale":
|
||||
switch(componentName)
|
||||
{
|
||||
case "X":
|
||||
this.name_756 = PARAM_SCALE_X;
|
||||
break loop1;
|
||||
case "Y":
|
||||
this.name_756 = PARAM_SCALE_Y;
|
||||
break loop1;
|
||||
case "Z":
|
||||
this.name_756 = PARAM_SCALE_Z;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(transformationName)
|
||||
{
|
||||
case "translate":
|
||||
this.name_756 = PARAM_TRANSLATE;
|
||||
break;
|
||||
case "scale":
|
||||
this.name_756 = PARAM_SCALE;
|
||||
break;
|
||||
case "matrix":
|
||||
this.name_756 = PARAM_MATRIX;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function method_894() : void
|
||||
{
|
||||
var track:name_760 = null;
|
||||
var toRad:Number = NaN;
|
||||
var key:name_778 = null;
|
||||
var sampler:name_739 = document.findSampler(data.@source[0]);
|
||||
if(sampler != null)
|
||||
{
|
||||
sampler.method_314();
|
||||
if(this.name_756 == PARAM_MATRIX)
|
||||
{
|
||||
this.tracks = Vector.<name_709>([sampler.name_782(this.method_872)]);
|
||||
return;
|
||||
}
|
||||
if(this.name_756 == PARAM_TRANSLATE)
|
||||
{
|
||||
this.tracks = sampler.name_779(this.method_872,"x","y","z");
|
||||
return;
|
||||
}
|
||||
if(this.name_756 == PARAM_SCALE)
|
||||
{
|
||||
this.tracks = sampler.name_779(this.method_872,"scaleX","scaleY","scaleZ");
|
||||
return;
|
||||
}
|
||||
if(this.name_756 == PARAM_ROTATION_X || this.name_756 == PARAM_ROTATION_Y || this.name_756 == PARAM_ROTATION_Z)
|
||||
{
|
||||
track = sampler.name_780(this.method_872,this.name_756);
|
||||
toRad = Math.PI / 180;
|
||||
for(key = track.alternativa3d::name_783; key != null; key = key.alternativa3d::next)
|
||||
{
|
||||
key.alternativa3d::name_781 *= toRad;
|
||||
}
|
||||
this.tracks = Vector.<name_709>([track]);
|
||||
return;
|
||||
}
|
||||
if(this.name_756 == PARAM_TRANSLATE_X || this.name_756 == PARAM_TRANSLATE_Y || this.name_756 == PARAM_TRANSLATE_Z || this.name_756 == PARAM_SCALE_X || this.name_756 == PARAM_SCALE_Y || this.name_756 == PARAM_SCALE_Z)
|
||||
{
|
||||
this.tracks = Vector.<name_709>([sampler.name_780(this.method_872,this.name_756)]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(data.@source[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
57
src/package_123/name_743.as
Normal file
57
src/package_123/name_743.as
Normal file
@@ -0,0 +1,57 @@
|
||||
package package_123
|
||||
{
|
||||
public class name_743
|
||||
{
|
||||
public function name_743()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
private function method_896(message:String, element:XML) : void
|
||||
{
|
||||
var name:String = element.nodeKind() == "attribute" ? "@" + element.localName() : element.localName() + "";
|
||||
for(var parent:* = element.parent(); parent != null; )
|
||||
{
|
||||
name = parent.localName() + "" + "." + name;
|
||||
parent = parent.parent();
|
||||
}
|
||||
trace(message,"| \"" + name + "\"");
|
||||
}
|
||||
|
||||
private function logError(message:String, element:XML) : void
|
||||
{
|
||||
this.method_896("[ERROR] " + message,element);
|
||||
}
|
||||
|
||||
public function name_745(element:XML) : void
|
||||
{
|
||||
this.logError("External urls don\'t supported",element);
|
||||
}
|
||||
|
||||
public function logSkewError(element:XML) : void
|
||||
{
|
||||
this.logError("<skew> don\'t supported",element);
|
||||
}
|
||||
|
||||
public function method_897(element:XML) : void
|
||||
{
|
||||
this.logError("Joints in different scenes don\'t supported",element);
|
||||
}
|
||||
|
||||
public function logInstanceNodeError(element:XML) : void
|
||||
{
|
||||
this.logError("<instance_node> don\'t supported",element);
|
||||
}
|
||||
|
||||
public function logNotFoundError(element:XML) : void
|
||||
{
|
||||
this.logError("Element with url \"" + element.toString() + "\" not found",element);
|
||||
}
|
||||
|
||||
public function logNotEnoughDataError(element:XML) : void
|
||||
{
|
||||
this.logError("Not enough data",element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
33
src/package_123/name_744.as
Normal file
33
src/package_123/name_744.as
Normal file
@@ -0,0 +1,33 @@
|
||||
package package_123
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
|
||||
use namespace alternativa3d;
|
||||
use namespace collada;
|
||||
|
||||
public class name_744 extends class_43
|
||||
{
|
||||
public var name_771:name_740;
|
||||
|
||||
public function name_744(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var inputXML:XML = null;
|
||||
inputXML = data.input.(@semantic == "POSITION")[0];
|
||||
if(inputXML != null)
|
||||
{
|
||||
this.name_771 = new name_784(inputXML,document).prepareSource(3);
|
||||
if(this.name_771 != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
src/package_123/name_746.as
Normal file
39
src/package_123/name_746.as
Normal file
@@ -0,0 +1,39 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_746 extends class_43
|
||||
{
|
||||
public var array:Array;
|
||||
|
||||
public function name_746(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
public function get type() : String
|
||||
{
|
||||
return String(data.localName());
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var count:int = 0;
|
||||
this.array = name_565(data);
|
||||
var countXML:XML = data.@count[0];
|
||||
if(countXML != null)
|
||||
{
|
||||
count = int(parseInt(countXML.toString(),10));
|
||||
if(this.array.length < count)
|
||||
{
|
||||
document.logger.logNotEnoughDataError(data.@count[0]);
|
||||
return false;
|
||||
}
|
||||
this.array.length = count;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
88
src/package_123/name_754.as
Normal file
88
src/package_123/name_754.as
Normal file
@@ -0,0 +1,88 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_754 extends class_43
|
||||
{
|
||||
public function name_754(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
public function get ref() : String
|
||||
{
|
||||
var attribute:XML = data.@ref[0];
|
||||
return attribute == null ? null : attribute.toString();
|
||||
}
|
||||
|
||||
public function name_777() : Number
|
||||
{
|
||||
var floatXML:XML = data.float[0];
|
||||
if(floatXML != null)
|
||||
{
|
||||
return method_761(floatXML);
|
||||
}
|
||||
return NaN;
|
||||
}
|
||||
|
||||
public function getFloat4() : Array
|
||||
{
|
||||
var components:Array = null;
|
||||
var element:XML = data.float4[0];
|
||||
if(element == null)
|
||||
{
|
||||
element = data.float3[0];
|
||||
if(element != null)
|
||||
{
|
||||
components = method_866(element);
|
||||
components[3] = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
components = method_866(element);
|
||||
}
|
||||
return components;
|
||||
}
|
||||
|
||||
public function get surfaceSID() : String
|
||||
{
|
||||
var element:XML = data.sampler2D.source[0];
|
||||
return element == null ? null : element.text().toString();
|
||||
}
|
||||
|
||||
public function get wrap_s() : String
|
||||
{
|
||||
var element:XML = data.sampler2D.wrap_s[0];
|
||||
return element == null ? null : element.text().toString();
|
||||
}
|
||||
|
||||
public function get image() : name_734
|
||||
{
|
||||
var image:name_734 = null;
|
||||
var init_from:XML = null;
|
||||
var imageIDXML:XML = null;
|
||||
var surface:XML = data.surface[0];
|
||||
if(surface != null)
|
||||
{
|
||||
init_from = surface.init_from[0];
|
||||
if(init_from == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
image = document.findImageByID(init_from.text().toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
imageIDXML = data.instance_image.@url[0];
|
||||
if(imageIDXML == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
image = document.findImage(imageIDXML);
|
||||
}
|
||||
return image;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
122
src/package_123/name_757.as
Normal file
122
src/package_123/name_757.as
Normal file
@@ -0,0 +1,122 @@
|
||||
package package_123
|
||||
{
|
||||
import flash.utils.Dictionary;
|
||||
|
||||
use namespace collada;
|
||||
|
||||
public class name_757 extends class_43
|
||||
{
|
||||
public var node:name_706;
|
||||
|
||||
public var topmostJoints:Vector.<name_706>;
|
||||
|
||||
public function name_757(data:XML, document:name_707, node:name_706)
|
||||
{
|
||||
super(data,document);
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
var controller:name_735 = this.controller;
|
||||
if(controller != null)
|
||||
{
|
||||
this.topmostJoints = controller.method_916(this.skeletons);
|
||||
if(this.topmostJoints != null && this.topmostJoints.length > 1)
|
||||
{
|
||||
this.method_923(this.topmostJoints);
|
||||
}
|
||||
}
|
||||
return this.topmostJoints != null;
|
||||
}
|
||||
|
||||
private function method_923(nodes:Vector.<name_706>) : void
|
||||
{
|
||||
var i:int = 0;
|
||||
var node:name_706 = null;
|
||||
var parent:name_706 = null;
|
||||
var numNodes:int = int(nodes.length);
|
||||
var parents:Dictionary = new Dictionary();
|
||||
for(i = 0; i < numNodes; i++)
|
||||
{
|
||||
node = nodes[i];
|
||||
for(parent = node.parent; parent != null; parent = parent.parent)
|
||||
{
|
||||
if(Boolean(parents[parent]))
|
||||
{
|
||||
++parents[parent];
|
||||
}
|
||||
else
|
||||
{
|
||||
parents[parent] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(i = 0; i < numNodes; i++)
|
||||
{
|
||||
node = nodes[i];
|
||||
while(true)
|
||||
{
|
||||
parent = node.parent;
|
||||
if(!(parent != null && parents[parent] != numNodes))
|
||||
{
|
||||
break;
|
||||
}
|
||||
node = node.parent;
|
||||
}
|
||||
nodes[i] = node;
|
||||
}
|
||||
}
|
||||
|
||||
private function get controller() : name_735
|
||||
{
|
||||
var controller:name_735 = document.findController(data.@url[0]);
|
||||
if(controller == null)
|
||||
{
|
||||
document.logger.logNotFoundError(data.@url[0]);
|
||||
}
|
||||
return controller;
|
||||
}
|
||||
|
||||
private function get skeletons() : Vector.<name_706>
|
||||
{
|
||||
var skeletons:Vector.<name_706> = null;
|
||||
var i:int = 0;
|
||||
var count:int = 0;
|
||||
var skeletonXML:XML = null;
|
||||
var skel:name_706 = null;
|
||||
var list:XMLList = data.skeleton;
|
||||
if(list.length() > 0)
|
||||
{
|
||||
skeletons = new Vector.<name_706>();
|
||||
for(i = 0,count = int(list.length()); i < count; i++)
|
||||
{
|
||||
skeletonXML = list[i];
|
||||
skel = document.findNode(skeletonXML.text()[0]);
|
||||
if(skel != null)
|
||||
{
|
||||
skeletons.push(skel);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(skeletonXML);
|
||||
}
|
||||
}
|
||||
return skeletons;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function method_429(materials:Object) : name_711
|
||||
{
|
||||
var controller:name_735 = this.controller;
|
||||
if(controller != null)
|
||||
{
|
||||
controller.method_314();
|
||||
return controller.method_429(materials,this.topmostJoints,this.skeletons);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
47
src/package_123/name_758.as
Normal file
47
src/package_123/name_758.as
Normal file
@@ -0,0 +1,47 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_758 extends class_43
|
||||
{
|
||||
public function name_758(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
public function get symbol() : String
|
||||
{
|
||||
var attribute:XML = data.@symbol[0];
|
||||
return attribute == null ? null : attribute.toString();
|
||||
}
|
||||
|
||||
private function get target() : XML
|
||||
{
|
||||
return data.@target[0];
|
||||
}
|
||||
|
||||
public function get material() : name_713
|
||||
{
|
||||
var mat:name_713 = document.findMaterial(this.target);
|
||||
if(mat == null)
|
||||
{
|
||||
document.logger.logNotFoundError(this.target);
|
||||
}
|
||||
return mat;
|
||||
}
|
||||
|
||||
public function method_924(semantic:String) : int
|
||||
{
|
||||
var bindVertexInputXML:XML = null;
|
||||
var setNumXML:XML = null;
|
||||
bindVertexInputXML = data.bind_vertex_input.(@semantic == semantic)[0];
|
||||
if(bindVertexInputXML == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
setNumXML = bindVertexInputXML.@input_set[0];
|
||||
return setNumXML == null ? 0 : int(parseInt(setNumXML.toString(),10));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
391
src/package_123/name_768.as
Normal file
391
src/package_123/name_768.as
Normal file
@@ -0,0 +1,391 @@
|
||||
package package_123
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import package_28.name_119;
|
||||
|
||||
use namespace collada;
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_768 extends class_43
|
||||
{
|
||||
internal static const NORMALS:int = 1;
|
||||
|
||||
internal static const TANGENT4:int = 2;
|
||||
|
||||
internal static const TEXCOORDS:Vector.<uint> = Vector.<uint>([8,16,32,64,128,256,512,1024]);
|
||||
|
||||
internal var var_740:name_784;
|
||||
|
||||
internal var var_741:Vector.<name_784>;
|
||||
|
||||
internal var var_743:name_784;
|
||||
|
||||
internal var var_742:Vector.<name_784>;
|
||||
|
||||
internal var var_744:Vector.<name_784>;
|
||||
|
||||
internal var indices:Vector.<uint>;
|
||||
|
||||
internal var var_729:int;
|
||||
|
||||
public var indexBegin:int;
|
||||
|
||||
public var numTriangles:int;
|
||||
|
||||
public function name_768(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
override protected function parseImplementation() : Boolean
|
||||
{
|
||||
this.method_909();
|
||||
this.method_938();
|
||||
return true;
|
||||
}
|
||||
|
||||
private function get type() : String
|
||||
{
|
||||
return data.localName() as String;
|
||||
}
|
||||
|
||||
private function method_909() : void
|
||||
{
|
||||
var input:name_784 = null;
|
||||
var semantic:String = null;
|
||||
var offset:int = 0;
|
||||
this.var_741 = new Vector.<name_784>();
|
||||
this.var_744 = new Vector.<name_784>();
|
||||
this.var_742 = new Vector.<name_784>();
|
||||
var inputsList:XMLList = data.input;
|
||||
var maxInputOffset:int = 0;
|
||||
for(var i:int = 0,var count:int = int(inputsList.length()); i < count; offset = input.offset,maxInputOffset = offset > maxInputOffset ? offset : maxInputOffset,i++)
|
||||
{
|
||||
input = new name_784(inputsList[i],document);
|
||||
semantic = input.semantic;
|
||||
if(semantic == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
switch(semantic)
|
||||
{
|
||||
case "VERTEX":
|
||||
if(this.var_740 == null)
|
||||
{
|
||||
this.var_740 = input;
|
||||
}
|
||||
break;
|
||||
case "TEXCOORD":
|
||||
this.var_741.push(input);
|
||||
break;
|
||||
case "NORMAL":
|
||||
if(this.var_743 == null)
|
||||
{
|
||||
this.var_743 = input;
|
||||
}
|
||||
break;
|
||||
case "TEXTANGENT":
|
||||
this.var_744.push(input);
|
||||
break;
|
||||
case "TEXBINORMAL":
|
||||
this.var_742.push(input);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.var_729 = maxInputOffset + 1;
|
||||
}
|
||||
|
||||
private function method_938() : void
|
||||
{
|
||||
var array:Array = null;
|
||||
var vcountXML:XMLList = null;
|
||||
var pList:XMLList = null;
|
||||
var j:int = 0;
|
||||
this.indices = new Vector.<uint>();
|
||||
var vcount:Vector.<int> = new Vector.<int>();
|
||||
var i:int = 0;
|
||||
var count:int = 0;
|
||||
switch(data.localName())
|
||||
{
|
||||
case "polylist":
|
||||
case "polygons":
|
||||
vcountXML = data.vcount;
|
||||
array = name_565(vcountXML[0]);
|
||||
i = 0;
|
||||
count = int(array.length);
|
||||
while(true)
|
||||
{
|
||||
if(i < count)
|
||||
{
|
||||
vcount.push(parseInt(array[i]));
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
case "triangles":
|
||||
pList = data.p;
|
||||
for(i = 0,count = int(pList.length()); i < count; )
|
||||
{
|
||||
array = name_565(pList[i]);
|
||||
for(j = 0; j < array.length; j++)
|
||||
{
|
||||
this.indices.push(parseInt(array[j],10));
|
||||
}
|
||||
if(vcount.length > 0)
|
||||
{
|
||||
this.indices = this.method_936(this.indices,vcount);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function method_936(input:Vector.<uint>, vcount:Vector.<int>) : Vector.<uint>
|
||||
{
|
||||
var indexIn:uint = 0;
|
||||
var i:int = 0;
|
||||
var j:int = 0;
|
||||
var k:int = 0;
|
||||
var count:int = 0;
|
||||
var verticesCount:int = 0;
|
||||
var attributesCount:int = 0;
|
||||
var res:Vector.<uint> = new Vector.<uint>();
|
||||
var indexOut:uint = 0;
|
||||
for(i = 0,count = int(vcount.length); i < count; i++)
|
||||
{
|
||||
verticesCount = vcount[i];
|
||||
attributesCount = verticesCount * this.var_729;
|
||||
if(verticesCount == 3)
|
||||
{
|
||||
j = 0;
|
||||
while(j < attributesCount)
|
||||
{
|
||||
res[indexOut] = input[indexIn];
|
||||
j++;
|
||||
indexIn++;
|
||||
indexOut++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(j = 1; j < verticesCount - 1; )
|
||||
{
|
||||
for(k = 0; k < this.var_729; k++,indexOut++)
|
||||
{
|
||||
res[indexOut] = input[int(indexIn + k)];
|
||||
}
|
||||
for(k = 0; k < this.var_729; k++,indexOut++)
|
||||
{
|
||||
res[indexOut] = input[int(indexIn + this.var_729 * j + k)];
|
||||
}
|
||||
for(k = 0; k < this.var_729; k++,indexOut++)
|
||||
{
|
||||
res[indexOut] = input[int(indexIn + this.var_729 * (j + 1) + k)];
|
||||
}
|
||||
j++;
|
||||
}
|
||||
indexIn += this.var_729 * verticesCount;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public function name_773(geometry:name_119, vertices:Vector.<name_770>) : uint
|
||||
{
|
||||
var tangentSource:name_740 = null;
|
||||
var binormalSource:name_740 = null;
|
||||
var normalSource:name_740 = null;
|
||||
var index:uint = 0;
|
||||
var vertex:name_770 = null;
|
||||
var s:name_740 = null;
|
||||
var j:int = 0;
|
||||
if(this.var_740 == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
this.var_740.method_314();
|
||||
var numIndices:int = int(this.indices.length);
|
||||
var daeVertices:name_744 = document.findVertices(this.var_740.source);
|
||||
if(daeVertices == null)
|
||||
{
|
||||
document.logger.logNotFoundError(this.var_740.source);
|
||||
return 0;
|
||||
}
|
||||
daeVertices.method_314();
|
||||
var positionSource:name_740 = daeVertices.name_771;
|
||||
var vertexStride:int = 3;
|
||||
var mainSource:name_740 = positionSource;
|
||||
var mainInput:name_784 = this.var_740;
|
||||
var channels:uint = 0;
|
||||
var inputOffsets:Vector.<int> = new Vector.<int>();
|
||||
inputOffsets.push(this.var_740.offset);
|
||||
if(this.var_743 != null)
|
||||
{
|
||||
normalSource = this.var_743.prepareSource(3);
|
||||
inputOffsets.push(this.var_743.offset);
|
||||
vertexStride += 3;
|
||||
channels |= NORMALS;
|
||||
if(this.var_744.length > 0 && this.var_742.length > 0)
|
||||
{
|
||||
tangentSource = this.var_744[0].prepareSource(3);
|
||||
inputOffsets.push(this.var_744[0].offset);
|
||||
binormalSource = this.var_742[0].prepareSource(3);
|
||||
inputOffsets.push(this.var_742[0].offset);
|
||||
vertexStride += 4;
|
||||
channels |= TANGENT4;
|
||||
}
|
||||
}
|
||||
var textureSources:Vector.<name_740> = new Vector.<name_740>();
|
||||
var numTexCoordsInputs:int = int(this.var_741.length);
|
||||
if(numTexCoordsInputs > 8)
|
||||
{
|
||||
numTexCoordsInputs = 8;
|
||||
}
|
||||
for(var i:int = 0; i < numTexCoordsInputs; )
|
||||
{
|
||||
s = this.var_741[i].prepareSource(2);
|
||||
textureSources.push(s);
|
||||
inputOffsets.push(this.var_741[i].offset);
|
||||
vertexStride += 2;
|
||||
channels |= TEXCOORDS[i];
|
||||
i++;
|
||||
}
|
||||
var verticesLength:int = int(vertices.length);
|
||||
this.indexBegin = geometry.alternativa3d::_indices.length;
|
||||
for(i = 0; i < numIndices; i += this.var_729)
|
||||
{
|
||||
index = this.indices[int(i + mainInput.offset)];
|
||||
vertex = vertices[index];
|
||||
if(vertex == null || !this.method_939(vertex,this.indices,i,inputOffsets))
|
||||
{
|
||||
if(vertex != null)
|
||||
{
|
||||
index = uint(verticesLength++);
|
||||
}
|
||||
vertex = new name_770();
|
||||
vertices[index] = vertex;
|
||||
vertex.name_785 = this.indices[int(i + this.var_740.offset)];
|
||||
vertex.method_933(positionSource.numbers,vertex.name_785,positionSource.stride,document.unitScaleFactor);
|
||||
if(normalSource != null)
|
||||
{
|
||||
vertex.method_935(normalSource.numbers,this.indices[int(i + this.var_743.offset)],normalSource.stride);
|
||||
}
|
||||
if(tangentSource != null)
|
||||
{
|
||||
vertex.method_932(tangentSource.numbers,this.indices[int(i + this.var_744[0].offset)],tangentSource.stride,binormalSource.numbers,this.indices[int(i + this.var_742[0].offset)],binormalSource.stride);
|
||||
}
|
||||
for(j = 0; j < textureSources.length; )
|
||||
{
|
||||
vertex.method_934(textureSources[j].numbers,this.indices[int(i + this.var_741[j].offset)],textureSources[j].stride);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
vertex.name_786 = index;
|
||||
geometry.alternativa3d::_indices.push(index);
|
||||
}
|
||||
this.numTriangles = (geometry.alternativa3d::_indices.length - this.indexBegin) / 3;
|
||||
return channels;
|
||||
}
|
||||
|
||||
private function method_939(vertex:name_770, indices:Vector.<uint>, index:int, offsets:Vector.<int>) : Boolean
|
||||
{
|
||||
var numOffsets:int = int(offsets.length);
|
||||
for(var j:int = 0; j < numOffsets; )
|
||||
{
|
||||
if(vertex.indices[j] != indices[int(index + offsets[j])])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private function method_937(inputs:Vector.<name_784>, setNum:int) : name_784
|
||||
{
|
||||
var input:name_784 = null;
|
||||
for(var i:int = 0,var numInputs:int = int(inputs.length); i < numInputs; )
|
||||
{
|
||||
input = inputs[i];
|
||||
if(input.setNum == setNum)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function method_940(mainSetNum:int) : Vector.<VertexChannelData>
|
||||
{
|
||||
var i:int = 0;
|
||||
var texCoordsInput:name_784 = null;
|
||||
var texCoordsSource:name_740 = null;
|
||||
var data:VertexChannelData = null;
|
||||
var mainInput:name_784 = this.method_937(this.var_741,mainSetNum);
|
||||
var numInputs:int = int(this.var_741.length);
|
||||
var datas:Vector.<VertexChannelData> = new Vector.<VertexChannelData>();
|
||||
for(i = 0; i < numInputs; )
|
||||
{
|
||||
texCoordsInput = this.var_741[i];
|
||||
texCoordsSource = texCoordsInput.prepareSource(2);
|
||||
if(texCoordsSource != null)
|
||||
{
|
||||
data = new VertexChannelData(texCoordsSource.numbers,texCoordsSource.stride,texCoordsInput.offset,texCoordsInput.setNum);
|
||||
if(texCoordsInput == mainInput)
|
||||
{
|
||||
datas.unshift(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
datas.push(data);
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return datas.length > 0 ? datas : null;
|
||||
}
|
||||
|
||||
public function name_772(otherVertices:name_744) : Boolean
|
||||
{
|
||||
var vertices:name_744 = document.findVertices(this.var_740.source);
|
||||
if(vertices == null)
|
||||
{
|
||||
document.logger.logNotFoundError(this.var_740.source);
|
||||
}
|
||||
return vertices == otherVertices;
|
||||
}
|
||||
|
||||
public function get name_774() : String
|
||||
{
|
||||
var attr:XML = data.@material[0];
|
||||
return attr == null ? null : attr.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
import flash.geom.Point;
|
||||
|
||||
class VertexChannelData
|
||||
{
|
||||
public var values:Vector.<Number>;
|
||||
|
||||
public var stride:int;
|
||||
|
||||
public var offset:int;
|
||||
|
||||
public var index:int;
|
||||
|
||||
public var channel:Vector.<Point>;
|
||||
|
||||
public var inputSet:int;
|
||||
|
||||
public function VertexChannelData(values:Vector.<Number>, stride:int, offset:int, inputSet:int = 0)
|
||||
{
|
||||
super();
|
||||
this.values = values;
|
||||
this.stride = stride;
|
||||
this.offset = offset;
|
||||
this.inputSet = inputSet;
|
||||
}
|
||||
}
|
||||
74
src/package_123/name_770.as
Normal file
74
src/package_123/name_770.as
Normal file
@@ -0,0 +1,74 @@
|
||||
package package_123
|
||||
{
|
||||
import flash.geom.Vector3D;
|
||||
|
||||
public class name_770
|
||||
{
|
||||
public var name_785:int;
|
||||
|
||||
public var name_786:int;
|
||||
|
||||
public var indices:Vector.<int> = new Vector.<int>();
|
||||
|
||||
public var x:Number;
|
||||
|
||||
public var y:Number;
|
||||
|
||||
public var z:Number;
|
||||
|
||||
public var uvs:Vector.<Number> = new Vector.<Number>();
|
||||
|
||||
public var normal:Vector3D;
|
||||
|
||||
public var name_769:Vector3D;
|
||||
|
||||
public function name_770()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
public function method_933(data:Vector.<Number>, dataIndex:int, stride:int, unitScaleFactor:Number) : void
|
||||
{
|
||||
this.indices.push(dataIndex);
|
||||
var offset:int = stride * dataIndex;
|
||||
this.x = data[int(offset)] * unitScaleFactor;
|
||||
this.y = data[int(offset + 1)] * unitScaleFactor;
|
||||
this.z = data[int(offset + 2)] * unitScaleFactor;
|
||||
}
|
||||
|
||||
public function method_935(data:Vector.<Number>, dataIndex:int, stride:int) : void
|
||||
{
|
||||
this.indices.push(dataIndex);
|
||||
var offset:int = stride * dataIndex;
|
||||
this.normal = new Vector3D();
|
||||
this.normal.x = data[int(offset++)];
|
||||
this.normal.y = data[int(offset++)];
|
||||
this.normal.z = data[offset];
|
||||
}
|
||||
|
||||
public function method_932(tangentData:Vector.<Number>, tangentDataIndex:int, tangentStride:int, biNormalData:Vector.<Number>, biNormalDataIndex:int, biNormalStride:int) : void
|
||||
{
|
||||
this.indices.push(tangentDataIndex);
|
||||
this.indices.push(biNormalDataIndex);
|
||||
var tangentOffset:int = tangentStride * tangentDataIndex;
|
||||
var biNormalOffset:int = biNormalStride * biNormalDataIndex;
|
||||
var biNormalX:Number = biNormalData[int(biNormalOffset++)];
|
||||
var biNormalY:Number = biNormalData[int(biNormalOffset++)];
|
||||
var biNormalZ:Number = biNormalData[biNormalOffset];
|
||||
this.name_769 = new Vector3D(tangentData[int(tangentOffset++)],tangentData[int(tangentOffset++)],tangentData[tangentOffset]);
|
||||
var crossX:Number = this.normal.y * this.name_769.z - this.normal.z * this.name_769.y;
|
||||
var crossY:Number = this.normal.z * this.name_769.x - this.normal.x * this.name_769.z;
|
||||
var crossZ:Number = this.normal.x * this.name_769.y - this.normal.y * this.name_769.x;
|
||||
var dot:Number = crossX * biNormalX + crossY * biNormalY + crossZ * biNormalZ;
|
||||
this.name_769.w = dot < 0 ? -1 : 1;
|
||||
}
|
||||
|
||||
public function method_934(data:Vector.<Number>, dataIndex:int, stride:int) : void
|
||||
{
|
||||
this.indices.push(dataIndex);
|
||||
this.uvs.push(data[int(dataIndex * stride)]);
|
||||
this.uvs.push(1 - data[int(dataIndex * stride + 1)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
100
src/package_123/name_775.as
Normal file
100
src/package_123/name_775.as
Normal file
@@ -0,0 +1,100 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_775 extends class_43
|
||||
{
|
||||
private var effect:name_738;
|
||||
|
||||
public function name_775(data:XML, effect:name_738)
|
||||
{
|
||||
super(data,effect.document);
|
||||
this.effect = effect;
|
||||
}
|
||||
|
||||
public function name_777(setparams:Object) : Number
|
||||
{
|
||||
var param:name_754 = null;
|
||||
var floatXML:XML = data.float[0];
|
||||
if(floatXML != null)
|
||||
{
|
||||
return method_761(floatXML);
|
||||
}
|
||||
var paramRef:XML = data.param.@ref[0];
|
||||
if(paramRef != null)
|
||||
{
|
||||
param = this.effect.method_893(paramRef.toString(),setparams);
|
||||
if(param != null)
|
||||
{
|
||||
return param.name_777();
|
||||
}
|
||||
}
|
||||
return NaN;
|
||||
}
|
||||
|
||||
public function method_273(setparams:Object) : Array
|
||||
{
|
||||
var param:name_754 = null;
|
||||
var colorXML:XML = data.color[0];
|
||||
if(colorXML != null)
|
||||
{
|
||||
return method_866(colorXML);
|
||||
}
|
||||
var paramRef:XML = data.param.@ref[0];
|
||||
if(paramRef != null)
|
||||
{
|
||||
param = this.effect.method_893(paramRef.toString(),setparams);
|
||||
if(param != null)
|
||||
{
|
||||
return param.getFloat4();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function get texture() : String
|
||||
{
|
||||
var attr:XML = data.texture.@texture[0];
|
||||
return attr == null ? null : attr.toString();
|
||||
}
|
||||
|
||||
public function method_941(setparams:Object) : name_754
|
||||
{
|
||||
var sid:String = this.texture;
|
||||
if(sid != null)
|
||||
{
|
||||
return this.effect.method_893(sid,setparams);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function method_604(setparams:Object) : name_734
|
||||
{
|
||||
var surfaceSID:String = null;
|
||||
var surface:name_754 = null;
|
||||
var sampler:name_754 = this.method_941(setparams);
|
||||
if(sampler != null)
|
||||
{
|
||||
surfaceSID = sampler.surfaceSID;
|
||||
if(surfaceSID != null)
|
||||
{
|
||||
surface = this.effect.method_893(surfaceSID,setparams);
|
||||
if(surface != null)
|
||||
{
|
||||
return surface.image;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return sampler.image;
|
||||
}
|
||||
return document.findImageByID(this.texture);
|
||||
}
|
||||
|
||||
public function get name_776() : String
|
||||
{
|
||||
var attr:XML = data.texture.@texcoord[0];
|
||||
return attr == null ? null : attr.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
54
src/package_123/name_784.as
Normal file
54
src/package_123/name_784.as
Normal file
@@ -0,0 +1,54 @@
|
||||
package package_123
|
||||
{
|
||||
use namespace collada;
|
||||
|
||||
public class name_784 extends class_43
|
||||
{
|
||||
public function name_784(data:XML, document:name_707)
|
||||
{
|
||||
super(data,document);
|
||||
}
|
||||
|
||||
public function get semantic() : String
|
||||
{
|
||||
var attribute:XML = data.@semantic[0];
|
||||
return attribute == null ? null : attribute.toString();
|
||||
}
|
||||
|
||||
public function get source() : XML
|
||||
{
|
||||
return data.@source[0];
|
||||
}
|
||||
|
||||
public function get offset() : int
|
||||
{
|
||||
var attr:XML = data.@offset[0];
|
||||
return attr == null ? 0 : int(parseInt(attr.toString(),10));
|
||||
}
|
||||
|
||||
public function get setNum() : int
|
||||
{
|
||||
var attr:XML = data.@name_789[0];
|
||||
return attr == null ? 0 : int(parseInt(attr.toString(),10));
|
||||
}
|
||||
|
||||
public function prepareSource(minComponents:int) : name_740
|
||||
{
|
||||
var source:name_740 = document.findSource(this.source);
|
||||
if(source != null)
|
||||
{
|
||||
source.method_314();
|
||||
if(source.numbers != null && source.stride >= minComponents)
|
||||
{
|
||||
return source;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.logger.logNotFoundError(data.@source[0]);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user