STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228116
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/30193514?noj=FRM30193514-10DC" width="1" height="1"></div>

Tevlon 3D.swf

This is the info page for
Flash #31323

(Click the ID number above for more basic data on this flash file.)


Text
<p align="center"><font face="xpaider pixel explosion 01" size="12" color="#ffffff" letterSpacing="0.000000" kerning="1">TEVLONSCORE:</font></p>

ActionScript [AS3]

Section 1
//mc_stones_13 (3dGame_fla.mc_stones_13) package 3dGame_fla { import flash.events.*; import flash.display.*; public dynamic class mc_stones_13 extends MovieClip { public var stonesHitarea_mc:MovieClip; public var play_btn:SimpleButton; public function mc_stones_13(){ addFrameScript(0, frame1, 78, frame79); } function frame79(){ stop(); play_btn.addEventListener(MouseEvent.CLICK, onPlayButton); } function frame1(){ stop(); } public function onPlayButton(_arg1:Event){ play_btn.dispatchEvent(new Event("onPlayBtn")); } } }//package 3dGame_fla
Section 2
//DebugDispatcher (com.blitzagency.xray.logger.events.DebugDispatcher) package com.blitzagency.xray.logger.events { import flash.events.*; public class DebugDispatcher extends EventDispatcher { public static var TRACE:String = "trace"; public function sendEvent(_arg1:String, _arg2:Object):void{ trace(_arg2.message); dispatchEvent(new DebugEvent(DebugDispatcher.TRACE, false, false, _arg2)); } } }//package com.blitzagency.xray.logger.events
Section 3
//DebugEvent (com.blitzagency.xray.logger.events.DebugEvent) package com.blitzagency.xray.logger.events { import flash.events.*; public class DebugEvent extends Event { public var obj:Object; public function DebugEvent(_arg1:String, _arg2:Boolean, _arg3:Boolean, _arg4:Object):void{ obj = new Object(); super(_arg1, _arg2, _arg3); obj = _arg4; } } }//package com.blitzagency.xray.logger.events
Section 4
//ObjectTools (com.blitzagency.xray.logger.util.ObjectTools) package com.blitzagency.xray.logger.util { import com.blitzagency.xray.logger.*; import flash.utils.*; public class ObjectTools { private static var log:XrayLog = new XrayLog(); public function resolveBaseType(_arg1:Object):String{ return (""); } public static function getImmediateClassPath(_arg1:Object):String{ var _local2:String; var _local3:String; _local2 = getQualifiedClassName(_arg1); _local3 = getQualifiedSuperclassName(_arg1); _local2 = ((_local2.indexOf("::") > -1)) ? _local2.split("::").join(".") : _local2; if (_local3 == null){ return (_local2); }; _local3 = ((_local3.indexOf("::") > -1)) ? _local3.split("::").join(".") : _local3; return (((_local3 + ".") + _local2)); } public static function getFullClassPath(_arg1:Object):String{ var _local2:XML; var _local3:Array; var _local4:String; var _local5:XML; var _local6:String; _local2 = describeType(_arg1); _local3 = []; _local4 = getQualifiedClassName(_arg1); _local4 = ((_local4.indexOf("::") > -1)) ? _local4.split("::").join(".") : _local4; _local3.push(_local4); for each (_local5 in _local2.extendsClass) { _local6 = ((_local5.@type.toString().indexOf("::") > -1)) ? _local5.@type.toString().split("::")[1] : _local5.@type.toString(); _local3.push(_local6); }; return (_local3.join(".")); } } }//package com.blitzagency.xray.logger.util
Section 5
//PropertyTools (com.blitzagency.xray.logger.util.PropertyTools) package com.blitzagency.xray.logger.util { import flash.utils.*; public class PropertyTools { private static function getVariables():void{ } public static function getProperties(_arg1:Object):Array{ var ary:Array; var xmlDoc:XML; var item:XML; var name:String; var type:String; var value:Object; var obj = _arg1; ary = []; try { xmlDoc = describeType(obj); for each (item in xmlDoc.variable) { name = item.@name.toString(); type = item.@type.toString(); value = ((obj[name])!=null) ? obj[name] : ""; ary.push({name:name, type:type, value:value}); }; } catch(e:Error) { }; return (ary); } private static function getMethods():void{ } } }//package com.blitzagency.xray.logger.util
Section 6
//Debug (com.blitzagency.xray.logger.Debug) package com.blitzagency.xray.logger { import flash.events.*; import flash.net.*; import flash.utils.*; import com.blitzagency.xray.logger.events.*; public class Debug { private static var connected:Boolean = false; private static var xrayLC:LocalConnection; private static var ed:DebugDispatcher = new DebugDispatcher(); public static function traceObject(_arg1:Object, _arg2:Number=254, _arg3:Number=0, _arg4:String="", _arg5:Number=0):void{ var recurseDepth:Number; var indent:Number; var prop:String; var lead:String; var i:Number; var obj:String; var o = _arg1; var pRecurseDepth = _arg2; var pIndent = _arg3; var pPackage = _arg4; var pLevel = _arg5; try { recurseDepth = pRecurseDepth; indent = pIndent; for (prop in o) { lead = ""; i = 0; while (i < indent) { lead = (lead + " "); i = (i + 1); }; obj = o[prop].toString(); if ((o[prop] is Array)){ obj = "[Array]"; }; if (obj == "[object Object]"){ obj = "[Object]"; }; Debug.trace((((lead + prop) + ": ") + obj), pPackage, pLevel); if (recurseDepth > 0){ Debug.traceObject(o[prop], (recurseDepth - 1), (indent + 1), pPackage, pLevel); }; }; } catch(e:Error) { }; } public static function trace(_arg1:Object, _arg2:String="", _arg3:Number=0):void{ var msg:String; var pMsg = _arg1; var pPackage = _arg2; var pLevel = _arg3; ed.sendEvent(DebugDispatcher.TRACE, {message:pMsg, classPackage:pPackage}); if (!connected){ makeConnection(); }; if (connected){ try { msg = ((String(pMsg).length >= 39995)) ? (String(pMsg).substr(0, 39995) + "...") : String(pMsg); xrayLC.send("_xray_view_conn", "setTrace", msg, pLevel, pPackage); } catch(e:LogError) { LogError("No Xray Interface running"); }; }; } private static function makeConnection():void{ var err:LogError; xrayLC = new LocalConnection(); xrayLC.addEventListener("status", statusHandler); xrayLC.allowDomain("*"); try { xrayLC.connect(("_xray_standAlone_debug" + getTimer())); connected = true; } catch(e:Error) { err = new LogError("log"); setTimeout(makeConnection, 1000); }; } public static function addEventListener(_arg1:String, _arg2:Function):void{ ed.addEventListener(_arg1, _arg2); } private static function initialize():Boolean{ ed = new DebugDispatcher(); return (true); } private static function statusHandler(_arg1:StatusEvent):void{ if ((((((_arg1.code == null)) && ((_arg1.level == "error")))) && (connected))){ connected = false; } else { if ((((_arg1.level == "status")) && ((_arg1.code == null)))){ connected = true; }; }; } } }//package com.blitzagency.xray.logger class LogError extends Error { private function LogError(_arg1:String){ super(_arg1); } }
Section 7
//Log (com.blitzagency.xray.logger.Log) package com.blitzagency.xray.logger { import com.blitzagency.xray.logger.util.*; public class Log { private var level:Number; private var caller:String;// = "" private var classPackage:String; private var dump:Object; private var message:String; public function Log(_arg1:String, _arg2:Object, _arg3:Number, ... _args){ var err:LogError; var nullArray:Array; var str:String; var p_message = _arg1; var p_dump = _arg2; var p_level = _arg3; var rest = _args; caller = ""; super(); try { nullArray.push("bogus"); } catch(e:Error) { err = new LogError("log"); } finally { if (err.hasOwnProperty("getStackTrace")){ str = err.getStackTrace(); setCaller(resolveCaller(str)); } else { setCaller(""); }; setMessage(p_message); setDump(p_dump); setLevel(p_level); setClassPackage(p_dump); }; } public function setLevel(_arg1:Number):void{ level = _arg1; } public function getCaller():String{ return (caller); } public function setMessage(_arg1:String):void{ message = _arg1; } public function getLevel():Number{ return (level); } public function getDump():Object{ return (dump); } public function setCaller(_arg1:String):void{ caller = _arg1; } public function setClassPackage(_arg1:Object):void{ classPackage = ObjectTools.getImmediateClassPath(_arg1); } public function getMessage():String{ return (message); } public function getClassPackage():String{ return (classPackage); } public function setDump(_arg1:Object):void{ dump = _arg1; } private function resolveCaller(_arg1:String):String{ var ary:Array; var str = _arg1; ary = []; try { str = str.split("\n").join(""); ary = str.split("\tat "); str = ary[3]; } catch(e:Error) { } finally { str = ""; }; return (str); } } }//package com.blitzagency.xray.logger class LogError extends Error { private function LogError(_arg1:String){ super(_arg1); } }
Section 8
//Logger (com.blitzagency.xray.logger.Logger) package com.blitzagency.xray.logger { public interface Logger { function setLevel(_arg1:Number=0):void; function debug(_arg1:Log):void; function fatal(_arg1:Log):void; function warn(_arg1:Log):void; function error(_arg1:Log):void; function log(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Object=null):void; function info(_arg1:Log):void; } }//package com.blitzagency.xray.logger
Section 9
//XrayLog (com.blitzagency.xray.logger.XrayLog) package com.blitzagency.xray.logger { public class XrayLog { private var logger:XrayLogger; public function XrayLog(){ logger = XrayLogger.getInstance(); } public function debug(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.debug(new Log(_arg1, null, XrayLogger.DEBUG)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.debug(new Log(_arg1, _args[_local3], XrayLogger.DEBUG)); _local3++; }; } public function fatal(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.fatal(new Log(_arg1, null, XrayLogger.FATAL)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.fatal(new Log(_arg1, _args[_local3], XrayLogger.FATAL)); _local3++; }; } public function info(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.info(new Log(_arg1, null, XrayLogger.INFO)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.info(new Log(_arg1, _args[_local3], XrayLogger.INFO)); _local3++; }; } public function warn(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.warn(new Log(_arg1, null, XrayLogger.WARN)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.warn(new Log(_arg1, _args[_local3], XrayLogger.WARN)); _local3++; }; } public function error(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.error(new Log(_arg1, null, XrayLogger.ERROR)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.error(new Log(_arg1, _args[_local3], XrayLogger.ERROR)); _local3++; }; } } }//package com.blitzagency.xray.logger
Section 10
//XrayLogger (com.blitzagency.xray.logger.XrayLogger) package com.blitzagency.xray.logger { import flash.events.*; import flash.utils.*; import com.blitzagency.xray.logger.util.*; public class XrayLogger extends EventDispatcher implements Logger { private var displayObjectRecursionDepth:Number;// = 3 private var level:Number;// = 0 private var indentation:Number;// = 0 private var objectRecursionDepth:Number;// = 254 private var filters:Array; public static var FATAL:Number = 4; public static var WARN:Number = 2; public static var ERROR:Number = 3; public static var INFO:Number = 1; public static var DEBUG:Number = 0; private static var _instance:XrayLogger = null; public static var NONE:Number = 5; public function XrayLogger(){ level = 0; displayObjectRecursionDepth = 3; objectRecursionDepth = 254; indentation = 0; filters = []; super(); } public function checkFilters():Boolean{ var _local1:uint; if (filters.length == 0){ return (true); }; _local1 = 0; while (_local1 < filters.length) { _local1++; }; return (true); } public function debug(_arg1:Log):void{ if (_arg1.getLevel() == level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 0, _arg1.getDump()); }; } public function setIndentation(_arg1:Number=0):void{ indentation = _arg1; } public function error(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 3, _arg1.getDump()); }; } public function setLevel(_arg1:Number=0):void{ level = _arg1; } public function fatal(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 4, _arg1.getDump()); }; } public function warn(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 2, _arg1.getDump()); }; } public function setObjectRecursionDepth(_arg1:Number):void{ objectRecursionDepth = _arg1; } public function setDisplayClipRecursionDepth(_arg1:Number):void{ displayObjectRecursionDepth = _arg1; } public function info(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 1, _arg1.getDump()); }; } public function log(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Object=null):void{ var _local6:String; var _local7:String; var _local8:String; var _local9:Object; _local6 = (("(" + getTimer()) + ") "); if (_arg3.length > 0){ _local6 = (_local6 + (_arg2 + "\n")); }; _local6 = (_local6 + _arg1); if (_arg1.length > 0){ Debug.trace(_local6, _arg3, _arg4); }; if (_arg5 == null){ return; }; _local7 = typeof(_arg5); if ((((((((((_local7 == "string")) || ((_local7 == "number")))) || ((_local7 == "boolean")))) || ((_local7 == "undefined")))) || ((_local7 == "null")))){ Debug.trace(_arg5, _arg3, _arg4); } else { if (_local7 == "xml"){ Debug.trace(_arg5.toString(), _arg3, _arg4); } else { _local8 = ObjectTools.getImmediateClassPath(_arg5); if ((((_local8 == "Object")) || ((_local8 == "Object.Array")))){ Debug.traceObject(_arg5, objectRecursionDepth, indentation, _arg3, _arg4); } else { _local9 = PropertyTools.getProperties(_arg5); Debug.traceObject(_local9, displayObjectRecursionDepth, indentation, _arg3, _arg4); }; }; }; } public function setFilters(_arg1:Array):void{ filters = _arg1; } public static function getInstance():XrayLogger{ if (_instance == null){ _instance = new (XrayLogger); }; return (_instance); } public static function resolveLevelAsName(_arg1:Number):String{ switch (_arg1){ case 0: return ("debug"); case 1: return ("info"); case 2: return ("warn"); case 3: return ("error"); case 4: return ("fatal"); default: return ("debug"); }; } } }//package com.blitzagency.xray.logger
Section 11
//EngineHighSnd (com.devm.tevlon.data.sounds.EngineHighSnd) package com.devm.tevlon.data.sounds { import flash.media.*; import flash.net.*; public class EngineHighSnd extends Sound { public function EngineHighSnd(_arg1:URLRequest=null, _arg2:SoundLoaderContext=null){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.sounds
Section 12
//EngineSnd (com.devm.tevlon.data.sounds.EngineSnd) package com.devm.tevlon.data.sounds { import flash.media.*; import flash.net.*; public class EngineSnd extends Sound { public function EngineSnd(_arg1:URLRequest=null, _arg2:SoundLoaderContext=null){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.sounds
Section 13
//ExplosionSnd (com.devm.tevlon.data.sounds.ExplosionSnd) package com.devm.tevlon.data.sounds { import flash.media.*; import flash.net.*; public class ExplosionSnd extends Sound { public function ExplosionSnd(_arg1:URLRequest=null, _arg2:SoundLoaderContext=null){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.sounds
Section 14
//MissileFireSnd (com.devm.tevlon.data.sounds.MissileFireSnd) package com.devm.tevlon.data.sounds { import flash.media.*; import flash.net.*; public class MissileFireSnd extends Sound { public function MissileFireSnd(_arg1:URLRequest=null, _arg2:SoundLoaderContext=null){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.sounds
Section 15
//MusicShortSnd (com.devm.tevlon.data.sounds.MusicShortSnd) package com.devm.tevlon.data.sounds { import flash.media.*; import flash.net.*; public class MusicShortSnd extends Sound { public function MusicShortSnd(_arg1:URLRequest=null, _arg2:SoundLoaderContext=null){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.sounds
Section 16
//MusicSnd (com.devm.tevlon.data.sounds.MusicSnd) package com.devm.tevlon.data.sounds { import flash.media.*; import flash.net.*; public class MusicSnd extends Sound { public function MusicSnd(_arg1:URLRequest=null, _arg2:SoundLoaderContext=null){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.sounds
Section 17
//EnemyBaseTexture (com.devm.tevlon.data.textures.EnemyBaseTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class EnemyBaseTexture extends BitmapData { public function EnemyBaseTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 18
//ExplosionTexture (com.devm.tevlon.data.textures.ExplosionTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class ExplosionTexture extends BitmapData { public function ExplosionTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 19
//GroundConcreteTexture (com.devm.tevlon.data.textures.GroundConcreteTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class GroundConcreteTexture extends BitmapData { public function GroundConcreteTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 20
//GroundCraterTexture (com.devm.tevlon.data.textures.GroundCraterTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class GroundCraterTexture extends BitmapData { public function GroundCraterTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 21
//GroundNormalTexture (com.devm.tevlon.data.textures.GroundNormalTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class GroundNormalTexture extends BitmapData { public function GroundNormalTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 22
//GroundWaterTexture (com.devm.tevlon.data.textures.GroundWaterTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class GroundWaterTexture extends BitmapData { public function GroundWaterTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 23
//HomeBaseTexture (com.devm.tevlon.data.textures.HomeBaseTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class HomeBaseTexture extends BitmapData { public function HomeBaseTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 24
//HudBottom (com.devm.tevlon.data.textures.HudBottom) package com.devm.tevlon.data.textures { import flash.display.*; public class HudBottom extends BitmapData { public function HudBottom(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 25
//MineAdvTexture (com.devm.tevlon.data.textures.MineAdvTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class MineAdvTexture extends BitmapData { public function MineAdvTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 26
//MineTexture (com.devm.tevlon.data.textures.MineTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class MineTexture extends BitmapData { public function MineTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 27
//MissileTexture (com.devm.tevlon.data.textures.MissileTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class MissileTexture extends BitmapData { public function MissileTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 28
//PlayerEngineTexture (com.devm.tevlon.data.textures.PlayerEngineTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class PlayerEngineTexture extends BitmapData { public function PlayerEngineTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 29
//PlayerShadowTexture (com.devm.tevlon.data.textures.PlayerShadowTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class PlayerShadowTexture extends BitmapData { public function PlayerShadowTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 30
//PlayerTexture (com.devm.tevlon.data.textures.PlayerTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class PlayerTexture extends BitmapData { public function PlayerTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 31
//WallTexture (com.devm.tevlon.data.textures.WallTexture) package com.devm.tevlon.data.textures { import flash.display.*; public class WallTexture extends BitmapData { public function WallTexture(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 32
//WallTextureTop (com.devm.tevlon.data.textures.WallTextureTop) package com.devm.tevlon.data.textures { import flash.display.*; public class WallTextureTop extends BitmapData { public function WallTextureTop(_arg1:int, _arg2:int){ super(_arg1, _arg2); } } }//package com.devm.tevlon.data.textures
Section 33
//CampaignData (com.devm.tevlon.data.CampaignData) package com.devm.tevlon.data { public class CampaignData { private static var _maps:Maps; private static var _levels:Array = []; public static var levels:int; public static var currentLevel:int; public static function getCurrentLevelData():LevelData{ return (_levels[currentLevel]); } public static function getLevelData(_arg1:int):LevelData{ return (_levels[_arg1]); } public static function getIsGameCompleted():Boolean{ trace(((("level: " + currentLevel) + " of: ") + levels)); if (currentLevel >= levels){ return (true); }; return (false); } public static function setup():void{ var _local1:LevelData; _maps = new Maps(); _local1 = new LevelData(); _local1.id = 0; _local1.levelBitmap = _maps.getData(1); _local1.welcomeMsg = "Level 1 \nDestroy the enemy base before the time runs out\nIf you run out of ammo you can reload at your base"; _local1.maxMines = 3; _local1.maxAdvMines = 0; _local1.setMaxTime(100); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 1; _local1.levelBitmap = _maps.getData(2); _local1.welcomeMsg = "Level 2 \nDestroy both enemy bases, \nwatch out for mines, \nStrafeing is important"; _local1.maxMines = 6; _local1.maxAdvMines = 0; _local1.setMaxTime(75); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 2; _local1.levelBitmap = _maps.getData(3); _local1.welcomeMsg = "Level 3 \nDestroy the enemy bases\n And don't fly into things"; _local1.maxMines = 6; _local1.maxAdvMines = 1; _local1.setMaxTime(60); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 3; _local1.levelBitmap = _maps.getData(4); _local1.welcomeMsg = "Level 4 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 1; _local1.setMaxTime(50); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 4; _local1.levelBitmap = _maps.getData(5); _local1.welcomeMsg = "Level 5 \nDestroy the enemy bases"; _local1.maxMines = 8; _local1.maxAdvMines = 3; _local1.setMaxTime(50); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 5; _local1.levelBitmap = _maps.getData(6); _local1.welcomeMsg = "Level 6 \nDestroy the enemy bases, avoid walls"; _local1.maxMines = 4; _local1.maxAdvMines = 0; _local1.setMaxTime(45); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 6; _local1.levelBitmap = _maps.getData(7); _local1.welcomeMsg = "Level 7 \nDestroy the enemy bases"; _local1.maxMines = 4; _local1.maxAdvMines = 0; _local1.setMaxTime(100); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 7; _local1.levelBitmap = _maps.getData(8); _local1.welcomeMsg = "Level 8 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 1; _local1.setMaxTime(100); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 8; _local1.levelBitmap = _maps.getData(9); _local1.welcomeMsg = "Level 9 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 2; _local1.setMaxTime(80); _levels.push(_local1); _local1 = new LevelData(); _local1.id = 9; _local1.levelBitmap = _maps.getData(10); _local1.welcomeMsg = "Level 10 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 2; _local1.setMaxTime(70); _local1.onCompletedScoreBonus = 150; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 10; _local1.levelBitmap = _maps.getData(11); _local1.welcomeMsg = "Level 11 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 1; _local1.setMaxTime(20); _local1.onCompletedScoreBonus = 150; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 11; _local1.levelBitmap = _maps.getData(12); _local1.welcomeMsg = "Level 12 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 2; _local1.setMaxTime(16); _local1.onCompletedScoreBonus = 200; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 12; _local1.levelBitmap = _maps.getData(13); _local1.welcomeMsg = "Level 13 \nDestroy the enemy bases"; _local1.maxMines = 6; _local1.maxAdvMines = 2; _local1.setMaxTime(35); _local1.onCompletedScoreBonus = 200; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 13; _local1.levelBitmap = _maps.getData(14); _local1.welcomeMsg = "Level 14 \nDestroy the enemy bases"; _local1.maxMines = 7; _local1.maxAdvMines = 2; _local1.setMaxTime(70); _local1.onCompletedScoreBonus = 200; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 14; _local1.levelBitmap = _maps.getData(15); _local1.welcomeMsg = "Level 15 \nDestroy the enemy bases"; _local1.maxMines = 7; _local1.maxAdvMines = 2; _local1.setMaxTime(100); _local1.onCompletedScoreBonus = 300; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 15; _local1.levelBitmap = _maps.getData(16); _local1.welcomeMsg = "Level 16 \nDestroy the enemy bases"; _local1.maxMines = 9; _local1.maxAdvMines = 4; _local1.setMaxTime(15); _local1.onCompletedScoreBonus = 400; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 16; _local1.levelBitmap = _maps.getData(17); _local1.welcomeMsg = "Level 17 \nDestroy the enemy bases"; _local1.maxMines = 7; _local1.maxAdvMines = 3; _local1.setMaxTime(70); _local1.onCompletedScoreBonus = 400; _levels.push(_local1); _local1 = new LevelData(); _local1.id = 17; _local1.levelBitmap = _maps.getData(18); _local1.welcomeMsg = "Level 18 \nDestroy the enemy bases"; _local1.maxMines = 7; _local1.maxAdvMines = 3; _local1.setMaxTime(30); _local1.onCompletedScoreBonus = 400; _levels.push(_local1); levels = _levels.length; _maps = null; } } }//package com.devm.tevlon.data
Section 34
//LevelData (com.devm.tevlon.data.LevelData) package com.devm.tevlon.data { import flash.display.*; import flash.geom.*; public class LevelData { public var maxMines:int;// = 6 private var time:Number;// = 100 private var maxTime:Number;// = 100 private var _levelBitmap:BitmapData; public var maxAdvMines:int;// = 0 public var id:int; public var onCompletedScoreBonus:int;// = 100 public var welcomeMsg:String;// = "" public function LevelData(){ maxMines = 6; maxAdvMines = 0; welcomeMsg = ""; onCompletedScoreBonus = 100; time = 100; maxTime = 100; super(); } public function get levelBitmap():BitmapData{ return (_levelBitmap); } public function setMaxTime(_arg1:Number):void{ maxTime = _arg1; time = _arg1; } public function set levelBitmap(_arg1:BitmapData):void{ var _local2:Rectangle; var _local3:Point; _levelBitmap = new BitmapData(_arg1.width, _arg1.height, true, 0); _local2 = new Rectangle(0, 0, _arg1.width, _arg1.height); _local3 = new Point(0, 0); _levelBitmap.copyPixels(_arg1, _local2, _local3); } public function removeTime(_arg1:Number):void{ time = (time - _arg1); if (time < 0){ time = 0; }; } public function getTimeLeftPercent():Number{ return ((time / maxTime)); } public function resetTime():void{ time = maxTime; } } }//package com.devm.tevlon.data
Section 35
//Maps (com.devm.tevlon.data.Maps) package com.devm.tevlon.data { import flash.display.*; public class Maps extends MovieClip { public function Maps(){ stop(); } public function getData(_arg1:int):BitmapData{ var _local2:BitmapData; gotoAndStop(_arg1); _local2 = new BitmapData(100, 100); _local2.draw(this); return (_local2); } } }//package com.devm.tevlon.data
Section 36
//MaterialsAndModels (com.devm.tevlon.data.MaterialsAndModels) package com.devm.tevlon.data { import org.papervision3d.materials.utils.*; import org.papervision3d.materials.*; import com.devm.util.misc.*; import com.devm.tevlon.data.textures.*; public class MaterialsAndModels { public static var _enemyBaseMaterial:MaterialsList; public static var _playerShadowMaterial:BitmapMaterial; public static var _mineAdvMaterial:MaterialsList; public static var _playerMaterials:MaterialsList; public static var _playerMenuMaterials:MaterialsList; public static var _missileMaterial:BitmapMaterial; public static var _wallMaterial:MaterialsList; public static var _homeBaseMaterial:MaterialsList; public static var _mineMaterial:MaterialsList; public static function create():void{ var _local1:BitmapMaterial; var _local2:BitmapMaterial; var _local3:BitmapMaterial; var _local4:BitmapMaterial; var _local5:BitmapMaterial; var _local6:BitmapMaterial; var _local7:BitmapMaterial; var _local8:BitmapMaterial; var _local9:BitmapMaterial; var _local10:BitmapMaterial; Debug.print("Materials.createMaterials()"); _local1 = new BitmapMaterial(new PlayerTexture(0, 0)); _local1.lineAlpha = 0.3; _local1.lineThickness = 1; _local2 = new BitmapMaterial(new PlayerEngineTexture(0, 0)); _local2.lineAlpha = 0.3; _local2.lineThickness = 1; _playerMenuMaterials = new MaterialsList(); _playerMenuMaterials.addMaterial(_local1, "bodySG"); _playerMenuMaterials.addMaterial(_local2, "engine_flameSG"); _local3 = new BitmapMaterial(new PlayerTexture(0, 0)); _local4 = new BitmapMaterial(new PlayerEngineTexture(0, 0)); _playerMaterials = new MaterialsList(); _playerMaterials.addMaterial(_local3, "bodySG"); _playerMaterials.addMaterial(_local4, "engine_flameSG"); _playerShadowMaterial = new BitmapMaterial(new PlayerShadowTexture(0, 0)); _missileMaterial = new BitmapMaterial(new MissileTexture(0, 0)); _wallMaterial = new MaterialsList(); _local5 = new BitmapMaterial(new WallTexture(0, 0)); _local6 = new BitmapMaterial(new WallTextureTop(0, 0)); _wallMaterial.addMaterial(_local5, "all"); _wallMaterial.addMaterial(_local6, "top"); _local7 = new BitmapMaterial(new MineAdvTexture(0, 0)); _mineAdvMaterial = new MaterialsList(); _mineAdvMaterial.addMaterial(_local7, "mineSG"); _local8 = new BitmapMaterial(new MineTexture(0, 0)); _mineMaterial = new MaterialsList(); _mineMaterial.addMaterial(_local8, "mineSG"); _local9 = new BitmapMaterial(new EnemyBaseTexture(0, 0)); _enemyBaseMaterial = new MaterialsList(); _enemyBaseMaterial.addMaterial(_local9, "baseMatSG"); _local10 = new BitmapMaterial(new HomeBaseTexture(0, 0)); _homeBaseMaterial = new MaterialsList(); _homeBaseMaterial.addMaterial(_local10, "baseMatSG"); } } }//package com.devm.tevlon.data
Section 37
//ModelsData (com.devm.tevlon.data.ModelsData) package com.devm.tevlon.data { public class ModelsData { public static var _mineAdvModel:XML = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <author>zworp</author> <authoring_tool>Maya2008 | ColladaMaya v3.04E</authoring_tool> <comments>ColladaMaya export options: bakeTransforms=0;exportPolygonMeshes=1;bakeLighting=0;isSampling=0; curveConstrainSampling=0;removeStaticCurves=1;exportCameraAsLookat=0; exportLights=0;exportCameras=0;exportJointsAndSkin=0; exportAnimations=0;exportTriangles=1;exportInvisibleNodes=0; exportNormals=1;exportTexCoords=1; exportVertexColors=0;exportVertexColorsAnimation=0;exportTangents=0; exportTexTangents=0;exportConstraints=0;exportPhysics=0;exportXRefs=0; dereferenceXRefs=0;cameraXFov=0;cameraYFov=0</comments> <source_data>file:///F:/work_new/3d_game/art/mine_adv01.mb</source_data> </contributor> <created>2008-02-13T20:32:46Z</created> <modified>2008-02-13T20:32:46Z</modified> <unit meter="0.01" name="centimeter"/> <up_axis>Y_UP</up_axis> </asset> <library_images> <image id="file1" name="file1"> <init_from>../textures/mine_adv.png</init_from> <extra> <technique profile="MAYA"> <dgnode_type>kFile</dgnode_type> <image_sequence>0</image_sequence> </technique> </extra> </image> </library_images> <library_materials> <material id="mine" name="mine"> <instance_effect url="#mine-fx"/> </material> </library_materials> <library_effects> <effect id="mine-fx"> <profile_COMMON> <newparam sid="file1-surface"> <surface type="2D"> <init_from>file1</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file1-sampler"> <sampler2D> <source>file1-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file1-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="RGB_ZERO"> <color>0 0 0 1</color> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> </library_effects> <library_geometries> <geometry id="pCubeShape1" name="pCubeShape1"> <mesh> <source id="pCubeShape1-positions" name="position"> <float_array id="pCubeShape1-positions-array" count="78">-3.53553 -0.529897 0 0 -0.529897 3.53553 -1.58946 -0.529964 0 0 -0.529964 1.58946 -1.12392 0.530085 1.12392 1.12392 0.530085 1.12392 -2.5 0.529776 2.5 2.5 0.529776 2.5 0 2.5 0 -2.5 0.529776 -2.5 2.5 0.529776 -2.5 -1.12392 0.530085 -1.12392 1.12392 0.530085 -1.12392 0 -0.529964 -1.58946 1.58946 -0.529964 0 0 -0.529897 -3.53553 3.53553 -0.529897 0 0 -2.5 0 -1.62345 0.529776 -0.003498 -1.14548 -0.529897 -1.15043 1.15043 -0.529897 1.14548 1.62345 0.529776 -0.003498 -1.15191 -0.529897 1.144 -0.005595 0.529776 1.62345 1.144 -0.529897 -1.15191 -0.005592 0.529776 -1.62345</float_array> <technique_common> <accessor source="#pCubeShape1-positions-array" count="26" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape1-normals" name="normal"> <float_array id="pCubeShape1-normals-array" count="312">-0.341755 -0.613311 0.712077 -0.341755 -0.613311 0.712077 -0.341755 -0.613311 0.712077 0.000043 1 -0.000003 0.000053 1 -0.000078 0.000053 1 -0.000078 0.000043 1 -0.000003 -0.382683 0 0.923879 -0.382683 0 0.923879 -0.382683 0 0.923879 -0.382683 0 0.923879 0.000132 -1 -0.000158 -0.000081 -1 -0.000438 -0.000081 -1 -0.000438 0.000132 -1 -0.000158 0.261863 0.613288 0.745189 0.261863 0.613288 0.745189 0.261863 0.613288 0.745189 -0.260536 0.614399 -0.744738 -0.260536 0.614399 -0.744738 -0.260536 0.614399 -0.744738 0.00008 -1 0.000437 -0.000133 -1 0.000157 -0.000133 -1 0.000157 0.00008 -1 0.000437 0.382683 -0.000000 -0.923879 0.382683 -0.000000 -0.923879 0.382683 -0.000000 -0.923879 0.382683 -0.000000 -0.923879 -0.000053 1 0.000078 -0.000043 1 0.000003 -0.000043 1 0.000003 -0.000053 1 0.000078 0.342375 -0.614423 -0.710819 0.342375 -0.614423 -0.710819 0.342375 -0.614423 -0.710819 0.711054 -0.614216 0.342259 0.711054 -0.614216 0.342259 0.711054 -0.614216 0.342259 -0.000003 1 -0.000043 -0.000078 1 -0.000053 -0.000078 1 -0.000053 -0.000003 1 -0.000043 0.923879 0 0.382683 0.923879 0 0.382683 0.923879 0 0.382683 0.923879 0 0.382683 -0.000158 -1 -0.000132 -0.000437 -1 0.00008 -0.000437 -1 0.00008 -0.000158 -1 -0.000132 0.744822 0.614192 -0.260784 0.744822 0.614192 -0.260784 0.744822 0.614192 -0.260784 -0.342259 -0.614216 -0.711054 -0.342259 -0.614216 -0.711054 -0.342259 -0.614216 -0.711054 0.000033 1 0.00007 0.000346 -1 0.000121 -0.744822 0.614192 -0.260784 -0.744822 0.614192 -0.260784 -0.744822 0.614192 -0.260784 -0.745104 0.613497 0.261614 -0.745104 0.613497 0.261614 -0.745104 0.613497 0.261614 0.000158 -1 0.000133 0.000438 -1 -0.000081 0.000438 -1 -0.000081 0.000158 -1 0.000133 -0.923879 0 -0.382683 -0.923879 0 -0.382683 -0.923879 0 -0.382683 -0.923879 0 -0.382683 0.000003 1 0.000043 0.000078 1 0.000053 0.000078 1 0.000053 0.000003 1 0.000043 -0.71184 -0.61352 -0.341871 -0.71184 -0.61352 -0.341871 -0.71184 -0.61352 -0.341871 0.341871 -0.61352 0.71184 0.341871 -0.61352 0.71184 0.341871 -0.61352 0.71184 -0.000033 1 -0.00007 -0.000346 -1 -0.000121 0.745104 0.613497 0.261614 0.745104 0.613497 0.261614 0.745104 0.613497 0.261614 -0.710819 -0.614423 0.342375 -0.710819 -0.614423 0.342375 -0.710819 -0.614423 0.342375 0.00007 1 -0.000033 0.000121 -1 -0.000346 -0.260536 0.614399 0.744738 -0.260536 0.614399 0.744738 -0.260536 0.614399 0.744738 0.712077 -0.613311 -0.341755 0.712077 -0.613311 -0.341755 0.712077 -0.613311 -0.341755 -0.00007 1 0.000034 -0.000121 -1 0.000347 0.261863 0.613288 -0.745189 0.261863 0.613288 -0.745189 0.261863 0.613288 -0.745189</float_array> <technique_common> <accessor source="#pCubeShape1-normals-array" count="104" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape1-map1" name="map1"> <float_array id="pCubeShape1-map1-array" count="104">0.069941 0.5187 0.212819 0.826924 0.769387 0.858032 0.769387 0.776045 0.903522 0.775471 0.903522 0.857457 0.270049 0.974915 0.069941 0.76872 0.513512 0.477847 0.365521 0.624821 0.270049 0.974915 0.06795 0.764856 0.903521 0.939444 0.903522 0.693484 0.769386 0.940018 0.211845 0.820096 0.520068 0.974915 0.059287 0.477847 0.513512 0.932072 0.216916 0.824934 0.524166 0.972925 0.06994 0.5187 0.524166 0.972925 0.274146 0.972925 0.21301 0.827114 0.217742 0.82576 0.069941 0.76872 0.274146 0.972925 0.06795 0.764856 0.06795 0.514836 0.215942 0.822087 0.520068 0.974915 0.211019 0.81927 0.215751 0.821896 0.06795 0.514836 0.660486 0.625838 0.513512 0.477847 0.513512 0.023621 0.365521 0.330872 0.660486 0.329856 0.967737 0.477847 0.661313 0.625012 0.513512 0.932072 0.967737 0.477847 0.660676 0.330047 0.366347 0.330047 0.365711 0.625012 0.059287 0.477847 0.513512 0.023622 0.903522 0.611498 0.769387 0.694059 0.769387 0.612072</float_array> <technique_common> <accessor source="#pCubeShape1-map1-array" count="52" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCubeShape1-vertices"> <input semantic="POSITION" source="#pCubeShape1-positions"/> </vertices> <triangles material="mineSG" count="48"> <input semantic="VERTEX" source="#pCubeShape1-vertices" offset="0"/> <input semantic="NORMAL" source="#pCubeShape1-normals" offset="1"/> <input semantic="TEXCOORD" source="#pCubeShape1-map1" offset="2" set="0"/> <p>17 0 8 22 1 9 0 2 17 0 3 0 22 4 1 2 6 7 2 6 7 22 4 1 3 5 6 2 7 2 3 8 3 4 10 5 4 10 5 3 8 3 5 9 4 5 12 11 23 13 15 4 11 10 4 11 10 23 13 15 6 14 16 6 15 18 23 16 35 8 17 36 8 18 36 10 19 37 25 20 38 10 22 22 12 23 23 25 21 19 25 21 19 12 23 23 11 24 26 11 25 49 12 26 13 13 28 51 13 28 51 12 26 13 14 27 50 13 29 27 14 30 28 24 32 30 24 32 30 14 30 28 16 31 29 24 33 39 16 34 40 17 35 8 17 36 8 20 37 41 1 38 42 1 39 31 20 40 32 3 42 6 3 42 6 20 40 32 14 41 28 3 43 3 14 44 50 5 46 4 5 46 4 14 44 50 12 45 13 12 48 23 21 49 33 5 47 11 5 47 11 21 49 33 7 50 34 7 51 43 21 52 44 8 53 36 17 54 8 0 55 17 19 56 45 19 57 25 0 3 0 2 6 7 4 11 10 6 14 16 18 58 24 18 59 46 6 60 18 8 61 36 9 62 47 18 63 46 8 64 36 4 66 10 18 67 24 11 65 26 11 65 26 18 67 24 9 68 21 13 69 14 2 70 2 11 72 12 11 72 12 2 70 2 4 71 5 15 73 20 19 74 25 13 76 27 13 76 27 19 74 25 2 75 7 17 77 8 19 78 45 15 79 48 17 80 8 16 81 40 20 82 41 14 30 28 20 83 32 16 31 29 21 84 33 12 23 23 10 22 22 8 85 36 21 86 44 10 87 37 17 88 8 1 89 42 22 90 9 3 42 6 22 91 1 1 39 31 23 92 15 5 47 11 7 50 34 8 93 36 23 94 35 7 95 43 15 96 48 24 97 39 17 98 8 13 76 27 24 99 30 15 73 20 9 68 21 25 100 19 11 65 26 8 101 36 25 102 38 9 103 47</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> </technique> </extra> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="mine_adv01"> <node id="pCube1" name="pCube1" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <scale sid="scale">1.41015 1.41015 1.41015</scale> <instance_geometry url="#pCubeShape1"> <bind_material> <technique_common> <instance_material symbol="mineSG" target="#mine"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <extra> <technique profile="FCOLLADA"> <start_time>0.041666</start_time> <end_time>2</end_time> </technique> </extra> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; public static var _playerModel:XML = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <author>zworp</author> </contributor> <created>2007-12-27T20:40:10Z</created> <modified>2007-12-27T20:40:10Z</modified> <unit meter="0.01" name="centimeter"/> <up_axis>Y_UP</up_axis> </asset> <library_images> <image id="file1" name="file1"> <init_from>../art/player.psd</init_from> <extra> </extra> </image> <image id="file2" name="file2"> <init_from>../textures/engine_flame.png</init_from> <extra> <technique profile="MAYA"> <dgnode_type>kFile</dgnode_type> <image_sequence>0</image_sequence> </technique> </extra> </image> </library_images> <library_materials> <material id="body" name="body"> <instance_effect url="#body-fx"/> </material> <material id="engine_flame" name="engine_flame"> <instance_effect url="#engine_flame-fx"/> </material> </library_materials> <library_effects> <effect id="body-fx"> <profile_COMMON> <newparam sid="file1-surface"> <surface type="2D"> <init_from>file1</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file1-sampler"> <sampler2D> <source>file1-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file1-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="RGB_ZERO"> <color>0 0 0 1</color> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> <effect id="engine_flame-fx"> <profile_COMMON> <newparam sid="file2-surface"> <surface type="2D"> <init_from>file2</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file2-sampler"> <sampler2D> <source>file2-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file2-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="A_ONE"> <texture texture="file2-sampler" texcoord="TEX1"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> </library_effects> <library_geometries> <geometry id="pCylinderShape1" name="pCylinderShape1"> <mesh> <source id="pCylinderShape1-positions" name="position"> <float_array id="pCylinderShape1-positions-array" count="84">-4.23594 -0.754522 0.773269 -3.48044 -0.904693 1.04782 -2.72493 -0.754522 0.773269 -2.72493 -0.029434 -0.552396 -3.48044 0.120736 -0.826951 -4.23594 -0.029434 -0.552396 -4.54888 -0.391978 0.110436 -3.68824 0.834659 1.38576 -3.15798 0.72926 1.57846 -2.62772 0.834659 1.38576 -2.62772 1.34357 0.45532 -3.15798 1.44897 0.26262 -3.68824 1.34357 0.45532 -3.90788 1.08912 0.920538 -3.53742 0.907034 1.25343 -3.15798 0.831614 1.39132 -2.77854 0.907034 1.25343 -2.77854 1.2712 0.587642 -3.15798 1.34662 0.449753 -3.53742 1.2712 0.587642 -3.69458 1.08912 0.920538 -3.57854 0.623121 1.10571 -3.18453 0.544804 1.24889 -3.18453 1.07959 0.271158 -2.79052 0.623121 1.10571 -2.79052 1.00127 0.414344 -3.57854 1.00127 0.414344 -3.74174 0.812195 0.760025</float_array> <technique_common> <accessor source="#pCylinderShape1-positions-array" count="28" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape1-normals" name="normal"> <float_array id="pCylinderShape1-normals-array" count="129">-0.668927 -0.055154 0.741279 0.005009 -0.309765 0.9508 0.003124 0.39906 0.91692 -0.398386 0.529409 0.749009 0.720643 -0.669131 0.181485 0.524191 0.513711 0.679209 0.720643 -0.208148 -0.661323 0.524191 0.849027 0.066156 0.005009 0.63349 -0.773735 0.003124 0.987336 -0.158615 -0.668927 0.594418 -0.446322 -0.398386 0.916268 0.041721 -0.934876 0.311434 0.170342 -0.547914 0.733925 0.401429 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 0.877339 0.479871 0 0.877339 0.479871 -0.706194 0.689473 -0.160988 -0.714959 0.218905 0.664014 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 0 0.87734 0.47987 0.000000 0.877339 0.47987 -0.52631 0.847972 0.062772 -0.533428 0.502086 0.680708 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0.702387 0.245837 -0.667994 -0.000479 0.444816 -0.895622 -0.000479 0.444816 -0.895622 0.702387 0.245837 -0.667994 -0.001071 -0.555862 0.831274 -0.001071 -0.555862 0.831274 0.699637 -0.458439 0.548035 0.699637 -0.458439 0.548035 0.989314 -0.127664 -0.07042 0.989314 -0.127664 -0.07042 -0.000001 0.877339 0.47987</float_array> <technique_common> <accessor source="#pCylinderShape1-normals-array" count="43" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape1-map1" name="map1"> <float_array id="pCylinderShape1-map1-array" count="92">0.882199 0.969227 0.865606 0.887595 0.978915 0.887595 0.962321 0.969227 0.882199 0.805964 0.92226 0.772151 0.962321 0.805964 0.571997 0.037627 0.609268 0.037627 0.665176 0.037627 0.759353 0.037627 0.796624 0.037627 0.833896 0.037627 0.871167 0.037627 0.908439 0.037627 0.571997 0.375858 0.609268 0.375858 0.665176 0.375858 0.759353 0.375858 0.796624 0.375858 0.833896 0.375858 0.871167 0.375858 0.908439 0.375858 0.9079 0.442931 0.871224 0.442954 0.609633 0.442249 0.571509 0.442088 0.833544 0.442624 0.66624 0.442296 0.795409 0.44253 0.904508 0.505177 0.441107 0.026428 0.609659 0.505177 0.572444 0.505177 0.36423 0.096788 0.666417 0.505177 0.758932 0.442426 0.758928 0.505177 0.517984 0.096788 0.795656 0.505177 0.517984 0.436515 0.833649 0.505177 0.36423 0.436515 0.870884 0.505177 0.332386 0.266651 0.549828 0.266651</float_array> <technique_common> <accessor source="#pCylinderShape1-map1-array" count="46" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCylinderShape1-vertices"> <input semantic="POSITION" source="#pCylinderShape1-positions"/> </vertices> <triangles material="bodySG" count="52"> <input semantic="VERTEX" source="#pCylinderShape1-vertices" offset="0"/> <input semantic="NORMAL" source="#pCylinderShape1-normals" offset="1"/> <input semantic="TEXCOORD" source="#pCylinderShape1-map1" offset="2" set="0"/> <p>0 0 7 1 1 8 7 3 15 7 3 15 1 1 8 8 2 16 1 1 8 2 4 9 8 2 16 8 2 16 2 4 9 9 5 17 2 4 9 3 6 10 9 5 17 9 5 17 3 6 10 10 7 18 4 8 11 11 9 19 3 6 10 3 6 10 11 9 19 10 7 18 5 10 12 12 11 20 4 8 11 4 8 11 12 11 20 11 9 19 6 12 13 13 13 21 5 10 12 5 10 12 13 13 21 12 11 20 6 12 13 0 0 14 13 13 21 13 13 21 0 0 14 7 3 22 2 4 0 1 14 1 3 6 3 3 6 3 1 14 1 4 15 2 0 16 4 6 17 5 5 18 6 23 19 45 22 20 44 25 22 40 25 22 40 22 20 44 24 21 42 23 19 45 26 23 38 22 20 44 22 20 44 26 23 38 21 24 34 7 3 15 8 2 16 14 26 26 14 26 26 8 2 16 15 25 25 8 2 16 9 5 17 15 25 25 15 25 25 9 5 17 16 27 28 9 5 17 10 7 18 16 27 28 16 27 28 10 7 18 17 28 36 10 7 18 11 9 19 17 28 36 17 28 36 11 9 19 18 29 29 11 9 19 12 11 20 18 29 29 18 29 29 12 11 20 19 30 27 12 11 20 13 13 21 19 30 27 19 30 27 13 13 21 20 31 24 13 13 21 7 3 22 20 31 24 20 31 24 7 3 22 14 26 23 15 33 25 22 34 32 14 32 26 14 32 26 22 34 32 21 35 33 16 27 28 24 21 35 15 33 25 15 33 25 24 21 35 22 34 32 16 27 28 17 28 36 24 21 35 24 21 35 17 28 36 25 22 37 17 28 36 18 36 29 25 22 37 25 22 37 18 36 29 23 37 39 18 36 29 19 38 27 23 37 39 23 37 39 19 38 27 26 39 41 19 38 27 20 40 24 26 39 41 26 39 41 20 40 24 27 41 43 14 32 23 21 35 30 20 40 24 20 40 24 21 35 30 27 41 43 21 24 34 26 23 38 27 42 31 0 16 4 5 18 6 1 14 1 1 14 1 5 18 6 4 15 2</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> </technique> </extra> </geometry> <geometry id="pCylinderShape3" name="pCylinderShape3"> <mesh> <source id="pCylinderShape3-positions" name="position"> <float_array id="pCylinderShape3-positions-array" count="84">-1.79174 -0.839979 -6.71651 -1.32786 -0.932184 -6.54794 -0.863979 -0.839979 -6.71651 -0.863979 -0.394775 -7.53047 -1.32786 -0.302571 -7.69905 -1.79174 -0.394775 -7.53047 -1.98388 -0.617377 -7.12349 -1.45545 0.135777 -6.34045 -1.12987 0.071062 -6.22213 -0.804287 0.135777 -6.34045 -0.804287 0.44825 -6.91173 -1.12987 0.512965 -7.03005 -1.45545 0.44825 -6.91173 -1.59031 0.292013 -6.62609 -1.36284 0.180216 -6.42169 -1.12987 0.133908 -6.33703 -0.896892 0.180216 -6.42169 -0.896892 0.403811 -6.83049 -1.12987 0.450119 -6.91515 -1.36284 0.403811 -6.83049 -1.45934 0.292013 -6.62609 -1.38809 0.005892 -6.5124 -1.14617 -0.042193 -6.42448 -1.14617 0.286162 -7.02481 -0.904247 0.005892 -6.5124 -0.904247 0.238076 -6.93689 -1.38809 0.238076 -6.93689 -1.4883 0.121984 -6.72465</float_array> <technique_common> <accessor source="#pCylinderShape3-positions-array" count="28" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape3-normals" name="normal"> <float_array id="pCylinderShape3-normals-array" count="129">-0.668927 -0.055154 0.741279 0.005009 -0.309765 0.9508 0.003124 0.399059 0.91692 -0.398386 0.529409 0.749009 0.720643 -0.669132 0.181485 0.524191 0.513711 0.679209 0.720643 -0.208148 -0.661323 0.524191 0.849027 0.066155 0.005009 0.63349 -0.773735 0.003124 0.987335 -0.158616 -0.668927 0.594418 -0.446322 -0.398387 0.916268 0.04172 -0.934876 0.311434 0.170342 -0.547914 0.733924 0.401429 0 -0.877339 -0.479871 0 -0.877339 -0.479871 -0.000000 -0.877339 -0.47987 -0.000002 -0.877339 -0.47987 -0.000000 -0.877339 -0.47987 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.706194 0.689473 -0.160988 -0.714959 0.218905 0.664013 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 -0.52631 0.847972 0.062772 -0.533429 0.502087 0.680708 0.000000 0.87734 0.479869 -0.000001 0.877339 0.47987 -0.000001 0.877339 0.479871 0.702387 0.245838 -0.667994 -0.000479 0.444817 -0.895622 -0.000479 0.444817 -0.895622 0.702387 0.245838 -0.667994 -0.00107 -0.555863 0.831273 -0.00107 -0.555863 0.831273 0.699638 -0.458439 0.548033 0.699638 -0.458439 0.548033 0.989314 -0.127664 -0.07042 0.989314 -0.127664 -0.07042 0.000002 0.877339 0.479872</float_array> <technique_common> <accessor source="#pCylinderShape3-normals-array" count="43" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape3-map1" name="map1"> <float_array id="pCylinderShape3-map1-array" count="92">0.882199 0.969227 0.865606 0.887595 0.978915 0.887595 0.962321 0.969227 0.882199 0.805964 0.92226 0.772151 0.962321 0.805964 0.571997 0.037627 0.609268 0.037627 0.665176 0.037627 0.759353 0.037627 0.796624 0.037627 0.833896 0.037627 0.871167 0.037627 0.908439 0.037627 0.571997 0.375858 0.609268 0.375858 0.665176 0.375858 0.759353 0.375858 0.796624 0.375858 0.833896 0.375858 0.871167 0.375858 0.908439 0.375858 0.9079 0.442931 0.871224 0.442954 0.609633 0.442249 0.571509 0.442088 0.833544 0.442624 0.66624 0.442296 0.795409 0.44253 0.904508 0.505177 0.441107 0.026428 0.609659 0.505177 0.572444 0.505177 0.36423 0.096788 0.666417 0.505177 0.758932 0.442426 0.758928 0.505177 0.517984 0.096788 0.795656 0.505177 0.517984 0.436515 0.833649 0.505177 0.36423 0.436515 0.870884 0.505177 0.332386 0.266651 0.549828 0.266651</float_array> <technique_common> <accessor source="#pCylinderShape3-map1-array" count="46" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCylinderShape3-vertices"> <input semantic="POSITION" source="#pCylinderShape3-positions"/> </vertices> <triangles material="bodySG" count="52"> <input semantic="VERTEX" source="#pCylinderShape3-vertices" offset="0"/> <input semantic="NORMAL" source="#pCylinderShape3-normals" offset="1"/> <input semantic="TEXCOORD" source="#pCylinderShape3-map1" offset="2" set="0"/> <p>0 0 7 1 1 8 7 3 15 7 3 15 1 1 8 8 2 16 1 1 8 2 4 9 8 2 16 8 2 16 2 4 9 9 5 17 2 4 9 3 6 10 9 5 17 9 5 17 3 6 10 10 7 18 4 8 11 11 9 19 3 6 10 3 6 10 11 9 19 10 7 18 5 10 12 12 11 20 4 8 11 4 8 11 12 11 20 11 9 19 6 12 13 13 13 21 5 10 12 5 10 12 13 13 21 12 11 20 6 12 13 0 0 14 13 13 21 13 13 21 0 0 14 7 3 22 2 4 0 1 14 1 3 6 3 3 6 3 1 14 1 4 15 2 0 16 4 6 17 5 5 18 6 23 19 45 22 20 44 25 22 40 25 22 40 22 20 44 24 21 42 23 19 45 26 23 38 22 20 44 22 20 44 26 23 38 21 24 34 7 3 15 8 2 16 14 26 26 14 26 26 8 2 16 15 25 25 8 2 16 9 5 17 15 25 25 15 25 25 9 5 17 16 27 28 9 5 17 10 7 18 16 27 28 16 27 28 10 7 18 17 28 36 10 7 18 11 9 19 17 28 36 17 28 36 11 9 19 18 29 29 11 9 19 12 11 20 18 29 29 18 29 29 12 11 20 19 30 27 12 11 20 13 13 21 19 30 27 19 30 27 13 13 21 20 31 24 13 13 21 7 3 22 20 31 24 20 31 24 7 3 22 14 26 23 15 33 25 22 34 32 14 32 26 14 32 26 22 34 32 21 35 33 16 27 28 24 21 35 15 33 25 15 33 25 24 21 35 22 34 32 16 27 28 17 28 36 24 21 35 24 21 35 17 28 36 25 22 37 17 28 36 18 36 29 25 22 37 25 22 37 18 36 29 23 37 39 18 36 29 19 38 27 23 37 39 23 37 39 19 38 27 26 39 41 19 38 27 20 40 24 26 39 41 26 39 41 20 40 24 27 41 43 14 32 23 21 35 30 20 40 24 20 40 24 21 35 30 27 41 43 21 24 34 26 23 38 27 42 31 0 16 4 5 18 6 1 14 1 1 14 1 5 18 6 4 15 2</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>0</double_sided> </technique> </extra> </geometry> <geometry id="polySurfaceShape6" name="polySurfaceShape6"> <mesh> <source id="polySurfaceShape6-positions" name="position"> <float_array id="polySurfaceShape6-positions-array" count="279">0 1.0737 -4.48184 0 1.38448 -2.89299 0 1.55516 -1.13204 0 1.60279 -0.156478 0 1.60616 0.794476 0 1.05303 2.61617 0 0.475674 3.19656 0 -0.537669 3.66769 0 -0.098813 -7.70062 0 0.480583 -6.38296 0 1.35142 1.71327 0 -1.67844 3.16098 0 -2.23232 2.09825 0 -1.98968 0.896106 0 -0.818957 -0.086782 0 0.168067 -4.5258 0 -0.274257 -6.38057 0 -0.793587 -7.30813 -0.299279 0.01465 -7.38697 -0.299279 -0.500107 -7.1304 -1.05341 0.61037 2.62625 -0.85211 -1.84608 2.22327 -0.681973 0.082346 3.09537 -0.95344 -0.638335 3.18857 -0.681973 -1.43286 2.91671 -0.961485 1.10329 0.70809 -0.525518 -0.827033 -0.084582 -1.08301 -1.55553 0.974147 -0.548293 1.17028 -1.12545 -0.498106 -0.055878 -1.25132 -0.742736 1.20212 -0.219114 -0.544753 1.17257 -2.94011 -0.497881 0.249801 -2.7567 -0.50165 0.766177 -4.51919 -0.433387 0.376894 -4.48692 -0.299279 -0.01218 -6.41888 -0.299279 0.349823 -6.37357 -0.81622 0.630885 -2.82902 -0.81976 0.482514 -1.19794 -1.12358 0.123049 0.353033 -1.35448 -0.297809 1.22729 -1.2451 -0.605636 2.1791 -1.04772 0.911157 1.68653 -1.63646 0.9581 -0.029371 -1.62518 0.334779 0.343151 -1.64222 0.949759 -0.600524 -1.63417 0.528486 -0.6382 -2.68734 0.826308 0.704678 -2.67606 0.202987 1.0772 -2.6931 0.817967 0.133525 -2.68506 0.411671 0.012435 -0.876279 -0.023918 -7.16743 -0.876279 0.04795 -6.72478 -0.876279 -0.357182 -7.07461 0 -0.300275 -2.04237 -0.366855 -0.303993 -2.04708 0.299279 -0.008364 -7.38698 0.299279 -0.522321 -7.12881 1.05341 0.61855 2.62433 0.85211 -1.83915 2.22901 0.681973 0.09199 3.0951 0.95344 -0.628397 3.19054 0.681973 -1.42377 2.92116 0.961485 1.10549 0.704649 0.525518 -0.827293 -0.082005 1.08301 -1.55249 0.978988 0.548293 1.16677 -1.12909 0.498106 -0.059777 -1.25114 0.742736 1.20143 -0.222858 0.544753 1.1634 -2.94375 0.497881 0.241211 -2.75746 0.50165 0.752093 -4.52156 0.433387 0.362912 -4.48807 0.299279 -0.032179 -6.41881 0.299279 0.329963 -6.37463 0.81622 0.622068 -2.83097 0.81976 0.478779 -1.19944 1.12358 0.124148 0.352648 1.35448 -0.293984 1.22821 1.2451 -0.598844 2.18098 1.04772 0.916407 1.68368 1.63646 0.958003 -0.032356 1.62518 0.335847 0.342107 1.64222 0.947883 -0.60348 1.63417 0.526496 -0.639843 2.68734 0.828499 0.7021 2.67606 0.206342 1.07656 2.6931 0.818379 0.130976 2.68506 0.411707 0.011152 0.876279 -0.046249 -7.16732 0.876279 0.026998 -6.7249 0.876279 -0.379222 -7.07346 0.366855 -0.310369 -2.04613</float_array> <technique_common> <accessor source="#polySurfaceShape6-positions-array" count="93" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="polySurfaceShape6-normals" name="normal"> <float_array id="polySurfaceShape6-normals-array" count="432">-0.738312 -0.64437 0.199202 -0.599726 -0.547166 0.583899 -0.729403 -0.059625 0.681481 -0.968276 -0.056107 0.243503 -0.725671 -0.510047 -0.461794 -0.763205 -0.584865 -0.274683 -0.999023 0.015879 -0.041246 -0.991864 -0.101777 -0.076474 -0.733691 -0.618861 -0.280552 -0.901871 -0.24219 -0.357733 -0.715351 -0.691938 -0.097438 -0.99617 0.033937 -0.080587 -0.65234 0.732058 -0.196325 -0.715351 -0.691938 -0.097438 -0.755992 0.653766 -0.032657 -0.669863 -0.629721 0.393363 0.000000 -0.996775 -0.080253 -0.704387 -0.648586 -0.288402 0 0.751439 -0.659803 -0.558874 0.485024 -0.672615 0 0.8194 0.573222 -0.71824 0.529869 0.450967 -0.572559 0.390396 0.720949 0 0.50204 0.864844 0 -0.030751 0.999527 0 -0.674243 0.73851 0 -0.983201 0.182527 0 0.967503 0.25286 -0.758981 0.633269 0.15139 0 -0.913839 -0.406077 0 -0.808063 -0.589096 0 0.993455 -0.114221 -0.574031 0.779324 -0.251281 -0.502508 0.856504 0.117844 0 0.996455 -0.084125 0 0.990127 -0.140176 -0.666826 0.737361 -0.107896 0 0.974861 -0.222812 0 -0.992494 -0.12229 0 -0.963952 0.266077 0 0.970296 -0.241921 -0.777876 0.628004 -0.022795 0 0.995567 0.094059 -0.991863 -0.101777 -0.076474 0.05829 0.87771 0.475634 0.161157 -0.61216 0.774137 -0.444967 0.714393 -0.540044 -0.464382 -0.537069 -0.704206 0.161157 -0.61216 0.774137 -0.464382 -0.537069 -0.704206 -0.292709 0.848324 0.441211 -0.568739 -0.566001 0.596808 -0.772093 0.511843 -0.376682 -0.787563 -0.369265 -0.493343 -0.772093 0.511843 -0.376682 -0.568739 -0.566001 0.596808 -0.787563 -0.369265 -0.493343 -0.730932 0.208235 -0.649906 -0.860294 0.398161 0.318375 -0.758067 -0.613243 -0.221962 -0.730932 0.208235 -0.649906 -0.734029 -0.394432 0.552833 -0.758067 -0.613243 -0.221962 -0.725671 -0.510047 -0.461794 0 -0.808063 -0.589096 -0.725671 -0.510047 -0.461794 -0.733691 -0.618861 -0.280552 -0.725671 -0.510047 -0.461794 -0.715351 -0.691938 -0.097438 0 -0.992494 -0.12229 -0.715351 -0.691938 -0.097438 0 -0.992494 -0.12229 0.738312 -0.643747 0.201209 0.968276 -0.055348 0.243677 0.729403 -0.057501 0.681663 0.599726 -0.545344 0.585601 0.725671 -0.511483 -0.460203 0.991864 -0.102014 -0.076157 0.999023 0.015751 -0.041296 0.763205 -0.585718 -0.272859 0.733691 -0.619732 -0.278623 0.901871 -0.243303 -0.356977 0.715351 -0.692238 -0.095282 0.99617 0.033686 -0.080692 0.65234 0.731443 -0.198605 0.715351 -0.692238 -0.095282 0.669863 -0.628493 0.395323 0.755992 0.653661 -0.034694 -0.000000 -0.99702 -0.077147 -0.000000 -0.467437 -0.884027 0.704387 -0.649481 -0.28638 0.558874 0.482926 -0.674123 0 0.821182 0.570666 0 0.504733 0.863276 0.572559 0.39264 0.719729 0.71824 0.531271 0.449314 0 -0.027636 0.999618 0 -0.671939 0.740607 0 -0.982627 0.18559 0 0.968286 0.249844 0.758981 0.633738 0.149416 0 -0.9151 -0.403228 0 -0.809895 -0.586575 0 0.993095 -0.117316 0 0.996188 -0.087229 0.502508 0.856867 0.115175 0.574031 0.778537 -0.253708 0 0.989685 -0.143261 0.666826 0.737021 -0.110193 0 0.974163 -0.225848 0 -0.992871 -0.119197 0 -0.963118 0.269079 0 0.969538 -0.244943 0.777876 0.62793 -0.024751 0 0.995855 0.090957 0.991863 -0.102014 -0.076157 -0.161157 -0.609745 0.776041 -0.05829 0.879188 0.472897 0.444967 0.712707 -0.542268 0.464382 -0.539261 -0.702529 0.464382 -0.539261 -0.702529 -0.161157 -0.609745 0.776041 0.568739 -0.564139 0.598568 0.292709 0.849695 0.438566 0.772093 0.510667 -0.378275 0.772093 0.510667 -0.378275 0.787563 -0.3708 -0.49219 0.787563 -0.3708 -0.49219 0.568739 -0.564139 0.598568 0.860294 0.399151 0.317133 0.730932 0.206209 -0.650551 0.730932 0.206209 -0.650551 0.758067 -0.613932 -0.22005 0.758067 -0.613932 -0.22005 0.734029 -0.392708 0.554059 0 -0.809895 -0.586575 0.725671 -0.511483 -0.460203 0.725671 -0.511483 -0.460203 0.725671 -0.511483 -0.460203 0.733691 -0.619732 -0.278623 0.715351 -0.692238 -0.095282 0 -0.992871 -0.119197 0.715351 -0.692238 -0.095282 0 -0.992871 -0.119197</float_array> <technique_common> <accessor source="#polySurfaceShape6-normals-array" count="144" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="polySurfaceShape6-map1" name="map1"> <float_array id="polySurfaceShape6-map1-array" count="296">0.138401 0.448552 0.091131 0.504922 0.0726 0.613309 0.141411 0.617769 0.318756 0.540492 0.223548 0.488189 0.206293 0.659762 0.1794 0.266414 0.265887 0.717173 0.115078 0.269158 0.398288 0.64569 0.371611 0.76621 0.49996 0.734464 0.506066 0.78645 0.977089 0.500499 0.923963 0.498904 0.977082 0.343121 0.92396 0.339119 0.646011 0.725949 0.977089 0.468903 0.805267 0.748109 0.809091 0.698726 0.875308 0.564757 0.869151 0.632165 0.916865 0.703583 0.890809 0.702386 0.093308 0.937622 0.110931 0.783652 0.078952 0.711621 0.024114 0.78795 0.016019 0.617537 0.060126 0.459118 0.109077 0.158126 0.17774 0.208981 0.144148 0.330334 0.163543 0.96768 0.174988 0.824684 0.242329 0.356459 0.343685 0.462066 0.366954 0.953624 0.366669 0.860033 0.304888 0.864376 0.300448 0.97948 0.50831 0.937924 0.515442 0.860345 0.649902 0.893464 0.246359 0.301349 0.245816 0.183937 0.648735 0.795356 0.643305 0.652625 0.799181 0.630584 0.807482 0.81536 0.241684 0.850894 0.235625 0.974932 0.452567 0.589444 0.125719 0.053537 0.168966 0.039206 0.231376 0.035441 0.460709 0.51566 0.500903 0.68739 0.61666 0.60555 0.37525 0.692765 0.295718 0.587567 0.320647 0.509141 0.310693 0.269158 0.274309 0.329614 0.304692 0.158126 0.26913 0.181429 0.275086 0.029432 0.33466 0.02687 0.977089 0.147439 0.97708 0.274897 0.923959 0.274832 0.923963 0.145843 0.138401 0.448552 0.091131 0.504922 0.0726 0.613309 0.141411 0.617769 0.295718 0.587567 0.223548 0.488189 0.206293 0.659762 0.265887 0.717173 0.37525 0.692765 0.371611 0.76621 0.49996 0.734464 0.506066 0.78645 0.648735 0.795356 0.646011 0.725949 0.805267 0.748109 0.809091 0.698726 0.875308 0.564757 0.869151 0.632165 0.916865 0.703583 0.890809 0.702386 0.093308 0.937622 0.110931 0.783652 0.078952 0.711621 0.024114 0.78795 0.016019 0.617537 0.060126 0.459118 0.144148 0.330334 0.163543 0.96768 0.174988 0.824684 0.242329 0.356459 0.320647 0.509141 0.366954 0.953624 0.366669 0.860033 0.304888 0.864376 0.300448 0.97948 0.50831 0.937924 0.515442 0.860345 0.649902 0.893464 0.643305 0.652625 0.799181 0.630584 0.807482 0.81536 0.241684 0.850894 0.235625 0.974932 0.1794 0.266414 0.115078 0.269158 0.109077 0.158126 0.17774 0.208981 0.310693 0.269158 0.274309 0.329614 0.26913 0.181429 0.304692 0.158126 0.246359 0.301349 0.245816 0.183937 0.125719 0.053537 0.168966 0.039206 0.275086 0.029432 0.33466 0.02687 0.231376 0.035441 0.977089 0.147439 0.97708 0.274897 0.923959 0.274832 0.923963 0.145843 0.977082 0.343121 0.92396 0.339119 0.977089 0.468903 0.923963 0.498904 0.977089 0.500499 0.343685 0.462066 0.318756 0.540492 0.452567 0.589444 0.460709 0.51566 0.398288 0.64569 0.500903 0.68739 0.61666 0.60555</float_array> <technique_common> <accessor source="#polySurfaceShape6-map1-array" count="148" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="polySurfaceShape6-vertices"> <input semantic="POSITION" source="#polySurfaceShape6-positions"/> </vertices> <triangles material="bodySG" count="176"> <input semantic="VERTEX" source="#polySurfaceShape6-vertices" offset="0"/> <input semantic="NORMAL" source="#polySurfaceShape6-normals" offset="1"/> <input semantic="TEXCOORD" source="#polySurfaceShape6-map1" offset="2" set="0"/> <p>21 0 0 24 1 1 41 3 3 41 3 3 24 1 1 23 2 2 27 5 5 40 6 6 26 4 62 26 4 62 40 6 6 39 7 8 26 4 62 39 7 8 29 8 61 29 8 61 39 7 8 38 9 11 29 8 61 38 9 11 32 10 12 32 10 12 38 9 11 37 11 13 33 12 48 34 13 18 37 11 13 37 11 13 34 13 18 32 10 12 33 12 48 36 14 20 34 13 18 34 13 18 36 14 20 35 15 21 21 0 0 41 3 3 27 5 5 27 5 5 41 3 3 40 6 6 17 16 22 19 17 23 8 18 24 8 18 24 19 17 23 18 19 25 5 20 26 20 21 27 6 23 29 6 23 29 20 21 27 22 22 28 6 23 29 22 22 28 7 24 30 7 24 30 22 22 28 23 2 2 23 2 2 24 1 1 7 24 30 7 24 30 24 1 1 11 25 31 24 1 1 21 0 0 11 25 31 11 25 31 21 0 0 12 26 34 10 27 35 42 28 36 5 20 26 5 20 26 42 28 36 20 21 27 27 5 5 26 4 62 13 29 37 13 29 37 26 4 62 14 30 63 2 31 39 28 32 40 3 34 42 3 34 42 28 32 40 30 33 41 31 36 44 28 32 40 1 35 43 1 35 43 28 32 40 2 31 39 33 12 48 31 36 44 0 37 45 0 37 45 31 36 44 1 35 43 34 13 18 35 15 21 15 38 49 15 38 49 35 15 21 16 39 50 36 14 20 33 12 48 9 40 51 9 40 51 33 12 48 0 37 45 12 26 34 21 0 0 13 29 37 13 29 37 21 0 0 27 5 5 35 15 21 19 17 23 16 39 50 16 39 50 19 17 23 17 16 22 8 18 24 18 19 25 9 40 51 9 40 51 18 19 25 36 14 20 33 12 48 37 11 13 31 36 44 38 9 11 28 32 40 37 11 13 37 11 13 28 32 40 31 36 44 40 6 6 41 3 3 42 28 36 42 28 36 41 3 3 20 21 27 23 2 2 22 22 28 41 3 3 41 3 3 22 22 28 20 21 27 42 28 36 25 41 52 40 6 6 40 6 6 25 41 52 39 7 8 4 42 53 25 41 52 10 27 35 10 27 35 25 41 52 42 28 36 25 41 52 4 42 53 30 33 41 30 33 41 4 42 53 3 34 42 25 41 52 30 33 41 39 7 8 30 33 9 43 44 32 39 43 7 39 43 7 43 44 32 44 45 33 28 32 65 45 46 67 30 33 64 30 33 64 45 46 67 43 44 66 28 32 65 38 9 46 45 46 67 45 46 67 38 9 46 46 47 47 38 9 46 39 7 7 46 49 47 46 49 47 39 7 7 44 48 33 43 44 32 47 50 55 44 45 33 44 45 33 47 50 55 48 51 56 45 46 67 49 52 68 43 44 66 43 44 66 49 52 68 47 50 69 46 47 47 50 53 57 45 46 67 45 46 67 50 53 57 49 54 68 46 49 47 44 48 33 50 56 57 50 56 57 44 48 33 48 55 56 36 14 70 18 19 71 52 58 73 52 58 73 18 19 71 51 57 72 18 19 71 19 17 16 51 60 72 51 60 72 19 17 16 53 59 17 35 15 19 52 61 15 19 17 16 19 17 16 52 61 15 53 62 17 35 15 19 36 14 14 52 61 15 26 4 4 55 63 54 14 30 38 14 30 38 55 63 54 54 64 58 26 65 4 29 66 10 55 67 54 55 67 54 29 66 10 32 68 59 55 63 54 15 69 60 54 64 58 34 13 18 15 38 49 32 70 12 32 68 59 15 71 60 55 67 54 59 72 74 79 73 77 62 75 75 62 75 75 79 73 77 61 74 76 77 77 81 78 78 80 64 76 78 64 76 78 78 78 80 65 79 79 76 81 83 77 77 81 67 80 82 67 80 82 77 77 81 64 76 78 75 83 85 76 81 83 70 82 84 70 82 84 76 81 83 67 80 82 71 84 86 75 83 85 72 85 87 72 85 87 75 83 85 70 82 84 71 84 86 72 85 87 74 87 88 74 87 88 72 85 87 73 86 89 78 78 80 79 73 77 65 79 79 65 79 79 79 73 77 59 72 74 17 88 90 8 89 92 57 90 91 8 89 92 56 91 93 57 90 91 5 92 94 6 93 97 58 95 95 58 95 95 6 93 97 60 94 96 6 93 97 7 96 98 60 94 96 60 94 96 7 96 98 61 74 76 11 97 99 62 75 75 7 96 98 7 96 98 62 75 75 61 74 76 12 98 100 59 72 74 11 97 99 11 97 99 59 72 74 62 75 75 10 99 101 5 92 94 80 100 102 80 100 102 5 92 94 58 95 95 14 102 104 64 76 78 13 101 103 13 101 103 64 76 78 65 79 79 2 103 105 3 104 108 66 106 106 66 106 106 3 104 108 68 105 107 2 103 105 66 106 106 1 107 109 1 107 109 66 106 106 69 108 110 1 107 109 69 108 110 0 109 111 0 109 111 69 108 110 71 84 86 16 111 113 73 86 89 15 110 112 15 110 112 73 86 89 72 85 87 0 109 111 71 84 86 9 112 114 9 112 114 71 84 86 74 87 88 12 98 100 13 101 103 59 72 74 59 72 74 13 101 103 65 79 79 17 88 90 57 90 91 16 111 113 16 111 113 57 90 91 73 86 89 8 89 92 9 112 114 56 91 93 56 91 93 9 112 114 74 87 88 71 84 86 69 108 110 75 83 85 76 81 83 75 83 85 66 106 106 66 106 106 75 83 85 69 108 110 78 78 80 80 100 102 79 73 77 79 73 77 80 100 102 58 95 95 61 74 76 79 73 77 60 94 96 60 94 96 79 73 77 58 95 95 77 77 81 63 113 115 78 78 80 78 78 80 63 113 115 80 100 102 4 114 116 10 99 101 63 113 115 63 113 115 10 99 101 80 100 102 63 113 115 68 105 107 4 114 116 4 114 116 68 105 107 3 104 108 63 113 115 77 77 81 68 105 107 82 116 120 81 117 119 77 115 117 77 115 117 81 117 119 68 105 118 81 117 124 83 118 123 68 105 121 68 105 121 83 118 123 66 106 122 66 106 122 83 118 123 76 81 125 76 81 125 83 118 123 84 119 126 76 81 125 84 120 126 77 77 117 77 77 117 84 120 126 82 121 120 86 122 128 85 123 127 82 116 120 82 116 120 85 123 127 81 117 119 85 123 130 87 124 129 81 117 124 81 117 124 87 124 129 83 118 123 87 125 129 88 126 131 83 118 123 83 118 123 88 126 131 84 119 126 84 120 126 88 127 131 82 121 120 82 121 120 88 127 131 86 128 128 74 87 132 90 129 135 56 91 133 56 91 133 90 129 135 89 130 134 56 91 133 89 131 134 57 90 136 57 90 136 89 131 134 91 132 137 91 133 137 90 134 139 57 90 136 57 90 136 90 134 139 73 86 138 73 86 138 90 134 139 74 87 140 54 135 144 92 136 143 14 102 141 14 102 141 92 136 143 64 76 142 64 137 142 92 138 143 67 139 145 92 138 143 70 140 146 67 139 145 92 136 143 54 135 144 15 141 147 72 85 87 70 142 84 15 110 112 70 140 146 92 138 143 15 143 147</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>0</double_sided> </technique> </extra> </geometry> <geometry id="pCylinderShape5" name="pCylinderShape5"> <mesh> <source id="pCylinderShape5-positions" name="position"> <float_array id="pCylinderShape5-positions-array" count="84">4.17635 -0.754522 0.773269 3.42068 -0.904693 1.04782 2.66502 -0.754522 0.773269 2.66502 -0.029434 -0.552396 3.42068 0.120736 -0.826951 4.17635 -0.029434 -0.552396 4.48935 -0.391978 0.110436 3.62853 0.834659 1.38576 3.09816 0.72926 1.57846 2.56778 0.834659 1.38576 2.56778 1.34357 0.45532 3.09816 1.44897 0.26262 3.62853 1.34357 0.45532 3.84822 1.08912 0.920538 3.47767 0.907034 1.25343 3.09816 0.831614 1.39132 2.71864 0.907034 1.25343 2.71864 1.2712 0.587642 3.09816 1.34662 0.449753 3.47767 1.2712 0.587642 3.63488 1.08912 0.920538 3.51881 0.623121 1.10571 3.12471 0.544804 1.24889 3.12471 1.07959 0.271158 2.73062 0.623121 1.10571 2.73062 1.00127 0.414344 3.51881 1.00127 0.414344 3.68205 0.812195 0.760025</float_array> <technique_common> <accessor source="#pCylinderShape5-positions-array" count="28" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape5-normals" name="normal"> <float_array id="pCylinderShape5-normals-array" count="318">0.371414 -0.21965 0.902111 0.371414 -0.21965 0.902111 0.371414 -0.21965 0.902111 0.371414 -0.21965 0.902111 -0.380669 -0.352738 0.854791 -0.380669 -0.352738 0.854791 -0.380669 -0.352738 0.854791 -0.380669 -0.352738 0.854791 -0.998345 -0.05045 -0.027594 -0.998345 -0.05045 -0.027594 -0.998345 -0.05045 -0.027594 -0.998345 -0.05045 -0.027594 -0.380669 0.529467 -0.758127 -0.380669 0.529467 -0.758127 -0.380669 0.529467 -0.758127 -0.380669 0.529467 -0.758127 0.371414 0.641105 -0.671592 0.371414 0.641105 -0.671592 0.371414 0.641105 -0.671592 0.371414 0.641105 -0.671592 0.87175 0.463779 -0.157992 0.87175 0.463779 -0.157992 0.87175 0.463779 -0.157992 0.87175 0.463779 -0.157992 0.871749 0.117153 0.475739 0.871749 0.117153 0.475739 0.871749 0.117153 0.475739 0.871749 0.117153 0.475739 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.47987 0 -0.877339 -0.47987 0 -0.877339 -0.47987 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.87734 0.47987 0 0.87734 0.47987 0 0.87734 0.47987 0 0.87734 0.47987 -0.000000 0.87734 0.47987 -0.000000 0.87734 0.47987 -0.000000 0.87734 0.47987 -0.000000 0.87734 0.47987 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 0 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.000000 0.877339 0.479871 -0.381724 0.382507 -0.841413 -0.381724 0.382507 -0.841413 -0.381724 0.382507 -0.841413 -0.381724 0.382507 -0.841413 0.38261 0.439112 -0.81289 0.38261 0.439112 -0.81289 0.38261 0.439112 -0.81289 0.38261 0.439112 -0.81289 0.9993 0.032824 0.017953 0.9993 0.032824 0.017953 0.9993 0.032824 0.017953 0.9993 0.032824 0.017953 0.382125 -0.487189 0.785256 0.382125 -0.487189 0.785256 0.382125 -0.487189 0.785256 0.382125 -0.487189 0.785256 -0.380144 -0.540025 0.750908 -0.380144 -0.540025 0.750908 -0.380144 -0.540025 0.750908 -0.380144 -0.540025 0.750908 -0.914201 -0.308233 0.263115 -0.914201 -0.308233 0.263115 -0.914201 -0.308233 0.263115 -0.914201 -0.308233 0.263115 -0.916524 0.071943 -0.393455 -0.916524 0.071943 -0.393455 -0.916524 0.071943 -0.393455 -0.916524 0.071943 -0.393455 0.000001 0.877338 0.479872 0.000001 0.877338 0.479872 0.000001 0.877338 0.479872 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0 -0.877339 -0.479871</float_array> <technique_common> <accessor source="#pCylinderShape5-normals-array" count="106" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape5-map1" name="map1"> <float_array id="pCylinderShape5-map1-array" count="92">0.882199 0.969227 0.865606 0.887595 0.978915 0.887595 0.962321 0.969227 0.882199 0.805964 0.92226 0.772151 0.962321 0.805964 0.571997 0.037627 0.609268 0.037627 0.665176 0.037627 0.759353 0.037627 0.796624 0.037627 0.833896 0.037627 0.871167 0.037627 0.908439 0.037627 0.571997 0.375858 0.609268 0.375858 0.665176 0.375858 0.759353 0.375858 0.796624 0.375858 0.833896 0.375858 0.871167 0.375858 0.908439 0.375858 0.9079 0.442931 0.871224 0.442954 0.609633 0.442249 0.571509 0.442088 0.833544 0.442624 0.66624 0.442296 0.795409 0.44253 0.904508 0.505177 0.441107 0.026428 0.609659 0.505177 0.572444 0.505177 0.36423 0.096788 0.666417 0.505177 0.758932 0.442426 0.758928 0.505177 0.517984 0.096788 0.795656 0.505177 0.517984 0.436515 0.833649 0.505177 0.36423 0.436515 0.870884 0.505177 0.332386 0.266651 0.549828 0.266651</float_array> <technique_common> <accessor source="#pCylinderShape5-map1-array" count="46" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCylinderShape5-vertices"> <input semantic="POSITION" source="#pCylinderShape5-positions"/> </vertices> <triangles material="bodySG" count="52"> <input semantic="VERTEX" source="#pCylinderShape5-vertices" offset="0"/> <input semantic="NORMAL" source="#pCylinderShape5-normals" offset="1"/> <input semantic="TEXCOORD" source="#pCylinderShape5-map1" offset="2" set="0"/> <p>0 0 7 7 1 15 1 3 8 1 3 8 7 1 15 8 2 16 1 4 8 8 5 16 2 7 9 2 7 9 8 5 16 9 6 17 2 8 9 9 9 17 3 11 10 3 11 10 9 9 17 10 10 18 10 13 18 11 14 19 3 12 10 3 12 10 11 14 19 4 15 11 11 17 19 12 18 20 4 16 11 4 16 11 12 18 20 5 19 12 12 21 20 13 22 21 5 20 12 5 20 12 13 22 21 6 23 13 6 24 13 13 25 21 0 27 14 0 27 14 13 25 21 7 26 22 2 28 0 3 29 3 1 31 1 1 31 1 3 29 3 4 30 2 0 32 4 5 33 6 6 34 5 23 35 45 25 36 40 22 38 44 22 38 44 25 36 40 24 37 42 23 39 45 22 40 44 26 42 38 26 42 38 22 40 44 21 41 34 7 43 15 14 44 26 8 46 16 8 46 16 14 44 26 15 45 25 8 47 16 15 48 25 9 50 17 9 50 17 15 48 25 16 49 28 9 51 17 16 52 28 10 54 18 10 54 18 16 52 28 17 53 36 10 55 18 17 56 36 11 58 19 11 58 19 17 56 36 18 57 29 11 59 19 18 60 29 12 62 20 12 62 20 18 60 29 19 61 27 12 63 20 19 64 27 13 66 21 13 66 21 19 64 27 20 65 24 13 67 21 20 68 24 7 70 22 7 70 22 20 68 24 14 69 23 21 72 33 22 73 32 14 71 26 14 71 26 22 73 32 15 74 25 22 76 32 24 77 35 15 75 25 15 75 25 24 77 35 16 78 28 16 79 28 24 80 35 17 82 36 17 82 36 24 80 35 25 81 37 17 83 36 25 84 37 18 86 29 18 86 29 25 84 37 23 85 39 18 87 29 23 88 39 19 90 27 19 90 27 23 88 39 26 89 41 19 91 27 26 92 41 20 94 24 20 94 24 26 92 41 27 93 43 27 96 43 21 97 30 20 95 24 20 95 24 21 97 30 14 98 23 21 99 34 27 100 31 26 101 38 0 102 4 1 103 1 5 105 6 5 105 6 1 103 1 4 104 2</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> </technique> </extra> </geometry> <geometry id="pCylinderShape6" name="pCylinderShape6"> <mesh> <source id="pCylinderShape6-positions" name="position"> <float_array id="pCylinderShape6-positions-array" count="84">1.76706 -0.839979 -6.71651 1.30318 -0.932184 -6.54794 0.839301 -0.839979 -6.71651 0.839301 -0.394775 -7.53047 1.30318 -0.302571 -7.69905 1.76706 -0.394775 -7.53047 1.9592 -0.617377 -7.12349 1.43077 0.135777 -6.34045 1.10519 0.071062 -6.22213 0.77961 0.135777 -6.34045 0.77961 0.44825 -6.91173 1.10519 0.512965 -7.03005 1.43077 0.44825 -6.91173 1.56563 0.292013 -6.62609 1.33816 0.180216 -6.42169 1.10519 0.133908 -6.33703 0.872215 0.180216 -6.42169 0.872215 0.403811 -6.83049 1.10519 0.450119 -6.91515 1.33816 0.403811 -6.83049 1.43467 0.292013 -6.62609 1.36341 0.005892 -6.5124 1.12149 -0.042193 -6.42448 1.12149 0.286162 -7.02481 0.879569 0.005892 -6.5124 0.879569 0.238076 -6.93689 1.36341 0.238076 -6.93689 1.46362 0.121984 -6.72465</float_array> <technique_common> <accessor source="#pCylinderShape6-positions-array" count="28" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape6-normals" name="normal"> <float_array id="pCylinderShape6-normals-array" count="129">0.668927 -0.055154 0.741279 0.398386 0.529409 0.749009 -0.003124 0.399059 0.91692 -0.005009 -0.309765 0.9508 -0.524191 0.513711 0.679209 -0.720643 -0.669132 0.181485 -0.524192 0.849027 0.066156 -0.720643 -0.208148 -0.661323 -0.003124 0.987335 -0.158616 -0.005009 0.63349 -0.773735 0.398388 0.916268 0.04172 0.668927 0.594418 -0.446322 0.547914 0.733924 0.401428 0.934876 0.311434 0.170342 0 -0.877339 -0.479871 0 -0.877339 -0.479871 0.000000 -0.877339 -0.479871 0.000000 -0.877339 -0.479871 0.000001 -0.877339 -0.479871 -0.000000 0.877339 0.479871 0.714959 0.218905 0.664013 0.706194 0.689473 -0.160988 -0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 0.000000 0.877339 0.479871 -0.000000 0.877339 0.47987 0 0.877339 0.479871 0.526311 0.847972 0.062772 0.533429 0.502086 0.680708 0 0.87734 0.47987 0.000002 0.877339 0.47987 0.000001 0.877339 0.479871 -0.702387 0.245837 -0.667994 -0.702387 0.245837 -0.667994 0.000479 0.444817 -0.895621 0.000479 0.444817 -0.895621 0.001071 -0.555863 0.831273 0.001071 -0.555863 0.831273 -0.699638 -0.458439 0.548033 -0.699638 -0.458439 0.548033 -0.989314 -0.127664 -0.07042 -0.989314 -0.127664 -0.07042 0 0.877339 0.479871</float_array> <technique_common> <accessor source="#pCylinderShape6-normals-array" count="43" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCylinderShape6-map1" name="map1"> <float_array id="pCylinderShape6-map1-array" count="92">0.882199 0.969227 0.865606 0.887595 0.978915 0.887595 0.962321 0.969227 0.882199 0.805964 0.92226 0.772151 0.962321 0.805964 0.571997 0.037627 0.609268 0.037627 0.665176 0.037627 0.759353 0.037627 0.796624 0.037627 0.833896 0.037627 0.871167 0.037627 0.908439 0.037627 0.571997 0.375858 0.609268 0.375858 0.665176 0.375858 0.759353 0.375858 0.796624 0.375858 0.833896 0.375858 0.871167 0.375858 0.908439 0.375858 0.9079 0.442931 0.871224 0.442954 0.609633 0.442249 0.571509 0.442088 0.833544 0.442624 0.66624 0.442296 0.795409 0.44253 0.904508 0.505177 0.441107 0.026428 0.609659 0.505177 0.572444 0.505177 0.36423 0.096788 0.666417 0.505177 0.758932 0.442426 0.758928 0.505177 0.517984 0.096788 0.795656 0.505177 0.517984 0.436515 0.833649 0.505177 0.36423 0.436515 0.870884 0.505177 0.332386 0.266651 0.549828 0.266651</float_array> <technique_common> <accessor source="#pCylinderShape6-map1-array" count="46" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCylinderShape6-vertices"> <input semantic="POSITION" source="#pCylinderShape6-positions"/> </vertices> <triangles material="bodySG" count="52"> <input semantic="VERTEX" source="#pCylinderShape6-vertices" offset="0"/> <input semantic="NORMAL" source="#pCylinderShape6-normals" offset="1"/> <input semantic="TEXCOORD" source="#pCylinderShape6-map1" offset="2" set="0"/> <p>0 0 7 7 1 15 1 3 8 1 3 8 7 1 15 8 2 16 1 3 8 8 2 16 2 5 9 2 5 9 8 2 16 9 4 17 2 5 9 9 4 17 3 7 10 3 7 10 9 4 17 10 6 18 10 6 18 11 8 19 3 7 10 3 7 10 11 8 19 4 9 11 11 8 19 12 10 20 4 9 11 4 9 11 12 10 20 5 11 12 12 10 20 13 12 21 5 11 12 5 11 12 13 12 21 6 13 13 6 13 13 13 12 21 0 0 14 0 0 14 13 12 21 7 1 22 2 5 0 3 7 3 1 15 1 1 15 1 3 7 3 4 14 2 0 16 4 5 17 6 6 18 5 23 19 45 25 20 40 22 22 44 22 22 44 25 20 40 24 21 42 23 19 45 22 22 44 26 24 38 26 24 38 22 22 44 21 23 34 7 1 15 14 25 26 8 2 16 8 2 16 14 25 26 15 26 25 8 2 16 15 26 25 9 4 17 9 4 17 15 26 25 16 27 28 9 4 17 16 27 28 10 6 18 10 6 18 16 27 28 17 28 36 10 6 18 17 28 36 11 8 19 11 8 19 17 28 36 18 29 29 11 8 19 18 29 29 12 10 20 12 10 20 18 29 29 19 30 27 12 10 20 19 30 27 13 12 21 13 12 21 19 30 27 20 31 24 13 12 21 20 31 24 7 1 22 7 1 22 20 31 24 14 25 23 21 33 33 22 34 32 14 32 26 14 32 26 22 34 32 15 35 25 22 34 32 24 21 35 15 35 25 15 35 25 24 21 35 16 27 28 16 27 28 24 21 35 17 28 36 17 28 36 24 21 35 25 20 37 17 28 36 25 20 37 18 37 29 18 37 29 25 20 37 23 36 39 18 37 29 23 36 39 19 39 27 19 39 27 23 36 39 26 38 41 19 39 27 26 38 41 20 41 24 20 41 24 26 38 41 27 40 43 27 40 43 21 33 30 20 41 24 20 41 24 21 33 30 14 32 23 21 23 34 27 42 31 26 24 38 0 16 4 1 15 1 5 17 6 5 17 6 1 15 1 4 14 2</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>0</double_sided> </technique> </extra> </geometry> <geometry id="pCubeShape1" name="pCubeShape1"> <mesh> <source id="pCubeShape1-positions" name="position"> <float_array id="pCubeShape1-positions-array" count="24">3.00305 -2.40624 -0.439257 3.91368 -2.35312 -0.453479 2.81118 -0.776627 0.664219 4.17812 -0.763302 0.633382 2.81118 -0.066134 -0.581613 4.17812 -0.145872 -0.443504 3.00305 -2.00245 -1.31345 3.91368 -2.05556 -1.22144</float_array> <technique_common> <accessor source="#pCubeShape1-positions-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape1-normals" name="normal"> <float_array id="pCubeShape1-normals-array" count="24">-0.688261 -0.46258 0.558853 0.706405 -0.469936 0.529293 -0.688261 -0.46258 0.558853 0.706405 -0.469936 0.529293 -0.657847 0.206724 -0.724226 0.737137 0.16175 -0.656098 -0.657847 0.206724 -0.724226 0.737137 0.16175 -0.656098</float_array> <technique_common> <accessor source="#pCubeShape1-normals-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape1-map1" name="map1"> <float_array id="pCubeShape1-map1-array" count="20">0.979114 0.017977 0.013909 0.017977 0.979114 0.98565 0.013909 0.98565 0.013909 0.98565 0.979114 0.98565 0.013909 0.017977 0.979114 0.017977 0.013909 0.98565 0.013909 0.017977</float_array> <technique_common> <accessor source="#pCubeShape1-map1-array" count="10" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCubeShape1-vertices"> <input semantic="POSITION" source="#pCubeShape1-positions"/> <input semantic="NORMAL" source="#pCubeShape1-normals"/> </vertices> <triangles material="engine_flameSG" count="8"> <input semantic="VERTEX" source="#pCubeShape1-vertices" offset="0"/> <input semantic="TEXCOORD" source="#pCubeShape1-map1" offset="1" set="0"/> <p>0 0 1 1 2 2 2 2 1 1 3 3 4 4 5 5 6 6 6 6 5 5 7 7 7 7 5 5 1 1 1 1 5 5 3 3 0 0 2 2 6 9 6 9 2 2 4 8</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>0</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> <geometry id="pCubeShape2" name="pCubeShape2"> <mesh> <source id="pCubeShape2-positions" name="position"> <float_array id="pCubeShape2-positions-array" count="24">-3.02406 -2.40624 -0.439257 -3.93456 -2.35312 -0.453479 -2.83221 -0.776627 0.664219 -4.19896 -0.763302 0.633382 -2.83221 -0.066134 -0.581613 -4.19896 -0.145872 -0.443504 -3.02406 -2.00245 -1.31345 -3.93456 -2.05556 -1.22144</float_array> <technique_common> <accessor source="#pCubeShape2-positions-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape2-normals" name="normal"> <float_array id="pCubeShape2-normals-array" count="24">0.688261 -0.462574 0.558859 -0.706409 -0.469924 0.529298 0.688261 -0.462574 0.558859 -0.706409 -0.469924 0.529298 0.657842 0.206734 -0.724227 -0.737145 0.161759 -0.656088 0.657842 0.206734 -0.724227 -0.737145 0.161759 -0.656088</float_array> <technique_common> <accessor source="#pCubeShape2-normals-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape2-map1" name="map1"> <float_array id="pCubeShape2-map1-array" count="20">0.979114 0.017977 0.013909 0.017977 0.979114 0.98565 0.013909 0.98565 0.013909 0.98565 0.979114 0.98565 0.013909 0.017977 0.979114 0.017977 0.013909 0.98565 0.013909 0.017977</float_array> <technique_common> <accessor source="#pCubeShape2-map1-array" count="10" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCubeShape2-vertices"> <input semantic="POSITION" source="#pCubeShape2-positions"/> <input semantic="NORMAL" source="#pCubeShape2-normals"/> </vertices> <triangles material="engine_flameSG" count="8"> <input semantic="VERTEX" source="#pCubeShape2-vertices" offset="0"/> <input semantic="TEXCOORD" source="#pCubeShape2-map1" offset="1" set="0"/> <p>0 0 2 2 1 1 1 1 2 2 3 3 4 4 6 6 5 5 5 5 6 6 7 7 3 3 5 5 1 1 1 1 5 5 7 7 4 8 2 2 6 9 6 9 2 2 0 0</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> <geometry id="pCubeShape3" name="pCubeShape3"> <mesh> <source id="pCubeShape3-positions" name="position"> <float_array id="pCubeShape3-positions-array" count="24">1.00177 -1.88868 -7.46047 1.58044 -1.85492 -7.46951 0.879835 -0.853112 -6.75925 1.74848 -0.844644 -6.77885 0.879835 -0.401617 -7.55094 1.74848 -0.452288 -7.46317 1.00177 -1.63208 -8.01599 1.58044 -1.66583 -7.95752</float_array> <technique_common> <accessor source="#pCubeShape3-positions-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape3-normals" name="normal"> <float_array id="pCubeShape3-normals-array" count="24">-0.688261 -0.462581 0.558853 0.706405 -0.469936 0.529293 -0.688261 -0.462581 0.558853 0.706405 -0.469936 0.529293 -0.657847 0.206724 -0.724226 0.737137 0.16175 -0.656099 -0.657847 0.206724 -0.724226 0.737137 0.16175 -0.656099</float_array> <technique_common> <accessor source="#pCubeShape3-normals-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape3-map1" name="map1"> <float_array id="pCubeShape3-map1-array" count="20">0.979114 0.017977 0.013909 0.017977 0.979114 0.98565 0.013909 0.98565 0.013909 0.98565 0.979114 0.98565 0.013909 0.017977 0.979114 0.017977 0.013909 0.98565 0.013909 0.017977</float_array> <technique_common> <accessor source="#pCubeShape3-map1-array" count="10" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCubeShape3-vertices"> <input semantic="POSITION" source="#pCubeShape3-positions"/> <input semantic="NORMAL" source="#pCubeShape3-normals"/> </vertices> <triangles material="engine_flameSG" count="8"> <input semantic="VERTEX" source="#pCubeShape3-vertices" offset="0"/> <input semantic="TEXCOORD" source="#pCubeShape3-map1" offset="1" set="0"/> <p>0 0 1 1 2 2 2 2 1 1 3 3 4 4 5 5 6 6 6 6 5 5 7 7 7 7 5 5 1 1 1 1 5 5 3 3 0 0 2 2 6 9 6 9 2 2 4 8</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>0</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> <geometry id="pCubeShape4" name="pCubeShape4"> <mesh> <source id="pCubeShape4-positions" name="position"> <float_array id="pCubeShape4-positions-array" count="24">-1.0672 -1.91315 -7.46047 -1.6458 -1.87939 -7.46951 -0.94529 -0.877584 -6.75925 -1.81382 -0.869116 -6.77885 -0.94529 -0.426089 -7.55094 -1.81382 -0.476759 -7.46317 -1.0672 -1.65655 -8.01599 -1.6458 -1.69031 -7.95752</float_array> <technique_common> <accessor source="#pCubeShape4-positions-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape4-normals" name="normal"> <float_array id="pCubeShape4-normals-array" count="24">0.688261 -0.462574 0.558859 -0.706409 -0.469924 0.529298 0.688261 -0.462574 0.558859 -0.706409 -0.469924 0.529298 0.657843 0.206734 -0.724226 -0.737144 0.161759 -0.656088 0.657843 0.206734 -0.724226 -0.737144 0.161759 -0.656088</float_array> <technique_common> <accessor source="#pCubeShape4-normals-array" count="8" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape4-map1" name="map1"> <float_array id="pCubeShape4-map1-array" count="20">0.979114 0.017977 0.013909 0.017977 0.979114 0.98565 0.013909 0.98565 0.013909 0.98565 0.979114 0.98565 0.013909 0.017977 0.979114 0.017977 0.013909 0.98565 0.013909 0.017977</float_array> <technique_common> <accessor source="#pCubeShape4-map1-array" count="10" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCubeShape4-vertices"> <input semantic="POSITION" source="#pCubeShape4-positions"/> <input semantic="NORMAL" source="#pCubeShape4-normals"/> </vertices> <triangles material="engine_flameSG" count="8"> <input semantic="VERTEX" source="#pCubeShape4-vertices" offset="0"/> <input semantic="TEXCOORD" source="#pCubeShape4-map1" offset="1" set="0"/> <p>0 0 2 2 1 1 1 1 2 2 3 3 4 4 6 6 5 5 5 5 6 6 7 7 3 3 5 5 1 1 1 1 5 5 7 7 4 8 2 2 6 9 6 9 2 2 0 0</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="player_ship03"> <node id="group1" name="group1" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <node id="pCylinder1" name="pCylinder1" type="NODE"> <translate sid="rotatePivot">-3.48044 0.348569 0.515487</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">3.48044 -0.348569 -0.515487</translate> <translate sid="scalePivot">-3.48044 0.348569 0.515487</translate> <translate sid="scalePivotInverse">3.48044 -0.348569 -0.515487</translate> <instance_geometry url="#pCylinderShape1"> <bind_material> <technique_common> <instance_material symbol="bodySG" target="#body"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCylinder3" name="pCylinder3" type="NODE"> <translate sid="rotatePivot">-1.32786 -0.162682 -6.87479</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">1.32786 0.162682 6.87479</translate> <translate sid="scalePivot">-1.32786 -0.162682 -6.87479</translate> <translate sid="scalePivotInverse">1.32786 0.162682 6.87479</translate> <instance_geometry url="#pCylinderShape3"> <bind_material> <technique_common> <instance_material symbol="bodySG" target="#body"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="polySurface7" name="polySurface7" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <instance_geometry url="#polySurfaceShape6"> <bind_material> <technique_common> <instance_material symbol="bodySG" target="#body"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCylinder5" name="pCylinder5" type="NODE"> <translate sid="rotatePivot">3.42068 0.348569 0.515487</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">-3.42068 -0.348569 -0.515487</translate> <translate sid="scalePivot">3.42068 0.348569 0.515487</translate> <translate sid="scalePivotInverse">-3.42068 -0.348569 -0.515487</translate> <instance_geometry url="#pCylinderShape5"> <bind_material> <technique_common> <instance_material symbol="bodySG" target="#body"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCylinder6" name="pCylinder6" type="NODE"> <translate sid="rotatePivot">1.30318 -0.162682 -6.87479</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">-1.30318 0.162682 6.87479</translate> <translate sid="scalePivot">1.30318 -0.162682 -6.87479</translate> <translate sid="scalePivotInverse">-1.30318 0.162682 6.87479</translate> <instance_geometry url="#pCylinderShape6"> <bind_material> <technique_common> <instance_material symbol="bodySG" target="#body"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCube1" name="pCube1" type="NODE"> <translate sid="rotatePivot">3.39481 -1.32472 -0.5843</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">-3.39481 1.32472 0.5843</translate> <translate sid="scalePivot">3.39481 -1.32472 -0.5843</translate> <translate sid="scalePivotInverse">-3.39481 1.32472 0.5843</translate> <instance_geometry url="#pCubeShape1"> <bind_material> <technique_common> <instance_material symbol="engine_flameSG" target="#engine_flame"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> <bind_vertex_input semantic="TEX1" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCube2" name="pCube2" type="NODE"> <translate sid="rotatePivot">-3.41576 -1.32472 -0.5843</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">3.41576 1.32472 0.5843</translate> <translate sid="scalePivot">-3.41576 -1.32472 -0.5843</translate> <translate sid="scalePivotInverse">3.41576 1.32472 0.5843</translate> <instance_geometry url="#pCubeShape2"> <bind_material> <technique_common> <instance_material symbol="engine_flameSG" target="#engine_flame"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> <bind_vertex_input semantic="TEX1" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCube3" name="pCube3" type="NODE"> <translate sid="rotatePivot">1.25071 -1.20141 -7.55264</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">-1.25071 1.20141 7.55264</translate> <translate sid="scalePivot">1.25071 -1.20141 -7.55264</translate> <translate sid="scalePivotInverse">-1.25071 1.20141 7.55264</translate> <instance_geometry url="#pCubeShape3"> <bind_material> <technique_common> <instance_material symbol="engine_flameSG" target="#engine_flame"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> <bind_vertex_input semantic="TEX1" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <node id="pCube4" name="pCube4" type="NODE"> <translate sid="rotatePivot">-1.31612 -1.22588 -7.55264</translate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <translate sid="rotatePivotInverse">1.31612 1.22588 7.55264</translate> <translate sid="scalePivot">-1.31612 -1.22588 -7.55264</translate> <translate sid="scalePivotInverse">1.31612 1.22588 7.55264</translate> <instance_geometry url="#pCubeShape4"> <bind_material> <technique_common> <instance_material symbol="engine_flameSG" target="#engine_flame"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> <bind_vertex_input semantic="TEX1" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> </node> <extra> <technique profile="FCOLLADA"> <start_time>0.041666</start_time> <end_time>2</end_time> </technique> </extra> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; public static var _stationaryGun:XML = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <author>zworp</author> </contributor> <created>2008-01-12T20:03:34Z</created> <modified>2008-01-12T20:03:34Z</modified> <unit meter="0.01" name="centimeter"/> <up_axis>Y_UP</up_axis> </asset> <library_images> <image id="file1" name="file1"> <init_from>../art/enemy_base.psd</init_from> <extra> </extra> </image> </library_images> <library_materials> <material id="baseMat" name="baseMat"> <instance_effect url="#baseMat-fx"/> </material> </library_materials> <library_effects> <effect id="baseMat-fx"> <profile_COMMON> <newparam sid="file1-surface"> <surface type="2D"> <init_from>file1</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file1-sampler"> <sampler2D> <source>file1-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file1-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="RGB_ZERO"> <color>0 0 0 1</color> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> </library_effects> <library_geometries> <geometry id="polySurfaceShape4" name="polySurfaceShape4"> <mesh> <source id="polySurfaceShape4-positions" name="position"> <float_array id="polySurfaceShape4-positions-array" count="114">1.25665 0.463193 -4.49223 -2.46284 0.463193 -4.00255 -4.74666 0.463193 -1.02622 -4.25698 0.463193 2.69327 -1.28065 0.463193 4.97709 2.43884 0.463193 4.48741 4.72266 0.463193 1.51108 4.23298 0.463193 -2.20841 0.033528 3.33734 -2.93235 -2.59086 4.12785 0.660398 0.001732 3.21402 3.41721 2.43443 4.06163 -0.175539 -0.012001 5.36488 0.24243 -7.19711 4.71764 6.06707 -2.9967 4.71764 6.06707 -7.19711 10.3118 5.79929 -2.9967 10.3118 5.79929 -7.19711 9.7539 -5.85519 -2.9967 9.7539 -5.85519 -7.19711 4.15975 -5.5874 -2.9967 4.15975 -5.5874 3.08288 4.71764 6.06707 7.28329 4.71764 6.06707 3.08288 10.3118 5.79929 7.28329 10.3118 5.79929 3.08288 9.7539 -5.85519 7.28329 9.7539 -5.85519 3.08288 4.15975 -5.5874 7.28329 4.15975 -5.5874 -2.9967 6.53867 0.139313 -2.9967 7.86335 -1.37971 -2.9967 8.00239 1.52486 3.08288 6.53867 0.139313 3.08288 8.00239 1.52486 3.08288 7.86335 -1.37971 -0.03028 6.43461 -1.31132 -0.058216 6.57365 1.59325 0.000796 5.10994 0.207705</float_array> <technique_common> <accessor source="#polySurfaceShape4-positions-array" count="38" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="polySurfaceShape4-normals" name="normal"> <float_array id="polySurfaceShape4-normals-array" count="273">0.209467 0.545095 -0.811785 -0.369428 0.561547 -0.740397 -0.0665 0.725364 -0.685146 -0.78234 0.58567 -0.21198 -0.637919 0.766803 0.07122 -0.725412 0.557127 0.404211 -0.197197 0.548558 0.812526 0.086971 0.720186 0.688309 0.366169 0.577094 0.729988 0.76698 0.608024 0.205058 0.64579 0.761196 -0.05946 0.722724 0.56995 -0.390932 0.025391 0.999596 0.012734 0 0.047814 0.998856 0 0.047814 0.998856 0 0.047814 0.998856 0 0.047814 0.998856 0 0.998856 -0.047814 0 0.998856 -0.047814 0 0.998856 -0.047814 0 0.998856 -0.047814 0 -0.047814 -0.998856 0 -0.047814 -0.998856 0 -0.047814 -0.998856 0 -0.047814 -0.998856 0 -0.998856 0.047814 0 -0.998856 0.047814 0 -0.998856 0.047814 0 -0.998856 0.047814 -1 0 0 -1 0 0 -1 0 0 -1 0 0 0 0.047814 0.998856 0 0.047814 0.998856 0 0.047814 0.998856 0 0.047814 0.998856 0 0.998856 -0.047814 0 0.998856 -0.047814 0 0.998856 -0.047814 0 0.998856 -0.047814 0 -0.047814 -0.998856 0 -0.047814 -0.998856 0 -0.047814 -0.998856 0 -0.047814 -0.998856 0 -0.998856 0.047814 0 -0.998856 0.047814 0 -0.998856 0.047814 0 -0.998856 0.047814 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0.000000 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 -1 0.000000 0 -1 0.000000 0 -1 0 0 -1 -0.000000 0 -1 -0.000000 0 -1 -0.000000 0 -1 -0.000000 0 0.31344 -0.649467 0.692783 0.31344 -0.649467 0.692783 0.31344 -0.649467 0.692783 0.31344 -0.649467 0.692783 -0.415958 0.908246 -0.045477 -0.415958 0.908246 -0.045477 -0.415958 0.908246 -0.045477 -0.415958 0.908246 -0.045477 0.315337 -0.713622 -0.625545 0.315337 -0.713622 -0.625545 0.315337 -0.713622 -0.625545 0.315337 -0.713622 -0.625545 0.435996 0.899017 -0.040938 0.435996 0.899017 -0.040938 0.435996 0.899017 -0.040938 0.435996 0.899017 -0.040938 -0.329814 -0.652482 0.682268 -0.329814 -0.652482 0.682268 -0.329814 -0.652482 0.682268 -0.329814 -0.652482 0.682268 -0.327756 -0.713702 -0.619036 -0.327756 -0.713702 -0.619036 -0.327756 -0.713702 -0.619036 -0.327756 -0.713702 -0.619036</float_array> <technique_common> <accessor source="#polySurfaceShape4-normals-array" count="91" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="polySurfaceShape4-map1" name="map1"> <float_array id="polySurfaceShape4-map1-array" count="152">0.59235 0.976831 0.590436 0.962299 0.586255 0.972052 0.578808 0.953376 0.572218 0.961799 0.564276 0.955289 0.555353 0.966918 0.561447 0.971928 0.557266 0.98145 0.568894 0.990373 0.575484 0.981433 0.583427 0.98846 0.573851 0.971874 0.421155 0.671938 0.51931 0.671938 0.51931 0.807252 0.421155 0.807252 0.018771 0.209072 0.089865 0.209072 0.089865 0.008723 0.018771 0.008723 0.421155 0.947439 0.51931 0.947439 0.51931 0.819257 0.421155 0.819257 0.018771 0.008723 0.089865 0.008723 0.089865 0.209072 0.018771 0.209072 0.018679 0.222747 0.018679 0.362308 0.091162 0.362308 0.091162 0.222747 0.421155 0.671938 0.51931 0.671938 0.51931 0.807252 0.421155 0.807252 0.018698 0.209072 0.089792 0.209072 0.089792 0.008723 0.018698 0.008723 0.421155 0.947439 0.51931 0.947439 0.51931 0.819257 0.421155 0.819257 0.018698 0.008723 0.089792 0.008723 0.089792 0.209072 0.018698 0.209072 0.018679 0.362308 0.018679 0.222747 0.091162 0.222747 0.091162 0.362308 0.018679 0.362308 0.018679 0.222747 0.04629 0.292068 0.091162 0.222747 0.064194 0.273418 0.091162 0.362308 0.064194 0.310718 0.018679 0.222747 0.018679 0.362308 0.04629 0.292068 0.091162 0.362308 0.064194 0.310718 0.091162 0.222747 0.064194 0.273418 0.520542 0.976027 0.520542 0.989879 0.47004 0.989879 0.470996 0.976026 0.520542 0.962174 0.470492 0.962174 0.42206 0.962174 0.42206 0.989879 0.42206 0.976027</float_array> <technique_common> <accessor source="#polySurfaceShape4-map1-array" count="76" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="polySurfaceShape4-vertices"> <input semantic="POSITION" source="#polySurfaceShape4-positions"/> </vertices> <triangles material="baseMatSG" count="62"> <input semantic="VERTEX" source="#polySurfaceShape4-vertices" offset="0"/> <input semantic="NORMAL" source="#polySurfaceShape4-normals" offset="1"/> <input semantic="TEXCOORD" source="#polySurfaceShape4-map1" offset="2" set="0"/> <p>0 0 0 1 1 1 8 2 2 1 1 1 2 3 3 8 2 2 8 2 2 2 3 3 9 4 4 2 3 3 3 5 5 9 4 4 4 6 6 10 7 7 3 5 5 3 5 5 10 7 7 9 4 4 4 6 6 5 8 8 10 7 7 5 8 8 6 9 9 10 7 7 10 7 7 6 9 9 11 10 10 6 9 9 7 11 11 11 10 10 0 0 0 8 2 2 7 11 11 7 11 11 8 2 2 11 10 10 8 2 2 9 4 4 12 12 12 9 4 4 10 7 7 12 12 12 10 7 7 11 10 10 12 12 12 11 10 10 8 2 2 12 12 12 13 13 13 14 14 14 15 16 16 15 16 16 14 14 14 16 15 15 15 17 17 16 18 18 17 20 20 17 20 20 16 18 18 18 19 19 17 21 21 18 22 22 19 24 24 19 24 24 18 22 22 20 23 23 19 25 25 20 26 26 13 28 28 13 28 28 20 26 26 14 27 27 19 29 29 13 30 30 17 32 32 17 32 32 13 30 30 15 31 31 21 33 33 22 34 34 23 36 36 23 36 36 22 34 34 24 35 35 23 37 37 24 38 38 25 40 40 25 40 40 24 38 38 26 39 39 25 41 41 26 42 42 27 44 44 27 44 44 26 42 42 28 43 43 27 45 45 28 46 46 21 48 48 21 48 48 28 46 46 22 47 47 22 49 49 28 50 50 24 52 52 24 52 52 28 50 50 26 51 51 14 53 53 20 54 54 29 55 55 18 56 56 30 57 57 20 54 54 20 54 54 30 57 57 29 55 55 18 56 56 16 58 58 30 57 57 30 57 57 16 58 58 31 59 59 16 58 58 14 53 53 31 59 59 31 59 59 14 53 53 29 55 55 27 60 60 21 61 61 32 62 62 23 63 63 33 64 64 21 61 61 21 61 61 33 64 64 32 62 62 23 63 63 25 65 65 33 64 64 33 64 64 25 65 65 34 66 66 25 65 65 27 60 60 34 66 66 34 66 66 27 60 60 32 62 62 33 68 68 36 69 69 32 67 67 32 67 67 36 69 69 37 70 70 34 72 71 35 73 72 33 71 68 33 71 68 35 73 72 36 74 69 34 75 71 32 76 67 35 78 72 35 78 72 32 76 67 37 77 70 35 80 72 30 81 73 36 79 69 36 79 69 30 81 73 31 82 74 37 83 70 36 84 69 29 86 75 29 86 75 36 84 69 31 85 74 37 88 70 29 89 75 35 87 72 35 87 72 29 89 75 30 90 73</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> </technique> </extra> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="enemy_base02"> <node id="polySurface3" name="polySurface3" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <instance_geometry url="#polySurfaceShape4"> <bind_material> <technique_common> <instance_material symbol="baseMatSG" target="#baseMat"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <extra> <technique profile="FCOLLADA"> <start_time>0.041666</start_time> <end_time>2</end_time> </technique> </extra> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; public static var _enemyBaseModel:XML = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <author>zworp</author> </contributor> <created>2008-01-12T20:11:18Z</created> <modified>2008-01-12T20:11:18Z</modified> <unit meter="0.01" name="centimeter"/> <up_axis>Y_UP</up_axis> </asset> <library_images> </library_images> <library_materials> <material id="baseMat" name="baseMat"> <instance_effect url="#baseMat-fx"/> </material> </library_materials> <library_effects> <effect id="baseMat-fx"> <profile_COMMON> <newparam sid="file1-surface"> <surface type="2D"> <init_from>file1</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file1-sampler"> <sampler2D> <source>file1-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file1-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="RGB_ZERO"> <color>0 0 0 1</color> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> </library_effects> <library_geometries> <geometry id="polySurfaceShape1" name="polySurfaceShape1"> <mesh> <source id="polySurfaceShape1-positions" name="position"> <float_array id="polySurfaceShape1-positions-array" count="174">27.1379 0 -12.6679 9.37704 -0.114902 -12.4067 27.1379 9.06447 -12.6679 9.37702 12.8662 -12.4067 27.1379 9.06448 12.4594 9.37704 12.8662 12.3024 27.1379 0 12.4594 9.37704 -0.114902 12.2696 21.8001 10.1971 -3.30408 14.889 11.7438 -3.30408 14.889 11.7438 3.63222 21.8001 10.1971 3.63222 18.3446 10.9704 -4.46179 18.3446 10.9704 4.78994 13.7355 12.0338 0.40415 22.9536 9.95543 0.446721 23.324 32.6427 -2.27895 20.9728 33.2727 -3.09447 19.8632 29.1318 0.436274 24.1094 32.4343 0.363176 18.6216 33.9027 -2.27895 17.8372 34.1149 0.333186 18.6226 33.9064 2.6071 20.9738 33.2764 3.42261 23.325 32.6464 2.6071 -9.32547 -0.032653 17.1943 9.37636 -0.032653 17.1943 -9.31413 20.2274 17.1943 9.31413 20.2274 17.1943 -9.31413 20.2274 -17.1943 9.31413 20.2274 -17.1943 -9.32547 -0.032653 -17.1943 9.37636 -0.032653 -17.1943 -9.32535 -0.021057 -12.3607 -9.32535 -0.021057 12.2894 -9.32537 12.8943 12.2894 -9.32535 12.8943 -12.3936 -27.0346 0 12.4594 -27.0346 9.06447 12.4594 -27.0346 9.06448 -12.6679 -27.0346 0 -12.6679 -21.6967 10.1971 3.09558 -14.7856 11.7438 3.09558 -14.7856 11.7438 -3.84072 -21.6967 10.1971 -3.84072 -18.2412 10.9704 4.25329 -18.2412 10.9704 -4.99844 -13.6321 12.0338 -0.612649 -22.8503 9.95543 -0.65522 -23.6572 32.6973 2.07046 -21.306 33.3273 2.88597 -20.1965 29.1864 -0.644773 -24.4426 32.4889 -0.571675 -18.9548 33.9573 2.07046 -18.1705 34.1695 -0.541685 -18.9558 33.961 -2.8156 -21.307 33.331 -3.63111 -23.6582 32.701 -2.8156</float_array> <technique_common> <accessor source="#polySurfaceShape1-positions-array" count="58" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="polySurfaceShape1-normals" name="normal"> <float_array id="polySurfaceShape1-normals-array" count="402">-0.014708 0 -0.999892 -0.014708 0 -0.999892 -0.014708 0 -0.999892 -0.014708 0 -0.999892 -0.363315 0.767071 0.528776 0.258723 0.9653 -0.035481 -0.614027 0.788994 -0.021435 -0.009919 -0.00149 0.99995 -0.009919 -0.00149 0.99995 -0.009919 -0.00149 0.99995 -0.009919 -0.00149 0.99995 1 0 0 1 0 0 1 0 0 1 0 0 0.213032 0.97703 -0.005516 0.208549 0.978001 -0.004606 0.214964 0.976573 -0.009753 0.201959 0.979388 0.0034 0.201959 0.979388 0.0034 0.204061 0.978951 -0.003695 0.213551 0.976932 -0.000549 0.211676 0.97734 -0.000325 0.212252 0.977211 -0.002789 0.207306 0.978276 -0.0002 0.208484 0.978026 -0.000505 0.208764 0.977966 -0.000819 0.697235 0.482949 0.529739 0.926336 0.376237 -0.018627 0.692267 0.439959 -0.572017 0.147851 0.551785 -0.820776 -0.378359 0.726767 -0.573283 0.718837 -0.017133 -0.694967 0.013795 0.060198 -0.998091 0.013795 0.060198 -0.998091 0.718837 -0.017133 -0.694967 0.998355 -0.051907 0.024336 0.998355 -0.051907 0.024336 -0.695497 0.149787 -0.702743 -0.695497 0.149787 -0.702743 -0.983074 0.181987 0.021113 -0.983074 0.181987 0.021113 -0.680565 0.147953 0.717594 -0.680565 0.147953 0.717594 0.013793 0.060188 0.998092 0.013793 0.060188 0.998092 0.701765 -0.015206 0.712246 0.701765 -0.015206 0.712246 0.164542 0.614078 0.771903 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -1 0.000341 0.000878 -1 0.000341 0.000878 -1 0.000341 0.000878 -1 0.000341 0.000878 -0.999999 0.001531 -0.000000 -0.999999 0.001531 -0.000000 -0.999999 0.001531 -0.000000 -0.999999 0.001531 -0.000000 -1 0.00034 -0.000893 -1 0.00034 -0.000893 -1 0.00034 -0.000893 -1 0.00034 -0.000893 0.999985 0.001872 -0.005183 0.999985 0.001872 -0.005183 0.999985 0.001872 -0.005183 0.999985 0.001872 -0.005183 0.999963 0.008543 -0.000000 0.999963 0.008543 -0.000000 0.999963 0.008543 -0.000000 0.999963 0.008543 -0.000000 0.999985 0.001866 0.005062 0.999985 0.001866 0.005062 0.999985 0.001866 0.005062 0.999985 0.001866 0.005062 0.009603 0 0.999954 0.009603 0 0.999954 0.009603 0 0.999954 0.009603 0 0.999954 0.363315 0.767072 -0.528775 -0.258723 0.9653 0.035481 0.614028 0.788993 0.021435 0.016576 -0.001494 -0.999861 0.016576 -0.001494 -0.999861 0.016576 -0.001494 -0.999861 0.016576 -0.001494 -0.999861 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -0.214433 0.976735 0.002797 -0.212244 0.977212 0.002956 -0.217797 0.975967 0.007221 -0.206636 0.978416 -0.001871 -0.206636 0.978416 -0.001871 -0.210054 0.977685 0.003115 -0.214491 0.976724 0.001917 -0.212303 0.977203 0.001237 -0.212252 0.977211 0.002789 -0.207306 0.978276 0.0002 -0.209035 0.977908 -0.000112 -0.209591 0.977789 -0.000107 -0.697236 0.482949 -0.529739 -0.926337 0.376236 0.018627 -0.692267 0.439959 0.572016 -0.147851 0.551786 0.820776 0.378359 0.726768 0.573283 -0.717462 -0.030879 0.695913 -0.013814 0.059764 0.998117 -0.013814 0.059764 0.998117 -0.717462 -0.030879 0.695913 -0.997176 -0.071021 -0.024412 -0.997176 -0.071021 -0.024412 0.692654 0.162559 0.702713 0.692654 0.162559 0.702713 0.979526 0.200207 -0.02112 0.979526 0.200207 -0.02112 0.677756 0.160442 -0.717569 0.677756 0.160442 -0.717569 -0.013811 0.059754 -0.998118 -0.013811 0.059754 -0.998118 -0.700353 -0.028619 -0.713223 -0.700353 -0.028619 -0.713223 -0.164542 0.614078 -0.771903</float_array> <technique_common> <accessor source="#polySurfaceShape1-normals-array" count="134" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="polySurfaceShape1-map1" name="map1"> <float_array id="polySurfaceShape1-map1-array" count="260">0.498567 0.023523 0.812056 0.023523 0.686431 0.804392 0.560967 0.941497 0.704131 0.857224 0.94274 0.941497 0.5413 0.023523 0.5413 0.217421 0.85834 0.023523 0.85834 0.168282 0.395924 0.906261 0.395924 0.375479 0.069792 0.375479 0.069791 0.906258 0.395924 0.824373 0.069762 0.82437 0.395925 0.451104 0.788958 0.84243 0.069792 0.451104 0.395924 0.532104 0.069762 0.532103 0.395923 0.603059 0.069736 0.603056 0.395924 0.678684 0.069736 0.678681 0.395924 0.754308 0.069736 0.754305 0.498567 0.168282 0.414694 0.039097 0.810181 0.857224 0.760827 0.87486 0.827881 0.804392 0.94274 0.669948 0.414694 0.352085 0.489686 0.236089 0.489686 0.039274 0.940463 0.352085 0.867065 0.236089 0.940463 0.037844 0.866563 0.037844 0.940463 0.037844 0.940463 0.352085 0.867265 0.235661 0.867265 0.037844 0.414694 0.352085 0.489486 0.235661 0.812056 0.168282 0.810181 0.751559 0.761477 0.733923 0.396238 0.60283 0.751402 0.80876 0.396238 0.678083 0.560967 0.669948 0.704131 0.751559 0.812056 0.168282 0.5413 0.217421 0.414694 0.039097 0.489989 0.037844 0.071597 0.678087 0.071597 0.602832 0.396239 0.521345 0.071568 0.521347 0.396239 0.753336 0.071597 0.75334 0.396238 0.833937 0.071567 0.833942 0.396238 0.904541 0.071541 0.904547 0.396238 0.376371 0.071542 0.376374 0.396239 0.451624 0.071542 0.451627 0.5413 0.023523 0.812056 0.023523 0.108916 0.038345 0.393898 0.038345 0.393898 0.352843 0.109089 0.352843 0.109089 0.352843 0.393898 0.352843 0.393898 0.038345 0.108916 0.038345 0.541299 0.023523 0.812056 0.023523 0.812056 0.217421 0.541299 0.168282 0.541299 0.168282 0.812056 0.217421 0.812056 0.023523 0.541299 0.023523 0.85834 0.023523 0.498568 0.023523 0.498568 0.168282 0.85834 0.168282 0.945875 0.653861 0.945875 0.369051 0.420107 0.369051 0.420107 0.65386 0.821289 0.805311 0.94274 0.669948 0.803589 0.752479 0.560967 0.669948 0.697539 0.752479 0.746893 0.734842 0.679839 0.805312 0.560967 0.941497 0.697539 0.858144 0.746242 0.87578 0.94274 0.941497 0.803589 0.858144 0.752413 0.853669 0.788958 0.775092 0.752827 0.763853 0.721375 0.775092 0.710095 0.80876 0.721375 0.84243 0.800238 0.80876 0.721692 0.773708 0.759249 0.807378 0.758238 0.762469 0.721692 0.841046 0.757823 0.852286 0.789276 0.841046 0.800556 0.807378 0.789276 0.773708 0.710412 0.807378 0.395924 0.981884 0.069791 0.981883 0.396238 0.979795 0.071541 0.979801</float_array> <technique_common> <accessor source="#polySurfaceShape1-map1-array" count="130" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="polySurfaceShape1-vertices"> <input semantic="POSITION" source="#polySurfaceShape1-positions"/> </vertices> <triangles material="baseMatSG" count="102"> <input semantic="VERTEX" source="#polySurfaceShape1-vertices" offset="0"/> <input semantic="NORMAL" source="#polySurfaceShape1-normals" offset="1"/> <input semantic="TEXCOORD" source="#polySurfaceShape1-map1" offset="2" set="0"/> <p>0 0 1 1 1 6 2 3 46 2 3 46 1 1 6 3 2 7 16 4 17 18 5 50 19 6 110 5 8 55 7 9 72 4 7 54 4 7 54 7 9 72 6 10 73 6 11 0 0 12 8 4 14 27 4 14 27 0 12 8 2 13 9 12 15 2 3 16 3 9 17 4 3 16 3 5 18 5 14 20 30 14 20 30 5 18 5 10 19 29 13 21 31 4 22 32 11 23 47 15 24 48 2 25 52 8 26 53 18 5 50 20 27 111 21 28 112 18 5 50 22 29 113 23 30 114 19 6 110 18 5 50 24 31 115 8 32 10 12 33 126 16 35 13 16 35 13 12 33 126 17 34 127 15 36 14 8 32 10 19 37 15 19 37 15 8 32 10 16 35 13 12 33 11 9 38 16 17 34 12 17 34 12 9 38 16 20 39 18 9 38 16 14 40 19 20 39 18 20 39 18 14 40 19 21 41 20 10 42 21 22 43 22 14 40 19 14 40 19 22 43 22 21 41 20 13 44 23 23 45 24 10 42 21 10 42 21 23 45 24 22 43 22 11 46 25 24 47 26 13 44 23 13 44 23 24 47 26 23 45 24 15 36 14 19 37 15 11 46 25 11 46 25 19 37 15 24 47 26 16 4 17 17 48 116 18 5 50 18 5 50 21 28 112 22 29 113 24 31 115 18 5 50 23 30 114 17 48 116 20 27 111 18 5 50 2 25 52 15 24 48 4 22 32 4 22 32 15 24 48 11 23 47 3 16 3 14 20 30 9 17 4 3 16 3 12 15 2 2 25 52 2 25 52 12 15 2 8 26 53 4 22 32 13 21 31 5 18 5 5 18 5 13 21 31 10 19 29 26 50 75 28 51 76 25 49 74 25 49 74 28 51 76 27 52 77 27 53 94 28 54 95 29 56 97 29 56 97 28 54 95 30 55 96 29 57 78 30 58 79 31 60 81 31 60 81 30 58 79 32 59 80 27 62 33 35 63 34 25 61 28 25 61 28 35 63 34 34 64 35 27 65 33 29 66 36 35 68 34 35 68 34 29 66 36 36 67 37 29 69 36 31 70 38 36 72 37 36 72 37 31 70 38 33 71 39 30 74 41 3 75 42 32 73 40 32 73 40 3 75 42 1 76 43 28 78 44 5 79 45 30 77 41 30 77 41 5 79 45 3 80 42 28 81 44 26 82 56 5 84 45 5 84 45 26 82 56 7 83 57 37 85 82 34 86 83 38 88 85 38 88 85 34 86 83 35 87 84 49 89 117 51 90 118 52 91 119 36 93 87 33 94 88 39 92 86 39 92 86 33 94 88 40 95 89 40 96 90 37 97 91 39 99 93 39 99 93 37 97 91 38 98 92 45 100 98 35 101 99 42 102 100 35 101 99 36 103 101 47 105 103 47 105 103 36 103 101 43 104 102 46 106 104 39 107 105 44 108 106 48 109 107 38 110 108 41 111 109 51 90 118 53 112 120 54 113 121 51 90 118 55 114 122 56 115 123 52 91 119 51 90 118 57 116 124 41 117 49 45 118 51 49 120 59 49 120 59 45 118 51 50 119 58 48 121 60 41 117 49 52 122 61 52 122 61 41 117 49 49 120 59 45 118 51 42 123 62 50 119 58 50 119 58 42 123 62 53 124 63 42 123 62 47 125 64 53 124 63 53 124 63 47 125 64 54 126 65 43 127 66 55 128 67 47 125 64 47 125 64 55 128 67 54 126 65 46 129 128 56 130 129 43 127 66 43 127 66 56 130 129 55 128 67 44 131 70 57 132 71 46 129 68 46 129 68 57 132 71 56 130 69 48 121 60 52 122 61 44 131 70 44 131 70 52 122 61 57 132 71 49 89 117 50 133 125 51 90 118 51 90 118 54 113 121 55 114 122 57 116 124 51 90 118 56 115 123 50 133 125 53 112 120 51 90 118 38 110 108 48 109 107 39 107 105 39 107 105 48 109 107 44 108 106 35 101 99 47 105 103 42 102 100 35 101 99 45 100 98 38 110 108 38 110 108 45 100 98 41 111 109 39 107 105 46 106 104 36 103 101 36 103 101 46 106 104 43 104 102</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="enemy_base02"> <node id="polySurface1" name="polySurface1" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <instance_geometry url="#polySurfaceShape1"> <bind_material> <technique_common> <instance_material symbol="baseMatSG" target="#baseMat"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <extra> <technique profile="FCOLLADA"> <start_time>0.041666</start_time> <end_time>2</end_time> </technique> </extra> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; public static var _homeBase:XML = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <author>zworp</author> </contributor> <created>2008-01-03T09:19:55Z</created> <modified>2008-01-03T09:19:55Z</modified> <unit meter="0.01" name="centimeter"/> <up_axis>Y_UP</up_axis> </asset> <library_images> <image id="file1" name="file1"> <init_from>../art/homebase.psd</init_from> <extra> </extra> </image> </library_images> <library_materials> <material id="baseMat" name="baseMat"> <instance_effect url="#baseMat-fx"/> </material> </library_materials> <library_effects> <effect id="baseMat-fx"> <profile_COMMON> <newparam sid="file1-surface"> <surface type="2D"> <init_from>file1</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file1-sampler"> <sampler2D> <source>file1-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file1-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="RGB_ZERO"> <color>0 0 0 1</color> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> </library_effects> <library_geometries> <geometry id="pCubeShape1" name="pCubeShape1"> <mesh> <source id="pCubeShape1-positions" name="position"> <float_array id="pCubeShape1-positions-array" count="144">10 0.188111 10 10 0.188111 -10 6.07377 6.57892 6.07377 6.07377 6.57892 -6.07377 -6.07377 6.57892 6.07377 -6.07377 6.57892 -6.07377 -10 0.188111 10 -10 0.188111 -10 4.58151 6.57892 4.58151 4.58151 6.57892 -4.58151 -4.58151 6.57892 -4.58151 -4.58151 6.57892 4.58151 4.25633 5.89668 4.25633 4.25633 5.89668 -4.25633 -4.25633 5.89668 -4.25633 -4.25633 5.89668 4.25633 10.03 0.188522 5.3357 10.03 0.188522 -5.3357 7.93503 3.5317 -3.24078 7.93503 3.5317 3.24078 -7.93503 3.5317 3.24078 -7.93503 3.5317 -3.24078 -10.03 0.188522 -5.3357 -10.03 0.188522 5.3357 -5.27581 0.188993 -10.01 5.27581 0.188993 -10.01 -3.2044 3.53142 -7.93864 3.2044 3.53142 -7.93864 -5.27581 0.188993 9.95256 5.27581 0.188993 9.95256 3.2044 3.53142 7.88115 -3.2044 3.53142 7.88115 16.7989 0.187786 5.3357 16.7989 0.187786 -5.3357 14.704 3.50545 -3.24078 14.704 3.50545 3.24078 -14.704 3.50545 3.24078 -14.704 3.50545 -3.24078 -16.7989 0.187786 -5.3357 -16.7989 0.187786 5.3357 -5.27581 0.187985 -16.7848 5.27581 0.187985 -16.7848 -3.2044 3.49548 -14.7134 3.2044 3.49548 -14.7134 -5.27581 0.187985 16.7273 5.27581 0.187985 16.7273 3.2044 3.49548 14.6559 -3.2044 3.49548 14.6559</float_array> <technique_common> <accessor source="#pCubeShape1-positions-array" count="48" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape1-normals" name="normal"> <float_array id="pCubeShape1-normals-array" count="396">0.845541 0.533911 0 0.845541 0.533911 0 0.845541 0.533911 0 0.845541 0.533911 0 0 1 0 0 1 0 0 1 0 0 1 0 -0.84554 0.533912 0 -0.84554 0.533912 0 -0.84554 0.533912 0 -0.84554 0.533912 0 0 0.530776 -0.847512 0 0.530776 -0.847512 0 0.530776 -0.847512 0 0.530776 -0.847512 0 0.530776 0.847512 0 0.530776 0.847512 0 0.530776 0.847512 0 0.530776 0.847512 0 1 0 0 1 0 0 1 0 0 1 0 0 1 -0.000000 0 1 -0.000000 0 1 -0.000000 0 1 -0.000000 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0.000000 0 1 0.000000 0 1 0.000000 0 1 0.000000 -0.902706 0.430257 0 -0.902706 0.430257 0 -0.902706 0.430257 0 -0.902706 0.430257 0 0 0.430257 0.902706 0 0.430257 0.902706 0 0.430257 0.902706 0 0.430257 0.902706 0.902706 0.430257 0 0.902706 0.430257 0 0.902706 0.430257 0 0.902706 0.430257 0 0 0.430257 -0.902706 0 0.430257 -0.902706 0 0.430257 -0.902706 0 0.430257 -0.902706 0.850282 0.526327 -0.000593 0.851844 0.523796 -0.000296 0.851844 0.523796 -0.000296 0.850282 0.526327 -0.000593 0.851844 0.523796 0.000296 0.851844 0.523796 0.000296 0.850282 0.526327 0.000593 0.850282 0.526327 0.000593 -0.851844 0.523796 0.000296 -0.851844 0.523796 -0.000296 -0.851844 0.523796 -0.000296 -0.851844 0.523796 0.000296 -0.850282 0.526327 -0.000593 -0.850282 0.526327 -0.000593 -0.850282 0.526327 0.000593 -0.850282 0.526327 0.000593 0.000217 0.524505 -0.851407 0.000108 0.523234 -0.852189 0.000108 0.523234 -0.852189 0.000217 0.524505 -0.851407 -0.000108 0.523234 -0.852189 -0.000108 0.523234 -0.852189 -0.000216 0.524505 -0.851407 -0.000216 0.524505 -0.851407 -0.010588 0.519836 0.854201 -0.005294 0.514987 0.857182 -0.005294 0.514987 0.857182 -0.010588 0.519836 0.854201 0.005294 0.514987 0.857182 0.005294 0.514987 0.857182 0.010588 0.519836 0.854201 0.010588 0.519836 0.854201 0.001062 0.532925 -0.846162 0.001062 0.532925 -0.846162 0.001062 0.532925 -0.846162 0.001062 0.532925 -0.846162 0.003877 0.999992 0 0.003877 0.999992 0 0.003877 0.999992 0 0.003877 0.999992 0 0.001062 0.532925 0.846162 0.001062 0.532925 0.846162 0.001062 0.532925 0.846162 0.001062 0.532925 0.846162 -0.003877 0.999992 0 -0.003877 0.999992 0 -0.003877 0.999992 0 -0.003877 0.999992 0 -0.001062 0.532925 -0.846162 -0.001062 0.532925 -0.846162 -0.001062 0.532925 -0.846162 -0.001062 0.532925 -0.846162 -0.001062 0.532925 0.846162 -0.001062 0.532925 0.846162 -0.001062 0.532925 0.846162 -0.001062 0.532925 0.846162 -0.848361 0.529417 -0.001443 -0.848361 0.529417 -0.001443 -0.848361 0.529417 -0.001443 -0.848361 0.529417 -0.001443 0 0.999986 -0.005305 0 0.999986 -0.005305 0 0.999986 -0.005305 0 0.999986 -0.005305 0.848361 0.529417 -0.001443 0.848361 0.529417 -0.001443 0.848361 0.529417 -0.001443 0.848361 0.529417 -0.001443 0.848361 0.529417 0.001443 0.848361 0.529417 0.001443 0.848361 0.529417 0.001443 0.848361 0.529417 0.001443 0 0.999986 0.005305 0 0.999986 0.005305 0 0.999986 0.005305 0 0.999986 0.005305 -0.84836 0.529417 0.001443 -0.84836 0.529417 0.001443 -0.84836 0.529417 0.001443 -0.84836 0.529417 0.001443</float_array> <technique_common> <accessor source="#pCubeShape1-normals-array" count="132" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pCubeShape1-map1" name="map1"> <float_array id="pCubeShape1-map1-array" count="224">0.931884 0.050984 0.822618 0.566419 0.021284 0.031913 0.021284 0.676468 0.062938 0.597288 0.062938 0.111093 0.743777 0.32063 0.802078 0.050984 0.932279 0.050984 0.822686 0.566419 0.743777 0.32063 0.800412 0.050984 0.36036 0.676468 0.318706 0.597288 0.36036 0.031913 0.318706 0.111093 0.083597 0.150364 0.083597 0.558018 0.298048 0.558018 0.298048 0.150364 0.02668 0.706052 0.321208 0.706052 0.083597 0.558017 0.083597 0.150364 0.298048 0.558017 0.298048 0.150364 0.263389 0.972825 0.084499 0.972825 0.025198 0.706052 0.32307 0.706052 0.556557 0.610895 0.556557 0.950951 0.264595 0.972825 0.083674 0.972825 0.751805 0.950951 0.751805 0.610895 0.321208 0.706052 0.02668 0.706052 0.556557 0.610896 0.556557 0.950951 0.751805 0.950951 0.751805 0.610896 0.084499 0.972825 0.263389 0.972825 0.340125 0.706052 0.281649 0.972825 0.782163 0.610896 0.782163 0.950951 0.470591 0.972825 0.529067 0.706052 0.977411 0.95095 0.977411 0.610895 0.48361 0.566419 0.563703 0.32063 0.374017 0.050984 0.505884 0.050984 0.374017 0.050984 0.48361 0.566419 0.563703 0.32063 0.505884 0.050984 0.822686 0.566419 0.743777 0.32063 0.932279 0.050984 0.800412 0.050984 0.484555 0.566419 0.563397 0.32063 0.375289 0.050984 0.505095 0.050984 0.484555 0.566419 0.822618 0.566419 0.743777 0.32063 0.563397 0.32063 0.931884 0.050984 0.802078 0.050984 0.375289 0.050984 0.505095 0.050984 0.083674 0.972825 0.264595 0.972825 0.32307 0.706052 0.025198 0.706052 0.339803 0.706052 0.281984 0.972825 0.471088 0.972825 0.528907 0.706052 0.281984 0.972825 0.339803 0.706052 0.528907 0.706052 0.471088 0.972825 0.337774 0.706052 0.279955 0.972825 0.469059 0.972825 0.526879 0.706052 0.279955 0.972825 0.337774 0.706052 0.526879 0.706052 0.469059 0.972825 0.281649 0.972825 0.340125 0.706052 0.529067 0.706052 0.470591 0.972825 0.281692 0.972825 0.340168 0.706052 0.52911 0.706052 0.470634 0.972825 0.340168 0.706052 0.281692 0.972825 0.470634 0.972825 0.52911 0.706052 0.782163 0.610896 0.782163 0.950951 0.977411 0.950951 0.977411 0.610896</float_array> <technique_common> <accessor source="#pCubeShape1-map1-array" count="112" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pCubeShape1-vertices"> <input semantic="POSITION" source="#pCubeShape1-positions"/> </vertices> <triangles material="baseMatSG" count="74"> <input semantic="VERTEX" source="#pCubeShape1-vertices" offset="0"/> <input semantic="NORMAL" source="#pCubeShape1-normals" offset="1"/> <input semantic="TEXCOORD" source="#pCubeShape1-map1" offset="2" set="0"/> <p>32 0 28 33 1 29 35 3 33 35 3 33 33 1 29 34 2 32 12 4 16 13 5 17 15 7 19 15 7 19 13 5 17 14 6 18 36 8 76 37 9 77 39 11 79 39 11 79 37 9 77 38 10 78 41 12 20 40 13 21 43 15 27 43 15 27 40 13 21 42 14 26 44 16 36 45 17 37 47 19 43 47 19 43 45 17 37 46 18 42 2 20 2 3 21 3 8 23 5 8 23 5 3 21 3 9 22 4 3 24 3 5 25 12 9 27 4 9 27 4 5 25 12 10 26 13 5 28 12 4 29 14 10 31 13 10 31 13 4 29 14 11 30 15 4 32 14 2 33 2 11 35 15 11 35 15 2 33 2 8 34 5 8 36 5 9 37 4 12 39 23 12 39 23 9 37 4 13 38 22 9 40 4 10 41 13 13 43 22 13 43 22 10 41 13 14 42 24 10 44 13 11 45 15 14 47 24 14 47 24 11 45 15 15 46 25 11 48 15 8 49 5 15 51 25 15 51 25 8 49 5 12 50 23 1 52 0 3 53 1 17 55 7 17 55 7 3 53 1 18 54 6 3 53 1 2 56 64 18 54 6 18 54 6 2 56 64 19 57 65 0 58 66 16 59 67 2 56 64 2 56 64 16 59 67 19 57 65 4 60 68 5 61 69 20 63 71 20 63 71 5 61 69 21 62 70 7 64 72 22 65 73 5 61 69 5 61 69 22 65 73 21 62 70 6 66 74 4 60 68 23 67 75 23 67 75 4 60 68 20 63 71 7 68 8 5 69 9 24 71 11 24 71 11 5 69 9 26 70 10 5 69 9 3 72 52 26 70 10 26 70 10 3 72 52 27 73 53 1 74 54 25 75 55 3 72 52 3 72 52 25 75 55 27 73 53 0 76 56 2 77 57 29 79 59 29 79 59 2 77 57 30 78 58 2 77 57 4 80 60 30 78 58 30 78 58 4 80 60 31 81 61 6 82 62 28 83 63 4 80 60 4 80 60 28 83 63 31 81 61 18 85 45 34 86 48 17 84 44 17 84 44 34 86 48 33 87 49 18 88 30 19 89 31 34 91 35 34 91 35 19 89 31 35 90 34 19 92 96 16 93 97 35 95 99 35 95 99 16 93 97 32 94 98 20 96 38 21 97 39 36 99 41 36 99 41 21 97 39 37 98 40 21 100 100 22 101 101 37 103 103 37 103 103 22 101 101 38 102 102 20 105 105 36 106 106 23 104 104 23 104 104 36 106 106 39 107 107 26 109 81 42 110 82 24 108 80 24 108 80 42 110 82 40 111 83 26 112 46 27 113 47 42 115 51 42 115 51 27 113 47 43 114 50 27 116 84 25 117 85 43 119 87 43 119 87 25 117 85 41 118 86 30 121 89 46 122 90 29 120 88 29 120 88 46 122 90 45 123 91 30 124 108 31 125 109 46 127 111 46 127 111 31 125 109 47 126 110 31 128 92 28 129 93 47 131 95 47 131 95 28 129 93 44 130 94</p> </triangles> </mesh> <extra> <technique profile="m"> <double_sided>1</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="home_base01"> <node id="pCube1" name="pCube1" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <instance_geometry url="#pCubeShape1"> <bind_material> <technique_common> <instance_material symbol="baseMatSG" target="#baseMat"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <extra> <technique profile="FCOLLADA"> <start_time>0.041666</start_time> <end_time>2</end_time> </technique> </extra> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; public static var _mineModel:XML = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <author>zworp</author> </contributor> <created>2007-12-27T22:50:46Z</created> <modified>2007-12-27T22:50:47Z</modified> <unit meter="0.01" name="centimeter"/> <up_axis>Y_UP</up_axis> </asset> <library_images> <image id="file1" name="file1"> <init_from>../art/mine.psd</init_from> <extra> </extra> </image> </library_images> <library_materials> <material id="mine" name="mine"> <instance_effect url="#mine-fx"/> </material> </library_materials> <library_effects> <effect id="mine-fx"> <profile_COMMON> <newparam sid="file1-surface"> <surface type="2D"> <init_from>file1</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="file1-sampler"> <sampler2D> <source>file1-surface</source> <wrap_s>WRAP</wrap_s> <wrap_t>WRAP</wrap_t> <minfilter>NONE</minfilter> <magfilter>NONE</magfilter> <mipfilter>NONE</mipfilter> </sampler2D> </newparam> <technique sid="common"> <lambert> <emission> <color>0 0 0 1</color> </emission> <ambient> <color>0 0 0 1</color> </ambient> <diffuse> <texture texture="file1-sampler" texcoord="TEX0"> <extra> <technique profile="MAYA"> <wrapU>1</wrapU> <wrapV>1</wrapV> <mirrorU>0</mirrorU> <mirrorV>0</mirrorV> <coverageU>1</coverageU> <coverageV>1</coverageV> <translateFrameU>0</translateFrameU> <translateFrameV>0</translateFrameV> <rotateFrame>0</rotateFrame> <stagger>0</stagger> <fast>0</fast> <repeatU>1</repeatU> <repeatV>1</repeatV> <offsetU>0</offsetU> <offsetV>0</offsetV> <rotateUV>0</rotateUV> <noiseU>0</noiseU> <noiseV>0</noiseV> <blend_mode>NONE</blend_mode> </technique> </extra> </texture> </diffuse> <transparent opaque="RGB_ZERO"> <color>0 0 0 1</color> </transparent> <transparency> <float>1</float> </transparency> </lambert> <extra> <technique profile="FCOLLADA"/> </extra> </technique> </profile_COMMON> </effect> </library_effects> <library_geometries> <geometry id="pSphereShape1" name="pSphereShape1"> <mesh> <source id="pSphereShape1-positions" name="position"> <float_array id="pSphereShape1-positions-array" count="72">0.000000 -2.26149 -1.42294 -1.2323 -2.26149 0.711468 1.2323 -2.26149 0.711468 1.32927 -0.863811 -2.30236 -1.32927 -0.863811 -2.30236 -2.65854 -0.863811 -0.000000 -1.32927 -0.863811 2.30236 1.32927 -0.863811 2.30236 2.65854 -0.863811 0 1.32927 0.863811 -2.30236 -1.32927 0.863811 -2.30236 -2.65854 0.863811 -0.000000 -1.32927 0.863811 2.30236 1.32927 0.863811 2.30236 2.65854 0.863811 0 -1.2323 2.26149 -0.711469 -0.000000 2.26149 1.42294 1.2323 2.26149 -0.711468 0.023344 -3.81738 -5.68927 -4.93873 -3.81738 2.82442 4.91538 -3.81738 2.86485 -4.89309 3.86647 -2.84169 -0.014427 3.86647 5.65839 4.90752 3.86647 -2.8167</float_array> <technique_common> <accessor source="#pSphereShape1-positions-array" count="24" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pSphereShape1-normals" name="normal"> <float_array id="pSphereShape1-normals-array" count="144">0.000226 -0.998162 -0.060601 -0.052595 -0.998162 0.030104 -0.613916 -0.506509 -0.605438 -0.830093 -0.507356 -0.231378 0.052369 -0.998162 0.030496 -0.217367 -0.506509 0.834386 0.214668 -0.507357 0.83457 0.831283 -0.506509 -0.228948 0.615425 -0.507357 -0.603193 0.000000 0.413977 -0.910287 0.000000 0.413977 -0.910287 0.219551 0.505815 -0.834235 -0.217882 0.506346 -0.834351 -0.790597 -0.408177 -0.456451 -0.790597 -0.408177 -0.456451 -0.788332 0.413977 0.455144 -0.788332 0.413977 0.455144 -0.832244 0.505815 0.226981 -0.613628 0.506346 0.605867 0 -0.408177 0.912903 0 -0.408177 0.912903 0.788332 0.413977 0.455144 0.788332 0.413977 0.455144 0.612694 0.505815 0.607254 0.83151 0.506346 0.228484 0.790597 -0.408177 -0.456451 0.790597 -0.408177 -0.456451 -0.049201 0.998381 -0.028559 0.049333 0.99838 -0.02833 -0.000132 0.998381 0.056889 -0.771559 -0.599002 0.214229 0.000000 0.753676 -0.657246 0.772396 -0.595327 0.221337 0.571307 -0.599002 0.561075 -0.569192 0.753676 0.328623 -0.194515 -0.595327 -0.779583 0.200252 -0.599002 -0.775304 0.569192 0.753676 0.328623 -0.577881 -0.595327 0.558246 -0.57745 -0.745252 -0.333391 -0.193417 0.59462 0.780396 0.583183 0.592319 -0.555928 0 -0.745252 0.666782 0.772551 0.59462 -0.222694 -0.773039 0.592319 -0.227087 0.577451 -0.745252 -0.333391 -0.579134 0.59462 -0.557702 0.189856 0.592319 0.783015</float_array> <technique_common> <accessor source="#pSphereShape1-normals-array" count="48" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="pSphereShape1-map1" name="map1"> <float_array id="pSphereShape1-map1-array" count="110">0.083153 0.2 0.310667 0.2 0.452863 0.1 0.595059 0.066666 0.708815 0.2 0.026275 0.4 0.140032 0.4 0.253789 0.4 0.367545 0.4 0.481302 0.4 0.595059 0.4 0.708815 0.4 0.026275 0.6 0.140032 0.6 0.253789 0.6 0.367545 0.6 0.481302 0.6 0.595059 0.6 0.708815 0.6 0.196911 0.8 0.424424 0.8 0.595059 0.933333 0.750232 0.879284 0.196911 0 0.054714 0.9 0.310667 1 0.808824 0.450927 0.970196 0.835973 0.866363 0.879284 0.750232 0.879284 0.808824 0.450927 0.970196 0.835973 0.866363 0.879284 0.750232 0.879284 0.808824 0.450927 0.970197 0.835973 0.866363 0.879284 0.866363 0.879284 0.639593 0.835973 0.808824 0.450927 0.750232 0.879284 0.866363 0.879284 0.639593 0.835973 0.808824 0.450927 0.750232 0.879284 0.866363 0.879284 0.639593 0.835973 0.808824 0.450927 0.750232 0.879284 0.970196 0.835973 0.639593 0.835973 0.639593 0.835973 0.639593 0.835973 0.970197 0.835973 0.970196 0.835973</float_array> <technique_common> <accessor source="#pSphereShape1-map1-array" count="55" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="pSphereShape1-vertices"> <input semantic="POSITION" source="#pSphereShape1-positions"/> </vertices> <triangles material="mineSG" count="44"> <input semantic="VERTEX" source="#pSphereShape1-vertices" offset="0"/> <input semantic="NORMAL" source="#pSphereShape1-normals" offset="1"/> <input semantic="TEXCOORD" source="#pSphereShape1-map1" offset="2" set="0"/> <p>0 0 0 1 1 1 4 3 6 4 3 6 1 1 1 5 2 7 1 1 1 2 4 2 6 6 8 6 6 8 2 4 2 7 5 9 2 4 3 0 0 4 8 8 10 8 8 10 0 0 4 3 7 11 3 9 5 4 10 6 9 12 12 9 12 12 4 10 6 10 11 13 4 3 6 5 2 7 10 14 13 10 14 13 5 2 7 11 13 14 5 15 7 6 16 8 11 18 14 11 18 14 6 16 8 12 17 15 6 6 8 7 5 9 12 20 15 12 20 15 7 5 9 13 19 16 7 21 9 8 22 10 13 24 16 13 24 16 8 22 10 14 23 17 8 8 10 3 7 11 14 26 17 14 26 17 3 7 11 9 25 18 9 12 12 10 11 13 17 28 24 17 28 24 10 11 13 15 27 19 11 18 14 12 17 15 15 27 19 15 27 19 12 17 15 16 29 20 13 24 16 14 23 17 16 29 20 16 29 20 14 23 17 17 28 21 0 0 0 2 4 23 1 1 1 17 28 25 15 27 19 16 29 20 0 0 22 4 3 50 18 30 26 4 10 27 3 9 28 18 31 26 3 7 28 0 0 22 18 32 26 1 1 29 6 6 51 19 33 30 6 16 31 5 15 32 19 34 30 5 2 32 1 1 29 19 35 30 2 4 33 8 8 52 20 36 34 8 22 35 7 21 36 20 37 34 7 5 36 2 4 33 20 38 34 10 14 37 11 13 53 21 39 39 11 18 38 15 27 40 21 40 39 15 27 40 10 11 37 21 41 39 12 20 41 13 19 54 22 42 43 13 24 42 16 29 44 22 43 43 16 29 44 12 17 41 22 44 43 14 26 45 9 25 49 23 45 47 9 12 46 17 28 48 23 46 47 17 28 48 14 23 45 23 47 47</p> </triangles> </mesh> <extra> <technique profile="MAYA"> <double_sided>1</double_sided> <dynamic_attributes> <miShadingSamplesOverride short_name="mso" type="bool">0</miShadingSamplesOverride> <miShadingSamples short_name="msh" type="float">0</miShadingSamples> <miMaxDisplaceOverride short_name="mdo" type="bool">0</miMaxDisplaceOverride> <miMaxDisplace short_name="mmd" type="float">0</miMaxDisplace> </dynamic_attributes> </technique> </extra> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="mine01"> <node id="pSphere1" name="pSphere1" type="NODE"> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <instance_geometry url="#pSphereShape1"> <bind_material> <technique_common> <instance_material symbol="mineSG" target="#mine"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> <extra> <technique profile="FCOLLADA"> <start_time>0.041666</start_time> <end_time>2</end_time> </technique> </extra> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; } }//package com.devm.tevlon.data
Section 38
//Enemy (com.devm.tevlon.enemies.Enemy) package com.devm.tevlon.enemies { import com.devm.tevlon.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; import org.papervision3d.objects.parsers.*; public class Enemy extends DisplayObject3D implements Killable { protected var _rotSpeed:Number; public var _type:String;// = "enemyMine" protected var _player:Player; protected var _drawDistance:int; protected var _speed:Number;// = 6 public var _enemyType:int; public var _health:int; protected var _missiles:Array; protected var _enemyHandler:EnemyHandler; public var _radius:Number; public var _gfx:DAE; public var _healthMax:int; public static const DEATH_BY_RANGE:int = 2; public static const TYPE_ADVANCED:int = 2; public static const DEATH_BY_MISSILE:int = 0; public static const DEATH_BY_PLAYER_COLLISION:int = 1; public static const TYPE_BASE:int = 1; public static const TYPE_MINE:int = 0; public static const DEATH_BY_HANDOFGOD:int = 3; public static const TYPE_GUN:int = 3; public static const DEATH_BY_WALL:int = 4; public function Enemy(){ _type = "enemyMine"; _speed = 6; super(); _enemyType = TYPE_MINE; } public function init(_arg1:DAE, _arg2:int):void{ Collisions.enemies.push(this); _radius = 50; _health = 10; _drawDistance = _arg2; _player = Main._player; _enemyHandler = Main._enemyHandler; _missiles = _player._missiles; _speed = (6 + (Math.random() * 3)); _rotSpeed = (4 + (Math.random() * 8)); if (Math.random() > 0.5){ _rotSpeed = -(_rotSpeed); }; _gfx = _arg1.clone(); _gfx.scale = (3 + (Math.random() * 2)); addChild(_gfx); } public function kill(_arg1:int=0):void{ _health = 0; Collisions.removeEnemy(this); _enemyHandler.killEnemy(this, _arg1); } override public function toString():String{ return (((((((((("enemy " + _type) + " pos: ") + x) + ",") + y) + ",") + z) + " type: ") + _enemyType)); } public function onUpdate():void{ var _local1:Number; var _local2:Number3D; _gfx.rotationX = (_gfx.rotationX + (_rotSpeed * 0.5)); _gfx.rotationZ = (_gfx.rotationZ + _rotSpeed); _local1 = distanceTo(_player); if ((((_local1 > (_drawDistance * 1.2))) && (visible))){ visible = false; }; if ((((_local1 < (_drawDistance * 0.9))) && (!(visible)))){ visible = true; }; if (_local1 > (_drawDistance * 1.5)){ _enemyHandler.killEnemy(this, DEATH_BY_RANGE); }; _local2 = new Number3D((_player.x - x), 0, (_player.z - z)); _local2.normalize(); x = (x + (_speed * _local2.x)); z = (z + (_speed * _local2.z)); } public function killObj():void{ if (parent){ parent.removeChild(this); }; } public function doDamage(_arg1:int=10, _arg2:int=0):void{ _health = (_health - _arg1); if (_health <= 0){ kill(_arg2); }; } } }//package com.devm.tevlon.enemies
Section 39
//EnemyAdv (com.devm.tevlon.enemies.EnemyAdv) package com.devm.tevlon.enemies { import com.devm.tevlon.data.*; import com.devm.tevlon.*; import org.papervision3d.core.math.*; import org.papervision3d.objects.parsers.*; import com.devm.util.misc.*; import flash.utils.*; public class EnemyAdv extends Enemy { private const RATE_OF_FIRE:uint = 1000; private var _firedMissiles:Array; private var _isCircleing:Boolean; private var _rotDir:Number; private var _rotAngle:Number; private var _circleRad:Number; private var _lastFireTime:uint;// = 0 private var _missilesFired:uint;// = 0 public function EnemyAdv(){ _lastFireTime = 0; _missilesFired = 0; _firedMissiles = []; super(); _enemyType = TYPE_ADVANCED; } override public function init(_arg1:DAE, _arg2:int):void{ Collisions.enemies.push(this); _radius = 50; _health = 10; _drawDistance = _arg2; _player = Main._player; _enemyHandler = Main._enemyHandler; _missiles = _player._missiles; _speed = (18 + (Math.random() * 6)); _rotSpeed = (5 + (Math.random() * 3)); _rotSpeed = ((Math.random() > 0.5)) ? _rotSpeed : -(_rotSpeed); _gfx = _arg1.clone(); _gfx.scale = (9 + (Math.random() * 4)); _isCircleing = false; _circleRad = (_drawDistance * (0.08 + (Math.random() * 0.05))); _rotDir = (1.75 + (Math.random() * 1.5)); _rotDir = ((Math.random() > 0.5)) ? _rotDir : -(_rotDir); addChild(_gfx); } override public function onUpdate():void{ var _local1:Number; var _local2:Number3D; var _local3:int; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Missile; var _local10:Number; _gfx.rotationY = (_gfx.rotationY + _rotSpeed); _local1 = distanceTo(_player); if ((((_local1 > (_drawDistance * 1.2))) && (visible))){ visible = false; }; if ((((_local1 < (_drawDistance * 0.9))) && (!(visible)))){ visible = true; }; if (_local1 > (_drawDistance * 1.5)){ _enemyHandler.killEnemy(this, DEATH_BY_RANGE); }; _local2 = new Number3D((_player.x - x), 0, (_player.z - z)); _local2.normalize(); if (_local1 > (_circleRad * 1.5)){ x = (x + (_speed * _local2.x)); z = (z + (_speed * _local2.z)); if (_isCircleing){ _isCircleing = false; }; } else { if (!_isCircleing){ _isCircleing = true; _rotAngle = (-((Math.atan2(_local2.x, _local2.z) * (180 / Math.PI))) + 270); }; _rotAngle = (_rotAngle + _rotDir); _local4 = (_rotAngle / (180 / Math.PI)); _local5 = (_player.x + (_circleRad * Math.cos(_local4))); _local6 = (_player.z + (_circleRad * Math.sin(_local4))); _local7 = (_local5 - x); _local8 = (_local6 - z); x = (x + (_local7 * 0.1)); z = (z + (_local8 * 0.1)); if (((((getTimer() - _lastFireTime) > RATE_OF_FIRE)) && ((_firedMissiles.length < 3)))){ _lastFireTime = getTimer(); _missilesFired++; _local9 = new Missile(MaterialsAndModels._missileMaterial, 30, 60); _local9.init(this, _firedMissiles.length, 1, 2); _local9.x = x; _local9.y = y; _local9.z = z; _local10 = (Math.atan2(_local2.x, _local2.z) * (180 / Math.PI)); _local9.rotationX = -90; _local9.rotationY = _local10; AudioManager.play3DSound("missile_fire", null, 0, this); parent.addChild(_local9); _firedMissiles.push(_local9); }; }; _local3 = 0; while (_local3 < _firedMissiles.length) { _firedMissiles[_local3].onUpdate(); _local3++; }; } override public function killObj():void{ while (_firedMissiles.length > 0) { _firedMissiles[0].kill(false); }; if (parent){ parent.removeChild(this); }; } public function killMissile(_arg1:Missile):void{ var _local2:int; _local2 = 0; while (_local2 < _firedMissiles.length) { if (_firedMissiles[_local2] == _arg1){ if (_arg1.parent){ _arg1.parent.removeChild(_arg1); }; _firedMissiles.splice(_local2, 1); return; }; _local2++; }; } } }//package com.devm.tevlon.enemies
Section 40
//EnemyBase (com.devm.tevlon.enemies.EnemyBase) package com.devm.tevlon.enemies { import com.devm.tevlon.*; import org.papervision3d.objects.parsers.*; import com.devm.util.gui.*; public class EnemyBase extends Enemy { private var _camera:ChaseCamera; private var _gun:StationaryGun; private var _healthMeter:HealthMeter3D; public function EnemyBase(){ _type = "enemyBase"; _enemyType = TYPE_BASE; } override public function init(_arg1:DAE, _arg2:int):void{ Collisions.enemies.push(this); _radius = 150; _health = 100; _healthMax = 100; _drawDistance = _arg2; _player = Main._player; _enemyHandler = Main._enemyHandler; _missiles = _player._missiles; _camera = Main._camera; _gfx = _arg1.clone(); _gfx.scale = 6; addChild(_gfx); _gun = new StationaryGun(); _gun.init(_enemyHandler._enemyGun, _arg2); _gun.x = x; _gun.y = 120; _gun.z = z; Main._scene.addChild(_gun, "enemyGun"); } override public function kill(_arg1:int=0):void{ _health = 0; Collisions.removeEnemy(this); _enemyHandler.killEnemy(this, _arg1); } override public function onUpdate():void{ var _local1:Number; if (visible){ _healthMeter.lookAt(_camera); _gun.onUpdate(); }; _local1 = distanceTo(_player); if ((((_local1 > (_drawDistance * 1.4))) && (visible))){ visible = false; _healthMeter.visible = false; }; if ((((_local1 < (_drawDistance * 1.2))) && (!(visible)))){ visible = true; _healthMeter.visible = true; }; } override public function killObj():void{ if (_healthMeter.parent){ _healthMeter.parent.removeChild(_healthMeter); }; _healthMeter = null; _gun.kill(Enemy.DEATH_BY_HANDOFGOD); _gun = null; if (parent){ parent.removeChild(this); }; } public function setupHealthMeter(_arg1:Array):void{ _healthMeter = new HealthMeter3D(70, 7, _arg1); _healthMeter.x = x; _healthMeter.y = 200; _healthMeter.z = z; Main._scene.addChild(_healthMeter, "enemyBaseHealthMeter"); } override public function doDamage(_arg1:int=10, _arg2:int=0):void{ _health = (_health - _arg1); _healthMeter.setHealthPercent(int(((_health / _healthMax) * 100))); if (_health <= 0){ kill(_arg2); }; } } }//package com.devm.tevlon.enemies
Section 41
//EnemyHandler (com.devm.tevlon.enemies.EnemyHandler) package com.devm.tevlon.enemies { import flash.events.*; import com.devm.tevlon.fx.*; import com.devm.tevlon.data.*; import com.devm.tevlon.*; import flash.display.*; import org.papervision3d.objects.parsers.*; import com.devm.util.gui.*; import org.papervision3d.scenes.*; import com.devm.util.misc.*; import flash.utils.*; public class EnemyHandler { private var _player:Player; private var _level:Level; private var _scene:Scene3D; private var _mineAdvModel:DAE; private var _lastEnemySpawnTime:uint;// = 0 public var _mineModel:DAE; private var _nonMobilePos:Array; public var _enemies:Array; private var _healthBitmaps:Array; private var _numOfAdvMines:int;// = 0 private var _FXPool:FXPool; public var _enemyBaseModel:DAE; public var _nonMobileEnemies:Array; public var _enemyGun:DAE; private var _loadedItems:int;// = 0 public static var _targetsMax:int; public static var _targets:int; public function EnemyHandler(){ _loadedItems = 0; _lastEnemySpawnTime = 0; _numOfAdvMines = 0; super(); } public function killAllEnemies():void{ var _local1:int; var _local2:Array; var _local3:Enemy; _local2 = []; _local1 = 0; while (_local1 < _enemies.length) { _local2.push(_enemies[_local1]); _local1++; }; _local1 = 0; while (_local1 < _local2.length) { _local3 = _local2[_local1]; _local3.kill(Enemy.DEATH_BY_HANDOFGOD); _local1++; }; _numOfAdvMines = 0; } private function onLoaded(_arg1:Event):void{ _loadedItems++; if (_loadedItems == 1){ Main.getInstance().onModuleLoaded(this); }; } public function killEnemy(_arg1:Enemy, _arg2:int):void{ var _local3:int; var _local4:int; var _local5:ExplosionPlane; var _local6:Array; if ((((((_arg2 == Enemy.DEATH_BY_MISSILE)) || ((_arg2 == Enemy.DEATH_BY_PLAYER_COLLISION)))) || ((_arg2 == Enemy.DEATH_BY_HANDOFGOD)))){ if ((((_arg2 == Enemy.DEATH_BY_PLAYER_COLLISION)) || ((_arg1._enemyType == Enemy.TYPE_BASE)))){ if (((!((_arg2 == Enemy.DEATH_BY_HANDOFGOD))) && (!((_arg2 == Enemy.DEATH_BY_WALL))))){ _local4 = 90; if (_arg1._enemyType == Enemy.TYPE_BASE){ _local4 = 150; }; _local5 = _FXPool.getExplosionPlane(_local4); _local5.x = _arg1.x; _local5.y = _arg1.y; _local5.z = _arg1.z; AudioManager.play3DSound("explosion", null, 0, _local5); _scene.addChild(_local5); }; }; if (_arg2 == Enemy.DEATH_BY_MISSILE){ if (_arg1._enemyType == Enemy.TYPE_BASE){ Player._s_score = (Player._s_score + 50); } else { if (_arg1._enemyType == Enemy.TYPE_ADVANCED){ Player._s_score = (Player._s_score + 15); } else { Player._s_score = (Player._s_score + 5); }; }; }; if ((((_arg1._enemyType == Enemy.TYPE_BASE)) && ((_arg2 == Enemy.DEATH_BY_MISSILE)))){ _targets--; _local6 = Level.getRealPos2TilePos(_arg1.x, _arg1.z); Main._HUD._miniMap.drawEnemyPos(_local6[0], _local6[1], 4278190080); if (_targets == 0){ Main.getInstance().levelCompleted(); } else { Main._HUD.showMessage((("Enemy base destroyed\n" + _targets) + " targets left")); }; }; Main._HUD.update(); }; if (_arg1._enemyType == Enemy.TYPE_ADVANCED){ _numOfAdvMines--; }; _local3 = 0; while (_local3 < _enemies.length) { if (_enemies[_local3] == _arg1){ _enemies.splice(_local3, 1); break; }; _local3++; }; if (_arg1._enemyType == Enemy.TYPE_BASE){ _local3 = 0; while (_local3 < _nonMobileEnemies.length) { if (_nonMobileEnemies[_local3] == _arg1){ _nonMobileEnemies.splice(_local3, 1); break; }; _local3++; }; }; _arg1.killObj(); } public function spawnEnemy(_arg1:int, _arg2:int=0, _arg3:int=0):void{ var _local4:Enemy; var _local5:EnemyAdv; var _local6:EnemyBase; if (_arg1 == Enemy.TYPE_MINE){ _local4 = new Enemy(); _local4.init(_mineModel, Level.DRAW_DISTANCE); _local4.x = _player.x; _local4.y = _player.y; _local4.z = _player.z; _local4.rotationY = (_player.rotationY + (-45 + (Math.random() * 90))); _local4.moveForward((Level.DRAW_DISTANCE * 0.4)); _scene.addChild(_local4, "enemy"); _enemies.push(_local4); }; if (_arg1 == Enemy.TYPE_ADVANCED){ _local5 = new EnemyAdv(); _local5.init(_mineAdvModel, Level.DRAW_DISTANCE); _local5.x = _player.x; _local5.y = _player.y; _local5.z = _player.z; _local5.rotationY = (_player.rotationY + (-45 + (Math.random() * 90))); _local5.moveForward((Level.DRAW_DISTANCE * 0.4)); _scene.addChild(_local5, "enemyAdv"); _enemies.push(_local5); _numOfAdvMines++; }; if (_arg1 == Enemy.TYPE_BASE){ _local6 = new EnemyBase(); _local6.x = (Level.TILE_SIZE * _arg2); _local6.y = 12; _local6.z = (Level.TILE_SIZE * _arg3); _local6.init(_enemyBaseModel, Level.DRAW_DISTANCE); _local6.setupHealthMeter(_healthBitmaps); _scene.addChild(_local6, "enemyBase"); _enemies.push(_local6); _nonMobileEnemies.push(_local6); }; } public function onUpdate():void{ var _local1:int; var _local2:int; var _local3:int; if ((getTimer() - _lastEnemySpawnTime) > 3000){ if (_enemies.length < CampaignData.getCurrentLevelData().maxMines){ if (Main._homeBase.distanceTo(_player) > Level.DRAW_DISTANCE){ if ((((_numOfAdvMines < CampaignData.getCurrentLevelData().maxAdvMines)) && ((Math.random() > 0.6)))){ spawnEnemy(Enemy.TYPE_ADVANCED); }; _local2 = (1 + (Math.random() * 2)); _local3 = 0; while (_local3 < _local2) { spawnEnemy(Enemy.TYPE_MINE); _local3++; }; _lastEnemySpawnTime = getTimer(); }; }; }; _local1 = 0; while (_local1 < _enemies.length) { _enemies[_local1].onUpdate(); _local1++; }; } public function spawnEnemyBases(_arg1:Array):void{ var _local2:int; _nonMobilePos = _arg1; _targetsMax = _arg1.length; _targets = _targetsMax; _local2 = 0; while (_local2 < _targetsMax) { spawnEnemy(Enemy.TYPE_BASE, _nonMobilePos[_local2][0], _nonMobilePos[_local2][1]); _local2++; }; } public function init():void{ var _local1:HealthMeter; var _local2:int; var _local3:BitmapData; _player = Main._player; _scene = Main._scene; _level = Main._level; _FXPool = Main._FXPool; _enemies = []; _nonMobileEnemies = []; _mineModel = new DAE(); _mineModel.load(ModelsData._mineModel, MaterialsAndModels._mineMaterial); _mineAdvModel = new DAE(); _mineAdvModel.load(ModelsData._mineAdvModel, MaterialsAndModels._mineAdvMaterial); _healthBitmaps = []; _local1 = new HealthMeter(); _local1.gotoAndStop(1); _local2 = 0; while (_local2 < 10) { _local3 = new BitmapData(_local1.width, _local1.height, true, 0); _local3.draw(_local1); _healthBitmaps.push(_local3); _local1.gotoAndStop((_local1.currentFrame + 1)); _local2++; }; _local1 = null; _enemyBaseModel = new DAE(); _enemyBaseModel.load(ModelsData._enemyBaseModel, MaterialsAndModels._enemyBaseMaterial); _enemyGun = new DAE(); _enemyGun.load(ModelsData._stationaryGun, MaterialsAndModels._enemyBaseMaterial); onLoaded(null); } } }//package com.devm.tevlon.enemies
Section 42
//StationaryGun (com.devm.tevlon.enemies.StationaryGun) package com.devm.tevlon.enemies { import com.devm.tevlon.data.*; import com.devm.tevlon.*; import org.papervision3d.objects.parsers.*; import com.devm.util.misc.*; import flash.utils.*; public class StationaryGun extends Enemy { private const RATE_OF_FIRE:uint = 550; private var _firedMissiles:Array; private var _lastFireTime:uint;// = 0 private var _missilesFired:uint;// = 0 public function StationaryGun(){ _lastFireTime = 0; _missilesFired = 0; _firedMissiles = []; super(); _type = "enemyGun"; _enemyType = TYPE_GUN; } override public function init(_arg1:DAE, _arg2:int):void{ Collisions.enemies.push(this); _radius = 60; _health = 20; _healthMax = 20; _drawDistance = _arg2; _player = Main._player; _enemyHandler = Main._enemyHandler; _missiles = _player._missiles; _gfx = _arg1.clone(); _gfx.scale = 5; addChild(_gfx); } override public function kill(_arg1:int=0):void{ _health = 0; Collisions.removeEnemy(this); _enemyHandler.killEnemy(this, _arg1); } override public function onUpdate():void{ var _local1:Number; var _local2:int; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Missile; _local1 = distanceTo(_player); if ((((_local1 > (_drawDistance * 1.4))) && (visible))){ visible = false; }; if ((((_local1 < (_drawDistance * 1))) && (!(visible)))){ visible = true; }; _local2 = 0; while (_local2 < _firedMissiles.length) { _firedMissiles[_local2].onUpdate(); _local2++; }; _local3 = (x - _player.x); _local4 = (z - _player.z); _local5 = (Math.atan2(_local3, _local4) * (180 / Math.PI)); _local6 = (_local5 - rotationY); rotationY = (rotationY + (0.12 * _local6)); if (_local1 > (_drawDistance * 0.6)){ return; }; if (Math.abs(_local6) < 10){ if (((((getTimer() - _lastFireTime) > RATE_OF_FIRE)) && ((_firedMissiles.length < 8)))){ _lastFireTime = getTimer(); _missilesFired++; _local7 = new Missile(MaterialsAndModels._missileMaterial, 30, 60); _local7.init(this, _firedMissiles.length, 1); _local7.x = x; _local7.y = (y + 40); _local7.z = z; _local4 = _local1; _local3 = (_local7.y - _player.y); _local5 = (Math.atan2(_local3, _local4) * (180 / Math.PI)); _local7.rotationX = (-90 - _local5); _local7.rotationY = (rotationY - 180); if ((_missilesFired % 2)){ _local7.moveRight(22); } else { _local7.moveLeft(22); }; AudioManager.play3DSound("missile_fire", null, 0, this); parent.addChild(_local7); _firedMissiles.push(_local7); }; }; } override public function killObj():void{ while (_firedMissiles.length > 0) { _firedMissiles[0].kill(false); }; if (parent){ parent.removeChild(this); }; } public function killMissile(_arg1:Missile):void{ var _local2:int; _local2 = 0; while (_local2 < _firedMissiles.length) { if (_firedMissiles[_local2] == _arg1){ if (_arg1.parent){ _arg1.parent.removeChild(_arg1); }; _firedMissiles.splice(_local2, 1); return; }; _local2++; }; } } }//package com.devm.tevlon.enemies
Section 43
//ExplosionPlane (com.devm.tevlon.fx.ExplosionPlane) package com.devm.tevlon.fx { import com.devm.tevlon.*; import org.papervision3d.materials.*; import org.papervision3d.objects.primitives.*; public class ExplosionPlane extends Plane { private var _FXPool:FXPool; private var _frameNum:int;// = 0 private var _camera:ChaseCamera; private var _material:BitmapMaterial; private var _bitmaps:Array; public function ExplosionPlane(_arg1:BitmapMaterial=null, _arg2:Number=0, _arg3:Number=0){ var _local4:Array; _frameNum = 0; super(_arg1, _arg2, _arg3, 0, 0, null); _material = _arg1; _local4 = geometry.vertices; _local4[1].y = (-(_arg3) / 2); _local4[3].y = (-(_arg3) / 2); _local4[0].y = (_arg3 / 2); _local4[2].y = (_arg3 / 2); } public function init(_arg1:Array, _arg2:FXPool):void{ _bitmaps = _arg1; _camera = Main._camera; _FXPool = _arg2; } public function onUpdate():void{ _material.texture = _bitmaps[_frameNum]; if ((_frameNum + 1) < _bitmaps.length){ _frameNum++; } else { _FXPool.killFX(this); }; lookAt(_camera); } } }//package com.devm.tevlon.fx
Section 44
//FXPool (com.devm.tevlon.fx.FXPool) package com.devm.tevlon.fx { import com.devm.tevlon.*; import flash.display.*; import flash.geom.*; import org.papervision3d.materials.*; import com.devm.tevlon.data.textures.*; public class FXPool { private var _eplosionBitmaps:Array; private var _FXs:Array; private var _explosionMat:BitmapMaterial; public function onUpdate():void{ var _local1:int; _local1 = 0; while (_local1 < _FXs.length) { _FXs[_local1].onUpdate(); _local1++; }; } public function init():void{ var _local1:Bitmap; var _local2:int; var _local3:int; var _local4:BitmapData; var _local5:Matrix; _FXs = []; _eplosionBitmaps = []; _local1 = new Bitmap(new ExplosionTexture(0, 0)); _local2 = _local1.height; _local3 = 0; while (_local3 < 14) { _local4 = new BitmapData(_local2, _local2, true, 0); _local5 = new Matrix(); _local5.translate((-(_local3) * _local2), 0); _local4.draw(_local1, _local5); _eplosionBitmaps.push(_local4); _local3++; }; _explosionMat = new BitmapMaterial(_eplosionBitmaps[0]); Main.getInstance().onModuleLoaded(this); } public function killFX(_arg1):void{ var _local2:int; _local2 = 0; while (_local2 < _FXs.length) { if (_FXs[_local2] == _arg1){ if (_FXs[_local2].parent){ _FXs[_local2].parent.removeChild(_FXs[_local2]); }; _FXs.splice(_local2, 1); return; }; _local2++; }; } public function getExplosionPlane(_arg1:int=90):ExplosionPlane{ var _local2:BitmapMaterial; var _local3:ExplosionPlane; _local2 = new BitmapMaterial(_eplosionBitmaps[0]); _local3 = new ExplosionPlane(_local2, _arg1, _arg1); _local3.init(_eplosionBitmaps, this); _FXs.push(_local3); return (_local3); } } }//package com.devm.tevlon.fx
Section 45
//EnemyDirection (com.devm.tevlon.hud.EnemyDirection) package com.devm.tevlon.hud { import com.devm.tevlon.enemies.*; import com.devm.tevlon.*; import flash.display.*; public class EnemyDirection extends Sprite { private var _player:Player; private var _basesMarkers:Array; private var _homeMarker:EnemyMarker; private var _home:HomeBase; private var _bases:Array; public function EnemyDirection(){ _bases = []; _basesMarkers = []; super(); } public function init():void{ _player = Main._player; _home = Main._homeBase; _homeMarker = new EnemyMarker(); _homeMarker.draw(90, 0xFF00); addChild(_homeMarker); } public function onUpdate():void{ var _local1:int; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Enemy; var _local6:EnemyMarker; _local1 = 0; while (_local1 < _basesMarkers.length) { _basesMarkers[_local1].visible = false; _local1++; }; _local1 = 0; while (_local1 < _bases.length) { _local5 = _bases[_local1]; _local6 = _basesMarkers[_local1]; _local6.visible = true; _local2 = (_player.x - _local5.x); _local3 = (_player.z - _local5.z); _local4 = (Math.atan2(_local2, _local3) * (180 / Math.PI)); _local6.rotation = (180 + (_local4 - _player.rotationY)); _local1++; }; _local2 = (_player.x - _home.x); _local3 = (_player.z - _home.z); _local4 = (Math.atan2(_local2, _local3) * (180 / Math.PI)); _homeMarker.rotation = (180 + (_local4 - _player.rotationY)); } public function setupObjects():void{ var _local1:int; var _local2:EnemyMarker; _local1 = 0; while (_local1 < _basesMarkers.length) { removeChild(_basesMarkers[_local1]); _local1++; }; _bases = Main._enemyHandler._nonMobileEnemies; _basesMarkers = []; _local1 = 0; while (_local1 < _bases.length) { _local2 = new EnemyMarker(); _local2.draw(90); _basesMarkers.push(_local2); addChild(_local2); _local1++; }; } } }//package com.devm.tevlon.hud
Section 46
//EnemyMarker (com.devm.tevlon.hud.EnemyMarker) package com.devm.tevlon.hud { import flash.display.*; public class EnemyMarker extends Shape { public function draw(_arg1:int, _arg2:uint=0xFFFF00):void{ var _local3:int; var _local4:int; _local3 = 6; _local4 = 10; graphics.lineStyle(1, 0xFFFFFF, 0.4); graphics.beginFill(_arg2, 0.4); graphics.moveTo(0, -(_arg1)); graphics.lineTo((-(_local3) / 2), ((-(_local4) / 3) - _arg1)); graphics.lineTo(0, (-(_local4) - _arg1)); graphics.lineTo((_local3 / 2), ((-(_local4) / 3) - _arg1)); graphics.lineTo(0, -(_arg1)); } } }//package com.devm.tevlon.hud
Section 47
//FarclipFog (com.devm.tevlon.hud.FarclipFog) package com.devm.tevlon.hud { import com.devm.tevlon.*; import flash.display.*; public class FarclipFog extends MovieClip { private var _player:Player; public function FarclipFog(){ cacheAsBitmap = true; _player = Main._player; } public function onUpdate():void{ y = (-50 + (_player._speed * 2)); } } }//package com.devm.tevlon.hud
Section 48
//GameOverScreen (com.devm.tevlon.hud.GameOverScreen) package com.devm.tevlon.hud { import flash.events.*; import com.devm.tevlon.data.*; import com.devm.tevlon.*; import flash.display.*; import flash.net.*; import com.devm.util.gui.*; import com.devm.util.misc.*; import flash.text.*; import com.mygame.*; public class GameOverScreen extends Sprite { private var _tfScore:StdLabel; private var _btnRetry:MenuButton; private var _btnSubmit:MenuButton; private var _tfName:StdLabel; private var _btnPlayMore:MenuButton; private var _callback:Function; private var _tfTitle:StdLabel; public function init():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Shape; graphics.beginFill(0, 0.25); graphics.drawRect(0, 0, Main.STAGEW, Main.STAGEH); _local1 = 160; _local2 = 210; graphics.beginFill(0, 0.5); graphics.lineStyle(1, 0x999999, 0.5); graphics.drawRect(((Main.STAGEW / 2) - (_local1 / 2)), ((Main.STAGEH / 2) - (_local2 / 2)), _local1, _local2); _local3 = (((Main.STAGEW / 2) - (_local1 / 2)) + 20); _local4 = (((Main.STAGEH / 2) - (_local2 / 2)) + 20); _tfTitle = new StdLabel("Tahoma", 10, 0xFFFFFF, true, false); _tfTitle.width = 100; _tfTitle.height = 16; _tfTitle.text = "PLAYER KILLED!"; _tfTitle.x = _local3; _tfTitle.y = _local4; addChild(_tfTitle); _local4 = (_local4 + 20); _btnRetry = new MenuButton(); _btnRetry.draw(">RETRY LEVEL"); _btnRetry.setActive(true, close); _btnRetry.x = _local3; _btnRetry.y = _local4; addChild(_btnRetry); _local4 = (_local4 + 30); _tfScore = new StdLabel("Tahoma", 10, 0xFFFFFF, true, false); _tfScore.width = 100; _tfScore.height = 16; _tfScore.x = _local3; _tfScore.y = _local4; addChild(_tfScore); _local4 = (_local4 + 30); _local5 = new Shape(); _local5.graphics.beginFill(0x333333); _local5.graphics.lineStyle(1, 0x999999, 0.5); _local5.graphics.drawRect(0, 0, 100, 14); _local5.x = _local3; _local5.y = _local4; addChild(_local5); _tfName = new StdLabel("Tahoma", 10, 0xFFFFFF, true, false); _tfName.type = TextFieldType.INPUT; _tfName.text = "Player"; _tfName.width = 100; _tfName.height = 18; _tfName.selectable = true; _tfName.maxChars = 20; _tfName.restrict = "A-Z a-z 0-9"; _tfName.x = _local3; _tfName.y = _local4; addChild(_tfName); _local4 = (_local4 + 20); _btnSubmit = new MenuButton(); _btnSubmit.draw(">SUBMIT HIGHSCORE"); _btnSubmit.setActive(true, submitHighscore); _btnSubmit.x = _local3; _btnSubmit.y = _local4; addChild(_btnSubmit); _local4 = (_local4 + 30); _btnPlayMore = new MenuButton(); _btnPlayMore.draw(">PLAY MORE GAMES"); _btnPlayMore.setActive(true, onPlayMore); _btnPlayMore.x = _local3; _btnPlayMore.y = _local4; addChild(_btnPlayMore); } private function submitHighscore(_arg1:MenuButton):void{ var url:String; var loader:URLLoader; var request:URLRequest; var b = _arg1; url = ((((("http://www.mygame.com/servlet/WebGameServlet?action=gameover&url=tevlon&points=" + Player._s_score) + "&username=") + _tfName.text) + "&level=") + (CampaignData.currentLevel + 1)); loader = new URLLoader(); request = new URLRequest(url); loader.addEventListener(Event.COMPLETE, onHighscoreSubmitted, false, 0, true); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onHighscoreSubmitted, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onHighscoreSubmitted, false, 0, true); try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); Debug.print((("DataLoader() - " + "Unable to load requested document. ") + url), "FF3333"); }; } public function gameFinished(_arg1:Boolean):void{ if (_arg1){ _btnRetry.text = ">MENU"; _tfTitle.text = "GAME COMPLETED!\t\t"; } else { _btnRetry.text = ">PLAY AGAIN"; _tfTitle.text = "LEVEL FAILED!\t\t"; }; } private function onPlayMore(_arg1:MenuButton):void{ var _local2:String; _local2 = (("http://www.mygame.com/bounce.jsp?game=tevlon&from=" + MyGameLoader.url) + "&typ=other_games"); navigateToURL(new URLRequest(_local2), "_blank"); } public function update():void{ _tfScore.text = ("SCORE: " + Player._s_score); } public function setCallback(_arg1:Function):void{ _callback = _arg1; } private function onHighscoreSubmitted(_arg1:Event):void{ var url:String; var e = _arg1; url = "http://www.mygame.com/bounce.jsp?game=tevlon&from=gameUrl&typ=highscores&redirect=/game/tevlon/highscores"; try { Debug.print(("onHighscoreSubmitted()" + e.target.data)); } catch(e:Error) { }; navigateToURL(new URLRequest(url), "_blank"); Main.getInstance().openMenu(); } public function close(_arg1:MenuButton=null):void{ if (_callback != null){ _callback(); }; } } }//package com.devm.tevlon.hud
Section 49
//HudMeter1 (com.devm.tevlon.hud.HudMeter1) package com.devm.tevlon.hud { public class HudMeter1 extends HudMeters { } }//package com.devm.tevlon.hud
Section 50
//HudMeter2 (com.devm.tevlon.hud.HudMeter2) package com.devm.tevlon.hud { public class HudMeter2 extends HudMeters { } }//package com.devm.tevlon.hud
Section 51
//HudMeters (com.devm.tevlon.hud.HudMeters) package com.devm.tevlon.hud { import flash.display.*; public class HudMeters extends MovieClip { protected var orgY:int;// = -2 public function HudMeters(){ orgY = -2; super(); } public function setValue(_arg1:Number):void{ y = (orgY - (_arg1 * 88)); } } }//package com.devm.tevlon.hud
Section 52
//MyGameLogoMini (com.devm.tevlon.hud.MyGameLogoMini) package com.devm.tevlon.hud { import flash.events.*; import flash.display.*; import flash.net.*; import com.mygame.*; public class MyGameLogoMini extends MovieClip { public function MyGameLogoMini(){ buttonMode = true; addEventListener(MouseEvent.MOUSE_UP, onMouseUp); } private function onMouseUp(_arg1:MouseEvent):void{ var _local2:String; _local2 = (("http://www.mygame.com/bounce.jsp?game=tevlon&from=" + MyGameLoader.url) + "&typ=sign"); navigateToURL(new URLRequest(_local2), "_blank"); } } }//package com.devm.tevlon.hud
Section 53
//TimeIndicator (com.devm.tevlon.hud.TimeIndicator) package com.devm.tevlon.hud { import com.devm.tevlon.data.*; import flash.display.*; public class TimeIndicator extends Sprite { private var _lastValue:Number;// = 0 private var _timeBox:Shape; private var _w:int;// = 200 public function TimeIndicator(){ _w = 200; _lastValue = 0; super(); } public function init():void{ graphics.lineStyle(1, 16724787, 0.5); graphics.drawRect(0, 0, _w, 10); _timeBox = new Shape(); _timeBox.graphics.beginFill(16724787, 0.5); _timeBox.graphics.drawRect((-(_w) - 1), 0, (_w + 2), (10 + 1)); _timeBox.x = (_w + 1); addChild(_timeBox); } public function onUpdate():void{ var _local1:Number; _local1 = CampaignData.getCurrentLevelData().getTimeLeftPercent(); if (_lastValue != _local1){ _lastValue = _local1; _timeBox.scaleX = _local1; }; } } }//package com.devm.tevlon.hud
Section 54
//OldMonitor (com.devm.tevlon.menu.OldMonitor) package com.devm.tevlon.menu { import flash.events.*; import flash.display.*; import flash.geom.*; public class OldMonitor extends MovieClip { private var _bitmapData:BitmapData; private var _bitmap:Bitmap; private var _content:DisplayObject; private var _colorTrans:ColorTransform; private var _matr:Matrix; override public function stop():void{ removeEventListener(Event.ENTER_FRAME, onUpdate); } public function start():void{ if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onUpdate, false, 0, true); }; } public function setMask(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{ _content.scrollRect = new Rectangle(0, -20, _arg3, _arg4); _bitmapData = new BitmapData(_arg3, _arg4, true, 0); _bitmap = new Bitmap(_bitmapData); _bitmap.x = _arg1; _bitmap.y = _arg2; addChild(_bitmap); addChild(_content); _matr = new Matrix(); _matr.translate(0, 0); _colorTrans = new ColorTransform(); _colorTrans.alphaMultiplier = 0.8; } private function onUpdate(_arg1:Event):void{ } public function setContent(_arg1:DisplayObject):void{ _content = _arg1; addChild(_content); } } }//package com.devm.tevlon.menu
Section 55
//SettingsScreen (com.devm.tevlon.menu.SettingsScreen) package com.devm.tevlon.menu { import flash.display.*; import com.devm.util.gui.*; import com.devm.util.misc.*; public class SettingsScreen extends TextScreen { private var _tfDisableSnd:StdLabel; private var _btnAA:MenuButton; private var _btnDisableSnd:MenuButton; private var _tfAA:StdLabel; override public function init(_arg1:String, _arg2:Function):void{ var _local3:int; var _local4:int; var _local5:int; _textData = TEXT_SETTINGS; _callBack = _arg2; _tf = new StdLabel("Tahoma", 10, 0xFFFFFF, true, false); _tf.width = 330; _tf.height = 50; _tf.wordWrap = true; _tf.multiline = true; addChild(_tf); _btnClose = new MenuButton(); _btnClose.draw("BACK"); _btnClose.setActive(true, hide); _btnClose.x = (330 - _btnClose.width); _btnClose.y = (230 - 5); _local3 = 40; _local4 = (120 + 40); _local5 = 50; _tfDisableSnd = new StdLabel("Tahoma", 10, 0xFFFFFF); _tfDisableSnd.text = "Toggle sound:"; _tfDisableSnd.x = _local3; _tfDisableSnd.y = _local5; addChild(_tfDisableSnd); _btnDisableSnd = new MenuButton(); _btnDisableSnd.draw("ENABLED"); _btnDisableSnd.setActive(true, onDisableSnd); _btnDisableSnd.x = _local4; _btnDisableSnd.y = _local5; addChild(_btnDisableSnd); _local5 = (_local5 + 20); _tfAA = new StdLabel("Tahoma", 10, 0xFFFFFF); _tfAA.text = "Toggle anti-alias:"; _tfAA.x = _local3; _tfAA.y = _local5; addChild(_tfAA); _btnAA = new MenuButton(); _btnAA.draw("OFF"); _btnAA.setActive(true, onAntiAlias); _btnAA.x = _local4; _btnAA.y = _local5; addChild(_btnAA); showBtn(); } private function onDisableSnd(_arg1:MenuButton):void{ if (!AudioManager.isEnabled()){ _arg1.text = "ENABLED"; AudioManager.enabled(true); } else { _arg1.text = "DISABLED"; AudioManager.stopAll(); AudioManager.enabled(false); }; } private function onAntiAlias(_arg1:MenuButton):void{ if (stage.quality == StageQuality.LOW.toUpperCase()){ _arg1.text = "ON"; stage.quality = StageQuality.HIGH; } else { if (stage.quality == StageQuality.HIGH.toUpperCase()){ _arg1.text = "OFF"; stage.quality = StageQuality.LOW; }; }; } } }//package com.devm.tevlon.menu
Section 56
//TextScreen (com.devm.tevlon.menu.TextScreen) package com.devm.tevlon.menu { import flash.display.*; import com.devm.util.gui.*; public class TextScreen extends Sprite { private var _monitor:OldMonitor; protected var _tf:StdLabel; protected var _btnClose:MenuButton; protected var _callBack:Function; protected var _textData:String; private var _textFX:OldSchoolWaveText; public static const TEXT_SETTINGS:String = "- - - - - - - S E T T I N G S - - - - - - Anti-alias, Sound, Difficulty, Fps & stuff"; public static const TEXT_INSTRUCTIONS:String = "- - - - - - - I N S T R U C T I O N S - - - - - - The goal of the game is to destroy the enemy's bases, indicated by a yellow dot on the mini map as well as yellow arrows around your ship. On each level you have a limited amount of time to destroy all bases, the time remaining is shown by the red meter on the top-right corner of the screen. On most levels you will not have enough ammo to destroy all targets in one sweep, so you'll need to return to your base (your starting position) and reload. Controls: WASD or the arrow keys Strafe on Z and X Firemissiles with space Pause game with ESC"; public static const TEXT_ABOUT:String = "- - - - - - - A B O U T - - - - - - Code and Graphics: Jan Rigerl Sound: Daniel Beckman games.devmonkey.se Created with papervision3d"; public function init(_arg1:String, _arg2:Function):void{ _textData = _arg1; _callBack = _arg2; _tf = new StdLabel("Tahoma", 10, 0xFFFFFF, true, false); _tf.width = 330; _tf.height = 300; _tf.wordWrap = true; _tf.multiline = true; addChild(_tf); _btnClose = new MenuButton(); _btnClose.draw("BACK"); _btnClose.setActive(true, hide); _btnClose.x = (330 - _btnClose.width); _btnClose.y = (230 - 5); showBtn(); } protected function showBtn():void{ addChild(_btnClose); } public function hide(_arg1:MenuButton=null):void{ parent.removeChild(this); if (_textFX){ _textFX.stop(); }; if (_monitor){ _monitor.stop(); }; _callBack(); } public function show():void{ _tf.text = _textData; _tf.animate(0, showBtn); if (_textFX){ _textFX.start(); }; if (_monitor){ _monitor.start(); }; } } }//package com.devm.tevlon.menu
Section 57
//ChaseCamera (com.devm.tevlon.ChaseCamera) package com.devm.tevlon { import org.papervision3d.core.math.*; import org.papervision3d.cameras.*; public class ChaseCamera extends FreeCamera3D { private var _player:Player; public var _spring:Number;// = 0.3 public var _lookOffsetY:int;// = 110 public function ChaseCamera(_arg1:Number=5, _arg2:Number=80, _arg3:Object=null){ _spring = 0.3; _lookOffsetY = 110; super(_arg1, _arg2, _arg3); } public function init():void{ _player = Main._player; focus = 65; zoom = 5; } public function onUpdate():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = (_player._cameraPosition.sceneX - x); _local2 = (_player._cameraPosition.sceneY - y); _local3 = (_player._cameraPosition.sceneZ - z); x = (x + (_spring * _local1)); y = (y + (_spring * _local2)); z = (z + (_spring * _local3)); lookAtCords(new Number3D(_player.x, (_player.y + _lookOffsetY), _player.z)); } } }//package com.devm.tevlon
Section 58
//Collisions (com.devm.tevlon.Collisions) package com.devm.tevlon { import com.devm.tevlon.enemies.*; import com.devm.util.misc.*; public class Collisions { public static var player:Player; public static var level:Level; public static var enemies:Array = []; public static var playerMissiles:Array = []; public static var enemyMissiles:Array = []; public static function removeEnemy(_arg1:Enemy):void{ var _local2:int; _local2 = 0; while (_local2 < enemies.length) { if (enemies[_local2] === _arg1){ enemies.splice(_local2, 1); return; }; _local2++; }; } public static function onUpdate():void{ var _local1:int; var _local2:int; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Missile; var _local8:Enemy; var _local9:Tile; _local1 = 0; while (_local1 < enemies.length) { _local8 = enemies[_local1]; if (_local8._health <= 0){ trace("enemy already dead, but not remove from list by some reason.. (WTF!!)"); trace(((("o: " + enemies.length) + " , m: ") + playerMissiles.length)); } else { if (((!((_local8._enemyType == Enemy.TYPE_BASE))) && (!((_local8._enemyType == Enemy.TYPE_GUN))))){ //unresolved if _local8.kill(Enemy.DEATH_BY_WALL); } else { _local2 = 0; while (_local2 < playerMissiles.length) { _local7 = playerMissiles[_local2]; _local3 = (_local8.x - _local7.x); _local4 = (_local8.y - _local7.y); _local5 = (_local8.z - _local7.z); _local6 = Math.sqrt((((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5))); if (_local6 < _local8._radius){ _local8.doDamage(10, Enemy.DEATH_BY_MISSILE); _local7.kill(); }; _local2++; }; _local3 = (_local8.x - player.x); _local4 = (_local8.y - player.y); _local5 = (_local8.z - player.z); _local6 = Math.sqrt((((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5))); if ((((_local6 < player._radius)) && ((_local8._enemyType == Enemy.TYPE_MINE)))){ _local8.doDamage(10, Enemy.DEATH_BY_PLAYER_COLLISION); player.doDamage(10, Enemy.DEATH_BY_MISSILE); } else { if ((((_local6 < (player._radius * 2))) && ((_local8._enemyType == Enemy.TYPE_BASE)))){ player.doDamage(200, Enemy.DEATH_BY_PLAYER_COLLISION); }; }; }; }; _local1++; }; _local2 = 0; for (;_local2 < playerMissiles.length;_local2++) { _local7 = playerMissiles[_local2]; if (level.getNearestTile(_local7)._tileType == Tile.TYPE_WALL){ _local7.kill(); continue; }; }; _local2 = 0; while (_local2 < enemyMissiles.length) { _local7 = enemyMissiles[_local2]; _local3 = (player.x - _local7.x); _local4 = (player.y - _local7.y); _local5 = (player.z - _local7.z); _local6 = Math.sqrt((((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5))); if (_local6 < player._radius){ player.doDamage(10, Enemy.DEATH_BY_MISSILE); _local7.kill(); } else { if (level.getNearestTile(_local7)._tileType == Tile.TYPE_WALL){ _local7.kill(); }; }; _local2++; }; _local9 = level.getNearestTile(player); if (_local9._tileType == Tile.TYPE_WALL){ if (Player._s_armor > 0){ Debug.print("player coll with WALL"); player.doDamage(200); Main.getInstance().stopTime(); }; }; } public static function killAllEnemiesAndMissiles():void{ var _local1:Enemy; var _local2:Missile; var _local3:int; _local3 = 0; while (enemies.length > 0) { _local1 = enemies[0]; _local1.kill(Enemy.DEATH_BY_HANDOFGOD); _local3++; }; while (playerMissiles.length > 0) { _local2 = playerMissiles[0]; _local2.kill(false); _local3++; }; while (enemyMissiles.length > 0) { _local2 = enemyMissiles[0]; _local2.kill(false); _local3++; }; enemies = []; playerMissiles = []; enemyMissiles = []; Debug.print(("Collisions.killAllEnemiesAndMissiles() objsDeleted: " + _local3)); } public static function removeEnemyMissile(_arg1:Missile):void{ var _local2:int; _local2 = 0; while (_local2 < enemyMissiles.length) { if (enemyMissiles[_local2] === _arg1){ enemyMissiles.splice(_local2, 1); return; }; _local2++; }; } public static function removePlayerMissile(_arg1:Missile):void{ var _local2:int; _local2 = 0; while (_local2 < playerMissiles.length) { if (playerMissiles[_local2] === _arg1){ playerMissiles.splice(_local2, 1); return; }; _local2++; }; } } }//package com.devm.tevlon
Section 59
//Conf (com.devm.tevlon.Conf) package com.devm.tevlon { public class Conf { public static const MINE_ADV_DESTROYED_POINTS:int = 15; public static const MINE_DESTROYED_POINTS:int = 3; public static const BASE_DESTROYED_POINTS:int = 50; public static const GAME_COMPLETE_POINTS:int = 300; public static const LEVEL_COMPLETE_POINTS:int = 100; } }//package com.devm.tevlon
Section 60
//HomeBase (com.devm.tevlon.HomeBase) package com.devm.tevlon { import flash.events.*; import com.devm.tevlon.data.*; import org.papervision3d.objects.parsers.*; public class HomeBase extends DAE { private var _drawDistance:Number; private var _player:Player; private var _loadedItems:int;// = 0 public function HomeBase(_arg1:Boolean=false){ _loadedItems = 0; super(_arg1); } public function init():void{ load(ModelsData._homeBase, MaterialsAndModels._homeBaseMaterial); scale = 7; _player = Main._player; _drawDistance = Level.DRAW_DISTANCE; onLoaded(null); } override public function toString():String{ return (((((("homeBase pos: " + x) + ",") + y) + ",") + z)); } public function onUpdate():void{ var _local1:Number; _local1 = distanceTo(_player); if ((((_local1 > (_drawDistance * 1.5))) && (visible))){ visible = false; }; if ((((_local1 < _drawDistance)) && (!(visible)))){ visible = true; }; if (_local1 < 200){ _player.reSuppy(); }; } private function onLoaded(_arg1:Event):void{ _loadedItems++; if (_loadedItems == 1){ Main.getInstance().onModuleLoaded(this); }; } } }//package com.devm.tevlon
Section 61
//HUD (com.devm.tevlon.HUD) package com.devm.tevlon { import com.devm.tevlon.enemies.*; import com.devm.tevlon.data.*; import flash.display.*; import com.devm.util.gui.*; import com.devm.util.misc.*; import flash.utils.*; import com.devm.tevlon.data.textures.*; import com.devm.tevlon.hud.*; import flash.text.*; public class HUD extends Sprite { private var _lblTargets:StdLabel; private var _lblMessage:StdLabel; public var _miniMap:MiniMap; private var _healthWarn:Shape; private var _msgTimer:uint; private var _timeIndicator:TimeIndicator; private var _healthCache:int;// = 0 private var _btnMenu:MenuButton; private var _lblLevel:StdLabel; private var _healthMeter:HudMeter2; private var _ammoWarn:Shape; private var _ammoCache:int;// = 0 private var _meterHolder:Sprite; private var _lblScore:StdLabel; private var _ammoMeter:HudMeter1; public var _enemyDirection:EnemyDirection; public function HUD(){ _ammoCache = 0; _healthCache = 0; super(); } public function init():void{ var _local1:TextFormat; var _local2:int; var _local3:int; var _local4:StdLabel; var _local5:Shape; var _local6:Bitmap; _btnMenu = new MenuButton(); _btnMenu.draw("MENU"); _btnMenu.setActive(true, gotoMenu); _btnMenu.x = ((Main.STAGEW / 2) - (_btnMenu.width / 2)); _btnMenu.y = 5; addChild(_btnMenu); _lblScore = new StdLabel(); _lblScore.text = ("SCORE: " + formatNum(Player._s_score, 6)); _lblScore.x = ((Main.STAGEW - _lblScore.width) - 10); _lblScore.y = 35; addChild(_lblScore); _lblMessage = new StdLabel("Tahoma", 10, 0xFFFFFF, true, false); _lblMessage.width = Main.STAGEW; _lblMessage.height = 200; _lblMessage.x = 0; _lblMessage.y = 200; _lblMessage.multiline = true; _lblMessage.wordWrap = true; _local1 = _lblMessage.defaultTextFormat; _local1.align = TextFormatAlign.CENTER; _lblMessage.defaultTextFormat = _local1; _local2 = (Main.STAGEW / 2); _local3 = (Main.STAGEH - 14); _lblLevel = new StdLabel(); _lblLevel.text = "\t\t\t\t "; _lblLevel.x = 175; _lblLevel.y = _local3; addChild(_lblLevel); _lblTargets = new StdLabel(); _lblTargets.x = (_lblLevel.x + 95); _lblTargets.y = _local3; addChild(_lblTargets); _miniMap = new MiniMap(); _miniMap.init(); _miniMap.x = 5; _miniMap.y = ((Main.STAGEH - 100) - 5); addChild(_miniMap); _timeIndicator = new TimeIndicator(); _timeIndicator.init(); _timeIndicator.x = ((Main.STAGEW - _timeIndicator.width) - 10); _timeIndicator.y = 20; addChild(_timeIndicator); _local4 = new StdLabel(); _local4.text = "TIME LEFT:"; _local4.x = _timeIndicator.x; _local4.y = 5; addChild(_local4); _meterHolder = new Sprite(); _meterHolder.x = (Main.STAGEW - 21); _meterHolder.y = (Main.STAGEH - 12); _local5 = new Shape(); _local5.graphics.beginFill(0xFF0000); _local5.graphics.drawRect(0, 0, 40, 90); _local5.x = (_meterHolder.x - 20); _local5.y = (_meterHolder.y - 90); addChild(_local5); _meterHolder.mask = _local5; _healthWarn = new Shape(); _healthWarn.graphics.beginFill(0xFF0000, 0.8); _healthWarn.graphics.drawRect(0, -91, 15, 91); _healthWarn.blendMode = BlendMode.MULTIPLY; _healthMeter = new HudMeter2(); _healthMeter.x = -2; _healthMeter.y = -91; _ammoWarn = new Shape(); _ammoWarn.graphics.beginFill(0xFF0000, 0.8); _ammoWarn.graphics.drawRect(0, -91, 15, 91); _ammoWarn.blendMode = BlendMode.MULTIPLY; _ammoWarn.x = -19; _ammoWarn.alpha = 0; _ammoMeter = new HudMeter1(); _ammoMeter.x = -21; _ammoMeter.y = -91; _meterHolder.addChild(_healthWarn); _meterHolder.addChild(_ammoWarn); _meterHolder.addChild(_healthMeter); _meterHolder.addChild(_ammoMeter); addChild(_meterHolder); _enemyDirection = new EnemyDirection(); _enemyDirection.init(); _enemyDirection.x = (Main.STAGEW / 2); _enemyDirection.y = (Main.STAGEH * 0.6); addChild(_enemyDirection); _local6 = new Bitmap(new HudBottom(0, 0)); _local6.y = (Main.STAGEH - _local6.height); addChildAt(_local6, 0); update(); Main.getInstance().onModuleLoaded(this); } private function formatNum(_arg1:int, _arg2:int):String{ var _local3:String; _local3 = ("" + _arg1); while (_local3.length < _arg2) { _local3 = ("0" + _local3); }; return (_local3); } private function setAmmo(_arg1:int):void{ if (_arg1 == _ammoCache){ return; }; _ammoWarn.alpha = (1 - (_arg1 / 30)); _ammoMeter.setValue((_arg1 / Player._s_missilesMax)); _ammoCache = _arg1; } public function initLevel():void{ _lblLevel.text = (("LEVEL: " + (CampaignData.currentLevel + 1)) + " OF 18"); _enemyDirection.setupObjects(); _miniMap.drawMap(); setTime(); update(); } public function gotoMenu(_arg1:MenuButton):void{ Debug.print("open menu"); Main._menu.enableResume(); Main.getInstance().openMenu(); } private function setTime():void{ } private function hideMessage():void{ if (_lblMessage.parent != null){ _lblMessage.parent.removeChild(_lblMessage); }; } private function setHealth(_arg1:int):void{ if (_arg1 == _healthCache){ return; }; _healthWarn.alpha = (1 - (_arg1 / 100)); _healthMeter.setValue((_arg1 / Player._s_armorMax)); _healthCache = _arg1; } public function showMessage(_arg1:String, _arg2:int=2000, _arg3:Boolean=false):void{ _lblMessage.text = _arg1; addChild(_lblMessage); if (_arg3){ _lblMessage.animate(); }; clearTimeout(_msgTimer); _msgTimer = setTimeout(hideMessage, _arg2); } public function onUpdate():void{ _enemyDirection.onUpdate(); _timeIndicator.onUpdate(); _miniMap.onUpdate(); } public function update():void{ setAmmo(Player._s_missiles); setHealth(Player._s_armor); _lblTargets.text = ((("TARGETS LEFT: " + EnemyHandler._targets) + " / ") + EnemyHandler._targetsMax); _lblScore.text = ("SCORE: " + formatNum(Player._s_score, 6)); } } }//package com.devm.tevlon
Section 62
//Killable (com.devm.tevlon.Killable) package com.devm.tevlon { public interface Killable { function onUpdate():void; function killObj():void; function doDamage(_arg1:int=10, _arg2:int=0):void; function kill(_arg1:int=0):void; } }//package com.devm.tevlon
Section 63
//Level (com.devm.tevlon.Level) package com.devm.tevlon { import flash.events.*; import com.devm.tevlon.data.*; import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import com.devm.util.misc.*; import com.devm.tevlon.data.textures.*; public class Level extends DisplayObject3D { private var _player:Player; public var _polyCount:int; private var _camera:ChaseCamera; public var _tiles:Array; private var _tileMap:BitmapData; private var _levelData:LevelData; private var _loadedItems:int;// = 0 public static const TILE_RES:int = 5; private static const TILES_SIDE:int = 8; public static const TILE_SIZE:int = 600; private static const TILEMAP_SIZE:int = 100; private static const TILES_SHOWING:int = 64; public static var _groundCraterMat:BitmapMaterial; public static var _groundWaterMat:BitmapMaterial; public static var DRAW_DISTANCE:int = 2400; public static var _groundNormalMat:BitmapMaterial; public static var _groundConcreteMat:BitmapMaterial; public static var _groundWireMat:WireframeMaterial; public function Level(_arg1:String=null, _arg2:GeometryObject3D=null, _arg3:Object=null){ _loadedItems = 0; Collisions.level = this; super(_arg1, _arg2, _arg3); } public function init():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Tile; _player = Main._player; _camera = Main._camera; _groundNormalMat = new BitmapMaterial(new GroundNormalTexture(0, 0)); _groundWaterMat = new BitmapMaterial(new GroundWaterTexture(0, 0)); _groundCraterMat = new BitmapMaterial(new GroundCraterTexture(0, 0)); _groundConcreteMat = new BitmapMaterial(new GroundConcreteTexture(0, 0)); _groundWireMat = new WireframeMaterial(); _polyCount = 0; _tiles = []; _local1 = 0; _local2 = 0; _local3 = 0; _local4 = 0; while (_local4 < TILES_SHOWING) { _local5 = new Tile(_groundNormalMat, TILE_SIZE, TILE_SIZE, TILE_RES, TILE_RES); _local5.init(); _local5.rotationX = -90; _local5.x = (_local1 * TILE_SIZE); _local5.z = (_local2 * TILE_SIZE); _local5._tilePosX = _local1; _local5._tilePosZ = _local2; _local3++; if (_local3 >= (TILES_SHOWING / TILES_SIDE)){ _local2++; _local1 = 0; _local3 = 0; } else { _local1++; }; _polyCount = (_polyCount + _local5.geometry.faces.length); addChild(_local5); _tiles.push(_local5); _local4++; }; Debug.print(((((("Level.init() : tile polys: " + _polyCount) + " tiles: ") + TILES_SIDE) + "x") + TILES_SIDE)); onLoaded(null); startLevel(); } public function toggleWireFrame():void{ var _local1:int; var _local2:Tile; _local1 = 0; while (_local1 < _tiles.length) { _local2 = _tiles[_local1]; if (_local2.material == _groundNormalMat){ _local2.material = _groundWireMat; } else { _local2.material = _groundNormalMat; }; _local1++; }; Debug.print(("Level.toggleWireFrame() : " + _local2.material)); } public function startLevel():void{ _levelData = CampaignData.getCurrentLevelData(); _tileMap = _levelData.levelBitmap; Debug.print(("Level.init() : level " + CampaignData.currentLevel)); } public function getTileMap():BitmapData{ return (_tileMap); } public function getTileTypeAtCord(_arg1:Number, _arg2:Number):int{ var _local3:int; var _local4:int; _local3 = Math.ceil((_arg1 / TILE_SIZE)); _local4 = Math.ceil((_arg2 / TILE_SIZE)); _local4 = (TILEMAP_SIZE - _local4); if ((((((((_local3 > 99)) || ((_local3 < 0)))) || ((_local4 > 99)))) || ((_local4 < 0)))){ return (Tile.TYPE_WATER); }; return (_tileMap.getPixel(_local3, _local4)); } public function onUpdate():void{ var _local1:Number; var _local2:Number; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:Tile; _local1 = _player.x; _local2 = _player.z; _local3 = (_local1 - DRAW_DISTANCE); _local4 = (_local2 - DRAW_DISTANCE); _local5 = (_local1 + DRAW_DISTANCE); _local6 = (_local2 + DRAW_DISTANCE); _local7 = 0; while (_local7 < _tiles.length) { _local8 = _tiles[_local7]; if (_local8.x < _local3){ _local8.x = (_local8.x + (TILE_SIZE * TILES_SIDE)); _local8.setTileType(); } else { if (_local8.x > _local5){ _local8.x = (_local8.x - (TILE_SIZE * TILES_SIDE)); _local8.setTileType(); }; }; if (_local8.z < _local4){ _local8.z = (_local8.z + (TILE_SIZE * TILES_SIDE)); _local8.setTileType(); } else { if (_local8.z > _local6){ _local8.z = (_local8.z - (TILE_SIZE * TILES_SIDE)); _local8.setTileType(); }; }; _local7++; }; } public function prepareTiles():void{ var _local1:int; var _local2:Tile; Debug.print("Level.prepareTiles()"); _local1 = 0; while (_local1 < TILES_SHOWING) { _local2 = _tiles[_local1]; _local2.setTileType(); _local1++; }; } private function onLoaded(_arg1:Event):void{ _loadedItems++; if (_loadedItems == 1){ Main.getInstance().onModuleLoaded(this); }; } public function getNearestTile(_arg1:DisplayObject3D):Tile{ var _local2:Number; var _local3:Number; var _local4:Tile; var _local5:Tile; var _local6:Number; var _local7:Number; var _local8:int; _local2 = 0; _local3 = 999999; _local8 = 0; while (_local8 < _tiles.length) { _local5 = _tiles[_local8]; _local6 = (_local5.x - _arg1.x); _local7 = (_local5.z - _arg1.z); _local2 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); if (_local2 < _local3){ _local3 = _local2; _local4 = _local5; }; _local8++; }; return (_local4); } public static function getRealPos2TilePos(_arg1:Number, _arg2:Number):Array{ var _local3:int; var _local4:int; _local3 = Math.ceil((_arg1 / TILE_SIZE)); _local4 = Math.ceil((_arg2 / TILE_SIZE)); _local4 = (TILEMAP_SIZE - _local4); return ([_local3, _local4]); } } }//package com.devm.tevlon
Section 64
//Main (com.devm.tevlon.Main) package com.devm.tevlon { import flash.events.*; import com.devm.tevlon.enemies.*; import com.devm.tevlon.fx.*; import com.devm.tevlon.data.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.render.*; import com.devm.util.gui.*; import org.papervision3d.scenes.*; import com.devm.util.misc.*; import fl.transitions.easing.*; import flash.utils.*; import fl.transitions.*; import com.devm.tevlon.data.sounds.*; import com.devm.tevlon.hud.*; import flash.text.*; import com.mygame.*; import flash.filters.*; import flash.system.*; import flash.ui.*; public class Main extends MovieClip { private var _firstTime:Boolean;// = true private var _tf:TextField; private var _itemsLoaded:int;// = 0 private var _scoreAtLevelInit:int;// = 0 private var _gameOverScreen:GameOverScreen; private var _tf2:TextField; private var _myGameLoader:MyGameLoader; private var _blackness:Shape; private var _doCollisions:Boolean;// = false private var _myGameLogo:MyGameLogoMini; private var _timer:Timer; private var _time:uint;// = 0 private var _timer1sec:Timer; private var _controlsHelp:ControlsHelp; public static const STAGEH:int = 400; public static const STAGEW:int = 550; public static var _player:Player; public static var _enemyHandler:EnemyHandler; public static var _camera:ChaseCamera; public static var _viewport:Viewport3D; public static var _level:Level; public static var _scene:Scene3D; public static var _HUD:HUD; public static var _renderer:BasicRenderEngine; public static var _FXPool:FXPool; public static var _homeBase:HomeBase; private static var _this:Main; public static var _menu:Menu; public static var _fog:FarclipFog; public function Main(){ _time = 0; _itemsLoaded = 0; _firstTime = true; _scoreAtLevelInit = 0; _doCollisions = false; super(); _myGameLoader = new MyGameLoader(init); _myGameLoader.x = 226; _myGameLoader.y = 168; addChild(_myGameLoader); _myGameLoader.init(); } private function onUpdate1sec(_arg1:Event):void{ CampaignData.getCurrentLevelData().removeTime(0.6); if (CampaignData.getCurrentLevelData().getTimeLeftPercent() == 0){ _player.doDamage(200); }; } public function levelCompleted2():void{ var _local1:int; _local1 = CampaignData.getCurrentLevelData().onCompletedScoreBonus; Debug.print(("Main.levelCompleted2() updating currentLevel: " + CampaignData.currentLevel), "3377ff"); Player._s_score = (Player._s_score + int((100 * CampaignData.getCurrentLevelData().getTimeLeftPercent()))); CampaignData.currentLevel++; if (CampaignData.getIsGameCompleted()){ Player._s_score = (Player._s_score + Conf.GAME_COMPLETE_POINTS); gameCompleted(); } else { Player._s_score = (Player._s_score + _local1); initLevel(); }; } private function init():void{ var _local1:ContextMenu; var _local2:ContextMenuItem; var _local3:Date; var _local4:String; var _local5:Boolean; var _local6:String; var _local7:String; _this = this; Debug.print(("_myGameLoader.URL = " + MyGameLoader.url)); if (_myGameLoader){ removeChild(_myGameLoader); }; _myGameLoader = null; CampaignData.setup(); MaterialsAndModels.create(); trace(""); trace(""); trace(""); trace("init()"); trace(""); trace(""); trace(""); AudioManager.addSoundAsset("missile_fire", new MissileFireSnd()); AudioManager.addSoundAsset("explosion", new ExplosionSnd()); AudioManager.addSoundAsset("engine", new EngineSnd()); AudioManager.addSoundAsset("engine_high", new EngineHighSnd()); AudioManager.addSoundAsset("music", new MusicSnd()); AudioManager.addSoundAsset("music_short", new MusicShortSnd()); AudioManager.setMax3DSndDistance((Level.DRAW_DISTANCE * 0.65)); trace("Main()"); if (Capabilities.playerType != "External"){ _local3 = new Date((parseInt(root.loaderInfo.parameters.i) * 1000)); _local4 = ((((((((((_local3.getFullYear() + "-") + addZero((_local3.getMonth() + 1))) + "-") + addZero(_local3.getDate())) + " ") + addZero(_local3.getHours())) + ":") + addZero(_local3.getMinutes())) + ":") + addZero(_local3.getSeconds())); Debug.print(("Compile date: " + _local4)); _local5 = false; _local6 = root.loaderInfo.loaderURL; _local7 = _local6.split("://")[1]; _local7 = _local7.split("/")[0]; Debug.print(("Domain: " + _local7)); }; _timer = new Timer(33); _timer.addEventListener(TimerEvent.TIMER, onUpdate); _timer1sec = new Timer(2000); _timer1sec.addEventListener(TimerEvent.TIMER, onUpdate1sec); _local1 = new ContextMenu(); _local1.hideBuiltInItems(); _local2 = new ContextMenuItem("devm"); _local2.enabled = false; _local1.customItems.push(_local2); this.contextMenu = _local1; stage.quality = StageQuality.LOW; _menu = new Menu(); addChild(_menu); _menu.init(); _myGameLogo = new MyGameLogoMini(); addChild(_myGameLogo); } public function onModuleLoaded(_arg1):void{ _itemsLoaded++; Debug.print(("module loaded : " + _arg1), "46C177"); if (_itemsLoaded == 7){ Debug.print("// * * * * * * * * * * ", "33FF33"); Debug.print("// Click on the flash, and then use the ARROW KEYS to control the ship", "33FF33"); Debug.print("// (WASD works too)", "33FF33"); Debug.print("// SPACE fires missiles :D", "33FF33"); Debug.print("// Z and X, left and right strafe", "33FF33"); Debug.print("// 1-9 provides various debug functionality", "118811"); Debug.print("// * * * * * * * * * * ", "33FF33"); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); initLevel(); }; } public function levelCompleted():void{ if (!CampaignData.getIsGameCompleted()){ _HUD.showMessage("LEVEL COMPLETED", 3000, true); }; Debug.print("LEVEL COMPLETED", "3333FF"); _doCollisions = false; setTimeout(stopTime, 250); AudioManager.playSound("music_short", null, 0, 0.7); setTimeout(levelCompleted2, 3000); } public function initGame():void{ Debug.print("initGame()"); Key.initialize(stage); _renderer = new BasicRenderEngine(); _scene = new Scene3D(); _viewport = new Viewport3D(STAGEW, (STAGEH - 10)); _camera = new ChaseCamera(); _player = new Player("player"); _enemyHandler = new EnemyHandler(); _FXPool = new FXPool(); _HUD = new HUD(); _level = new Level("level"); _homeBase = new HomeBase(); _fog = new FarclipFog(); _blackness = new Shape(); _gameOverScreen = new GameOverScreen(); AudioManager.setMicrophone(_player); _player.init(); _enemyHandler.init(); _camera.init(); _level.init(); _FXPool.init(); _homeBase.init(); _HUD.init(); _gameOverScreen.init(); addChild(_viewport); addChild(_HUD); _scene.addChild(_player, "player"); _scene.addChild(_level, "level"); _scene.addChild(_homeBase, "homeBase"); _blackness.graphics.beginFill(0); _blackness.graphics.drawRect(0, 0, STAGEW, STAGEH); Debug.print("initGame(): starting loading resources"); _controlsHelp = new ControlsHelp(); _controlsHelp.alpha = 0.6; _controlsHelp.x = ((STAGEW / 2) - (_controlsHelp.width / 2)); _controlsHelp.y = (STAGEH * 0.82); addChild(_blackness); onModuleLoaded(null); } public function initLevel():void{ var _local1:uint; var _local2:Array; _local1 = getTimer(); _scoreAtLevelInit = Player._s_score; _enemyHandler.killAllEnemies(); Collisions.killAllEnemiesAndMissiles(); _scene.clearAllChildren(); Debug.print(("Main.initLevel() scene children left after cleaning: should not be taken seriously! " + _scene.numChildren)); Debug.print(("Main.initLevel() scene children: " + _scene.childrenList())); if (_enemyHandler._enemies.length > 0){ Debug.print((("_enemyHandler._enemies.length = " + _enemyHandler._enemies.length) + ", should be 0"), "ff3333"); }; _scene.addChild(_player, "player"); _scene.addChild(_level, "level"); _scene.addChild(_homeBase, "homeBase"); _level.startLevel(); _player.reSuppy(); if (_gameOverScreen.parent){ _gameOverScreen.parent.removeChild(_gameOverScreen); }; _local2 = setStartPositions(); _enemyHandler.spawnEnemyBases(_local2); _level.prepareTiles(); _HUD.initLevel(); _HUD.showMessage(CampaignData.getCurrentLevelData().welcomeMsg, 8000, true); CampaignData.getCurrentLevelData().resetTime(); _doCollisions = false; setTimeout(enableCollisions, 2000); openGame(); startTime(); if (_firstTime){ addChild(_controlsHelp); _firstTime = false; }; addChild(_blackness); _blackness.alpha = 1; setTimeout(fadeBlackness, 500); Debug.print(("Main.initLevel() time: " + (getTimer() - _local1))); } private function enableCollisions():void{ _doCollisions = true; } public function setStartPositions():Array{ var _local1:BitmapData; var _local2:Array; var _local3:int; var _local4:int; var _local5:uint; var _local6:int; var _local7:int; _local1 = CampaignData.getCurrentLevelData().levelBitmap; _local2 = []; _local3 = 0; while (_local3 < _local1.width) { _local4 = 0; while (_local4 < _local1.height) { _local5 = _local1.getPixel(_local3, _local4); if (_local5 == Tile.TYPE_CONCRETE_HOME){ _local6 = _local3; _local7 = (_local1.height - _local4); _player.x = ((_local6 * Level.TILE_SIZE) - 100); _player.y = 60; _player.z = ((_local7 * Level.TILE_SIZE) - 50); _player.onInitLevel(); Debug.print("setting player startpos"); _camera.x = _player.x; _camera.y = (_player.y + 50); _camera.z = _player.z; _homeBase.x = (_local6 * Level.TILE_SIZE); _homeBase.y = 12; _homeBase.z = (_local7 * Level.TILE_SIZE); } else { if (_local5 == Tile.TYPE_CONCRETE_BASE){ _local2.push([_local3, (_local1.height - _local4)]); }; }; if (((((((((((((!((_local5 == Tile.TYPE_CONCRETE))) && (!((_local5 == Tile.TYPE_CONCRETE_BASE))))) && (!((_local5 == Tile.TYPE_CONCRETE_HOME))))) && (!((_local5 == Tile.TYPE_CRATER))))) && (!((_local5 == Tile.TYPE_NORMAL))))) && (!((_local5 == Tile.TYPE_WALL))))) && (!((_local5 == Tile.TYPE_WATER))))){ Debug.print(("WARN: pixel value strange? :" + _local5.toString(16)), "ff3333"); }; _local4++; }; _local3++; }; return (_local2); } public function startTime():void{ _timer.start(); _timer1sec.start(); addEventListener(Event.ENTER_FRAME, onFrame); _viewport.filters = []; _player.startEngineSound(); } public function showGameOverScreen():void{ _gameOverScreen.setCallback(openMenu); if (CampaignData.getIsGameCompleted()){ _gameOverScreen.gameFinished(true); } else { _gameOverScreen.gameFinished(false); }; _gameOverScreen.update(); addChild(_gameOverScreen); } private function onUpdate(_arg1:Event):void{ var _local2:uint; _local2 = getTimer(); if (stage.focus != null){ Debug.print(("stage.focus =" + stage.focus), "ffff33"); stage.focus = null; }; _camera.onUpdate(); _level.onUpdate(); _player.onUpdate(); _HUD.onUpdate(); _enemyHandler.onUpdate(); _FXPool.onUpdate(); _homeBase.onUpdate(); _fog.onUpdate(); if (_doCollisions){ Collisions.onUpdate(); }; } public function gameCompleted():void{ Debug.print("GAME COMPLETED! :D", "3333FF"); showGameOverScreen(); } private function removeControlTip():void{ removeChild(_controlsHelp); _controlsHelp = null; } private function checkMem():void{ var _local1:String; _local1 = ((System.totalMemory / 1000).toFixed(2) + "kb"); Debug.print(("mem usage: " + _local1)); } public function openGame():void{ addChild(_viewport); addChild(_fog); addChild(_HUD); addChild(_myGameLogo); AudioManager.stopSound("music"); } private function fadeBlackness():void{ new Tween(_blackness, "alpha", None.easeNone, 1, 0, 25); setTimeout(removeBlackness, 1100); } public function playerKilled():void{ Player._s_score = _scoreAtLevelInit; Player._s_score = (Player._s_score - 50); if (Player._s_score < 0){ Player._s_score = 0; }; _HUD.showMessage("PLAYER KILLED", 3000, true); _doCollisions = false; setTimeout(stopTime, 250); showGameOverScreen(); } private function removeBlackness():void{ if (_blackness.parent != null){ _blackness.parent.removeChild(_blackness); }; Debug.print("Main.removeBlackness()"); } private function keyPressed(_arg1:KeyboardEvent):void{ var _local2:uint; _local2 = _arg1.keyCode; if (_local2 == 27){ _HUD.gotoMenu(null); }; if ((((_local2 == Key.UP)) || ((_local2 == Key.W)))){ if (_controlsHelp != null){ removeControlTip(); }; }; } public function openMenu():void{ _menu.drawViewport(); _menu.start3d(); if (CampaignData.getIsGameCompleted()){ _menu.enableResume(false); } else { _menu.enableResume(true); }; addChild(_menu); stopTime(); removeChild(_HUD); removeChild(_viewport); removeChild(_fog); AudioManager.stopSound("music"); AudioManager.playSound("music", null, 9999, 0.5); addChild(_myGameLogo); } public function resumeGame():void{ openGame(); startTime(); } private function onFrame(_arg1:Event):void{ var _local2:uint; var _local3:RenderStatistics; _local2 = getTimer(); _local3 = _renderer.renderScene(_scene, _camera, _viewport); _time = getTimer(); } private function addZero(_arg1:Number):String{ return (((_arg1 < 10)) ? ("0" + _arg1) : ("" + _arg1)); } public function stopTime():void{ var _local1:ColorMatrixFilter; var _local2:Array; var _local3:Array; var _local4:Array; _timer.stop(); _timer1sec.stop(); removeEventListener(Event.ENTER_FRAME, onFrame); _local1 = new ColorMatrixFilter(); _local2 = [0, 0, 0, 1, 0]; _local3 = [0.3, 0.59, 0.11, 0, 0]; _local4 = new Array(); _local4 = _local4.concat(_local3); _local4 = _local4.concat(_local3); _local4 = _local4.concat(_local3); _local4 = _local4.concat(_local2); _local1.matrix = _local4; _viewport.filters = [_local1]; _player.stopEngineSound(); } public static function getInstance():Main{ return (_this); } } }//package com.devm.tevlon
Section 65
//Menu (com.devm.tevlon.Menu) package com.devm.tevlon { import flash.events.*; import com.devm.tevlon.data.*; import flash.display.*; import org.papervision3d.view.*; import flash.net.*; import org.papervision3d.objects.parsers.*; import org.papervision3d.render.*; import com.devm.util.gui.*; import org.papervision3d.scenes.*; import com.devm.util.misc.*; import flash.utils.*; import org.papervision3d.cameras.*; import com.devm.tevlon.menu.*; import com.mygame.*; import flash.filters.*; import flash.system.*; public class Menu extends MovieClip { private var _viewport:Viewport3D; private var _ship:DAE; private var _renderer:BasicRenderEngine; private var _btnHighscore:MenuButton; private var _btnResume:MenuButton; private var _camera:FreeCamera3D; private var _btnPlay:MenuButton; private var _btnMoreGames:MenuButton; private var _settings:SettingsScreen; private var _about:TextScreen; private var _intructions:TextScreen; private var _btnHolder:Sprite; private var _scene:Scene3D; private var _btnHelp:MenuButton; private var _btnAddGame:MenuButton; private var _btnSettings:MenuButton; private var _bitm:Bitmap; private var _btnAbout:MenuButton; public function Menu(){ addFrameScript(18, frame19); } private function onResume(_arg1:MenuButton):void{ stop3d(); parent.removeChild(this); Main.getInstance().resumeGame(); if (Player._s_armor == 0){ Main.getInstance().initLevel(); }; } public function init():void{ _bitm = new Bitmap(); addChild(_bitm); _intructions = new TextScreen(); _intructions.init(TextScreen.TEXT_INSTRUCTIONS, showButtons); _intructions.x = 100; _intructions.y = 130; _settings = new SettingsScreen(); _settings.init(TextScreen.TEXT_SETTINGS, showButtons); _settings.x = 100; _settings.y = 130; _about = new TextScreen(); _about.init(TextScreen.TEXT_ABOUT, showButtons); _about.x = 100; _about.y = 130; setTimeout(init2, 1000); AudioManager.stopSound("music"); AudioManager.playSound("music", null, 9999, 0.5); } private function onGotoWeb(_arg1:MenuButton):void{ var _local2:String; _local2 = (("http://www.mygame.com/bounce.jsp?game=tevlon&from=" + MyGameLoader.url) + "&typ=protect&redirect=/game/tevlon"); navigateToURL(new URLRequest(_local2), "_blank"); } public function init2():void{ var _local1:int; var _local2:int; var _local3:GlowFilter; var _local4:GlowFilter; var _local5:int; var _local6:int; var _local7:StdLabel; var _local8:MenuButton; _local1 = 280; _local2 = 120; _renderer = new BasicRenderEngine(); _scene = new Scene3D(); _viewport = new Viewport3D(_local1, _local2); _local3 = new GlowFilter(0, 1, 4, 4, 3); _local4 = new GlowFilter(0, 1, 16, 16, 1); _viewport.filters = [_local3, _local4]; _viewport.x = ((Main.STAGEW / 2) - (_local1 / 2)); _viewport.y = ((Main.STAGEH - _local2) - 0); _btnHolder = new Sprite(); addChild(_btnHolder); _camera = new FreeCamera3D(); _camera.z = -110; _ship = new DAE(); _ship.load(ModelsData._playerModel, MaterialsAndModels._playerMenuMaterials); _ship.scale = 12; _ship.rotationX = 10; _scene.addChild(_ship); _local5 = (Main.STAGEW / 2); _local6 = 130; if ((((((MyGameLoader.url.indexOf("http://") == -1)) && ((MyGameLoader.url.indexOf("https://") == -1)))) && (!((Capabilities.playerType == "External"))))){ _local7 = new StdLabel(); _local7.text = "This version of Tevlon 026 can only be played\nif it is hosted on a website."; _local7.x = (_local5 - (_local7.width / 2)); _local7.y = _local6; addChild(_local7); _local6 = (_local6 + 35); _local8 = new MenuButton(); _local8.draw("PLAY GAME"); _local8.setActive(true, onGotoWeb); _local8.x = (_local5 - (_local8.width / 2)); _local8.y = _local6; addChild(_local8); setTimeout(start3d, 200); return; }; _btnResume = new MenuButton(); _btnResume.draw("RESUME"); _btnResume.setActive(false, onResume); _btnResume.x = (_local5 - (_btnResume.width / 2)); _btnResume.y = _local6; _btnHolder.addChild(_btnResume); _local6 = (_local6 + 20); _btnPlay = new MenuButton(); _btnPlay.draw("NEW GAME"); _btnPlay.setActive(true, onPlay); _btnPlay.x = (_local5 - (_btnPlay.width / 2)); _btnPlay.y = _local6; _btnHolder.addChild(_btnPlay); _local6 = (_local6 + 20); _btnHelp = new MenuButton(); _btnHelp.draw("INSTRUCTIONS"); _btnHelp.setActive(true, onIntructions); _btnHelp.x = (_local5 - (_btnHelp.width / 2)); _btnHelp.y = _local6; _btnHolder.addChild(_btnHelp); _local6 = (_local6 + 20); _btnSettings = new MenuButton(); _btnSettings.draw("SETTINGS"); _btnSettings.setActive(true, onSettings); _btnSettings.x = (_local5 - (_btnSettings.width / 2)); _btnSettings.y = _local6; _btnHolder.addChild(_btnSettings); _local6 = (_local6 + 20); _btnAbout = new MenuButton(); _btnAbout.draw("ABOUT"); _btnAbout.setActive(true, onAbout); _btnAbout.x = (_local5 - (_btnAbout.width / 2)); _btnAbout.y = _local6; _btnHolder.addChild(_btnAbout); _local6 = (_local6 + 35); _btnHighscore = new MenuButton(); _btnHighscore.draw("HIGHSCORE"); _btnHighscore.setActive(true, onHighscore); _btnHighscore.x = (_local5 - (_btnHighscore.width / 2)); _btnHighscore.y = _local6; _btnHolder.addChild(_btnHighscore); _local6 = (_local6 + 20); _btnAddGame = new MenuButton(); _btnAddGame.draw("ADD TO WEBSITE"); _btnAddGame.setActive(true, onAddGame); _btnAddGame.x = (_local5 - (_btnAddGame.width / 2)); _btnAddGame.y = _local6; _btnHolder.addChild(_btnAddGame); _local6 = (_local6 + 20); _btnMoreGames = new MenuButton(); _btnMoreGames.draw("PLAY MORE GAMES"); _btnMoreGames.setActive(true, onPlayMore); _btnMoreGames.x = (_local5 - (_btnMoreGames.width / 2)); _btnMoreGames.y = _local6; _btnHolder.addChild(_btnMoreGames); _btnPlay.animate(); _btnHelp.animate(250); _btnSettings.animate(500); _btnAbout.animate(750); _btnHighscore.animate(1200); _btnAddGame.animate(1450); _btnMoreGames.animate(1700); setTimeout(start3d, 200); } public function stop3d():void{ removeEventListener(Event.ENTER_FRAME, onUpdate); } private function onHighscore(_arg1:MenuButton):void{ var _local2:String; _local2 = (("http://www.mygame.com/bounce.jsp?game=tevlon&from=" + MyGameLoader.url) + "&typ=highscores&redirect=/game/tevlon/highscores"); navigateToURL(new URLRequest(_local2), "_blank"); } public function drawViewport():void{ var _local1:Viewport3D; var _local2:BitmapData; _local1 = Main._viewport; _local2 = new BitmapData(_local1.width, _local1.height, false); _local2.draw(_local1); _local2.draw(Main._fog); _bitm.bitmapData = _local2; _bitm.alpha = 0.4; } private function onAddGame(_arg1:MenuButton):void{ var _local2:String; _local2 = (("http://www.mygame.com/bounce.jsp?game=tevlon&from=" + MyGameLoader.url) + "&typ=add_game&redirect=/freecontent.jsp"); navigateToURL(new URLRequest(_local2), "_blank"); } function frame19(){ stop(); } private function onSettings(_arg1:MenuButton):void{ removeChild(_btnHolder); addChild(_settings); _settings.show(); } public function enableResume(_arg1:Boolean=true):void{ _btnResume.setActive(_arg1, onResume); } private function onIntructions(_arg1:MenuButton):void{ removeChild(_btnHolder); addChild(_intructions); _intructions.show(); } private function onPlayMore(_arg1:MenuButton):void{ var _local2:String; _local2 = (("http://www.mygame.com/bounce.jsp?game=tevlon&from=" + MyGameLoader.url) + "&typ=other_games"); navigateToURL(new URLRequest(_local2), "_blank"); } private function onPlay(_arg1:MenuButton):void{ stop3d(); parent.removeChild(this); CampaignData.currentLevel = 0; Player._s_score = 0; if (Main._renderer == null){ Main.getInstance().initGame(); } else { Main.getInstance().initLevel(); }; } public function onUpdate(_arg1:Event):void{ _ship.rotationY = (_ship.rotationY + 4); if (_ship.rotationY > 360){ _ship.rotationY = (_ship.rotationY - 360); }; _renderer.renderScene(_scene, _camera, _viewport); } public function start3d():void{ addChild(_viewport); addChild(_btnHolder); addEventListener(Event.ENTER_FRAME, onUpdate); } private function showButtons():void{ addChild(_btnHolder); } private function onAbout(_arg1:MenuButton):void{ removeChild(_btnHolder); addChild(_about); _about.show(); } } }//package com.devm.tevlon
Section 66
//MiniMap (com.devm.tevlon.MiniMap) package com.devm.tevlon { import com.devm.tevlon.enemies.*; import com.devm.tevlon.data.*; import flash.display.*; import com.devm.util.misc.*; import flash.filters.*; public class MiniMap extends Sprite { private var _player:Player; private var _level:Level; private var _bmH:Bitmap; private var _bmd:BitmapData; private var _mask1:Shape; private var _playerMark:Shape; private var _midX:int; private var _bm:Sprite; private var _midY:int; public function init():void{ _level = Main._level; _player = Main._player; _playerMark = new Shape(); _playerMark.graphics.beginFill(3407667); _playerMark.graphics.moveTo(-2, 3); _playerMark.graphics.lineTo(0, -3); _playerMark.graphics.lineTo(2, 3); _playerMark.graphics.endFill(); _bm = new Sprite(); _bmH = new Bitmap(); _bm.filters = [new GlowFilter(0, 1, 2, 2, 2)]; _mask1 = new Shape(); } public function drawEnemyPos(_arg1:int, _arg2:int, _arg3:uint):void{ _bmd.setPixel32(_arg1, _arg2, _arg3); _bmd.setPixel32((_arg1 + 1), _arg2, _arg3); _bmd.setPixel32((_arg1 - 1), _arg2, _arg3); _bmd.setPixel32(_arg1, (_arg2 + 1), _arg3); _bmd.setPixel32(_arg1, (_arg2 - 1), _arg3); } public function drawMap():void{ var _local1:int; var _local2:Array; var _local3:Array; var _local4:int; var _local5:int; var _local6:EnemyBase; var _local7:Array; _bmd = CampaignData.getCurrentLevelData().levelBitmap.clone(); _local1 = 0; while (_local1 < _bmd.width) { _local5 = 0; while (_local5 < _bmd.height) { if (_bmd.getPixel(_local1, _local5) == 0){ _bmd.setPixel32(_local1, _local5, 0); } else { _bmd.setPixel32(_local1, _local5, ColorManipulator.ARGBmodifyColorAlpha(_bmd.getPixel32(_local1, _local5), 0.4)); }; _local5++; }; _local1++; }; _local2 = Level.getRealPos2TilePos(Main._homeBase.x, Main._homeBase.z); drawEnemyPos(_local2[0], _local2[1], 4281597747); _local3 = Main._enemyHandler._nonMobileEnemies; _local4 = 0; while (_local4 < _local3.length) { _local6 = _local3[_local4]; _local7 = Level.getRealPos2TilePos(_local6.x, _local6.z); drawEnemyPos(_local7[0], _local7[1], 4294967091); _local4++; }; _bmH.bitmapData = _bmd; _midX = (_bmd.width / 2); _midY = (_bmd.height / 2); _mask1.graphics.clear(); _mask1.graphics.beginFill(16724787, 0.2); _mask1.graphics.drawCircle(0, 0, (_midX - 2)); _mask1.x = _midX; _mask1.y = _midY; addChild(_mask1); _bm.mask = _mask1; _bmH.x = -(_midX); _bmH.y = -(_midY); _bm.x = _midX; _bm.y = _midY; _bm.addChild(_bmH); addChild(_bm); _playerMark.x = _midX; _playerMark.y = _midY; addChild(_playerMark); } public function onUpdate():void{ var _local1:Array; _local1 = Level.getRealPos2TilePos(_player.x, _player.z); _bmH.x = (-(_midX) + (_midX - _local1[0])); _bmH.y = (-(_midY) + (_midY - _local1[1])); _bm.rotation = -(_player.rotationY); } } }//package com.devm.tevlon
Section 67
//Missile (com.devm.tevlon.Missile) package com.devm.tevlon { import com.devm.tevlon.fx.*; import org.papervision3d.core.proto.*; import com.devm.util.misc.*; import org.papervision3d.objects.primitives.*; public class Missile extends Plane { private var _speed:Number; private var _acceleration:Number; private var _firedBy; private var _id:int; private var _life:uint;// = 0 public function Missile(_arg1:MaterialObject3D=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Object=null){ _life = 0; super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function init(_arg1, _arg2:int, _arg3:Number, _arg4:Number=3):void{ _firedBy = _arg1; _id = _arg2; _speed = _arg3; _acceleration = _arg4; if (_firedBy._type == "player"){ Collisions.playerMissiles.push(this); } else { Collisions.enemyMissiles.push(this); }; } public function kill(_arg1:Boolean=true):void{ var _local2:ExplosionPlane; if (_arg1){ _local2 = Main._FXPool.getExplosionPlane(90); _local2.x = x; _local2.y = y; _local2.z = z; AudioManager.play3DSound("explosion", null, 0, _local2); Main._scene.addChild(_local2, "explosion"); }; _firedBy.killMissile(this); if (this.parent != null){ Debug.print("missile parent not deleted!"); }; if (_firedBy._type == "player"){ Collisions.removePlayerMissile(this); } else { Collisions.removeEnemyMissile(this); }; } override public function toString():String{ return (((((((("missile pos: " + x) + ",") + y) + ",") + z) + " type: ") + _firedBy._type)); } public function onUpdate():void{ moveUp(_speed); if (_speed < 60){ _speed = (_speed + _acceleration); }; if (_life > 90){ kill(false); }; _life++; } } }//package com.devm.tevlon
Section 68
//Player (com.devm.tevlon.Player) package com.devm.tevlon { import flash.events.*; import flash.media.*; import com.devm.tevlon.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.objects.*; import org.papervision3d.objects.parsers.*; import org.papervision3d.materials.*; import com.devm.util.misc.*; import flash.utils.*; import org.papervision3d.objects.primitives.*; public class Player extends DisplayObject3D implements Killable { private const MAX_STRAFE_SPEED:Number = 10; private const TURN_FALLOFF:Number = 0.9; private const MAX_ROT:Number = 7; private const ACCELERATION:Number = 2; private const MAX_REVERSE_SPEED:Number = 6; private const RATE_OF_FIRE:uint = 333; private const MAX_SPEED:Number = 20; private const SPEED_FALLOFF:Number = 0.9; private const TURN_SPEED:Number = 1; public var _type:String;// = "player" private var _sin:Number;// = 0 public var _missileMaterial:BitmapMaterial; private var _shadow:Plane; private var _engineSnd:SoundChannel; private var _level:Level; private var _lastFireTime:uint;// = 0 public var _gfx:DAE; private var _strafeSpeed:Number;// = 0 private var _missilesFired:uint;// = 0 public var _cameraTarget:DisplayObject3D; private var _loadedItems:int;// = 0 public var _speed:Number;// = 0 private var _yRot:Number;// = 0 public var _missiles:Array; public var _cameraPosition:DisplayObject3D; public var _radius:Number;// = 50 private var _engineHighSnd:SoundChannel; private var _lastSpeed:Number;// = 4321 public static const _s_missilesMax:int = 40; public static const _s_armorMax:int = 125; public static var _s_armor:int = 100; public static var _s_score:int = 0; public static var _s_missiles:int = 40; public function Player(_arg1:String=null, _arg2:GeometryObject3D=null, _arg3:Object=null){ _radius = 50; _type = "player"; _speed = 0; _yRot = 0; _strafeSpeed = 0; _lastSpeed = 4321; _sin = 0; _lastFireTime = 0; _missilesFired = 0; _loadedItems = 0; super(_arg1, _arg2, _arg3); Collisions.player = this; } private function fireMissile():void{ var _local1:Missile; if ((getTimer() - _lastFireTime) > RATE_OF_FIRE){ if (_s_missiles < 1){ Debug.print("Out of ammo!"); Main._HUD.showMessage("Out of ammo! \nReturn to base to resupply"); return; }; _lastFireTime = getTimer(); _missilesFired++; _s_missiles--; _local1 = new Missile(_missileMaterial, 30, 60); _local1.init(this, _missiles.length, (_speed + 18)); _local1.rotationX = -90; _local1.rotationY = rotationY; _local1.x = x; _local1.y = (y - 5); _local1.z = z; if ((_missilesFired % 2)){ _local1.moveRight(12); AudioManager.playSound("missile_fire", null, 0, 1, 1); } else { _local1.moveLeft(12); AudioManager.playSound("missile_fire", null, 0, 1, -1); }; parent.addChild(_local1); _missiles.push(_local1); Main._HUD.update(); }; } public function startEngineSound():void{ _engineSnd = AudioManager.playSound("engine", null, 99999, 0.3); _engineHighSnd = AudioManager.playSound("engine_high", null, 99999, 0.1); } public function distanceToXZ(_arg1:DisplayObject3D):Number{ var _local2:Number; var _local3:Number; _local2 = (this.x - _arg1.x); _local3 = (this.z - _arg1.z); return (Math.sqrt(((_local2 * _local2) + (_local3 * _local3)))); } public function reSuppy():void{ if ((((_s_missiles < _s_missilesMax)) || ((_s_armor < _s_armorMax)))){ _s_missiles = _s_missilesMax; _s_armor = _s_armorMax; Main._HUD.update(); Main._HUD.showMessage("Resupplied"); Debug.print("Player resupplied"); }; } public function stopEngineSound():void{ AudioManager.stopSound("engine"); AudioManager.stopSound("engine_high"); } private function onLoaded(_arg1:Event):void{ _loadedItems++; if (_loadedItems == 1){ Main.getInstance().onModuleLoaded(this); }; } public function killObj():void{ } public function getNearestTile():Tile{ var _local1:Number; var _local2:Number; var _local3:Tile; var _local4:Tile; var _local5:int; _local1 = 0; _local2 = 999999; _local5 = 0; while (_local5 < _level._tiles.length) { _local4 = _level._tiles[_local5]; _local1 = distanceToXZ(_local4); if (_local1 < _local2){ _local2 = _local1; _local3 = _local4; }; _local5++; }; return (_local3); } public function init():void{ _missiles = []; _missileMaterial = MaterialsAndModels._missileMaterial; _level = Main._level; _shadow = new Plane(MaterialsAndModels._playerShadowMaterial, 100, 100, 1, 1); _shadow.rotationX = -90; _shadow.rotationY = 180; _shadow.y = -15; _shadow.z = -55; addChild(_shadow); _gfx = new DAE(); _gfx.load(ModelsData._playerModel, MaterialsAndModels._playerMaterials); _gfx.rotationY = 180; _gfx.scale = 8; addChild(_gfx); _cameraPosition = new DisplayObject3D(); _cameraPosition.y = 245; _cameraPosition.z = -160; addChild(_cameraPosition); onLoaded(null); } public function onInitLevel():void{ _speed = 0; _strafeSpeed = 0; _yRot = 0; rotationY = 0; } public function kill(_arg1:int=0):void{ Player._s_armor = 0; Debug.print("Played killed!", "FFFF33"); Main._HUD.showMessage("Player killed!", 999999); Main.getInstance().playerKilled(); } public function onUpdate():void{ var _local1:int; var _local2:Number; if (((Key.isDown(Key.UP)) || (Key.isDown(Key.W)))){ if ((_speed + ACCELERATION) < MAX_SPEED){ _speed = (_speed + ACCELERATION); } else { _speed = MAX_SPEED; }; }; if (((Key.isDown(Key.DOWN)) || (Key.isDown(Key.S)))){ if ((_speed - ACCELERATION) > -(MAX_REVERSE_SPEED)){ _speed = (_speed - ACCELERATION); } else { _speed = -(MAX_REVERSE_SPEED); }; }; if (((Key.isDown(Key.B)) || (Key.isDown(Key.X)))){ if ((_strafeSpeed + ACCELERATION) < MAX_STRAFE_SPEED){ _strafeSpeed = (_strafeSpeed + ACCELERATION); } else { _strafeSpeed = MAX_STRAFE_SPEED; }; }; if (((Key.isDown(Key.V)) || (Key.isDown(Key.Z)))){ if ((_strafeSpeed - ACCELERATION) > -(MAX_STRAFE_SPEED)){ _strafeSpeed = (_strafeSpeed - ACCELERATION); } else { _strafeSpeed = -(MAX_STRAFE_SPEED); }; }; if (((Key.isDown(Key.LEFT)) || (Key.isDown(Key.A)))){ if ((_yRot - TURN_SPEED) > -(MAX_ROT)){ _yRot = (_yRot - TURN_SPEED); } else { _yRot = -(MAX_ROT); }; }; if (((Key.isDown(Key.RIGHT)) || (Key.isDown(Key.D)))){ if ((_yRot + TURN_SPEED) < MAX_ROT){ _yRot = (_yRot + TURN_SPEED); } else { _yRot = MAX_ROT; }; }; if (Key.isDown(Key.SPACE)){ fireMissile(); }; if (Math.abs(_speed) > 0.1){ moveForward(_speed); }; if (Math.abs(_strafeSpeed) > 0.1){ moveRight(_strafeSpeed); }; _gfx.rotationX = ((_speed * 2) + (5 * Math.cos(_sin))); _gfx.rotationZ = (((5 * Math.cos(_sin)) - (_yRot * 4)) - (_strafeSpeed * 3)); _gfx.x = (-2 + (4 * Math.cos(_sin))); _gfx.y = (5 * Math.sin(_sin)); _shadow.scaleX = (1 - (Math.abs(_gfx.rotationZ) * 0.01)); rotationY = (rotationY + _yRot); if (_sin < 6){ _sin = (_sin + 0.1); } else { _sin = 0; }; _yRot = (_yRot * TURN_FALLOFF); _speed = (_speed * SPEED_FALLOFF); _strafeSpeed = (_strafeSpeed * SPEED_FALLOFF); _local1 = 0; while (_local1 < _missiles.length) { _missiles[_local1].onUpdate(); _local1++; }; _lastSpeed = _speed; _local2 = (((Math.abs(_speed) + Math.abs(_strafeSpeed)) / MAX_SPEED) * 0.35); _engineHighSnd.soundTransform = new SoundTransform(_local2); } public function doDamage(_arg1:int=10, _arg2:int=0):void{ _s_armor = (_s_armor - _arg1); if (_s_armor <= 0){ kill(); }; Main._HUD.update(); } public function killMissile(_arg1:Missile):void{ var _local2:int; _local2 = 0; while (_local2 < _missiles.length) { if (_missiles[_local2] == _arg1){ if (_arg1.parent){ _arg1.parent.removeChild(_arg1); }; _missiles.splice(_local2, 1); return; }; _local2++; }; } } }//package com.devm.tevlon
Section 69
//Tile (com.devm.tevlon.Tile) package com.devm.tevlon { import com.devm.tevlon.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.objects.primitives.*; public class Tile extends Plane { private var _middleVerts:Array; public var _tileSize:int; private var _borderL:Array; public var _tileType:int;// = -1 private var _borderT:Array; private var _borderR:Array; private var _level:Level; private var _wall:Cube; private var _borderB:Array; public var _tilePosX:int; public var _tilePosZ:int; public var _tileRes:int; private var _borderCorcers:Array; public var _tileHypo:Number; public static const TYPE_CRATER:int = 0xAAAAAA; public static const TYPE_CONCRETE_BASE:int = 16777011; public static const TYPE_CONCRETE:int = 0xCCCCCC; public static const TYPE_NORMAL:int = 0xFFFFFF; public static const TYPE_WATER:int = 0; public static const TYPE_CONCRETE_HOME:int = 3407667; public static const TYPE_WALL:int = 0x707070; public function Tile(_arg1:MaterialObject3D=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Object=null){ _tileType = -1; _middleVerts = []; _borderL = []; _borderR = []; _borderT = []; _borderB = []; _borderCorcers = []; super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); _tileSize = _arg2; _tileRes = _arg4; _tileHypo = Math.sqrt(((_tileSize * _tileSize) + (_tileSize * _tileSize))); } private function distanceToMiddle(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt(((_arg1 * _arg1) + (_arg2 * _arg2)))); } public function init():void{ var _local1:int; var _local2:int; var _local3:Array; var _local4:int; var _local5:int; var _local6:Vertex3D; _level = Main._level; _tileSize = Level.TILE_SIZE; _local1 = 0; _local2 = _tileRes; _local3 = geometry.vertices; _local4 = _local3.length; _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; if ((((((((_local5 < (_tileRes + 1))) || ((_local5 > ((_local4 - _tileRes) - 2))))) || ((_local5 == _local1)))) || ((_local5 == _local2)))){ if (_local5 < (_tileRes + 1)){ _borderL.push(_local6); }; if (_local5 > ((_local4 - _tileRes) - 2)){ _borderR.push(_local6); }; if (_local5 == _local1){ _local1 = (_local1 + (_tileRes + 1)); _borderT.push(_local6); }; if (_local5 == _local2){ _local2 = (_local2 + (_tileRes + 1)); _borderB.push(_local6); }; if ((((((((_local5 == 0)) || ((_local5 == _tileRes)))) || ((_local5 == ((_local4 - _tileRes) - 1))))) || ((_local5 == (_local4 - 1))))){ _borderCorcers.push(_local6); }; } else { _middleVerts.push(_local6); }; _local5++; }; _wall = new Cube(MaterialsAndModels._wallMaterial, _tileSize, _tileSize, (_tileSize / 4), 3, 2, 3); _wall.rotationX = 90; _wall.z = (-((_tileSize / 4)) / 2); } private function waterDisplace():void{ var _local1:int; _local1 = 0; while (_local1 < _middleVerts.length) { _middleVerts[_local1].z = (75 + (-20 + (Math.random() * 40))); _local1++; }; _local1 = 0; while (_local1 < _borderL.length) { _borderL[_local1].z = 75; _local1++; }; _local1 = 0; while (_local1 < _borderR.length) { _borderR[_local1].z = 75; _local1++; }; _local1 = 0; while (_local1 < _borderT.length) { _borderT[_local1].z = 75; _local1++; }; _local1 = 0; while (_local1 < _borderB.length) { _borderB[_local1].z = 75; _local1++; }; } private function craterDisplace():void{ var _local1:Boolean; var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Array; var _local6:int; var _local7:Vertex3D; _local1 = (TYPE_WATER == _level.getTileTypeAtCord((x - _tileSize), z)); _local2 = (TYPE_WATER == _level.getTileTypeAtCord((x + _tileSize), z)); _local3 = (TYPE_WATER == _level.getTileTypeAtCord(x, (z - _tileSize))); _local4 = (TYPE_WATER == _level.getTileTypeAtCord(x, (z + _tileSize))); _local5 = []; _local5.push((TYPE_WATER == _level.getTileTypeAtCord((x - _tileSize), (z - _tileSize)))); _local5.push((TYPE_WATER == _level.getTileTypeAtCord((x - _tileSize), (z + _tileSize)))); _local5.push((TYPE_WATER == _level.getTileTypeAtCord((x + _tileSize), (z - _tileSize)))); _local5.push((TYPE_WATER == _level.getTileTypeAtCord((x + _tileSize), (z + _tileSize)))); _local6 = 0; while (_local6 < _middleVerts.length) { _local7 = _middleVerts[_local6]; _local7.z = Math.max(((_tileSize / 4) - distanceToMiddle(_local7.x, _local7.y)), 0); _local6++; }; _local6 = 0; while (_local6 < _borderL.length) { _local7 = _borderL[_local6]; _local7.z = (_local1) ? 75 : 0; _local6++; }; _local6 = 0; while (_local6 < _borderR.length) { _local7 = _borderR[_local6]; _local7.z = (_local2) ? 75 : 0; _local6++; }; _local6 = 0; while (_local6 < _borderT.length) { _local7 = _borderT[_local6]; _local7.z = (_local3) ? 75 : 0; _local6++; }; _local6 = 0; while (_local6 < _borderB.length) { _local7 = _borderB[_local6]; _local7.z = (_local4) ? 75 : 0; _local6++; }; _local6 = 0; while (_local6 < _borderCorcers.length) { _local7 = _borderCorcers[_local6]; _local7.z = (_local5[_local6]) ? 75 : 0; _local6++; }; } public function setTileType():void{ var _local1:Array; var _local2:int; _local1 = Level.getRealPos2TilePos(x, z); _tilePosX = _local1[0]; _tilePosZ = _local1[1]; _local2 = _level.getTileTypeAtCord(x, z); if ((((_local2 == _tileType)) && ((_local2 == TYPE_WATER)))){ return; }; _tileType = _local2; if (_local2 == TYPE_NORMAL){ material = Level._groundNormalMat; normalDisplace(); }; if (_local2 == TYPE_CRATER){ material = Level._groundCraterMat; craterDisplace(); }; if (_local2 == TYPE_WATER){ material = Level._groundWaterMat; waterDisplace(); }; if ((((((_local2 == TYPE_CONCRETE)) || ((_local2 == TYPE_CONCRETE_BASE)))) || ((_local2 == TYPE_CONCRETE_HOME)))){ material = Level._groundConcreteMat; normalDisplace(false); }; if (_local2 == TYPE_WALL){ addChild(_wall); setGroundVisible(false); } else { if (_wall.parent != null){ removeChild(_wall); }; }; } private function setGroundVisible(_arg1:Boolean):void{ var _local2:int; var _local3:Vertex3D; if (!_arg1){ _local2 = 0; while (_local2 < geometry.vertices.length) { _local3 = geometry.vertices[_local2]; _local3.z = -2200; _local2++; }; }; } private function normalDisplace(_arg1:Boolean=true):void{ var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; var _local6:Array; var _local7:int; var _local8:Vertex3D; _local2 = (TYPE_WATER == _level.getTileTypeAtCord((x - _tileSize), z)); _local3 = (TYPE_WATER == _level.getTileTypeAtCord((x + _tileSize), z)); _local4 = (TYPE_WATER == _level.getTileTypeAtCord(x, (z - _tileSize))); _local5 = (TYPE_WATER == _level.getTileTypeAtCord(x, (z + _tileSize))); _local6 = []; _local6.push((TYPE_WATER == _level.getTileTypeAtCord((x - _tileSize), (z - _tileSize)))); _local6.push((TYPE_WATER == _level.getTileTypeAtCord((x - _tileSize), (z + _tileSize)))); _local6.push((TYPE_WATER == _level.getTileTypeAtCord((x + _tileSize), (z - _tileSize)))); _local6.push((TYPE_WATER == _level.getTileTypeAtCord((x + _tileSize), (z + _tileSize)))); if (_arg1){ _local7 = 0; while (_local7 < _middleVerts.length) { _local8 = _middleVerts[_local7]; _local8.z = (-25 + (Math.random() * 50)); _local7++; }; } else { _local7 = 0; while (_local7 < _middleVerts.length) { _middleVerts[_local7].z = 5; _local7++; }; }; _local7 = 0; while (_local7 < _borderL.length) { _local8 = _borderL[_local7]; _local8.z = (_local2) ? 75 : 0; _local7++; }; _local7 = 0; while (_local7 < _borderR.length) { _local8 = _borderR[_local7]; _local8.z = (_local3) ? 75 : 0; _local7++; }; _local7 = 0; while (_local7 < _borderT.length) { _local8 = _borderT[_local7]; _local8.z = (_local4) ? 75 : 0; _local7++; }; _local7 = 0; while (_local7 < _borderB.length) { _local8 = _borderB[_local7]; _local8.z = (_local5) ? 75 : 0; _local7++; }; _local8 = _borderCorcers[0]; if (((((_local6[0]) || (_local2))) || (_local4))){ _local8.z = 75; } else { _local8.z = 0; }; _local8 = _borderCorcers[1]; if (((((_local6[1]) || (_local2))) || (_local5))){ _local8.z = 75; } else { _local8.z = 0; }; _local8 = _borderCorcers[2]; if (((((_local6[2]) || (_local3))) || (_local4))){ _local8.z = 75; } else { _local8.z = 0; }; _local8 = _borderCorcers[3]; if (((((_local6[3]) || (_local3))) || (_local5))){ _local8.z = 75; } else { _local8.z = 0; }; } } }//package com.devm.tevlon
Section 70
//ControlsHelp (com.devm.util.gui.ControlsHelp) package com.devm.util.gui { import flash.display.*; public class ControlsHelp extends MovieClip { } }//package com.devm.util.gui
Section 71
//HealthMeter (com.devm.util.gui.HealthMeter) package com.devm.util.gui { import flash.display.*; public class HealthMeter extends MovieClip { } }//package com.devm.util.gui
Section 72
//HealthMeter3D (com.devm.util.gui.HealthMeter3D) package com.devm.util.gui { import org.papervision3d.materials.*; import org.papervision3d.objects.primitives.*; public class HealthMeter3D extends Plane { private var _healthMat:BitmapMaterial; private var _bitmaps:Array; public function HealthMeter3D(_arg1:Number, _arg2:Number, _arg3:Array){ var _local4:Array; _healthMat = new BitmapMaterial(_arg3[9]); super(_healthMat, _arg1, _arg2, 0, 0, null); _bitmaps = _arg3; _local4 = geometry.vertices; _local4[1].y = (-(_arg2) / 2); _local4[3].y = (-(_arg2) / 2); _local4[0].y = (_arg2 / 2); _local4[2].y = (_arg2 / 2); } public function setHealthPercent(_arg1:int):void{ var _local2:int; _local2 = Math.min(int((_arg1 / 10)), 9); _healthMat.texture = _bitmaps[_local2]; } override public function toString():String{ return (((((("HealthMeter3D pos: " + x) + ",") + y) + ",") + z)); } } }//package com.devm.util.gui
Section 73
//MenuButton (com.devm.util.gui.MenuButton) package com.devm.util.gui { import flash.events.*; import flash.display.*; import flash.filters.*; public class MenuButton extends Sprite { private var _enabled:Boolean; protected var _mouseIsDown:Boolean;// = false protected var _callBack:Function; protected var _lbl:StdLabel; public function MenuButton(){ _mouseIsDown = false; super(); mouseChildren = false; } public function setActive(_arg1:Boolean=true, _arg2:Function=null):void{ if (_arg1){ if (!hasEventListener(MouseEvent.MOUSE_UP)){ addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); addEventListener(MouseEvent.MOUSE_UP, onMouseUp); }; if (_arg2 != null){ _callBack = _arg2; }; _enabled = true; alpha = 1; } else { removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver); removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut); removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); _enabled = false; alpha = 0.4; }; buttonMode = _arg1; } protected function drawMain(_arg1:String):void{ if (_arg1 == "over"){ filters = [new GlowFilter(0, 1, 4, 4, 1)]; _lbl.textColor = 0xFFFFFF; } else { filters = []; _lbl.textColor = 0xBBBBBB; }; } protected function onMouseUp(_arg1:Event):void{ drawMain("over"); if (((!((_callBack == null))) && (_mouseIsDown))){ _callBack(this); }; _mouseIsDown = false; } public function draw(_arg1:String):void{ _lbl = new StdLabel("Tahoma", 10, 0xBBBBBB); _lbl.text = _arg1; addChild(_lbl); } public function set text(_arg1:String):void{ _lbl.text = _arg1; _lbl.x = ((this.width / 2) - (_lbl.width / 2)); } protected function onMouseOut(_arg1:Event):void{ drawMain("idle"); _mouseIsDown = false; } public function kill():void{ removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver); removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut); removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); } public function getMouseIsDown():Boolean{ return (_mouseIsDown); } protected function onMouseDown(_arg1:Event):void{ drawMain("down"); _mouseIsDown = true; } public function animate(_arg1:int=0):void{ _lbl.animate(_arg1); } protected function onMouseOver(_arg1:Event):void{ drawMain("over"); } } }//package com.devm.util.gui
Section 74
//OldSchoolWaveText (com.devm.util.gui.OldSchoolWaveText) package com.devm.util.gui { import flash.events.*; import flash.display.*; import flash.utils.*; public class OldSchoolWaveText extends Sprite { private var _childrenRemoved:int; private var _speed:int; private var _loop:Boolean; private var _xpos:int; private var _bitmaps:Array; private var _h:int; private var _w:int; public function stop():void{ removeEventListener(Event.ENTER_FRAME, onUpdate); } public function init(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int=2, _arg7:Boolean=true, _arg8:Boolean=true):void{ var _local9:StdLabel; var _local10:uint; var _local11:int; var _local12:BitmapData; var _local13:Bitmap; _bitmaps = []; _w = _arg2; _h = _arg3; _speed = _arg6; _loop = _arg7; _childrenRemoved = 0; _local9 = new StdLabel("Tahoma", 10, 0xFFFFFF, _arg8); _local9.text = " "; _local10 = getTimer(); _local11 = 0; while (_local11 < _arg1.length) { _local9.text = _arg1.charAt(_local11); _local12 = new BitmapData(_arg4, _arg5, true, 0); _local12.draw(_local9); _local13 = new Bitmap(_local12); _local13.x = (_w + (_local11 * _arg4)); _local13.y = (_h * Math.cos((_local13.x * 0.05))); addChild(_local13); _bitmaps.push(_local13); _local11++; }; trace(("OldSchoolWaveText.init() : time: " + (getTimer() - _local10))); } public function start():void{ if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onUpdate, false, 0, true); }; } public function reset():void{ var _local1:int; var _local2:Bitmap; _local1 = 0; while (_local1 < _bitmaps.length) { _local2 = _bitmaps[_local1]; _local2.x = (_w + (_local1 * _local2.width)); _local1++; }; } public function onUpdate(_arg1:Event):void{ var _local2:int; var _local3:Bitmap; _xpos--; _local2 = 0; while (_local2 < _bitmaps.length) { _local3 = _bitmaps[_local2]; _local3.x = (_local3.x - _speed); _local3.y = (_h * Math.cos((_local3.x * 0.05))); if (((_loop) && ((_local3.x < -20)))){ _local3.x = (_local3.x + ((_bitmaps.length * _local3.width) + 160)); } else { if (_local3.x < -20){ removeChild(_local3); _childrenRemoved++; }; }; _local2++; }; if (_childrenRemoved == _bitmaps.length){ removeEventListener(Event.ENTER_FRAME, onUpdate); }; } } }//package com.devm.util.gui
Section 75
//StdLabel (com.devm.util.gui.StdLabel) package com.devm.util.gui { import flash.events.*; import flash.utils.*; import flash.text.*; import flash.filters.*; public class StdLabel extends TextField { private var _finalText:String; private var _atChar:int; private var _onAnimFinishedCallback:Function; public function StdLabel(_arg1:String="Tahoma", _arg2:int=10, _arg3:uint=0xFFFFFF, _arg4:Boolean=true, _arg5:Boolean=true){ var _local6:TextFormat; var _local7:DropShadowFilter; _local6 = new TextFormat(); _local6.font = _arg1; _local6.color = _arg3; _local6.size = _arg2; if (_arg1 != "Tahoma"){ embedFonts = true; antiAliasType = AntiAliasType.ADVANCED; }; selectable = false; if (_arg5){ autoSize = TextFieldAutoSize.LEFT; }; defaultTextFormat = _local6; if (_arg4){ _local7 = new DropShadowFilter(1, 45, 0, 1, 0, 0, 2); filters = [_local7]; }; super(); } private function doAnim(_arg1:Event):void{ if (_atChar == 0){ alpha = 1; }; text = (_finalText.slice(0, _atChar) + "_"); _atChar++; if (_atChar == _finalText.length){ animFinished(); }; } private function startAnim():void{ addEventListener(Event.ENTER_FRAME, doAnim); } private function animFinished():void{ text = _finalText; removeEventListener(Event.ENTER_FRAME, doAnim); if (_onAnimFinishedCallback != null){ _onAnimFinishedCallback(); }; } public function animate(_arg1:int=0, _arg2:Function=null):void{ _finalText = text; _atChar = 0; _onAnimFinishedCallback = _arg2; alpha = 0; if (_arg1 > 0){ setTimeout(startAnim, _arg1); } else { startAnim(); }; } } }//package com.devm.util.gui
Section 76
//AudioManager (com.devm.util.misc.AudioManager) package com.devm.util.misc { import flash.events.*; import flash.media.*; import flash.net.*; public class AudioManager { private static var _enabled:Boolean = true; private static var _max3DSndDistance:Number = 500; private static var _microphone; private static var _activeSoundChannels:Array = []; private static var _sounds:Array = []; private static var _loadedSnds:int = 0; private static var _isLoading:Boolean = false; public static function enabled(_arg1:Boolean):void{ _enabled = _arg1; } public static function loadSound(_arg1:String, _arg2:String):void{ var _local3:Sound; _local3 = new Sound(); _sounds.push([_arg1, _arg2, _local3]); if (!_isLoading){ initSndLoad(); }; } public static function allLoaded():Boolean{ if (_loadedSnds == _sounds.length){ return (true); }; return (false); } public static function stopAll():void{ SoundMixer.stopAll(); } private static function onSoundFinished(_arg1:Event):void{ var _local2:SoundChannel; var _local3:int; _local2 = (_arg1.target as SoundChannel); if (_local2.hasEventListener(Event.SOUND_COMPLETE)){ _local2.removeEventListener(Event.SOUND_COMPLETE, onSoundFinished); }; _local3 = 0; while (_local3 < _activeSoundChannels.length) { if (_local2 === _activeSoundChannels[_local3][1]){ _activeSoundChannels.splice(_local3, 1); return; }; _local3++; }; onError(("Audiomanager.onSoundFinished() Error, sound not found: " + _arg1.target)); } public static function printStatus():void{ Debug.print(("AudioManager.printStatus() sounds: " + _sounds.length)); Debug.print(("AudioManager.printStatus() soundChannels: " + _activeSoundChannels.length)); } private static function onSndError(_arg1:IOErrorEvent):void{ onError(((("AudioManager.onSndError : " + _sounds[_loadedSnds][1]) + " - ") + _arg1.text)); } public static function setGlobalVolume(_arg1:Number, _arg2:Number=0):void{ SoundMixer.soundTransform = new SoundTransform(_arg1, _arg2); } public static function addSoundAsset(_arg1:String, _arg2:Sound):void{ _sounds.push([_arg1, "_asset_", _arg2]); } public static function play3DSound(_arg1:String, _arg2:Function, _arg3:int, _arg4):SoundChannel{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local5 = (_microphone.x - _arg4.x); _local6 = (_microphone.y - _arg4.y); _local7 = (_microphone.z - _arg4.z); _local8 = Math.sqrt((((_local5 * _local5) + (_local6 * _local6)) + (_local7 * _local7))); _local9 = ((_max3DSndDistance - _local8) / _max3DSndDistance); _local10 = (Math.atan2(_local5, _local7) * (180 / Math.PI)); _local11 = _microphone.rotationY; while (_local11 > 360) { _local11 = (_local11 - 360); }; while (_local11 < -360) { _local11 = (_local11 + 360); }; _local12 = (180 + (_local10 - _local11)); while (_local12 > 360) { _local12 = (_local12 - 360); }; while (_local12 < -360) { _local12 = (_local12 + 360); }; if ((((_local12 > 0)) && ((_local12 < 180)))){ _local13 = 1; } else { _local13 = -1; }; if (_local9 <= 0.05){ return (null); }; return (playSound(_arg1, _arg2, _arg3, _local9, _local13)); } public static function setMax3DSndDistance(_arg1:Number):void{ _max3DSndDistance = _arg1; } public static function setMicrophone(_arg1):void{ _microphone = _arg1; } public static function stopSound(_arg1:String):void{ var _local2:int; var _local3:SoundChannel; _local2 = 0; while (_local2 < _activeSoundChannels.length) { if (_activeSoundChannels[_local2][0] == _arg1){ _local3 = _activeSoundChannels[_local2][1]; _local3.stop(); if (_local3.hasEventListener(Event.SOUND_COMPLETE)){ _local3.removeEventListener(Event.SOUND_COMPLETE, onSoundFinished); trace((("AudioManager.stopSound() '" + _arg1) + "' removing listener: SOUND_COMPLETE...")); }; _activeSoundChannels.splice(_local2, 1); return; }; _local2++; }; onError(("Audiomanager.stopSound() Error, sound not found: " + _arg1)); } private static function onSndLoaded(_arg1:Event):void{ var _local2:Sound; _local2 = _sounds[_loadedSnds][2]; _local2.removeEventListener(Event.COMPLETE, onSndLoaded); _local2.removeEventListener(IOErrorEvent.IO_ERROR, onSndError); _loadedSnds++; if (_loadedSnds < _sounds.length){ initSndLoad(); } else { _isLoading = false; }; } private static function onError(_arg1:String):void{ Debug.print(_arg1, "ff3333"); } public static function isEnabled():Boolean{ return (_enabled); } public static function playSound(_arg1:String, _arg2:Function=null, _arg3:int=0, _arg4:Number=1, _arg5:Number=0):SoundChannel{ var _local6:int; var _local7:SoundChannel; if (!_enabled){ return (null); }; _local6 = 0; while (_local6 < _sounds.length) { if (_sounds[_local6][0] == _arg1){ _local7 = _sounds[_local6][2].play(0, _arg3); _local7.addEventListener(Event.SOUND_COMPLETE, onSoundFinished, false, 0, true); if (_arg2 != null){ _local7.addEventListener(Event.SOUND_COMPLETE, _arg2, false, 0, true); }; if (((!((_arg4 == 1))) || (!((_arg5 == 0))))){ _local7.soundTransform = new SoundTransform(_arg4, _arg5); }; _activeSoundChannels.push([_arg1, _local7]); return (_local7); }; _local6++; }; onError(("Audiomanager.playSound() Error, sound not found: " + _arg1)); return (null); } private static function initSndLoad():void{ var _local1:String; var _local2:Sound; if (_sounds[_loadedSnds][1] == "_asset_"){ onSndLoaded(null); return; }; _local1 = _sounds[_loadedSnds][1]; _local2 = _sounds[_loadedSnds][2]; trace(("AudioManager Loading snd: " + _local1)); _local2.addEventListener(Event.COMPLETE, onSndLoaded); _local2.addEventListener(IOErrorEvent.IO_ERROR, onSndError); _local2.load(new URLRequest(_local1)); _isLoading = true; } } }//package com.devm.util.misc
Section 77
//ColorManipulator (com.devm.util.misc.ColorManipulator) package com.devm.util.misc { public class ColorManipulator { public static function ARGBmodifyColorAlpha(_arg1:uint, _arg2:Number):uint{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; _local3 = ((_arg1 >> 24) & 0xFF); _local4 = ((_arg1 >> 16) & 0xFF); _local5 = ((_arg1 >> 8) & 0xFF); _local6 = (_arg1 & 0xFF); _local3 = (_local3 * _arg2); return (((((_local3 << 24) | (_local4 << 16)) | (_local5 << 8)) | _local6)); } public static function RGB2Hex(_arg1:uint, _arg2:uint, _arg3:uint):uint{ if (_arg1 > 0xFF){ _arg1 = 0xFF; }; if (_arg2 > 0xFF){ _arg2 = 0xFF; }; if (_arg3 > 0xFF){ _arg3 = 0xFF; }; return ((((_arg1 << 16) | (_arg2 << 8)) | _arg3)); } public static function modifyColor(_arg1:uint, _arg2:Number, _arg3:Number, _arg4:Number):uint{ var _local5:uint; var _local6:uint; var _local7:uint; _local5 = ((_arg1 >> 16) & 0xFF); _local6 = ((_arg1 >> 8) & 0xFF); _local7 = (_arg1 & 0xFF); _local5 = (_local5 * _arg2); _local6 = (_local6 * _arg3); _local7 = (_local7 * _arg4); if (_local5 > 0xFF){ _local5 = 0xFF; }; if (_local6 > 0xFF){ _local6 = 0xFF; }; if (_local7 > 0xFF){ _local7 = 0xFF; }; return ((((_local5 << 16) | (_local6 << 8)) | _local7)); } public static function modifyColorBrightness(_arg1:uint, _arg2:Number):uint{ var _local3:uint; var _local4:uint; var _local5:uint; _local3 = ((_arg1 >> 16) & 0xFF); _local4 = ((_arg1 >> 8) & 0xFF); _local5 = (_arg1 & 0xFF); _local3 = (_local3 * _arg2); _local4 = (_local4 * _arg2); _local5 = (_local5 * _arg2); if (_local3 > 0xFF){ _local3 = 0xFF; }; if (_local4 > 0xFF){ _local4 = 0xFF; }; if (_local5 > 0xFF){ _local5 = 0xFF; }; return ((((_local3 << 16) | (_local4 << 8)) | _local5)); } public static function mixColors(_arg1:Array, _arg2:Boolean=false):uint{ var _local3:int; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:int; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; _local3 = _arg1.length; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; while (_local7 < _local3) { _local8 = _arg1[_local7]; _local9 = ((_local8 >> 16) & 0xFF); _local10 = ((_local8 >> 8) & 0xFF); _local11 = (_local8 & 0xFF); _local4 = (_local4 + _local9); _local5 = (_local5 + _local10); _local6 = (_local6 + _local11); _local7++; }; if (_arg2){ _local4 = (_local4 / _local3); _local5 = (_local5 / _local3); _local6 = (_local6 / _local3); }; if (_local4 > 0xFF){ _local4 = 0xFF; }; if (_local5 > 0xFF){ _local5 = 0xFF; }; if (_local6 > 0xFF){ _local6 = 0xFF; }; return ((((_local4 << 16) | (_local5 << 8)) | _local6)); } public static function Hex2RGB(_arg1:uint):Array{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = ((_arg1 >> 16) & 0xFF); _local3 = ((_arg1 >> 8) & 0xFF); _local4 = (_arg1 & 0xFF); return ([_local2, _local3, _local4]); } } }//package com.devm.util.misc
Section 78
//Debug (com.devm.util.misc.Debug) package com.devm.util.misc { import flash.external.*; public class Debug { public static var enabled:Boolean = false; public static function print(_arg1:String, _arg2:String=null):void{ if (!enabled){ return; }; if (_arg2 == null){ ExternalInterface.call("jsPrintDebug", _arg1); } else { ExternalInterface.call("jsPrintDebug", _arg1, _arg2); }; trace(("Debug.print(): " + _arg1)); } } }//package com.devm.util.misc
Section 79
//Key (com.devm.util.misc.Key) package com.devm.util.misc { import flash.events.*; import flash.display.*; public class Key { public static const A:int = 65; public static const B:int = 66; public static const LEFT:int = 37; public static const S:int = 83; public static const V:int = 86; public static const W:int = 87; public static const X:int = 88; public static const Z:int = 90; public static const UP:int = 38; public static const D:int = 68; public static const SPACE:int = 32; public static const DOWN:int = 40; public static const RIGHT:int = 39; private static var initialized:Boolean = false; private static var keysDown:Object = new Object(); private static function keyPressed(_arg1:KeyboardEvent):void{ keysDown[_arg1.keyCode] = true; } public static function initialize(_arg1:Stage):void{ if (!initialized){ _arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); _arg1.addEventListener(KeyboardEvent.KEY_UP, keyReleased); _arg1.addEventListener(Event.DEACTIVATE, clearKeys); initialized = true; }; } private static function keyReleased(_arg1:KeyboardEvent):void{ if ((_arg1.keyCode in keysDown)){ delete keysDown[_arg1.keyCode]; }; } private static function clearKeys(_arg1:Event):void{ Debug.print(("Focus lost... event: " + _arg1.type), "FFFF00"); keysDown = new Object(); } public static function isDown(_arg1:uint):Boolean{ if (!initialized){ throw (new Error("Key class has yet been initialized.")); }; return (Boolean((_arg1 in keysDown))); } } }//package com.devm.util.misc
Section 80
//MochiBot (com.mochibot.MochiBot) package com.mochibot { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package com.mochibot
Section 81
//MyGameLoader (com.mygame.MyGameLoader) package com.mygame { import flash.events.*; import flash.display.*; import flash.net.*; import com.mochibot.*; import com.devm.util.misc.*; import flash.utils.*; public class MyGameLoader extends MovieClip { private const LOADER_FPS:Number = 25; private var loader:URLLoader; private var _gameStarted:Boolean;// = false private var startTime:int;// = 1 private var variables:URLVariables; private var request:URLRequest; public var stones_mc:MovieClip; private var _callBack:Function; public static const LAUNCH_GAME:String = "launchGame"; public static var url:String = ""; public function MyGameLoader(_arg1:Function){ startTime = 1; _gameStarted = false; super(); addFrameScript(0, frame1); trace(("LOADER FPS : " + LOADER_FPS)); _callBack = _arg1; } public function playLoaderMovie(_arg1:Event):void{ var _local2:int; var _local3:Number; var _local4:int; _local2 = getTimer(); _local3 = ((1 / LOADER_FPS) * 1000); _local4 = Math.round((((_local2 - startTime) / _local3) + 1)); if (_local4 >= 79){ this.removeEventListener(Event.ENTER_FRAME, playLoaderMovie); }; stones_mc.gotoAndStop(_local4); } public function init():void{ if (root.loaderInfo.url.indexOf("127.0.0.1") == -1){ MochiBot.track(this, "82d21fc1"); }; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); variables = new URLVariables(); variables.game = "tevlon"; variables.from = root.loaderInfo.url; url = root.loaderInfo.url; request = new URLRequest("http://mygame.com/loadcount.jsp"); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("server error"); }; stones_mc.play_btn.addEventListener("onPlayBtn", launchGame, false, 0, true); stones_mc.play_btn.addEventListener(MouseEvent.CLICK, launchGame, false, 0, true); stones_mc.stonesHitarea_mc.buttonMode = true; stones_mc.stonesHitarea_mc.addEventListener(MouseEvent.CLICK, onStones, false, 0, true); setTimeout(startAnim, 500); } public function launchGame(_arg1:Event):void{ if (_gameStarted){ return; }; _gameStarted = true; Debug.print("MyGameLoader.launchGame()"); trace(LAUNCH_GAME); _callBack(); this.dispatchEvent(new Event(LAUNCH_GAME)); } function frame1(){ stop(); } public function onStones(_arg1:Event):void{ var _local2:URLVariables; var _local3:URLRequest; _local2 = new URLVariables(); _local2.game = "tevlon"; _local2.from = root.loaderInfo.url; _local2.typ = "loader_movie"; _local3 = new URLRequest("http://www.mygame.com/bounce.jsp"); _local3.data = _local2; navigateToURL(_local3, "_blank"); } private function startAnim():void{ startTime = getTimer(); this.addEventListener(Event.ENTER_FRAME, playLoaderMovie, false, 0, true); trace(startTime); } public function completeHandler(_arg1:Event):void{ var _local2:URLLoader; var _local3:URLVariables; _local2 = URLLoader(_arg1.target); _local3 = new URLVariables(_local2.data); trace(("The answer is " + _local3.answer)); } } }//package com.mygame
Section 82
//None (fl.transitions.easing.None) package fl.transitions.easing { public class None { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } } }//package fl.transitions.easing
Section 83
//Tween (fl.transitions.Tween) package fl.transitions { import flash.events.*; import flash.display.*; import flash.utils.*; public class Tween extends EventDispatcher { private var _position:Number;// = NAN public var prevTime:Number;// = NAN public var prevPos:Number;// = NAN public var isPlaying:Boolean;// = false public var begin:Number;// = NAN private var _fps:Number;// = NAN private var _time:Number;// = NAN public var change:Number;// = NAN private var _finish:Number;// = NAN public var looping:Boolean;// = false private var _intervalID:uint;// = 0 public var func:Function; private var _timer:Timer;// = null private var _startTime:Number;// = NAN public var prop:String;// = "" private var _duration:Number;// = NAN public var obj:Object;// = null public var useSeconds:Boolean;// = false protected static var _mc:MovieClip = new MovieClip(); public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){ isPlaying = false; obj = null; prop = ""; func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); }; begin = NaN; change = NaN; useSeconds = false; prevTime = NaN; prevPos = NaN; looping = false; _duration = NaN; _time = NaN; _fps = NaN; _position = NaN; _startTime = NaN; _intervalID = 0; _finish = NaN; _timer = null; super(); if (!arguments.length){ return; }; this.obj = _arg1; this.prop = _arg2; this.begin = _arg4; this.position = _arg4; this.duration = _arg6; this.useSeconds = _arg7; if ((_arg3 is Function)){ this.func = _arg3; }; this.finish = _arg5; this._timer = new Timer(100); this.start(); } public function continueTo(_arg1:Number, _arg2:Number):void{ this.begin = this.position; this.finish = _arg1; if (!isNaN(_arg2)){ this.duration = _arg2; }; this.start(); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position)); } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } public function set FPS(_arg1:Number):void{ var _local2:Boolean; _local2 = this.isPlaying; this.stopEnterFrame(); this._fps = _arg1; if (_local2){ this.startEnterFrame(); }; } public function get finish():Number{ return ((this.begin + this.change)); } public function get duration():Number{ return (this._duration); } protected function startEnterFrame():void{ var _local1:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true); } else { _local1 = (1000 / this._fps); this._timer.delay = _local1; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true); this._timer.start(); }; this.isPlaying = true; } public function set time(_arg1:Number):void{ this.prevTime = this._time; if (_arg1 > this.duration){ if (this.looping){ this.rewind((_arg1 - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (_arg1 < 0){ this.rewind(); this.update(); } else { this._time = _arg1; this.update(); }; }; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function getPosition(_arg1:Number=NaN):Number{ if (isNaN(_arg1)){ _arg1 = this._time; }; return (this.func(_arg1, this.begin, this.change, this._duration)); } public function set finish(_arg1:Number):void{ this.change = (_arg1 - this.begin); } public function set duration(_arg1:Number):void{ this._duration = ((_arg1)<=0) ? Infinity : _arg1; } public function setPosition(_arg1:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = _arg1); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position)); } public function fforward():void{ this.time = this._duration; this.fixTime(); } protected function onEnterFrame(_arg1:Event):void{ this.nextFrame(); } public function get position():Number{ return (this.getPosition(this._time)); } public function yoyo():void{ this.continueTo(this.begin, this.time); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function timerHandler(_arg1:TimerEvent):void{ this.nextFrame(); _arg1.updateAfterEvent(); } public function get FPS():Number{ return (this._fps); } public function rewind(_arg1:Number=0):void{ this._time = _arg1; this.fixTime(); this.update(); } public function set position(_arg1:Number):void{ this.setPosition(_arg1); } public function get time():Number{ return (this._time); } private function update():void{ this.setPosition(this.getPosition(this._time)); } public function start():void{ this.rewind(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position)); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } } }//package fl.transitions
Section 84
//TweenEvent (fl.transitions.TweenEvent) package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public var time:Number;// = NAN public var position:Number;// = NAN public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop"; public static const MOTION_LOOP:String = "motionLoop"; public static const MOTION_CHANGE:String = "motionChange"; public static const MOTION_FINISH:String = "motionFinish"; public static const MOTION_RESUME:String = "motionResume"; public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){ time = NaN; position = NaN; super(_arg1, _arg4, _arg5); this.time = _arg2; this.position = _arg3; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable)); } } }//package fl.transitions
Section 85
//DaeAccessor (org.ascollada.core.DaeAccessor) package org.ascollada.core { import org.ascollada.*; public class DaeAccessor extends DaeEntity { public var params:Object; public var stride:uint; public var count:uint; public var source:String; public var offset:uint; public function DaeAccessor(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:XML; var _local5:String; var _local6:String; if (_arg1.localName() != ASCollada.DAE_ACCESSOR_ELEMENT){ throw (new Error((("expected a " + ASCollada.DAE_ACCESSOR_ELEMENT) + " element"))); }; super.read(_arg1); this.count = getAttributeAsInt(_arg1, ASCollada.DAE_COUNT_ATTRIBUTE); this.offset = getAttributeAsInt(_arg1, ASCollada.DAE_OFFSET_ATTRIBUTE); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.stride = getAttributeAsInt(_arg1, ASCollada.DAE_STRIDE_ATTRIBUTE, 1); _local2 = getNodeList(_arg1, ASCollada.DAE_PARAMETER); this.params = new Object(); _local3 = 0; while (_local3 < _local2.length()) { _local4 = _local2[_local3]; _local5 = getAttribute(_local4, ASCollada.DAE_NAME_ATTRIBUTE); _local6 = getAttribute(_local4, ASCollada.DAE_TYPE_ATTRIBUTE); this.params[_local5] = _local6; _local3++; }; } } }//package org.ascollada.core
Section 86
//DaeAnimation (org.ascollada.core.DaeAnimation) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeAnimation extends DaeEntity { public var channels:Array; public var animations:Array; public function DaeAnimation(_arg1:XML=null):void{ super(_arg1); } private function parseAnimation(_arg1:XML):void{ var animationList:XMLList; var channelList:XMLList; var samplerList:XMLList; var channelNode:XML; var animationNode:XML; var channel:DaeChannel; var samplerNode:XML; var inputList:XMLList; var numCurves:uint; var inputNode:XML; var input:DaeInput; var source:DaeSource; var sampler:DaeSampler; var node = _arg1; animationList = getNodeList(node, ASCollada.DAE_ANIMATION_ELEMENT); channelList = getNodeList(node, ASCollada.DAE_CHANNEL_ELEMENT); samplerList = getNodeList(node, ASCollada.DAE_SAMPLER_ELEMENT); if (animationList.length() > 0){ for each (animationNode in animationList) { this.animations.push(new DaeAnimation(animationNode)); }; } else { if (channelList.length() == 0){ throw (new Error("require at least one <channel> element!")); }; }; this.channels = new Array(); for each (channelNode in channelList) { channel = new DaeChannel(channelNode); samplerNode = getNodeById(node, ASCollada.DAE_SAMPLER_ELEMENT, channel.source); inputList = getNodeList(samplerNode, ASCollada.DAE_INPUT_ELEMENT); numCurves = 12; for each (inputNode in inputList) { input = new DaeInput(inputNode); source = new DaeSource(getNodeById(node, ASCollada.DAE_SOURCE_ELEMENT, input.source)); sampler = new DaeSampler(samplerNode); sampler.type = input.semantic; sampler.values = source.values; switch (input.semantic){ case "INTERPOLATION": channel.interpolations = sampler.values; break; case "INPUT": channel.input = sampler.values; break; case "OUTPUT": channel.output = sampler.values; numCurves = Math.min(source.accessor.stride, 12); break; default: break; }; }; try { channel.createCurves(numCurves); this.channels.push(channel); } catch(e:Error) { Logger.error(((((("error creating channel:\n" + channel.target) + "\n") + e.toString()) + "\n") + e.getStackTrace())); }; }; } override public function read(_arg1:XML):void{ this.animations = new Array(); this.channels = new Array(); if (_arg1.localName() != ASCollada.DAE_ANIMATION_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_ANIMATION_ELEMENT) + "' element"))); }; super.read(_arg1); parseAnimation(_arg1); } } }//package org.ascollada.core
Section 87
//DaeAnimationClip (org.ascollada.core.DaeAnimationClip) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeAnimationClip extends DaeEntity { public var start:Number; public var instance_animation:Array; public var end:Number; public function DaeAnimationClip(_arg1:XML=null):void{ this.start = 0; this.end = 0; this.instance_animation = new Array(); super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:String; if (_arg1.localName() != ASCollada.DAE_ANIMCLIP_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_ANIMCLIP_ELEMENT) + "' element"))); }; super.read(_arg1); Logger.trace(("reading animation_clip: " + this.id)); this.instance_animation = new Array(); this.start = getAttributeAsFloat(_arg1, ASCollada.DAE_START_ATTRIBUTE); this.end = getAttributeAsFloat(_arg1, ASCollada.DAE_START_ATTRIBUTE); _local2 = getNodeList(_arg1, ASCollada.DAE_INSTANCE_ANIMATION_ELEMENT); for each (_local3 in _local2) { _local4 = getAttribute(_local3, ASCollada.DAE_URL_ATTRIBUTE); this.instance_animation.push(_local4); }; } } }//package org.ascollada.core
Section 88
//DaeAnimationCurve (org.ascollada.core.DaeAnimationCurve) package org.ascollada.core { public class DaeAnimationCurve extends DaeEntity { public var inTangents:Array; public var tcbParameters:Array; public var easeInOuts:Array; public var outTangents:Array; public var interpolations:Array; public var preInfinity:uint;// = 0 public var postInfinity:uint;// = 0 public var keys:Array; public var keyValues:Array; public var interpolationType:uint;// = 1 public static const INTERPOLATION_LINEAR:uint = 1; public static const INFINITY_DEFAULT:uint = 0; public static const INTERPOLATION_TCB:uint = 3; public static const INFINITY_OSCILLATE:uint = 4; public static const INFINITY_UNKNOWN:uint = 5; public static const INFINITY_CONSTANT:uint = 0; public static const INFINITY_CYCLE_RELATIVE:uint = 3; public static const INFINITY_LINEAR:uint = 1; public static const INTERPOLATION_DEFAULT:uint = 0; public static const INTERPOLATION_STEP:uint = 0; public static const INTERPOLATION_UNKNOWN:uint = 4; public static const INFINITY_CYCLE:uint = 2; public static const INTERPOLATION_BEZIER:uint = 2; public function DaeAnimationCurve(_arg1:Array=null, _arg2:Array=null):void{ preInfinity = 0; postInfinity = 0; interpolationType = 1; super(); this.keys = ((_arg1) || (new Array())); this.keyValues = ((_arg2) || (new Array())); this.interpolations = new Array(); } public function evaluate(_arg1:Number):Number{ var _local2:int; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:int; var _local11:int; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; if (!this.keys.length){ return (0); }; if (this.keys.length == 1){ return (this.keyValues[0]); }; _local3 = this.keyValues[0]; _local4 = this.keyValues[(this.keyValues.length - 1)]; _local5 = this.keys[0]; _local6 = this.keys[(this.keys.length - 1)]; _local7 = (_local6 - _local5); _arg1 = (_arg1 % _local6); _local9 = 0; if (_arg1 <= _local5){ switch (preInfinity){ case INFINITY_CONSTANT: return (_local3); case INFINITY_LINEAR: return ((_local3 + (((_arg1 - _local5) * (keyValues[1] - _local3)) / (keys[1] - _local5)))); case INFINITY_CYCLE: _local8 = Math.ceil(((_local5 - _arg1) / _local7)); _arg1 = (_arg1 + (_local8 * _local7)); break; case INFINITY_CYCLE_RELATIVE: _local8 = Math.ceil(((_local5 - _arg1) / _local7)); _arg1 = (_arg1 + (_local8 * _local7)); _local9 = (_local9 - (_local8 * (_local4 - _local3))); break; case INFINITY_OSCILLATE: _local8 = Math.ceil(((_local5 - _arg1) / (2 * _local7))); _arg1 = (_arg1 + ((_local8 * 2) * _local7)); _arg1 = (_local6 - Math.abs((_arg1 - _local6))); break; case INFINITY_UNKNOWN: default: return (_local3); }; } else { if (_arg1 >= _local6){ switch (postInfinity){ case INFINITY_CONSTANT: return (_local4); case INFINITY_LINEAR: return ((_local4 + (((_arg1 - _local6) * (keyValues[(keys.length - 2)] - _local4)) / (keys[(keys.length - 2)] - _local6)))); case INFINITY_CYCLE: _local8 = Math.ceil(((_arg1 - _local6) / _local7)); _arg1 = (_arg1 - (_local8 * _local7)); break; case INFINITY_CYCLE_RELATIVE: _local8 = Math.ceil(((_arg1 - _local6) / _local7)); _arg1 = (_arg1 - (_local8 * _local7)); _local9 = (_local9 + (_local8 * (_local4 - _local3))); break; case INFINITY_OSCILLATE: _local8 = Math.ceil(((_arg1 - _local6) / (2 * _local7))); _arg1 = (_arg1 - ((_local8 * 2) * _local7)); _arg1 = (_local5 + Math.abs((_arg1 - _local5))); break; case INFINITY_UNKNOWN: default: return (_local4); }; }; }; _local10 = Math.ceil(((_arg1 / _local6) * this.keys.length)); _local2 = _local10; while (_local2 < this.keys.length) { if (this.keys[_local2] > _arg1){ break; }; _local2++; }; _local11 = _local2; _local12 = this.keys[_local11]; _local13 = this.keys[(_local11 - 1)]; _local14 = this.keyValues[_local11]; _local15 = this.keyValues[(_local11 - 1)]; switch (interpolationType){ case INTERPOLATION_LINEAR: _local16 = ((((_arg1 - _local13) / (_local12 - _local13)) * (_local14 - _local15)) + _local15); break; case INTERPOLATION_STEP: default: _local16 = _local15; break; }; return ((_local9 + _local16)); } } }//package org.ascollada.core
Section 89
//DaeAsset (org.ascollada.core.DaeAsset) package org.ascollada.core { import org.ascollada.*; public class DaeAsset extends DaeEntity { public var unit_meter:Number; public var keywords:String; public var subject:String; public var modified:String; public var title:String; public var revision:String; public var created:String; public var unit_name:String; public var yUp:String; public var contributors:Array; public function DaeAsset(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; if (_arg1.localName() != ASCollada.DAE_ASSET_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_ASSET_ELEMENT) + "' element"))); }; super.read(_arg1); parseContributors(_arg1); this.created = getNodeContent(getNode(_arg1, ASCollada.DAE_CREATED_ASSET_PARAMETER)); this.keywords = getNodeContent(getNode(_arg1, ASCollada.DAE_KEYWORDS_ASSET_PARAMETER)); this.modified = getNodeContent(getNode(_arg1, ASCollada.DAE_MODIFIED_ASSET_PARAMETER)); this.revision = getNodeContent(getNode(_arg1, ASCollada.DAE_REVISION_ASSET_PARAMETER)); this.subject = getNodeContent(getNode(_arg1, ASCollada.DAE_SUBJECT_ASSET_PARAMETER)); this.title = getNodeContent(getNode(_arg1, ASCollada.DAE_TITLE_ASSET_PARAMETER)); _local2 = getNode(_arg1, ASCollada.DAE_UNITS_ASSET_PARAMETER); this.unit_meter = (_local2) ? getAttributeAsFloat(_local2, ASCollada.DAE_METERS_ATTRIBUTE, 1) : 1; this.unit_name = (_local2) ? getAttribute(_local2, ASCollada.DAE_NAME_ATTRIBUTE) : "meter"; _local3 = getNode(_arg1, ASCollada.DAE_UP); this.yUp = (_local3) ? _local3.toString() : ASCollada.DAE_Y_UP; } private function parseContributors(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:DaeContributor; this.contributors = new Array(); _local2 = getNodeList(_arg1, ASCollada.DAE_CONTRIBUTOR_ASSET_ELEMENT); for each (_local3 in _local2) { this.contributors.push(new DaeContributor(_local3)); }; if (!this.contributors.length){ _local4 = new DaeContributor(); _local4.author = "Tim Knip"; _local4.authoring_tool = "ASCollada"; _local4.comment = ""; _local4.source_data = ""; this.contributors.push(_local4); }; } override public function write(_arg1:String=""):String{ var _local2:String; var _local3:int; var _local4:DaeContributor; _local2 = writeSimpleStartElement(ASCollada.DAE_ASSET_ELEMENT, _arg1); _local3 = 0; while (_local3 < this.contributors.length) { _local4 = this.contributors[_local3]; _local2 = (_local2 + _local4.write((_arg1 + "\t"))); _local3++; }; _local2 = (_local2 + writeSimpleEndElement(ASCollada.DAE_ASSET_ELEMENT, _arg1)); return (_local2); } } }//package org.ascollada.core
Section 90
//DaeBlendWeight (org.ascollada.core.DaeBlendWeight) package org.ascollada.core { public class DaeBlendWeight { public var originalWeight:Number; public var joint:String; public var vertexIndex:uint; public var weight:Number; public function DaeBlendWeight(_arg1:uint=0, _arg2:String="", _arg3:Number=0){ this.vertexIndex = _arg1; this.joint = _arg2; this.originalWeight = (this.weight = _arg3); } public function toString():String{ return ((((((("[v:" + this.vertexIndex) + " j:") + this.joint) + " w:") + this.weight) + "]")); } } }//package org.ascollada.core
Section 91
//DaeCamera (org.ascollada.core.DaeCamera) package org.ascollada.core { import org.ascollada.*; public class DaeCamera extends DaeEntity { public var target:String; public var far:Number; public var near:Number; public var ortho:Boolean;// = false public var type:uint;// = 0 public var fov:Number; public var mag:Number; public var aspect_ratio:Number; public static const TYPE_X:uint = 0; public static const TYPE_Y:uint = 1; public function DaeCamera(_arg1:XML):void{ ortho = false; type = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; if (_arg1.localName() != ASCollada.DAE_CAMERA_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_CAMERA_ELEMENT) + "' element"))); }; super.read(_arg1); this.target = null; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_OPTICS_ELEMENT: readOptics(_local5); break; case ASCollada.DAE_EXTRA_ELEMENT: readExtra(_local5); break; default: break; }; _local4++; }; } private function readExtra(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; var _local6:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_TECHNIQUE_ELEMENT: _local6 = getNode(_local5, ASCollada.DAEMAX_TARGET_CAMERA_PARAMETER); if (_local6){ this.target = getNodeContent(_local6); this.target = this.target.split("#")[1]; }; break; default: break; }; _local4++; }; } private function readOrthogonal(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_XMAG_CAMERA_PARAMETER: this.type = TYPE_X; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_YMAG_CAMERA_PARAMETER: this.type = TYPE_Y; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ASPECT_CAMERA_PARAMETER: this.aspect_ratio = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZNEAR_CAMERA_PARAMETER: this.near = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZFAR_CAMERA_PARAMETER: this.far = parseFloat(getNodeContent(_local5)); break; default: break; }; _local4++; }; } private function readOptics(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT: readTechniqueCommon(_local5); break; default: break; }; _local4++; }; } private function readPerspective(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_XFOV_CAMERA_PARAMETER: this.type = TYPE_X; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_YFOV_CAMERA_PARAMETER: this.type = TYPE_Y; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ASPECT_CAMERA_PARAMETER: this.aspect_ratio = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZNEAR_CAMERA_PARAMETER: this.near = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZFAR_CAMERA_PARAMETER: this.far = parseFloat(getNodeContent(_local5)); break; default: break; }; _local4++; }; } private function readTechniqueCommon(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_CAMERA_PERSP_ELEMENT: this.ortho = false; readPerspective(_local5); break; case ASCollada.DAE_CAMERA_ORTHO_ELEMENT: this.ortho = true; readOrthogonal(_local5); break; default: break; }; _local4++; }; } } }//package org.ascollada.core
Section 92
//DaeChannel (org.ascollada.core.DaeChannel) package org.ascollada.core { import org.ascollada.types.*; import org.ascollada.*; public class DaeChannel extends DaeEntity { public var output:Array; public var input:Array; public var target:String; public var interpolations:Array; public var source:String; public var curves:Array; public var syntax:DaeAddressSyntax; public function DaeChannel(_arg1:XML):void{ super(_arg1); this.curves = new Array(); } public function createCurves(_arg1:uint=12):void{ var _local2:int; var _local3:int; var _local4:String; this.curves = new Array(); _local4 = this.target.split("/")[1]; if (_local4.indexOf(".") != -1){ _local4 = _local4.split(".")[0]; }; switch (_local4){ case "transform": break; case "rotateX": _arg1 = 1; break; case "rotateY": _arg1 = 1; break; case "rotateZ": _arg1 = 1; break; default: return; }; _local2 = 0; while (_local2 < _arg1) { this.curves.push(new DaeAnimationCurve()); _local2++; }; if ((this.output[0] is Array)){ _local2 = 0; while (_local2 < this.output.length) { _local3 = 0; while (_local3 < this.curves.length) { this.curves[_local3].keys[_local2] = this.input[_local2]; this.curves[_local3].keyValues[_local2] = this.output[_local2][_local3]; _local3++; }; _local2++; }; } else { if (_arg1 == 1){ _local2 = 0; while (_local2 < this.output.length) { this.curves[0].keys[_local2] = this.input[_local2]; this.curves[0].keyValues[_local2] = this.output[_local2]; _local2++; }; }; }; } public function update(_arg1:Number):Array{ var _local2:Array; var _local3:int; if (!this.curves){ return (null); }; _local2 = new Array(this.curves.length); _local3 = 0; while (_local3 < this.curves.length) { _local2[_local3] = this.curves[_local3].evaluate(_arg1); _local3++; }; return (_local2); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_CHANNEL_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_CHANNEL_ELEMENT) + "' element"))); }; super.read(_arg1); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.target = getAttribute(_arg1, ASCollada.DAE_TARGET_ATTRIBUTE); this.syntax = DaeAddressSyntax.parseAnimationTarget(this.target); } } }//package org.ascollada.core
Section 93
//DaeContributor (org.ascollada.core.DaeContributor) package org.ascollada.core { import org.ascollada.*; public class DaeContributor extends DaeEntity { public var source_data:String; public var authoring_tool:String; public var author:String; public var comment:String; public function DaeContributor(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; var _local4:XML; var _local5:XML; super.read(_arg1); _local2 = getNode(_arg1, ASCollada.DAE_AUTHOR_ASSET_PARAMETER); _local3 = getNode(_arg1, ASCollada.DAE_AUTHORINGTOOL_ASSET_PARAMETER); _local4 = getNode(_arg1, ASCollada.DAE_COMMENTS_ASSET_PARAMETER); _local5 = getNode(_arg1, ASCollada.DAE_SOURCEDATA_ASSET_PARAMETER); this.author = (_local2) ? _local2.toString() : ""; this.authoring_tool = (_local3) ? _local3.toString() : ""; this.comment = (_local4) ? _local4.toString() : ""; this.source_data = (_local5) ? _local5.toString() : ""; } override public function write(_arg1:String=""):String{ var _local2:String; _local2 = writeSimpleStartElement(ASCollada.DAE_CONTRIBUTOR_ASSET_ELEMENT, _arg1); _local2 = (_local2 + writeSimpleEndElement(ASCollada.DAE_CONTRIBUTOR_ASSET_ELEMENT, _arg1)); return (_local2); } } }//package org.ascollada.core
Section 94
//DaeController (org.ascollada.core.DaeController) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeController extends DaeEntity { public var morph:DaeMorph; public var skin:DaeSkin; public var type:uint; public static const TYPE_SKIN:uint = 0; public static const TYPE_MORPH:uint = 1; public function DaeController(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; if (_arg1.localName() != ASCollada.DAE_CONTROLLER_ELEMENT){ return; }; super.read(_arg1); Logger.trace(("reading controller: " + this.id)); _local2 = getNode(_arg1, ASCollada.DAE_CONTROLLER_SKIN_ELEMENT); if (_local2){ this.skin = new DaeSkin(_local2); this.type = TYPE_SKIN; } else { _local3 = getNode(_arg1, ASCollada.DAE_CONTROLLER_MORPH_ELEMENT); if (_local3){ this.morph = new DaeMorph(_local3); this.type = TYPE_MORPH; }; }; if (((!(this.skin)) && (!(this.morph)))){ throw (new Error("controller element should contain a <skin> or a <morph> element!")); }; if (this.type == TYPE_SKIN){ }; } } }//package org.ascollada.core
Section 95
//DaeDocument (org.ascollada.core.DaeDocument) package org.ascollada.core { import org.ascollada.fx.*; import org.ascollada.utils.*; import org.ascollada.*; import org.ascollada.physics.*; import org.ascollada.namespaces.*; public class DaeDocument extends DaeEntity { public var effects:Object; public var geometries:Object; public var COLLADA:XML; public var pscene:DaePhysicsScene; public var animation_clips:Object; public var materialSymbolToTarget:Object; public var materials:Object; public var nodes:Object; private var _waitingAnimations:Array; private var _waitingGeometries:Array; public var visual_scenes:Object; public var vscene:DaeVisualScene; public var controllers:Object; public var version:String; public var physics_scenes:Object; public var animations:Object; public var yUp:uint; public var cameras:Object; public var images:Object; public static const Z_UP:uint = 2; public static const Y_UP:uint = 1; public static const X_UP:uint = 0; public function DaeDocument(_arg1:Object, _arg2:Boolean=false){ this.COLLADA = ((_arg1 is XML)) ? (_arg1 as XML) : new XML(_arg1); this.COLLADA.ignoreWhitespace = true; super(this.COLLADA, _arg2); } public function get numQueuedAnimations():uint{ return (_waitingAnimations.length); } private function readLibVisualScenes():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeVisualScene; this.visual_scenes = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_VSCENE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_VSCENE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeVisualScene(_local3, yUp); this.visual_scenes[_local4.id] = _local4; this.vscene = _local4; }; }; } private function readLibGeometries(_arg1:Boolean=false):void{ var _local2:XML; var _local3:XMLList; var _local4:XML; var _local5:DaeGeometry; _waitingGeometries = new Array(); this.geometries = new Object(); _local2 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_GEOMETRY_ELEMENT); if (_local2){ _local3 = getNodeList(_local2, ASCollada.DAE_GEOMETRY_ELEMENT); for each (_local4 in _local3) { _local5 = new DaeGeometry(_local4, _arg1); if (_arg1){ _waitingGeometries.push(_local5); } else { this.geometries[_local5.id] = _local5; }; }; }; } public function get numQueuedGeometries():uint{ return (_waitingGeometries.length); } override public function read(_arg1:XML):void{ this.version = _arg1.attribute(ASCollada.DAE_VERSION_ATTRIBUTE).toString(); Logger.trace(("version: " + this.version)); this.asset = new DaeAsset(getNode(this.COLLADA, ASCollada.DAE_ASSET_ELEMENT)); Logger.trace(("author: " + this.asset.contributors[0].author)); Logger.trace(("created: " + this.asset.created)); Logger.trace(("modified: " + this.asset.modified)); Logger.trace(("y-up: " + this.asset.yUp)); Logger.trace(("unit_meter: " + this.asset.unit_meter)); Logger.trace(("unit_name: " + this.asset.unit_name)); if (this.asset.yUp == ASCollada.DAE_Y_UP){ this.yUp = Y_UP; } else { this.yUp = Z_UP; }; buildMaterialTable(); readLibAnimationClips(); readLibCameras(); readLibControllers(); readLibAnimations(); readLibImages(); readLibMaterials(); readLibEffects(); readLibGeometries(this.async); readLibNodes(); readLibPhysicsScenes(); readLibVisualScenes(); readScene(); } private function readLibCameras():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeCamera; this.cameras = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_CAMERA_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_CAMERA_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeCamera(_local3); this.cameras[_local4.id] = _local4; }; }; } private function buildMaterialTable():void{ var _local1:XMLList; var _local2:XML; var _local3:String; var _local4:String; materialSymbolToTarget = new Object(); _local1 = this.COLLADAcollada::[ASCollada.DAE_INSTANCE_MATERIAL_ELEMENT]; for each (_local2 in _local1) { _local3 = getAttribute(_local2, ASCollada.DAE_TARGET_ATTRIBUTE); _local4 = getAttribute(_local2, ASCollada.DAE_SYMBOL_ATTRIBUTE); materialSymbolToTarget[_local4] = _local3; }; } public function getDaeNodeByIdOrSID(_arg1:String):DaeNode{ var _local2:DaeNode; _local2 = getDaeNodeById(_arg1, false); if (!_local2){ _local2 = getDaeNodeById(_arg1, true); }; return (_local2); } private function findDaeNodeById(_arg1:DaeNode, _arg2:String, _arg3:Boolean=false):DaeNode{ var _local4:int; var _local5:DaeNode; if (_arg3){ if (_arg1.sid == _arg2){ return (_arg1); }; } else { if (_arg1.id == _arg2){ return (_arg1); }; }; _local4 = 0; while (_local4 < _arg1.nodes.length) { _local5 = findDaeNodeById(_arg1.nodes[_local4], _arg2, _arg3); if (_local5){ return (_local5); }; _local4++; }; return (null); } public function readNextGeometry():Boolean{ var geometry:DaeGeometry; var geomLib:XML; var geomNode:XML; if (_waitingGeometries.length){ try { geometry = (_waitingGeometries.shift() as DaeGeometry); geomLib = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_GEOMETRY_ELEMENT); geomNode = getNodeById(geomLib, ASCollada.DAE_GEOMETRY_ELEMENT, geometry.id); geometry.async = false; geometry.read(geomNode); this.geometries[geometry.id] = geometry; } catch(e:Error) { Logger.error(("[ERROR] DaeDocument#readNextGeometry : " + e.toString())); }; return (true); //unresolved jump }; return (false); } private function readLibPhysicsScenes():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaePhysicsScene; this.physics_scenes = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_PSCENE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_PHYSICS_SCENE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaePhysicsScene(_local3); this.physics_scenes[_local4.id] = _local4; }; }; } private function readScene():void{ var _local1:XML; var _local2:XML; var _local3:XML; var _local4:String; var _local5:String; _local1 = getNode(this.COLLADA, ASCollada.DAE_SCENE_ELEMENT); if (_local1){ _local2 = getNode(_local1, ASCollada.DAE_INSTANCE_VSCENE_ELEMENT); if (_local2){ _local4 = getAttribute(_local2, ASCollada.DAE_URL_ATTRIBUTE); if ((this.visual_scenes[_local4] is DaeVisualScene)){ Logger.trace(("found visual scene: " + _local4)); this.vscene = this.visual_scenes[_local4]; Logger.trace((" -> frameRate: " + this.vscene.frameRate)); Logger.trace((" -> startTime: " + this.vscene.startTime)); Logger.trace((" -> endTime: " + this.vscene.endTime)); }; }; _local3 = getNode(_local1, ASCollada.DAE_INSTANCE_PHYSICS_SCENE_ELEMENT); if (_local3){ _local5 = getAttribute(_local3, ASCollada.DAE_URL_ATTRIBUTE); if ((this.physics_scenes[_local5] is DaePhysicsScene)){ Logger.trace(("found physics scene: " + _local5)); this.pscene = this.physics_scenes[_local5]; }; }; }; } private function readLibControllers():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeController; this.controllers = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_CONTROLLER_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_CONTROLLER_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeController(_local3); this.controllers[_local4.id] = _local4; }; }; } public function readNextAnimation():Boolean{ var animation:DaeAnimation; var animLib:XML; var animNode:XML; if (_waitingAnimations.length){ try { animation = (_waitingAnimations.shift() as DaeAnimation); animLib = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_ANIMATION_ELEMENT); animNode = getNodeById(animLib, ASCollada.DAE_ANIMATION_ELEMENT, animation.id); animation.read(animNode); } catch(e:Error) { Logger.error(("[ERROR] DaeDocument#readNextAnimation : " + e.toString())); }; return (true); //unresolved jump }; return (false); } private function readLibMaterials():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeMaterial; this.materials = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_MATERIAL_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_MATERIAL_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeMaterial(_local3); this.materials[_local4.id] = _local4; }; }; } private function readLibAnimations():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeAnimation; _waitingAnimations = new Array(); this.animations = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_ANIMATION_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_ANIMATION_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeAnimation(); _local4.id = _local3.attribute(ASCollada.DAE_ID_ATTRIBUTE).toString(); this.animations[_local4.id] = _local4; _waitingAnimations.push(_local4); }; }; } private function readLibNodes():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeNode; this.nodes = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_NODE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_NODE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeNode(_local3); this.nodes[_local4.id] = _local4; }; }; } public function getDaeNodeById(_arg1:String, _arg2:Boolean=false):DaeNode{ var _local3:DaeNode; var _local4:int; var _local5:DaeNode; var _local6:DaeNode; var _local7:DaeNode; for each (_local3 in this.nodes) { _local5 = findDaeNodeById(_local3, _arg1, _arg2); if (_local5){ return (_local5); }; }; _local4 = 0; while (_local4 < this.vscene.nodes.length) { _local6 = this.vscene.nodes[_local4]; _local7 = findDaeNodeById(_local6, _arg1, _arg2); if (_local7){ return (_local7); }; _local4++; }; return (null); } private function readLibEffects():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeEffect; this.effects = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_EFFECT_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_EFFECT_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeEffect(_local3); this.effects[_local4.id] = _local4; }; }; } private function readLibImages():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeImage; this.images = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_IMAGE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_IMAGE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeImage(_local3); this.images[_local4.id] = _local4; }; }; } private function readLibAnimationClips():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeAnimationClip; this.animation_clips = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_ANIMATION_CLIP_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_ANIMCLIP_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeAnimationClip(_local3); this.animation_clips[_local4.id] = _local4; }; }; } } }//package org.ascollada.core
Section 96
//DaeEntity (org.ascollada.core.DaeEntity) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; import org.ascollada.namespaces.*; public class DaeEntity { public var name:String; public var sid:String; public var id:String; public var extras:Object; public var asset:DaeAsset; public var async:Boolean; public function DaeEntity(_arg1:XML=null, _arg2:Boolean=false){ this.async = _arg2; if (_arg1){ read(_arg1); }; } public function getAttributeAsFloat(_arg1:XML, _arg2:String, _arg3:Number=0):Number{ var _local4:String; _local4 = getAttribute(_arg1, _arg2); return ((isNaN(parseFloat(_local4))) ? _arg3 : parseFloat(_local4)); } public function getStrings(_arg1:XML):Array{ return (StringUtil.trim(_arg1.text().toString()).split(/\s+/)); } public function getFloats(_arg1:XML):Array{ var _local2:Array; var _local3:int; _local2 = getStrings(_arg1); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = parseFloat(StringUtil.trim(_local2[_local3])); _local3++; }; return (_local2); } public function writeSimpleStartElement(_arg1:String, _arg2:String=""):String{ return ((((_arg2 + "<") + _arg1) + ">\n")); } public function getBools(_arg1:XML):Array{ var _local2:Array; var _local3:int; _local2 = getStrings(_arg1); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = ((_local2[_local3] == "true")) ? true : false; _local3++; }; return (_local2); } public function getAttributeAsInt(_arg1:XML, _arg2:String, _arg3:int=0):int{ var _local4:String; _local4 = getAttribute(_arg1, _arg2); return ((isNaN(parseInt(_local4, 10))) ? _arg3 : parseInt(_local4, 10)); } public function getInts(_arg1:XML):Array{ var _local2:Array; var _local3:int; _local2 = getStrings(_arg1); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = parseInt(StringUtil.trim(_local2[_local3]), 10); _local3++; }; return (_local2); } public function read(_arg1:XML):void{ this.extras = new Object(); this.id = getAttribute(_arg1, ASCollada.DAE_ID_ATTRIBUTE); this.name = getAttribute(_arg1, ASCollada.DAE_NAME_ATTRIBUTE); this.sid = getAttribute(_arg1, ASCollada.DAE_SID_ATTRIBUTE); } public function write(_arg1:String=""):String{ return (_arg1); } public function getNodeContent(_arg1:XML):String{ return ((_arg1) ? _arg1.text().toString() : ""); } public function getAttribute(_arg1:XML, _arg2:String, _arg3:Boolean=true):String{ var _local4:XMLList; var _local5:String; _local4 = _arg1.attribute(_arg2); _local5 = (_local4.length()) ? _local4.toString() : ""; if (((_arg3) && ((_local5.indexOf("#") == 0)))){ _local5 = _local5.split("#")[1]; }; return (_local5); } public function getNodeById(_arg1:XML, _arg2:String, _arg3:String):XML{ var parent = _arg1; var nodeName = _arg2; var id = _arg3; return (parentcollada::[nodeName].(@[ASCollada.DAE_ID_ATTRIBUTE] == id)[0]); } public function writeSimpleEndElement(_arg1:String, _arg2:String=""):String{ return ((((_arg2 + "</") + _arg1) + ">\n")); } public function getNodeList(_arg1:XML, _arg2:String):XMLList{ return (_arg1collada::[_arg2]); } public function getNode(_arg1:XML, _arg2:String):XML{ return (_arg1collada::[_arg2][0]); } } }//package org.ascollada.core
Section 97
//DaeGeometry (org.ascollada.core.DaeGeometry) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; import org.ascollada.physics.*; public class DaeGeometry extends DaeEntity { public var splines:Array; public var convex_mesh:DaeConvexMesh; public var spline:DaeSpline; public var mesh:DaeMesh; public function DaeGeometry(_arg1:XML=null, _arg2:Boolean=false){ super(_arg1, _arg2); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XMLList; var _local4:int; var _local5:int; super.read(_arg1); Logger.trace(("reading geometry: " + this.id)); this.mesh = null; this.convex_mesh = null; this.spline = null; this.splines = new Array(); if (async){ return; }; _local2 = getNode(_arg1, ASCollada.DAE_CONVEX_MESH_ELEMENT); if (!_local2){ _local2 = getNode(_arg1, ASCollada.DAE_MESH_ELEMENT); if (!_local2){ _local2 = getNode(_arg1, ASCollada.DAE_SPLINE_ELEMENT); }; }; if (!_local2){ Logger.error("expected one of <convex_mesh>, <mesh> or <spline>!"); throw (new Error("expected one of <convex_mesh>, <mesh> or <spline>!")); }; switch (_local2.localName()){ case ASCollada.DAE_CONVEX_MESH_ELEMENT: this.convex_mesh = new DaeConvexMesh(_local2); break; case ASCollada.DAE_MESH_ELEMENT: this.mesh = new DaeMesh(_local2); break; case ASCollada.DAE_SPLINE_ELEMENT: this.spline = new DaeSpline(_local2); _local3 = getNodeList(_arg1, ASCollada.DAE_SPLINE_ELEMENT); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { this.splines.push(new DaeSpline(_local3[_local5])); _local5++; }; break; default: break; }; } } }//package org.ascollada.core
Section 98
//DaeImage (org.ascollada.core.DaeImage) package org.ascollada.core { import flash.display.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeImage extends DaeEntity { public var bitmapData:BitmapData; public var init_from:String; public function DaeImage(_arg1:XML=null){ this.init_from = ""; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_ASSET_ELEMENT: this.asset = new DaeAsset(_local5); break; case ASCollada.DAE_DATA_ELEMENT: break; case ASCollada.DAE_INITFROM_ELEMENT: this.init_from = _local5.text().toString(); this.init_from.split("\\").join("/"); Logger.trace((((" => " + this.id) + " init_from: ") + this.init_from)); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local4++; }; } } }//package org.ascollada.core
Section 99
//DaeInput (org.ascollada.core.DaeInput) package org.ascollada.core { import org.ascollada.*; public class DaeInput extends DaeEntity { public var semantic:String; public var source:String; public var offset:uint; public var setId:uint; public function DaeInput(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_INPUT_ELEMENT){ return; }; super.read(_arg1); this.semantic = getAttribute(_arg1, ASCollada.DAE_SEMANTIC_ATTRIBUTE); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.offset = parseInt(getAttribute(_arg1, ASCollada.DAE_OFFSET_ATTRIBUTE), 10); this.offset = (this.offset) ? this.offset : 0; this.setId = parseInt(getAttribute(_arg1, ASCollada.DAE_SET_ATTRIBUTE), 10); } } }//package org.ascollada.core
Section 100
//DaeInstanceController (org.ascollada.core.DaeInstanceController) package org.ascollada.core { import org.ascollada.fx.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeInstanceController extends DaeEntity { public var skeleton:String; public var skeletons:Array; public var materials:Array; public var url:String; public function DaeInstanceController(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:String; var _local5:int; var _local6:XML; super.read(_arg1); this.url = getAttribute(_arg1, ASCollada.DAE_URL_ATTRIBUTE); this.materials = new Array(); Logger.trace((" => " + this.url)); this.skeleton = null; this.skeletons = new Array(); _local2 = _arg1.children(); _local3 = _local2.length(); _local5 = 0; while (_local5 < _local3) { _local6 = _local2[_local5]; switch (_local6.localName()){ case ASCollada.DAE_SKELETON_ELEMENT: _local4 = getNodeContent(_local6).split("#")[1]; this.skeletons.push(_local4); if (!this.skeleton){ this.skeleton = _local4; }; Logger.trace((" => skeleton: " + _local4)); break; case ASCollada.DAE_BINDMATERIAL_ELEMENT: this.materials = parseBindMaterial(_local6); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local5++; }; } private function parseBindMaterial(_arg1:XML):Array{ var _local2:Array; var _local3:XMLList; var _local4:int; var _local5:int; var _local6:XML; var _local7:Array; var _local8:XMLList; var _local9:XML; _local2 = new Array(); _local3 = _arg1.children(); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; switch (_local6.localName()){ case ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT: _local8 = _local6.children(); for each (_local9 in _local8) { _local2.push(new DaeInstanceMaterial(_local9)); }; break; default: break; }; _local5++; }; return (_local2); } } }//package org.ascollada.core
Section 101
//DaeInstanceGeometry (org.ascollada.core.DaeInstanceGeometry) package org.ascollada.core { import org.ascollada.fx.*; import org.ascollada.*; public class DaeInstanceGeometry extends DaeEntity { public var materials:Array; public var url:String; public function DaeInstanceGeometry(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; var _local6:Array; super.read(_arg1); this.url = getAttribute(_arg1, ASCollada.DAE_URL_ATTRIBUTE); this.materials = new Array(); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_BINDMATERIAL_ELEMENT: this.materials = parseBindMaterial(_local5); break; default: break; }; _local4++; }; } private function parseBindMaterial(_arg1:XML):Array{ var _local2:Array; var _local3:XMLList; var _local4:int; var _local5:int; var _local6:XML; var _local7:Array; var _local8:XMLList; var _local9:XML; _local2 = new Array(); _local3 = _arg1.children(); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; switch (_local6.localName()){ case ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT: _local8 = _local6.children(); for each (_local9 in _local8) { _local2.push(new DaeInstanceMaterial(_local9)); }; break; default: break; }; _local5++; }; return (_local2); } } }//package org.ascollada.core
Section 102
//DaeInstanceNode (org.ascollada.core.DaeInstanceNode) package org.ascollada.core { import org.ascollada.*; public class DaeInstanceNode extends DaeEntity { public var url:String; public function DaeInstanceNode(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); this.url = getAttribute(_arg1, ASCollada.DAE_URL_ATTRIBUTE); } } }//package org.ascollada.core
Section 103
//DaeMesh (org.ascollada.core.DaeMesh) package org.ascollada.core { import org.ascollada.*; public class DaeMesh extends DaeEntity { public var sources:Object; public var primitives:Array; public var vertices:Array; public function DaeMesh(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:DaeSource; var _local5:XML; var _local6:DaeVertices; var _local7:DaeInput; var _local8:XMLList; var _local9:int; var _local10:int; var _local11:XML; if (((!((_arg1.localName() == ASCollada.DAE_MESH_ELEMENT))) && (!((_arg1.localName() == ASCollada.DAE_CONVEX_MESH_ELEMENT))))){ throw (new Error((((("expected a '" + ASCollada.DAE_MESH_ELEMENT) + " or a '") + ASCollada.DAE_CONVEX_MESH_ELEMENT) + "' element"))); }; super.read(_arg1); this.sources = new Object(); this.primitives = new Array(); _local2 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeSource(_local3); this.sources[_local4.id] = _local4.values; }; _local5 = getNode(_arg1, ASCollada.DAE_VERTICES_ELEMENT); _local6 = new DaeVertices(_local5); for each (_local7 in _local6.inputs) { if (_local7.semantic == "POSITION"){ this.vertices = sources[_local7.source]; this.sources[_local6.id] = sources[_local7.source]; }; }; _local8 = _arg1.children(); _local9 = _local8.length(); _local10 = 0; while (_local10 < _local9) { _local11 = _local8[_local10]; switch (String(_local11.localName())){ case ASCollada.DAE_TRIANGLES_ELEMENT: case ASCollada.DAE_TRIFANS_ELEMENT: case ASCollada.DAE_TRISTRIPS_ELEMENT: case ASCollada.DAE_LINESTRIPS_ELEMENT: case ASCollada.DAE_LINES_ELEMENT: case ASCollada.DAE_POLYGONS_ELEMENT: case ASCollada.DAE_POLYLIST_ELEMENT: this.primitives.push(new DaePrimitive(this, _local11)); break; default: break; }; _local10++; }; } } }//package org.ascollada.core
Section 104
//DaeMorph (org.ascollada.core.DaeMorph) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeMorph extends DaeEntity { public var targets:Array; public var source:String; public var method:String; public var weights:Array; public static const METHOD_RELATIVE:String = "RELATIVE"; public static const METHOD_NORMALIZED:String = "NORMALIZED"; public function DaeMorph(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:Object; var _local4:XMLList; var _local5:XML; var _local6:XMLList; var _local7:XML; var _local8:DaeSource; var _local9:DaeInput; if (_arg1.localName() != ASCollada.DAE_CONTROLLER_MORPH_ELEMENT){ return; }; super.read(_arg1); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.method = ((getAttribute(_arg1, ASCollada.DAE_METHOD_ATTRIBUTE) == METHOD_RELATIVE)) ? METHOD_RELATIVE : METHOD_NORMALIZED; Logger.trace(((("reading morph, source: " + this.source) + " method: ") + this.method)); _local2 = getNode(_arg1, ASCollada.DAE_TARGETS_ELEMENT); this.targets = (this.weights = null); _local3 = new Object(); _local4 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); for each (_local5 in _local4) { _local8 = new DaeSource(_local5); _local3[_local8.id] = _local8; }; _local6 = getNodeList(_local2, ASCollada.DAE_INPUT_ELEMENT); for each (_local7 in _local6) { _local9 = new DaeInput(_local7); switch (_local9.semantic){ case ASCollada.DAE_TARGET_MORPH_INPUT: this.targets = _local3[_local9.source].values; break; case ASCollada.DAE_WEIGHT_MORPH_INPUT: this.weights = _local3[_local9.source].values; break; default: break; }; }; if (!this.targets){ throw (new Error("Invalid morph, could not find morph-targets")); }; if (!this.weights){ throw (new Error("Invalid morph, could not find morhp-weights!")); }; } } }//package org.ascollada.core
Section 105
//DaeNode (org.ascollada.core.DaeNode) package org.ascollada.core { import org.ascollada.types.*; import org.ascollada.*; public class DaeNode extends DaeEntity { public var instance_nodes:Array; public var instance_cameras:Array; public var geometries:Array; public var controllers:Array; public var transforms:Array; public var nodes:Array; private var _yUp:uint; public var type:uint; public static const TYPE_JOINT:uint = 1; public static const TYPE_NODE:uint = 0; public function DaeNode(_arg1:XML=null, _arg2:uint=1):void{ _yUp = _arg2; super(_arg1); } public function findMatrixBySID(_arg1:String):DaeTransform{ var _local2:DaeTransform; for each (_local2 in this.transforms) { if (_arg1 == _local2.sid){ return (_local2); }; }; return (null); } public function findController(_arg1:String):DaeInstanceController{ var _local2:DaeInstanceController; for each (_local2 in this.controllers) { if (_arg1 == _local2.id){ return (_local2); }; }; return (null); } override public function read(_arg1:XML):void{ var _local2:Boolean; var _local3:XMLList; var _local4:int; var _local5:int; var _local6:XML; var _local7:Array; var _local8:String; var _local9:DaeTransform; this.nodes = new Array(); this.controllers = new Array(); this.geometries = new Array(); this.instance_nodes = new Array(); this.instance_cameras = new Array(); this.transforms = new Array(); if (_arg1.localName() != ASCollada.DAE_NODE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_NODE_ELEMENT) + "' element"))); }; super.read(_arg1); this.type = ((getAttribute(_arg1, ASCollada.DAE_TYPE_ATTRIBUTE) == "JOINT")) ? TYPE_JOINT : TYPE_NODE; _local2 = (this._yUp == DaeDocument.Y_UP); _local3 = _arg1.children(); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; _local8 = getAttribute(_local6, ASCollada.DAE_SID_ATTRIBUTE); switch (_local6.localName()){ case ASCollada.DAE_ASSET_ELEMENT: break; case ASCollada.DAE_ROTATE_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_ROTATE_ELEMENT, _local8, _local7, _local2); this.transforms.push(_local9); break; case ASCollada.DAE_TRANSLATE_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_TRANSLATE_ELEMENT, _local8, _local7, _local2); this.transforms.push(_local9); break; case ASCollada.DAE_SCALE_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_SCALE_ELEMENT, _local8, _local7, _local2); this.transforms.push(_local9); break; case ASCollada.DAE_SKEW_ELEMENT: _local7 = getFloats(_local6); break; case ASCollada.DAE_LOOKAT_ELEMENT: _local7 = getFloats(_local6); break; case ASCollada.DAE_MATRIX_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_MATRIX_ELEMENT, _local8, _local7, _local2); this.transforms.push(_local9); break; case ASCollada.DAE_NODE_ELEMENT: this.nodes.push(new DaeNode(_local6, _yUp)); break; case ASCollada.DAE_INSTANCE_CAMERA_ELEMENT: this.instance_cameras.push(getAttribute(_local6, ASCollada.DAE_URL_ATTRIBUTE)); break; case ASCollada.DAE_INSTANCE_CONTROLLER_ELEMENT: this.controllers.push(new DaeInstanceController(_local6)); break; case ASCollada.DAE_INSTANCE_GEOMETRY_ELEMENT: this.geometries.push(new DaeInstanceGeometry(_local6)); break; case ASCollada.DAE_INSTANCE_LIGHT_ELEMENT: break; case ASCollada.DAE_INSTANCE_NODE_ELEMENT: this.instance_nodes.push(new DaeInstanceNode(_local6)); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local5++; }; } } }//package org.ascollada.core
Section 106
//DaePrimitive (org.ascollada.core.DaePrimitive) package org.ascollada.core { import flash.utils.*; import org.ascollada.*; public class DaePrimitive extends DaeEntity { private var _inputs:Dictionary; public var vcount:Array; public var count:uint; public var material:String; public var mesh:DaeMesh; public var type:String; public function DaePrimitive(_arg1:DaeMesh, _arg2:XML=null):void{ this.mesh = _arg1; super(_arg2); } public function get vertices():Array{ return (getFirstInput("VERTEX")); } protected function parse(_arg1:XML):void{ var _local2:Array; var _local3:XML; var _local4:XMLList; var _local5:Array; var _local6:DaeInput; var _local7:uint; var _local8:XML; var _local9:int; var _local10:int; var _local11:Array; _local2 = getInts(getNode(_arg1, ASCollada.DAE_POLYGON_ELEMENT)); _local3 = getNode(_arg1, ASCollada.DAE_VERTEXCOUNT_ELEMENT); _local4 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); _local5 = new Array(); _local7 = 0; if ((_local3 is XML)){ this.vcount = getInts(_local3); }; for each (_local8 in _local4) { _local6 = new DaeInput(_local8); _local7 = Math.max(_local7, (_local6.offset + 1)); _local5.push(_local6); _inputs[_local6] = new Array(); }; _local9 = 0; while (_local9 < _local2.length) { for each (_local6 in _local5) { _local10 = _local2[(_local9 + _local6.offset)]; _local11 = mesh.sources[_local6.source]; switch (_local6.semantic){ case "VERTEX": _inputs[_local6].push(_local10); break; default: _inputs[_local6].push(_local11[_local10]); break; }; }; _local9 = (_local9 + _local7); }; } private function getInputBySet(_arg1:String, _arg2:int):Array{ var _local3:*; if (getInputCount(_arg1) == 1){ return (getFirstInput(_arg1)); }; for (_local3 in _inputs) { if ((((_local3.semantic == _arg1)) && ((_local3.setId == _arg2)))){ return (_inputs[_local3]); }; }; return (new Array()); } override public function read(_arg1:XML):void{ var _local2:XML; if (!checkNode(_arg1)){ throw (new Error("expected a primitive element!")); }; if (!this.mesh){ throw (new Error("parent-element 'mesh' or 'convex_mesh' not set!")); }; super.read(_arg1); this.type = String(_arg1.localName()); this.count = getAttributeAsInt(_arg1, ASCollada.DAE_COUNT_ATTRIBUTE); this.material = getAttribute(_arg1, ASCollada.DAE_MATERIAL_ATTRIBUTE); this.vcount = new Array(); _inputs = new Dictionary(); _local2 = (_arg1.parent() as XML); switch (String(_local2.localName())){ case ASCollada.DAE_MESH_ELEMENT: parse(_arg1); break; case ASCollada.DAE_CONVEX_MESH_ELEMENT: break; default: break; }; } private function getInputCount(_arg1:String):uint{ var _local2:uint; var _local3:*; _local2 = 0; for (_local3 in _inputs) { if (_local3.semantic == _arg1){ _local2++; }; }; return (_local2); } public function get normals():Array{ return (getFirstInput("NORMAL")); } public function getTexCoords(_arg1:uint=0):Array{ return (getInputBySet("TEXCOORD", _arg1)); } private function checkNode(_arg1:XML):Boolean{ var _local2:String; _local2 = String(_arg1.localName()); return ((((((((((((((_local2 == ASCollada.DAE_TRIANGLES_ELEMENT)) || ((_local2 == ASCollada.DAE_TRIFANS_ELEMENT)))) || ((_local2 == ASCollada.DAE_TRISTRIPS_ELEMENT)))) || ((_local2 == ASCollada.DAE_LINESTRIPS_ELEMENT)))) || ((_local2 == ASCollada.DAE_LINES_ELEMENT)))) || ((_local2 == ASCollada.DAE_POLYGONS_ELEMENT)))) || ((_local2 == ASCollada.DAE_POLYLIST_ELEMENT)))); } private function getFirstInput(_arg1:String):Array{ var _local2:*; for (_local2 in _inputs) { if (_local2.semantic == _arg1){ return (_inputs[_local2]); }; }; return (null); } } }//package org.ascollada.core
Section 107
//DaeSampler (org.ascollada.core.DaeSampler) package org.ascollada.core { import org.ascollada.*; public class DaeSampler extends DaeEntity { public var values:Array; public var type:String; public function DaeSampler(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_SAMPLER_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_SAMPLER_ELEMENT) + "' element"))); }; super.read(_arg1); } } }//package org.ascollada.core
Section 108
//DaeSkin (org.ascollada.core.DaeSkin) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeSkin extends DaeEntity { public var jointsType:String; public var source:String; public var vertex_weights:Array; public var bind_shape_matrix:Array; public var joints:Array; public var bind_matrices:Array; public var blendWeightsByJointID:Object; public function DaeSkin(_arg1:XML=null):void{ super(_arg1); } public function findJointBindMatrix2(_arg1:String):Array{ var _local2:int; _local2 = 0; while (_local2 < this.joints.length) { if (_arg1 == this.joints[_local2]){ return (this.bind_matrices[_local2]); }; _local2++; }; return (null); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XMLList; var _local4:XML; var _local5:XML; var _local6:XMLList; var _local7:DaeVertexWeights; var _local8:XML; var _local9:DaeInput; var _local10:DaeSource; var _local11:Object; var _local12:XML; var _local13:int; var _local14:uint; var _local15:uint; var _local16:Array; var _local17:int; var _local18:int; var _local19:int; var _local20:Array; var _local21:int; var _local22:int; var _local23:int; var _local24:Number; var _local25:String; var _local26:DaeBlendWeight; this.joints = new Array(); this.vertex_weights = new Array(); this.bind_matrices = new Array(); if (_arg1.localName() != ASCollada.DAE_CONTROLLER_SKIN_ELEMENT){ return; }; super.read(_arg1); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); Logger.trace(("reading skin, source: " + this.source)); _local2 = getNodeList(_arg1, ASCollada.DAE_BINDSHAPEMX_SKIN_PARAMETER); if (_local2.length()){ this.bind_shape_matrix = getFloats(_local2[0]); } else { this.bind_shape_matrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; }; _local3 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); if (_local3.length() < 3){ throw (new Error("<skin> requires a minimum of 3 <source> elements!")); }; _local4 = getNode(_arg1, ASCollada.DAE_JOINTS_ELEMENT); if (!_local4){ throw (new Error("need exactly one <joints> element!")); }; _local5 = getNode(_arg1, ASCollada.DAE_WEIGHTS_ELEMENT); if (!_local5){ throw (new Error("need exactly one <vertex_weights> element!")); }; _local6 = getNodeList(_local4, ASCollada.DAE_INPUT_ELEMENT); _local7 = new DaeVertexWeights(_local5); _local11 = new Object(); for each (_local12 in _local6) { _local9 = new DaeInput(_local12); _local8 = getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local9.source); if (!_local8){ throw (new Error((("source not found! (id='" + _local9.source) + "')"))); }; _local10 = new DaeSource(_local8); switch (_local9.semantic){ case ASCollada.DAE_JOINT_SKIN_INPUT: this.joints = _local10.values; this.jointsType = _local10.accessor.params[ASCollada.DAE_JOINT_SKIN_INPUT]; break; case ASCollada.DAE_BINDMATRIX_SKIN_INPUT: this.bind_matrices = _local10.values; break; default: break; }; }; _local13 = 0; _local14 = 0; _local15 = 1; for each (_local9 in _local7.inputs) { _local8 = getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local9.source); if (!_local8){ throw (new Error((("source not found! (id='" + _local9.source) + "')"))); }; _local10 = new DaeSource(_local8); switch (_local9.semantic){ case ASCollada.DAE_JOINT_SKIN_INPUT: _local14 = _local9.offset; _local13++; break; case ASCollada.DAE_WEIGHT_SKIN_INPUT: _local16 = _local10.values; _local15 = _local9.offset; _local13++; break; default: break; }; }; _local17 = 0; _local18 = 0; while (_local18 < _local7.vcounts.length) { _local19 = _local7.vcounts[_local18]; _local20 = new Array(); _local21 = 0; while (_local21 < _local19) { _local22 = _local7.v[(_local17 + _local14)]; _local23 = _local7.v[(_local17 + _local15)]; _local24 = _local16[_local23]; _local25 = ((_local22 < 0)) ? null : this.joints[_local22]; _local26 = new DaeBlendWeight(_local18, _local25, _local24); _local20.push(_local26); _local17 = (_local17 + _local13); _local21++; }; this.vertex_weights[_local18] = _local20; _local18++; }; Logger.trace((" => => #vertex_weights " + vertex_weights.length)); } public function findJointBindMatrix(_arg1:DaeNode):Array{ var _local2:String; var _local3:int; _local2 = ((this.jointsType == "IDREF")) ? _arg1.id : _arg1.sid; _local3 = 0; while (_local3 < this.joints.length) { if (_local2 == this.joints[_local3]){ return (this.bind_matrices[_local3]); }; _local3++; }; return (null); } public function findJointVertexWeights(_arg1:DaeNode):Array{ var _local2:String; var _local3:Array; var _local4:int; var _local5:Array; var _local6:int; _local2 = ((this.jointsType == "IDREF")) ? _arg1.id : _arg1.sid; _local3 = new Array(); _local4 = 0; while (_local4 < this.vertex_weights.length) { _local5 = this.vertex_weights[_local4]; _local6 = 0; while (_local6 < _local5.length) { if (_local5[_local6].joint == _local2){ _local3.push(_local5[_local6]); }; _local6++; }; _local4++; }; return (_local3); } private function normalizeBlendWeights(_arg1:Array):void{ var _local2:int; var _local3:int; var _local4:Array; var _local5:Number; var _local6:Number; _local2 = 0; while (_local2 < _arg1.length) { _local4 = _arg1[_local2]; _local5 = 0; _local3 = 0; while (_local3 < _local4.length) { _local5 = (_local5 + _local4[_local3].weight); _local4[_local3].originalWeight = _local4[_local3].weight; _local3++; }; if ((((_local5 == 0)) || ((_local5 == 1)))){ } else { _local6 = (1 / _local5); _local3 = 0; while (_local3 < _local4.length) { _local4[_local3].weight = (_local4[_local3].weight * _local6); _local3++; }; }; _local2++; }; } public function findJointVertexWeightsByIDOrSID(_arg1:String):Array{ var _local2:Array; var _local3:int; var _local4:Array; var _local5:int; _local2 = new Array(); _local3 = 0; while (_local3 < this.vertex_weights.length) { _local4 = this.vertex_weights[_local3]; _local5 = 0; while (_local5 < _local4.length) { if (_local4[_local5].joint == _arg1){ _local2.push(_local4[_local5]); }; _local5++; }; _local3++; }; return (_local2); } } }//package org.ascollada.core
Section 109
//DaeSource (org.ascollada.core.DaeSource) package org.ascollada.core { import org.ascollada.types.*; import org.ascollada.*; public class DaeSource extends DaeEntity { public var values:Array; public var accessor:DaeAccessor; public function DaeSource(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:DaeArray; var _local3:XML; var _local4:XML; var _local5:int; var _local6:Array; var _local7:int; this.values = new Array(); if (_arg1.localName() != ASCollada.DAE_SOURCE_ELEMENT){ return; }; super.read(_arg1); _local2 = new DaeArray(_arg1); _local3 = getNode(_arg1, ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT); if (!_local3){ this.values = _local2.values; return; }; _local4 = getNode(_local3, ASCollada.DAE_ACCESSOR_ELEMENT); if (!_local4){ throw (new Error("As a child of <source>, this element must contain exactly one <accessor> element.")); }; this.accessor = new DaeAccessor(_local4); _local5 = 0; while (_local5 < _local2.count) { if (this.accessor.stride > 1){ _local6 = new Array(); _local7 = 0; while (_local7 < this.accessor.stride) { _local6.push(_local2.values[(_local5 + _local7)]); _local7++; }; this.values.push(_local6); } else { this.values.push(_local2.values[_local5]); }; _local5 = (_local5 + this.accessor.stride); }; } } }//package org.ascollada.core
Section 110
//DaeSpline (org.ascollada.core.DaeSpline) package org.ascollada.core { import org.ascollada.*; public class DaeSpline extends DaeEntity { public var closed:Boolean; public var vertices:Array; public function DaeSpline(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:XMLList; var _local5:XML; var _local6:DaeInput; var _local7:XML; var _local8:DaeSource; if (_arg1.localName() != ASCollada.DAE_SPLINE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_SPLINE_ELEMENT) + "' element"))); }; super.read(_arg1); this.closed = ((getAttribute(_arg1, ASCollada.DAE_CLOSED_ATTRIBUTE) == "true")) ? true : false; _local2 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); if (_local2 == new XMLList()){ throw (new Error("<spline> requires at least one <source> element!")); }; _local3 = getNode(_arg1, ASCollada.DAE_CONTROL_VERTICES_ELEMENT); if (!_local3){ throw (new Error("<spline> requires exactly one <control_vertices> element!")); }; _local4 = getNodeList(_local3, ASCollada.DAE_INPUT_ELEMENT); for each (_local5 in _local4) { _local6 = new DaeInput(_local5); switch (_local6.semantic){ case "POSITION": _local7 = getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local6.source); if (!_local7){ throw (new Error((("source with id=" + _local6.source) + " not found!"))); }; _local8 = new DaeSource(_local7[0]); this.vertices = _local8.values; break; case "INTERPOLATION": break; case "IN_TANGENT": break; case "OUT_TANGENT": break; case "CONTINUITY": break; case "LINEAR_STEPS": break; default: break; }; }; } } }//package org.ascollada.core
Section 111
//DaeVertexWeights (org.ascollada.core.DaeVertexWeights) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeVertexWeights extends DaeEntity { public var v:Array; public var count:int; public var inputs:Array; public var vcounts:Array; public function DaeVertexWeights(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:XML; var _local5:XML; var _local6:DaeInput; this.inputs = new Array(); if (_arg1.localName() != ASCollada.DAE_WEIGHTS_ELEMENT){ throw (new Error((("not a <" + ASCollada.DAE_WEIGHTS_ELEMENT) + "> element!"))); }; super.read(_arg1); this.count = getAttributeAsInt(_arg1, ASCollada.DAE_COUNT_ATTRIBUTE); Logger.trace(" => reading vertex_weights"); _local2 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); if (_local2.length() < 2){ throw (new Error("<joints> requires at least 2 <input> elements!")); }; _local3 = 0; while (_local3 < _local2.length()) { _local6 = new DaeInput(_local2[_local3]); this.inputs.push(_local6); _local3++; }; this.v = new Array(); this.vcounts = new Array(); _local4 = getNode(_arg1, ASCollada.DAE_VERTEX_ELEMENT); _local5 = getNode(_arg1, ASCollada.DAE_VERTEXCOUNT_ELEMENT); if (((!(_local4)) || (!(_local5)))){ return; }; this.v = getInts(_local4); this.vcounts = getInts(_local5); } } }//package org.ascollada.core
Section 112
//DaeVertices (org.ascollada.core.DaeVertices) package org.ascollada.core { import org.ascollada.*; public class DaeVertices extends DaeEntity { public var inputs:Object; public function DaeVertices(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:uint; var _local4:int; var _local5:DaeInput; if (_arg1.localName() != ASCollada.DAE_VERTICES_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_VERTICES_ELEMENT) + "' element"))); }; super.read(_arg1); this.inputs = new Object(); _local2 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = new DaeInput(_local2[_local4]); this.inputs[_local5.semantic] = _local5; _local4++; }; } } }//package org.ascollada.core
Section 113
//DaeVisualScene (org.ascollada.core.DaeVisualScene) package org.ascollada.core { import org.ascollada.utils.*; import org.ascollada.*; public class DaeVisualScene extends DaeEntity { public var nodes:Array; private var _yUp:uint; public function DaeVisualScene(_arg1:XML=null, _arg2:uint=1):void{ _yUp = _arg2; super(_arg1); } public function get endTime():Number{ return (this.extras["end_time"]); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:XMLList; var _local5:XML; var _local6:XMLList; var _local7:XML; var _local8:String; var _local9:XML; var _local10:XML; var _local11:XML; this.nodes = new Array(); if (_arg1.localName() != ASCollada.DAE_VSCENE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_VSCENE_ELEMENT) + "' element"))); }; super.read(_arg1); Logger.trace(("reading visual scene: " + this.id)); _local2 = getNodeList(_arg1, ASCollada.DAE_NODE_ELEMENT); if (!_local2.length()){ throw (new Error("require at least 1 <node> element!")); }; _local3 = 0; while (_local3 < _local2.length()) { this.nodes.push(new DaeNode(_local2[_local3], _yUp)); _local3++; }; _local4 = getNodeList(_arg1, ASCollada.DAE_EXTRA_ELEMENT); for each (_local5 in _local4) { _local6 = getNodeList(_local5, ASCollada.DAE_TECHNIQUE_ELEMENT); for each (_local7 in _local6) { _local8 = getAttribute(_local7, ASCollada.DAE_PROFILE_ATTRIBUTE); switch (_local8){ case ASCollada.DAEMAX_MAX_PROFILE: _local9 = getNode(_local7, ASCollada.DAEMAX_FRAMERATE_PARAMETER); if (_local9){ this.extras[ASCollada.DAEMAX_FRAMERATE_PARAMETER] = parseFloat(getNodeContent(_local9)); }; break; case "FCOLLADA": _local10 = getNode(_local7, "start_time"); if (_local10){ this.extras["start_time"] = parseFloat(getNodeContent(_local10)); }; _local11 = getNode(_local7, "end_time"); if (_local11){ this.extras["end_time"] = parseFloat(getNodeContent(_local11)); }; break; default: break; }; }; }; } public function get startTime():Number{ return (this.extras["start_time"]); } public function get frameRate():Number{ return (this.extras[ASCollada.DAEMAX_FRAMERATE_PARAMETER]); } } }//package org.ascollada.core
Section 114
//DaeBindVertexInput (org.ascollada.fx.DaeBindVertexInput) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; public class DaeBindVertexInput extends DaeEntity { public var semantic:String; public var input_semantic:String; public var input_set:int; public function DaeBindVertexInput(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); semantic = getAttribute(_arg1, ASCollada.DAE_SEMANTIC_ATTRIBUTE); input_semantic = getAttribute(_arg1, ASCollada.DAE_INPUT_SEMANTIC_ATTRIBUTE); input_set = getAttributeAsInt(_arg1, ASCollada.DAE_INPUT_SET_ATTRIBUTE); } } }//package org.ascollada.fx
Section 115
//DaeBlinn (org.ascollada.fx.DaeBlinn) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeBlinn extends DaeLambert { public var specular:DaeColorOrTexture; public var shininess:Number;// = 0 public function DaeBlinn(_arg1:XML=null):void{ shininess = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_SPECULAR_MATERIAL_PARAMETER: this.specular = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_SHININESS_MATERIAL_PARAMETER: this.shininess = parseFloat(getNodeContent(getNode(_local5, "float"))); Logger.trace((" => shininess: " + this.shininess)); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 116
//DaeConstant (org.ascollada.fx.DaeConstant) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.types.*; import org.ascollada.*; public class DaeConstant extends DaeEntity { public var transparency:Number;// = 0 public var transparent:DaeColorOrTexture; public var emission:DaeColorOrTexture; public var reflectivity:Number;// = 0 public var index_of_refraction:Number;// = 0 public var reflective:DaeColorOrTexture; public function DaeConstant(_arg1:XML=null):void{ reflectivity = 0; transparency = 0; index_of_refraction = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_EMISSION_MATERIAL_PARAMETER: this.emission = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_REFLECTIVE_MATERIAL_PARAMETER: this.reflective = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_REFLECTIVITY_MATERIAL_PARAMETER: this.reflectivity = parseFloat(getNodeContent(getNode(_local5, "float"))); break; case ASCollada.DAE_TRANSPARENT_MATERIAL_PARAMETER: this.transparent = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_TRANSPARENCY_MATERIAL_PARAMETER: this.transparency = parseFloat(getNodeContent(getNode(_local5, "float"))); break; case ASCollada.DAE_INDEXOFREFRACTION_MATERIAL_PARAMETER: this.reflectivity = parseFloat(getNodeContent(getNode(_local5, "float"))); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 117
//DaeEffect (org.ascollada.fx.DaeEffect) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.types.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeEffect extends DaeEntity { public var texture_url:String; public var newparams:Object; public var color:DaeConstant; public function DaeEffect(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XMLList; var _local4:XMLList; var _local5:XML; var _local6:String; var _local7:XML; var _local8:XML; var _local9:XML; var _local10:XML; var _local11:XML; var _local12:DaeNewParam; var _local13:DaeNewParam; var _local14:DaeLambert; var _local15:DaeNewParam; super.read(_arg1); _local2 = getNode(_arg1, ASCollada.DAE_PROFILE_COMMON_ELEMENT); _local3 = getNodeList(_local2, ASCollada.DAE_IMAGE_ELEMENT); _local4 = getNodeList(_local2, ASCollada.DAE_FXCMN_NEWPARAM_ELEMENT); _local5 = getNode(_local2, ASCollada.DAE_TECHNIQUE_ELEMENT); _local6 = _local5.attribute(ASCollada.DAE_SID_ATTRIBUTE); Logger.trace(("reading effect: " + this.id)); Logger.trace((" => #images: " + _local3.length())); Logger.trace((" => #newparams: " + _local4.length())); Logger.trace((" => technique sid: " + _local6)); this.newparams = new Object(); for each (_local7 in _local4) { _local15 = new DaeNewParam(_local7); this.newparams[_local15.type] = _local15; }; _local8 = getNode(_local5, ASCollada.DAE_FXSTD_PHONG_ELEMENT); _local9 = getNode(_local5, ASCollada.DAE_FXSTD_LAMBERT_ELEMENT); _local10 = getNode(_local5, ASCollada.DAE_FXSTD_BLINN_ELEMENT); _local11 = getNode(_local5, ASCollada.DAE_FXSTD_CONSTANT_ELEMENT); if (_local8){ Logger.trace(" => shader: phong"); this.color = new DaePhong(_local8); } else { if (_local9){ Logger.trace(" => shader: lambert"); this.color = new DaeLambert(_local9); } else { if (_local10){ Logger.trace(" => shader: blinn"); this.color = new DaeBlinn(_local10); } else { if (_local11){ Logger.trace(" => shader: constant"); this.color = new DaeConstant(_local11); }; }; }; }; _local12 = this.newparams[ASCollada.DAE_FXCMN_SURFACE_ELEMENT]; _local13 = this.newparams[ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT]; _local14 = (this.color as DaeLambert); if (((((((_local14) && ((_local14.diffuse.type == DaeColorOrTexture.TYPE_TEXTURE)))) && (_local13))) && (_local12))){ if ((((_local13.sid == _local14.diffuse.texture.texture)) && ((_local13.sampler2D.source == _local12.sid)))){ this.texture_url = _local12.surface.init_from; }; }; } } }//package org.ascollada.fx
Section 118
//DaeInstanceMaterial (org.ascollada.fx.DaeInstanceMaterial) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; public class DaeInstanceMaterial extends DaeEntity { public var target:String; public var symbol:String; private var _bindVertexInputs:Array; public function DaeInstanceMaterial(_arg1:XML=null){ super(_arg1); } public function findBindVertexInput(_arg1:String, _arg2:String="TEXCOORD"):DaeBindVertexInput{ var _local3:DaeBindVertexInput; for each (_local3 in _bindVertexInputs) { if ((((_local3.semantic == _arg1)) && ((_local3.input_semantic == _arg2)))){ return (_local3); }; }; return (null); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); this.symbol = getAttribute(_arg1, ASCollada.DAE_SYMBOL_ATTRIBUTE); this.target = getAttribute(_arg1, ASCollada.DAE_TARGET_ATTRIBUTE); _bindVertexInputs = new Array(); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_BIND_ELEMENT: break; case ASCollada.DAE_BIND_VERTEX_INPUT: _bindVertexInputs.push(new DaeBindVertexInput(_local5)); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 119
//DaeLambert (org.ascollada.fx.DaeLambert) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.*; public class DaeLambert extends DaeConstant { public var diffuse:DaeColorOrTexture; public var ambient:DaeColorOrTexture; public function DaeLambert(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_AMBIENT_MATERIAL_PARAMETER: this.ambient = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_DIFFUSE_MATERIAL_PARAMETER: this.diffuse = new DaeColorOrTexture(_local5); if (this.diffuse.texture){ }; break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 120
//DaeMaterial (org.ascollada.fx.DaeMaterial) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeMaterial extends DaeEntity { public var effect:String; public function DaeMaterial(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; var _local4:XMLList; var _local5:XML; var _local6:XML; super.read(_arg1); Logger.trace(("reading material: " + this.id)); _local2 = getNode(_arg1, ASCollada.DAE_ASSET_ELEMENT); if (_local2){ this.asset = new DaeAsset(_local2); }; _local3 = getNode(_arg1, ASCollada.DAE_INSTANCE_EFFECT_ELEMENT); this.effect = getAttribute(_local3, ASCollada.DAE_URL_ATTRIBUTE); Logger.trace((" => effect url: " + this.effect)); return; } } }//package org.ascollada.fx
Section 121
//DaeNewParam (org.ascollada.fx.DaeNewParam) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeNewParam extends DaeEntity { public var surface:DaeSurface; public var sampler2D:DaeSampler2D; public var type:String; public function DaeNewParam(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; if (_arg1.localName() != ASCollada.DAE_FXCMN_NEWPARAM_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_FXCMN_NEWPARAM_ELEMENT) + "' element"))); }; super.read(_arg1); Logger.trace((" => newparam @sid=" + this.sid)); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_FXCMN_SURFACE_ELEMENT: this.type = ASCollada.DAE_FXCMN_SURFACE_ELEMENT; this.surface = new DaeSurface(_local5); break; case ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT: this.type = ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT; this.sampler2D = new DaeSampler2D(_local5); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 122
//DaePhong (org.ascollada.fx.DaePhong) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.*; public class DaePhong extends DaeLambert { public var specular:DaeColorOrTexture; public var shininess:Number;// = 0 public function DaePhong(_arg1:XML=null):void{ shininess = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_SPECULAR_MATERIAL_PARAMETER: this.specular = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_SHININESS_MATERIAL_PARAMETER: this.shininess = parseFloat(getNodeContent(getNode(_local5, "float"))); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 123
//DaeSampler2D (org.ascollada.fx.DaeSampler2D) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeSampler2D extends DaeEntity { public var source:String; public function DaeSampler2D(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT) + "' element"))); }; super.read(_arg1); this.source = getNodeContent(getNode(_arg1, ASCollada.DAE_SOURCE_ELEMENT)); Logger.trace((" => => sampler2D source: " + this.source)); } } }//package org.ascollada.fx
Section 124
//DaeSurface (org.ascollada.fx.DaeSurface) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeSurface extends DaeEntity { public var init_from:String; public var type:String; public function DaeSurface(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_FXCMN_SURFACE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_FXCMN_SURFACE_ELEMENT) + "' element"))); }; super.read(_arg1); this.type = getAttribute(_arg1, ASCollada.DAE_TYPE_ATTRIBUTE); this.init_from = getNodeContent(getNode(_arg1, ASCollada.DAE_INITFROM_ELEMENT)); Logger.trace((((" => => surface type: " + this.type) + " init_from: ") + this.init_from)); } } }//package org.ascollada.fx
Section 125
//DaeTexture (org.ascollada.fx.DaeTexture) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; public class DaeTexture extends DaeEntity { public var texture:String; public var texcoord:String; public function DaeTexture(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); this.texture = getAttribute(_arg1, ASCollada.DAE_FXSTD_TEXTURE_ATTRIBUTE); this.texcoord = getAttribute(_arg1, ASCollada.DAE_FXSTD_TEXTURESET_ATTRIBUTE); } } }//package org.ascollada.fx
Section 126
//DaeReader (org.ascollada.io.DaeReader) package org.ascollada.io { import flash.events.*; import org.ascollada.core.*; import flash.net.*; import flash.utils.*; import org.ascollada.utils.*; public class DaeReader extends EventDispatcher { private var _animTimer:Timer; public var document:DaeDocument; private var _numAnimations:uint; private var _geomTimer:Timer; private var _numGeometries:uint; public var async:Boolean; public function DaeReader(_arg1:Boolean=false){ this.async = _arg1; _animTimer = new Timer(100); _animTimer.addEventListener(TimerEvent.TIMER, loadNextAnimation); _geomTimer = new Timer(100); _geomTimer.addEventListener(TimerEvent.TIMER, loadNextGeometry); } private function loadNextAnimation(_arg1:TimerEvent):void{ if (!this.document.readNextAnimation()){ _animTimer.stop(); dispatchEvent(new Event(Event.COMPLETE)); } else { dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS, false, false, (_numAnimations - this.document.numQueuedAnimations), _numAnimations)); }; } private function completeHandler(_arg1:Event):void{ var _local2:URLLoader; _local2 = (_arg1.target as URLLoader); Logger.trace("complete!"); loadDocument(_local2.data); } private function loadNextGeometry(_arg1:TimerEvent):void{ if (!this.document.readNextGeometry()){ Logger.trace("geometries complete"); _geomTimer.stop(); dispatchEvent(new Event(Event.COMPLETE)); } else { Logger.trace("reading next geometry"); dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS, false, false, (_numGeometries - this.document.numQueuedGeometries), _numGeometries)); }; } public function read(_arg1:String):void{ var _local2:URLLoader; Logger.trace(("reading: " + _arg1)); if (_animTimer.running){ _animTimer.stop(); }; _local2 = new URLLoader(); _local2.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); _local2.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true); _local2.addEventListener(IOErrorEvent.IO_ERROR, handleIOError, false, 0, true); _local2.load(new URLRequest(_arg1)); } private function handleIOError(_arg1:IOErrorEvent):void{ dispatchEvent(_arg1); } private function progressHandler(_arg1:ProgressEvent):void{ dispatchEvent(_arg1); } public function readGeometries():void{ if (this.document.numQueuedGeometries > 0){ Logger.trace((("START READING #" + this.document.numQueuedGeometries) + " GEOMETRIES")); _geomTimer.repeatCount = (this.document.numQueuedGeometries + 1); _geomTimer.delay = 100; _geomTimer.start(); } else { Logger.trace("NO GEOMETRIES"); }; } public function loadDocument(_arg1):DaeDocument{ this.document = new DaeDocument(_arg1, this.async); _numAnimations = this.document.numQueuedAnimations; _numGeometries = this.document.numQueuedGeometries; dispatchEvent(new Event(Event.COMPLETE)); return (this.document); } public function readAnimations():void{ if (this.document.numQueuedAnimations > 0){ Logger.trace((("START READING #" + this.document.numQueuedAnimations) + " ANIMATIONS")); _animTimer.repeatCount = (this.document.numQueuedAnimations + 1); _animTimer.delay = 100; _animTimer.start(); } else { Logger.trace("NO ANIMATIONS"); }; } } }//package org.ascollada.io
Section 127
//collada (org.ascollada.namespaces.collada) package org.ascollada.namespaces { public namespace collada = "http://www.collada.org/2005/11/COLLADASchema"; }//package org.ascollada.namespaces
Section 128
//DaeConvexMesh (org.ascollada.physics.DaeConvexMesh) package org.ascollada.physics { import org.ascollada.core.*; import org.ascollada.*; public class DaeConvexMesh extends DaeMesh { public var convex_hull_off:String; public var isHull:Boolean; public function DaeConvexMesh(_arg1:XML=null):void{ if (_arg1){ read(_arg1); }; } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_CONVEX_MESH_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_CONVEX_MESH_ELEMENT) + "' element"))); }; this.convex_hull_off = getAttribute(_arg1, ASCollada.DAE_CONVEX_HULL_OF_ATTRIBUTE, true); this.isHull = (this.convex_hull_off.length > 0); if (this.isHull){ return; }; super.read(_arg1); } } }//package org.ascollada.physics
Section 129
//DaePhysicsScene (org.ascollada.physics.DaePhysicsScene) package org.ascollada.physics { import org.ascollada.core.*; public class DaePhysicsScene extends DaeEntity { public function DaePhysicsScene(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); } } }//package org.ascollada.physics
Section 130
//DaeAddressSyntax (org.ascollada.types.DaeAddressSyntax) package org.ascollada.types { import org.ascollada.utils.*; public class DaeAddressSyntax { public var isDotAccess:Boolean; public var isFullAccess:Boolean; public var member:String; public var targetID:String; public var isArrayAccess:Boolean; public var arrayMember:Array; public var targetSID:String; public function DaeAddressSyntax():void{ } public function toString():String{ return (((((((((((((("[target:" + targetID) + "\nSID:") + targetSID) + "\nmember:") + member) + "\narrayMember:") + arrayMember) + "\n") + isArrayAccess) + " ") + isDotAccess) + " ") + isFullAccess)); } public static function parseAnimationTarget(_arg1:String):DaeAddressSyntax{ var _local2:Array; var _local3:DaeAddressSyntax; if (_arg1.indexOf("/") == -1){ Logger.error("[ERROR] invalid animation target attribute!"); throw (new Error("invalid animation target attribute!")); }; _local2 = _arg1.split("/"); _local3 = new (DaeAddressSyntax); _local3.targetID = _local2[0]; parseFullMember(_local3, _local2[1]); return (_local3); } private static function parseFullMember(_arg1:DaeAddressSyntax, _arg2:String):void{ var _local3:RegExp; var _local4:Array; _arg1.isArrayAccess = (_arg1.isDotAccess = (_arg1.isFullAccess = false)); _arg1.member = ""; _arg1.arrayMember = new Array(); _local3 = /\(\d\)/ig; if (_local3.exec(_arg2)){ _arg1.isArrayAccess = true; _arg1.targetSID = _arg2.split("(")[0]; _arg1.arrayMember = _arg2.match(_local3); } else { if (_arg2.indexOf(".") != -1){ _arg1.isDotAccess = true; _local4 = _arg2.split("."); _arg1.targetSID = _local4[0]; _arg1.member = _local4[1]; } else { if (_arg2.length){ _arg1.isFullAccess = true; _arg1.targetSID = _arg2; } else { Logger.error("[ERROR] can't find a SID!"); throw (new Error("can't find a SID!")); }; }; }; } } }//package org.ascollada.types
Section 131
//DaeArray (org.ascollada.types.DaeArray) package org.ascollada.types { import org.ascollada.core.*; import org.ascollada.*; public class DaeArray extends DaeEntity { public var count:int; public var values:Array; public function DaeArray(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); this.count = 0; this.values = getData(_arg1); if (!this.values){ throw (new Error(" no data!")); }; } private function getData(_arg1:XML):Array{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_BOOL_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getBools(_local5)); case ASCollada.DAE_INT_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getInts(_local5)); case ASCollada.DAE_IDREF_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getStrings(_local5)); case ASCollada.DAE_FLOAT_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getFloats(_local5)); case ASCollada.DAE_NAME_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getStrings(_local5)); default: break; }; _local4++; }; return (null); } } }//package org.ascollada.types
Section 132
//DaeColorOrTexture (org.ascollada.types.DaeColorOrTexture) package org.ascollada.types { import org.ascollada.core.*; import org.ascollada.fx.*; public class DaeColorOrTexture extends DaeEntity { public var texture:DaeTexture; public var type:uint; public var color:Array; public static const TYPE_TEXTURE:uint = 1; public static const TYPE_PARAM:uint = 2; public static const TYPE_COLOR:uint = 0; public function DaeColorOrTexture(_arg1:XML=null):void{ this.type = TYPE_COLOR; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case "color": this.type = TYPE_COLOR; this.color = getFloats(_local5); return; case "texture": this.type = TYPE_TEXTURE; this.texture = new DaeTexture(_local5); return; case "param": this.type = TYPE_PARAM; return; default: break; }; _local4++; }; } } }//package org.ascollada.types
Section 133
//DaeTransform (org.ascollada.types.DaeTransform) package org.ascollada.types { import org.ascollada.core.*; import org.ascollada.utils.*; import org.ascollada.*; public class DaeTransform { public var values:Array; public var matrix:Array; public var sid:String; private var _yUp:Boolean; public var type:String; private static var toDEGREES:Number = 57.2957795130823; private static var toRADIANS:Number = 0.0174532925199433; public function DaeTransform(_arg1:String, _arg2:String, _arg3:Array, _arg4:Boolean=false):void{ this.type = _arg1; this.sid = _arg2; this.values = _arg3; _yUp = _arg4; if (!validateValues()){ Logger.trace("[ERROR] invalid values for this transform!"); throw (new Error("[ERROR] invalid values for this transform!")); }; this.matrix = buildMatrix(); } public function buildAnimatedMatrices(_arg1:DaeChannel):Array{ var _local2:Array; var _local3:Array; var _local4:int; _local2 = _arg1.output; _local3 = new Array(); switch (this.type){ case ASCollada.DAE_ROTATE_ELEMENT: if (_arg1.syntax.member == "ANGLE"){ _local4 = 0; while (_local4 < _local2.length) { _local3.push(rotationMatrix(values[0], values[1], values[2], _local2[_local4])); _local4++; }; } else { Logger.trace((((" => => " + this.type) + " ") + _arg1.syntax)); }; break; case ASCollada.DAE_TRANSLATE_ELEMENT: if (_arg1.syntax.isFullAccess){ _local4 = 0; while (_local4 < _local2.length) { _local3.push(translationMatrix(_local2[_local4][0], _local2[_local4][1], _local2[_local4][2])); _local4++; }; } else { if (_arg1.syntax.member == "X"){ _local4 = 0; while (_local4 < _local2.length) { _local3.push(translationMatrix(_local2[_local4], 0, 0)); _local4++; }; } else { if (_arg1.syntax.member == "Y"){ _local4 = 0; while (_local4 < _local2.length) { _local3.push(translationMatrix(0, _local2[_local4], 0)); _local4++; }; } else { if (_arg1.syntax.member == "Z"){ _local4 = 0; while (_local4 < _local2.length) { _local3.push(translationMatrix(0, 0, _local2[_local4])); _local4++; }; } else { Logger.trace((((" => => " + this.type) + " ") + _arg1.syntax)); }; }; }; }; break; case ASCollada.DAE_SCALE_ELEMENT: Logger.trace((" => buildAnimatedMatrices " + this.type)); break; case ASCollada.DAE_MATRIX_ELEMENT: if (_arg1.syntax.isFullAccess){ _local4 = 0; while (_local4 < _arg1.output.length) { _local3.push(bakedMatrix(_arg1.output[_local4])); _local4++; }; }; break; default: Logger.trace((" => unknown type " + this.type)); break; }; return (_local3); } private function bakedMatrix(_arg1:Array):Array{ return (_arg1); } private function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Array{ var _local4:Array; _local4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]; _local4[0] = _arg1; _local4[5] = _arg2; _local4[10] = _arg3; return (_local4); } public function buildMatrix():Array{ var _local1:Array; _local1 = null; switch (this.type){ case ASCollada.DAE_ROTATE_ELEMENT: _local1 = rotationMatrix(values[0], values[1], values[2], values[3]); break; case ASCollada.DAE_TRANSLATE_ELEMENT: _local1 = translationMatrix(values[0], values[1], values[2]); break; case ASCollada.DAE_SCALE_ELEMENT: _local1 = scaleMatrix(values[0], values[1], values[2]); break; case ASCollada.DAE_MATRIX_ELEMENT: _local1 = bakedMatrix(values); break; default: Logger.trace(("[ERROR] don't know how to create a matrix with type=" + this.type)); throw (new Error(("don't know how to create a matrix with type=" + this.type))); }; return (_local1); } public function validateValues():Boolean{ var _local1:Boolean; _local1 = false; if (((!(this.values)) || (!(this.values.length)))){ return (false); }; switch (this.type){ case ASCollada.DAE_ROTATE_ELEMENT: _local1 = (this.values.length == 4); break; case ASCollada.DAE_TRANSLATE_ELEMENT: _local1 = (this.values.length == 3); break; case ASCollada.DAE_SCALE_ELEMENT: _local1 = (this.values.length == 3); break; case ASCollada.DAE_MATRIX_ELEMENT: _local1 = (this.values.length == 16); break; default: break; }; return (_local1); } private function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Array{ var _local4:Array; _local4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]; _local4[3] = _arg1; _local4[7] = _arg2; _local4[11] = _arg3; return (_local4); } private function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Array{ var _local5:Array; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]; _local6 = (_arg4 * (Math.PI / 180)); _local7 = Math.cos(_local6); _local8 = Math.sin(_local6); _local9 = (1 - _local7); _local10 = ((_arg1 * _arg2) * _local9); _local11 = ((_arg2 * _arg3) * _local9); _local12 = ((_arg1 * _arg3) * _local9); _local13 = (_local8 * _arg3); _local14 = (_local8 * _arg2); _local15 = (_local8 * _arg1); _local5[0] = (_local7 + ((_arg1 * _arg1) * _local9)); _local5[1] = (-(_local13) + _local10); _local5[2] = (_local14 + _local12); _local5[4] = (_local13 + _local10); _local5[5] = (_local7 + ((_arg2 * _arg2) * _local9)); _local5[6] = (-(_local15) + _local11); _local5[8] = (-(_local14) + _local12); _local5[9] = (_local15 + _local11); _local5[10] = (_local7 + ((_arg3 * _arg3) * _local9)); return (_local5); } } }//package org.ascollada.types
Section 134
//Logger (org.ascollada.utils.Logger) package org.ascollada.utils { import com.blitzagency.xray.logger.*; public class Logger { public static var VERBOSE:Boolean = false; private static var log:XrayLog = new XrayLog(); public static function debug(_arg1:String):void{ if (VERBOSE){ log.debug(_arg1); }; } public static function trace(_arg1:String):void{ if (VERBOSE){ log.debug(_arg1); }; } public static function fatal(_arg1:String):void{ log.fatal(_arg1); } public static function info(_arg1:String):void{ if (VERBOSE){ log.info(_arg1); }; } public static function error(_arg1:String):void{ log.error(_arg1); } } }//package org.ascollada.utils
Section 135
//StringUtil (org.ascollada.utils.StringUtil) package org.ascollada.utils { public class StringUtil { public static function trim(_arg1:String):String{ var _local2:int; var _local3:int; _local2 = 0; while (isWhitespace(_arg1.charAt(_local2))) { _local2++; }; _local3 = (_arg1.length - 1); while (isWhitespace(_arg1.charAt(_local3))) { _local3--; }; if (_local3 >= _local2){ return (_arg1.slice(_local2, (_local3 + 1))); }; return (""); } public static function substitute(_arg1:String, ... _args):String{ var _local3:uint; var _local4:Array; var _local5:int; _local3 = _args.length; if ((((_local3 == 1)) && ((_args[0] is Array)))){ _local4 = (_args[0] as Array); _local3 = _local4.length; } else { _local4 = _args; }; _local5 = 0; while (_local5 < _local3) { _arg1 = _arg1.replace(new RegExp((("\\{" + _local5) + "\\}"), "g"), _local4[_local5]); _local5++; }; return (_arg1); } public static function trimArrayElements(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:int; var _local5:int; if (((!((_arg1 == ""))) && (!((_arg1 == null))))){ _local3 = _arg1.split(_arg2); _local4 = _local3.length; _local5 = 0; while (_local5 < _local4) { _local3[_local5] = StringUtil.trim(_local3[_local5]); _local5++; }; if (_local4 > 0){ _arg1 = _local3.join(_arg2); }; }; return (_arg1); } public static function isWhitespace(_arg1:String):Boolean{ switch (_arg1){ case " ": case "\t": case "\r": case "\n": case "\f": return (true); default: return (false); }; } } }//package org.ascollada.utils
Section 136
//ASCollada (org.ascollada.ASCollada) package org.ascollada { public class ASCollada { public static const DAE_GEOMETRY_ELEMENT:String = "geometry"; public static const DAE_MASS_ELEMENT:String = "mass"; public static const DAE_FXSTD_STATE_FACE_ELEMENT:String = "face"; public static const DAE_FXCMN_SAMPLER2D_ELEMENT:String = "sampler2D"; public static const DAE_EMITTER_ELEMENT:String = "emitter"; public static const DAE_INSTANCE_MATERIAL_ELEMENT:String = "instance_material"; public static const DAE_INTANGENT_ANIMATION_INPUT:String = "IN_TANGENT"; public static const DAE_SKEW_ELEMENT:String = "skew"; public static const DAE_PASS_ELEMENT:String = "pass"; public static const DAE_TRISTRIPS_ELEMENT:String = "tristrips"; public static const DAE_LIGHT_POINT_ELEMENT:String = "point"; public static const DAE_INSTANCE_PHYSICS_MATERIAL_ELEMENT:String = "instance_physics_material"; public static const DAE_SURFACE_ATTRIBUTE:String = "surface"; public static const DAE_FXCMN_FLOAT4X4_ELEMENT:String = "float4x4"; public static const DAE_BUMP_MATERIAL_PARAMETER:String = "bump"; public static const DAE_LIBRARY_ANIMATION_ELEMENT:String = "library_animations"; public static const DAE_FORMAT_ELEMENT:String = "format"; public static const DAE_FXCMN_SETPARAM_ELEMENT:String = "setparam"; public static const DAE_LIBRARY_VSCENE_ELEMENT:String = "library_visual_scenes"; public static const DAEMAX_CAMERA_MB_DISABLEFILTER_PARAMETER:String = "disable_filtering"; public static const DAE_FXCMN_FLOAT4_ELEMENT:String = "float4"; public static const DAEMAYA_TEXTURE_ROTFRAME_PARAMETER:String = "rotateFrame"; public static const DAE_OPTICS_ELEMENT:String = "optics"; public static const DAE_INITASTARGET_ELEMENT:String = "init_as_target"; public static const DAE_INSTANCE_GEOMETRY_ELEMENT:String = "instance_geometry"; public static const DAEMAYA_SHORTNAME_PARAMETER:String = "short_name"; public static const DAE_FORMAT_HINT_LOW_VALUE:String = "LOW"; public static const DAE_YFOV_CAMERA_PARAMETER:String = "yfov"; public static const DAE_MAX_ELEMENT:String = "max"; public static const DAE_VERTICES_ELEMENT:String = "vertices"; public static const DAEMAX_USERPROPERTIES_NODE_PARAMETER:String = "user_properties"; public static const DAE_FLOAT_TYPE:String = "float"; public static const DAE_SYMBOL_ATTRIBUTE:String = "symbol"; public static const DAE_STIFFNESS_ELEMENT:String = "stiffness"; public static const DAE_RADIUS2_ELEMENT:String = "radius2"; public static const DAEMAX_WIREFRAME_MATERIAL_PARAMETER:String = "wireframe"; public static const DAE_GRAVITY_ATTRIBUTE:String = "gravity"; public static const DAE_FXSTD_FLOAT_ELEMENT:String = "float"; public static const DAEMAYA_TEXTURE_OFFSETV_PARAMETER:String = "offsetV"; public static const DAE_DEGREE_ATTRIBUTE:String = "degree"; public static const DAE_ZNEAR_CAMERA_PARAMETER:String = "znear"; public static const DAE_CENTER_OF_MASS_ELEMENT:String = "center_of_mass"; public static const DAE_VIEWPORT_RATIO:String = "viewport_ratio"; public static const DAE_INSTANCE_FORCE_FIELD_ELEMENT:String = "instance_force_field"; public static const DAE_FXCMN_HALF4X4_ELEMENT:String = "half4x4"; public static const DAEMAX_CAMERA_MB_BIAS_PARAMETER:String = "bias"; public static const DAEMAX_SHADOW_MAP:String = "shadow_map"; public static const DAE_TIME_TARGET:String = "TIME"; public static const DAE_COLOR_LIGHT_PARAMETER:String = "color"; public static const DAEMAX_ASPECTRATIO_LIGHT_PARAMETER:String = "aspect_ratio"; public static const DAE_EXTRA_ELEMENT:String = "extra"; public static const DAEMAX_SKY_INTENSITY_ON:String = "intensity_on"; public static const DAE_VERTEXCOUNT_ELEMENT:String = "vcount"; public static const DAE_FXCMN_HALF_ELEMENT:String = "half"; public static const DAE_FORMAT_HINT_ELEMENT:String = "format_hint"; public static const DAE_NODE_ELEMENT:String = "node"; public static const DAE_REF_ATTRIBUTE:String = "ref"; public static const DAE_FXCMN_VERTEX_SHADER:String = "VERTEX"; public static const DAEMAYA_DROPOFF_LIGHT_PARAMETER:String = "dropoff"; public static const DAE_SLICE_ATTRIBUTE:String = "slice"; public static const DAE_INSTANCE_LIGHT_ELEMENT:String = "instance_light"; public static const DAE_FORMAT_HINT_SINT_VALUE:String = "SINT"; public static const DAEMAX_PROJ_IMAGE:String = "proj_image"; public static const DAE_RIGID_BODY_ELEMENT:String = "rigid_body"; public static const DAE_FXCMN_SAMPLER3D_ELEMENT:String = "sampler3D"; public static const DAE_LIGHT_AMBIENT_ELEMENT:String = "ambient"; public static const DAE_TRIM_GROUP:String = "trim_group"; public static const DAE_RANGE_ELEMENT:String = "range"; public static const DAEMAYA_PENUMBRA_LIGHT_PARAMETER:String = "penumbra_angle"; public static const DAE_TARGET_ATTRIBUTE:String = "target"; public static const DAE_COLOR_ELEMENT:String = "color"; public static const DAEMAX_SKY_RAYS_PER_SAMPLE_PARAMETER:String = "rays_per_sample"; public static const DAE_INT_ARRAY_ELEMENT:String = "int_array"; public static const DAEMAX_OVERSHOOT_LIGHT_PARAMETER:String = "overshoot"; public static const DAE_CVS_SPLINE_INPUT:String = "POSITION"; public static const DAEMAYA_LENSSQUEEZE_PARAMETER:String = "lens_squeeze"; public static const DAE_FXCMN_FLOAT3_ELEMENT:String = "float3"; public static const DAE_FXSTD_STATE_SRCRGB_ELEMENT:String = "src_rgb"; public static const DAE_TRANS_LIMIT_MIN_ELEMENT:String = "trans_limit_min"; public static const DAE_FXCMN_INCLUDE_ELEMENT:String = "include"; public static const DAE_FXSTD_STATE_ZFAIL_ELEMENT:String = "zfail"; public static const DAEMAX_SHADOW_TYPE_RAYTRACE:String = "type_raytrace"; public static const DAEMAYA_LONGNAME_PARAMETER:String = "long_name"; public static const DAE_VELOCITY_ELEMENT:String = "velocity"; public static const DAE_SCENE_ELEMENT:String = "scene"; public static const DAE_WEIGHT_SKIN_INPUT:String = "WEIGHT"; public static const DAE_LINEAR_ELEMENT:String = "linear"; public static const DAE_HEIGHT_ELEMENT:String = "height"; public static const DAE_SEMANTIC_ATTRIBUTE:String = "semantic"; public static const DAE_CONVEX_MESH_ELEMENT:String = "convex_mesh"; public static const DAE_CREATED_ASSET_PARAMETER:String = "created"; public static const DAE_COMMENTS_ASSET_PARAMETER:String = "comments"; public static const DAEMAX_FRAMERATE_PARAMETER:String = "frame_rate"; public static const DAEMAYA_ENDTIME_PARAMETER:String = "end_time"; public static const DAE_MIP_ATTRIBUTE:String = "mip"; public static const DAE_LIBRARY_IMAGE_ELEMENT:String = "library_images"; public static const DAE_FXSTD_STATE_MASK_ELEMENT:String = "mask"; public static const DAE_RADIUS1_ELEMENT:String = "radius1"; public static const DAE_FXCMN_SEMANTIC_ELEMENT:String = "semantic"; public static const DAE_TARGETS_ELEMENT:String = "targets"; public static const DAEMAX_OUTERCONE_LIGHT_PARAMETER:String = "outer_cone"; public static const DAE_FORMAT_HINT_RGBA_VALUE:String = "RGBA"; public static const DAE_ROTATE_ELEMENT:String = "rotate"; public static const DAEMAX_SHADOW_TYPE_MAP:String = "type_map"; public static const DAE_SCHEMA_LOCATION:String = "http://www.collada.org/2005/11/COLLADASchema"; public static const DAE_LIBRARY_ANIMATION_CLIP_ELEMENT:String = "library_animation_clips"; public static const DAE_OFFSET_ATTRIBUTE:String = "offset"; public static const DAEMAYA_TEXTURE_TRANSFRAMEV_PARAMETER:String = "translateFrameV"; public static const DAE_SCHEMA_VERSION:String = "1.4.1"; public static const DAE_HOLE_ELEMENT:String = "h"; public static const DAE_FORMAT_HINT_L_VALUE:String = "L"; public static const DAEMAX_DEFAULT_TARGET_DIST_LIGHT_PARAMETER:String = "target_default_dist"; public static const DAE_RADIUS_ELEMENT:String = "radius"; public static const DAEMAYA_PROJECTION_MATRIX_PARAMETER:String = "matrix"; public static const DAEMAX_SHADOW_LIST_CASTS:String = "casts_shadows"; public static const DAE_BOX_ELEMENT:String = "box"; public static const DAE_REFLECTIVITY_MATERIAL_PARAMETER:String = "reflectivity"; public static const DAE_FXCMN_SAMPLERCUBE_ELEMENT:String = "samplerCUBE"; public static const DAE_FALLOFFANGLE_LIGHT_PARAMETER:String = "falloff_angle"; public static const DAE_FXSTD_LAMBERT_ELEMENT:String = "lambert"; public static const DAE_FALSE_KEYWORD:String = "false"; public static const DAE_INITVOLUME_ELEMENT:String = "init_volume"; public static const DAEMAX_USE_FAR_ATTEN_PARAMETER:String = "use_far_attenuation"; public static const DAE_POLYLIST_ELEMENT:String = "polylist"; public static const DAE_PHYSICS_MODEL_ELEMENT:String = "physics_model"; public static const DAE_ATTACHMENT_ELEMENT:String = "attachment"; public static const DAE_MASS_FRAME_ELEMENT:String = "mass_frame"; public static const DAEMAYA_NOTE_PARAMETER:String = "note"; public static const DAEMAYA_TEXTURE_WRAPU_PARAMETER:String = "wrapU"; public static const DAE_SPHERE_ELEMENT:String = "sphere"; public static const DAE_RIGID_CONSTRAINT_ELEMENT:String = "rigid_constraint"; public static const DAE_TEXTURE_SURFACE_ELEMENT:String = "texture_surface"; public static const DAE_ROT_LIMIT_MAX_ELEMENT:String = "rot_limit_max"; public static const DAEMAYA_HAPERTURE_PARAMETER:String = "horizontal_aperture"; public static const DAE_FXSTD_STATE_ALPHA_ELEMENT:String = "alpha"; public static const DAEMAX_FACEMAP_MATERIAL_PARAMETER:String = "face_map"; public static const DAE_PROFILE_ATTRIBUTE:String = "profile"; public static const DAEMAX_CAMERA_MB_NORMWEIGHTS_PARAMETER:String = "normalized_weights"; public static const DAE_CONST_ATTENUATION_LIGHT_PARAMETER:String = "constant_attenuation"; public static const DAEMAX_SKY_COLOR_MAP_AMOUNT_PARAMETER:String = "color_map_amount"; public static const DAE_FXCMN_FLOAT2_ELEMENT:String = "float2"; public static const DAE_LIBRARY_LIGHT_ELEMENT:String = "library_lights"; public static const DAE_X_UP:String = "X_UP"; public static const DAEMAYA_TEXTURE_BLENDMODE_PARAMETER:String = "blend_mode"; public static const DAE_FORMAT_HINT_NORMALIZED3_VALUE:String = "NORMALIZED3"; public static const DAE_AUTHORINGTOOL_ASSET_PARAMETER:String = "authoring_tool"; public static const DAE_MIPMAP_GENERATE:String = "mipmap_generate"; public static const DAEMAX_CAMERA_MB_DISPLAYPASSES_PARAMETER:String = "display_passes"; public static const DAE_METERS_ATTRIBUTE:String = "meter"; public static const DAE_INSTANCE_VSCENE_ELEMENT:String = "instance_visual_scene"; public static const DAE_INSTANCE_RIGID_BODY_ELEMENT:String = "instance_rigid_body"; public static const DAE_TAPERED_CYLINDER_ELEMENT:String = "tapered_cylinder"; public static const DAE_LIBRARY_CAMERA_ELEMENT:String = "library_cameras"; public static const DAE_TAPERED_CAPSULE_ELEMENT:String = "tapered_capsule"; public static const DAE_SAMPLER_ELEMENT:String = "sampler"; public static const DAEMAYA_VAPERTURE_PARAMETER:String = "vertical_aperture"; public static const DAE_FXSTD_BLINN_ELEMENT:String = "blinn"; public static const DAE_DATA_ELEMENT:String = "data"; public static const DAE_INPUT_ELEMENT:String = "input"; public static const DAEMAYA_LAYER_PARAMETER:String = "layer"; public static const DAEMAYA_TEXTURE_FAST_PARAMETER:String = "fast"; public static const DAE_OPTION_ELEMENT:String = "option"; public static const DAEMAYA_DOUBLE_SIDED_PARAMETER:String = "DOUBLE_SIDED"; public static const DAE_DYNAMIC_FRICTION_ATTRIBUTE:String = "dynamic_friction"; public static const DAE_AMBIENT_MATERIAL_PARAMETER:String = "ambient"; public static const DAEMAX_LIGHT_MAP:String = "light_map"; public static const DAE_STATIC_FRICTION_ATTRIBUTE:String = "static_friction"; public static const DAEMAYA_TEXTURE_REPEATV_PARAMETER:String = "repeatV"; public static const DAE_FXCMN_COMPILEROPTIONS_ELEMENT:String = "compiler_options"; public static const DAE_COLLADA_ELEMENT:String = "COLLADA"; public static const DAE_FORMAT_HINT_UNORM_VALUE:String = "UNORM"; public static const DAE_FORMAT_HINT_LA_VALUE:String = "LA"; public static const DAE_WEIGHT_MORPH_INPUT_DEPRECATED:String = "WEIGHT"; public static const DAE_URL_ATTRIBUTE:String = "url"; public static const DAE_FORMAT_HINT_XYZW_VALUE:String = "XYZW"; public static const DAEMAYA_PREINFINITY_PARAMETER:String = "pre_infinity"; public static const DAE_REST_LENGTH_ELEMENT:String = "rest_length"; public static const DAE_XFOV_CAMERA_PARAMETER:String = "xfov"; public static const DAEMAX_SHADOW_LIST_EXCLUDES:String = "list_is_exclusive"; public static const DAEMAX_SKY_COLOR_MAP_ON_PARAMETER:String = "color_map_on"; public static const DAE_POLYGONS_ELEMENT:String = "polygons"; public static const DAE_INSTANCE_ANIMATION_ELEMENT:String = "instance_animation"; public static const DAE_NODE_NODE_TYPE:String = "NODE"; public static const DAE_Z_UP:String = "Z_UP"; public static const DAE_INSTANCE_PHYSICS_MODEL_ELEMENT:String = "instance_physics_model"; public static const DAE_FXCMN_BIND_ELEMENT:String = "bind"; public static const DAE_CONSTRAINT_ATTRIBUTE:String = "constraint"; public static const DAEMAX_AMOUNT_TEXTURE_PARAMETER:String = "amount"; public static const DAE_PHYSICS_DYNAMIC_FRICTION:String = "dynamic_friction"; public static const DAE_VSCENE_ELEMENT:String = "visual_scene"; public static const DAE_RESTITUTION_ATTRIBUTE:String = "restitution"; public static const DAE_FORMAT_HINT_COMPRESSABLE_VALUE:String = "COMPRESSABLE"; public static const DAE_IMAGE_ELEMENT:String = "image"; public static const DAE_FORMAT_HINT_FLOAT_VALUE:String = "FLOAT"; public static const DAEMAYA_TEXTURE_MIRRORU_PARAMETER:String = "mirrorU"; public static const DAE_PLANE_ELEMENT:String = "plane"; public static const DAE_QUAD_ATTENUATION_LIGHT_PARAMETER:String = "quadratic_attenuation"; public static const DAE_SOURCE_ATTRIBUTE:String = "source"; public static const DAE_FXSTD_STATE_DEST_ELEMENT:String = "dest"; public static const DAE_FORMAT_HINT_UINT_VALUE:String = "UINT"; public static const DAE_FXSTD_STATE_ZPASS_ELEMENT:String = "zpass"; public static const DAE_CLOSED_ATTRIBUTE:String = "closed"; public static const DAE_CONVEX_HULL_OF_ATTRIBUTE:String = "convex_hull_of"; public static const DAE_INERTIA_ELEMENT:String = "inertia"; public static const DAE_FXCMN_HINT_ELEMENT:String = "technique_hint"; public static const DAE_CYLINDER_ELEMENT:String = "cylinder"; public static const DAE_FXCMN_NAME_ELEMENT:String = "name"; public static const DAE_INTERPENETRATE_ELEMENT:String = "interpenetrate"; public static const DAE_CONTROLLER_ELEMENT:String = "controller"; public static const DAE_PARAMETER:String = "param"; public static const DAE_LIMITS_ELEMENT:String = "limits"; public static const DAE_LIGHT_SPOT_ELEMENT:String = "spot"; public static const DAEFC_EASE_INOUT_ANIMATION_INPUT:String = "EASE_IN_OUT"; public static const DAE_SHAPE_ELEMENT:String = "shape"; public static const DAE_TRUE_KEYWORD:String = "true"; public static const DAE_MIN_ELEMENT:String = "min"; public static const DAE_TRIFANS_ELEMENT:String = "trifans"; public static const DAE_FXSTD_TEXTURE_ATTRIBUTE:String = "texture"; public static const DAEMAX_CAMERA_TARGETDISTANCE_PARAMETER:String = "target_distance"; public static const DAE_INPUT_SET_ATTRIBUTE:String = "input_set"; public static const DAE_MATERIAL_ATTRIBUTE:String = "material"; public static const DAE_FXSTD_STATE_VALUE:String = "value"; public static const DAEMAYA_STARTTIME_PARAMETER:String = "start_time"; public static const DAEMAYA_BLINDNAME_PARAMETER:String = "BLINDNAME"; public static const DAE_FXCMN_INT_ELEMENT:String = "int"; public static const DAE_FORMAT_HINT_HIGH_VALUE:String = "HIGH"; public static const DAE_TRANSLATE_ELEMENT:String = "translate"; public static const DAE_INTERPOLATION_ANIMATION_INPUT:String = "INTERPOLATION"; public static const DAEMAX_SHADOW_PROJ_COLOR:String = "shadow_color"; public static const DAE_ID_ATTRIBUTE:String = "id"; public static const DAE_EMISSION_MATERIAL_PARAMETER:String = "emission"; public static const DAE_PHYSICS_MATERIAL_ELEMENT:String = "physics_material"; public static const DAEMAX_NEAR_ATTEN_END_PARAMETER:String = "near_attenuation_end"; public static const DAE_LIBRARY_MATERIAL_ELEMENT:String = "library_materials"; public static const DAE_DYNAMIC_ELEMENT:String = "dynamic"; public static const DAE_START_ATTRIBUTE:String = "start"; public static const DAEMAYA_PROJECTION_TYPE:String = "type"; public static const DAE_FXCMN_FRAGMENT_SHADER:String = "FRAGMENT"; public static const DAE_FXSTD_STATE_FRONT_ELEMENT:String = "front"; public static const DAE_FXSTD_STATE_SRC_ELEMENT:String = "src"; public static const DAE_LIGHT_ELEMENT:String = "light"; public static const DAE_INITPLANAR_ELEMENT:String = "init_planar"; public static const DAE_VDEGREE_ATTRIBUTE:String = "vdegree"; public static const DAEMAX_DECAY_TYPE:String = "decay_type"; public static const DAE_SIZE_ELEMENT:String = "size"; public static const DAEMAX_SHADOW_TYPE:String = "type"; public static const DAE_CONTROLLER_MORPH_ELEMENT:String = "morph"; public static const DAE_ASPECT_CAMERA_PARAMETER:String = "aspect_ratio"; public static const DAEMAYA_TEXTURE_ROTATEUV_PARAMETER:String = "rotateUV"; public static const DAEMAX_FILTERCOLOR_MATERIAL_PARAMETER:String = "filter_color"; public static const DAE_LIBRARY_GEOMETRY_ELEMENT:String = "library_geometries"; public static const DAE_OPAQUE_MATERIAL_ATTRIBUTE:String = "opaque"; public static const DAE_SCALE_ELEMENT:String = "scale"; public static const DAE_LIBRARY_PMODEL_ELEMENT:String = "library_physics_models"; public static const DAE_INSTANCE_EMITTER_ELEMENT:String = "instance_emitter"; public static const DAEMAX_CAMERA_MB_TOTALPASSES_PARAMETER:String = "total_passes"; public static const DAE_FXSTD_STATE_DESTALPHA_ELEMENT:String = "dest_alpha"; public static const DAEMAX_USE_NEAR_ATTEN_PARAMETER:String = "use_near_attenuation"; public static const DAE_INITFROM_ELEMENT:String = "init_from"; public static const DAE_CONTROL_VERTICES_ELEMENT:String = "control_vertices"; public static const DAE_BIND_ELEMENT:String = "bind"; public static const DAE_COUNT_ATTRIBUTE:String = "count"; public static const DAE_INDEX_ATTRIBUTE:String = "index"; public static const DAE_PHYSICS_SCENE_ELEMENT:String = "physics_scene"; public static const DAE_MODIFIED_ASSET_PARAMETER:String = "modified"; public static const DAE_SPRING_ELEMENT:String = "spring"; public static const DAE_FXCMN_SURFACE_ELEMENT:String = "surface"; public static const DAE_FXSTD_TEXTURESET_ATTRIBUTE:String = "texcoord"; public static const DAE_LOOKAT_ELEMENT:String = "lookat"; public static const DAE_NAME_TYPE:String = "Name"; public static const DAEMAX_CAMERA_MB_DURATION_PARAMETER:String = "duration"; public static const DAE_FORMAT_HINT_MID_VALUE:String = "MID"; public static const DAEMAX_SHADOW_ATTRIBS:String = "shadow_attributes"; public static const DAE_SOURCE_ELEMENT:String = "source"; public static const DAE_ELLIPSOID_ELEMENT:String = "ellipsoid"; public static const DAEMAX_SHADOW_PROJ_COLOR_MULT:String = "shadow_color_mult"; public static const DAEMAYA_WEIGHT_INPUT:String = "WEIGHT"; public static const DAE_BOOL_ARRAY_ELEMENT:String = "bool_array"; public static const DAE_WEIGHT_MORPH_INPUT:String = "MORPH_WEIGHT"; public static const DAE_LIGHT_DIRECTIONAL_ELEMENT:String = "directional"; public static const DAEMAYA_TEXTURE_NOISEU_PARAMETER:String = "noiseU"; public static const DAEMAYA_BLINDTYPE:String = "BLINDTYPEID"; public static const DAE_STRIDE_ATTRIBUTE:String = "stride"; public static const DAE_CAMERA_PERSP_ELEMENT:String = "perspective"; public static const DAE_METHOD_ATTRIBUTE:String = "method"; public static const DAE_SPECULAR_MATERIAL_PARAMETER:String = "specular"; public static const DAE_FXSTD_STATE_BACK_ELEMENT:String = "back"; public static const DAE_TARGET_VALUE:String = "target_value"; public static const DAE_INITASNULL_ELEMENT:String = "init_as_null"; public static const DAE_WEIGHTS_ELEMENT:String = "vertex_weights"; public static const DAE_SHADER:String = "shader"; public static const DAEMAX_SKY_LIGHT:String = "skylight"; public static const DAE_SHININESS_MATERIAL_PARAMETER:String = "shininess"; public static const DAE_CHANNEL_ELEMENT:String = "channel"; public static const DAE_WIDTH_ELEMENT:String = "width"; public static const DAE_PROFILE_COMMON_ELEMENT:String = "profile_COMMON"; public static const DAE_DEPTH_ELEMENT:String = "depth"; public static const DAE_YMAG_CAMERA_PARAMETER:String = "ymag"; public static const DAE_TEXTURE_ELEMENT:String = "texture"; public static const DAEMAX_FAR_ATTEN_END_PARAMETER:String = "far_attenuation_end"; public static const DAE_FXCMN_BOOL_ELEMENT:String = "bool"; public static const DAE_INSTANCE_CONTROLLER_ELEMENT:String = "instance_controller"; public static const DAE_FXCMN_CODE_ELEMENT:String = "code"; public static const DAE_FACE_ATTRIBUTE:String = "face"; public static const DAE_WEIGHT_SPLINE_INPUT:String = "WEIGHTS"; public static const DAE_INSTANCE_CAMERA_ELEMENT:String = "instance_camera"; public static const DAEMAYA_TEXTURE_WRAPV_PARAMETER:String = "wrapV"; public static const DAE_TRIANGLES_ELEMENT:String = "triangles"; public static const DAE_ACCESSOR_ELEMENT:String = "accessor"; public static const DAE_AUTHOR_ASSET_PARAMETER:String = "author"; public static const DAE_EQUATION_ELEMENT:String = "equation"; public static const DAE_SKELETON_ELEMENT:String = "skeleton"; public static const DAEMAX_NEAR_ATTEN_START_PARAMETER:String = "near_attenuation_start"; public static const DAEMAX_CAMERA_MB_TILESIZE_PARAMETER:String = "tile_size"; public static const DAE_LINES_ELEMENT:String = "lines"; public static const DAE_ENABLED_ELEMENT:String = "enabled"; public static const DAE_IDREF_ARRAY_ELEMENT:String = "IDREF_array"; public static const DAE_BIND_VERTEX_INPUT:String = "bind_vertex_input"; public static const DAE_VERTEX_ELEMENT:String = "v"; public static const DAE_ZFAR_CAMERA_PARAMETER:String = "zfar"; public static const DAE_KNOT_SPLINE_INPUT:String = "KNOTS"; public static const DAE_LIBRARY_EFFECT_ELEMENT:String = "library_effects"; public static const DAE_FALLOFFEXPONENT_LIGHT_PARAMETER:String = "falloff_exponent"; public static const DAE_CLOSEDU_ATTRIBUTE:String = "closed_u"; public static const DAEMAX_SKY_RAY_BIAS_PARAMETER:String = "ray_bias"; public static const DAE_NAMESPACE_ATTRIBUTE:String = "xmlns"; public static const DAE_TIME_STEP_ATTRIBUTE:String = "time_step"; public static const DAE_FXSTD_STATE_SRCALPHA_ELEMENT:String = "src_alpha"; public static const DAE_ROT_LIMIT_MIN_ELEMENT:String = "rot_limit_min"; public static const DAEMAYA_AMBIENTSHADE_LIGHT_PARAMETER:String = "ambient_shade"; public static const DAEMAYA_TEXTURE_COVERAGEU_PARAMETER:String = "coverageU"; public static const DAE_OUTTANGENT_ANIMATION_INPUT:String = "OUT_TANGENT"; public static const DAE_FXCMN_HALF4_ELEMENT:String = "half4"; public static const DAE_HOLLOW_ELEMENT:String = "hollow"; public static const DAEMAYA_MAYA_PROFILE:String = "MAYA"; public static const DAE_IMAGE_INPUT:String = "IMAGE"; public static const DAE_FXSTD_STATE_MODE_ELEMENT:String = "mode"; public static const DAE_JOINT_SKIN_INPUT:String = "JOINT"; public static const DAE_FORMAT_HINT_SNORM_VALUE:String = "SNORM"; public static const DAE_BIND_TEXTURE_SURFACE_ELEMENT:String = "bind_texture_surface"; public static const DAE_CHANNELS_ELEMENT:String = "channels"; public static const DAEFC_TCB_ANIMATION_INPUT:String = "TCB"; public static const DAE_REVISION_ASSET_PARAMETER:String = "revision"; public static const DAE_BINDMATRIX_SKIN_INPUT:String = "INV_BIND_MATRIX"; public static const DAE_FXSTD_STATE_FUNC_ELEMENT:String = "func"; public static const DAE_ANIMCLIP_ELEMENT:String = "animation_clip"; public static const DAE_CAMERA_ELEMENT:String = "camera"; public static const DAEMAX_TARGET_CAMERA_PARAMETER:String = "target"; public static const DAE_TYPE_ATTRIBUTE:String = "type"; public static const DAE_INSTANCE_PHYSICS_SCENE_ELEMENT:String = "instance_physics_scene"; public static const DAEMAX_SHADOW_AFFECTS:String = "affect_list"; public static const DAESHD_DOUBLESIDED_PARAMETER:String = "double_sided"; public static const DAEMAYA_TEXTURE_STAGGER_PARAMETER:String = "stagger"; public static const DAE_LIBRARY_FFIELDS_ELEMENT:String = "library_force_fields"; public static const DAE_REFLECTIVE_MATERIAL_PARAMETER:String = "reflective"; public static const DAEMAX_SHADOW_LIST_NODE:String = "list_nodes"; public static const DAE_DYNAMICS_ELEMENT:String = "dynamics"; public static const DAE_DAMPING_ELEMENT:String = "damping"; public static const DAE_FXSTD_TEXTURE_ELEMENT:String = "texture"; public static const DAE_VALUE:String = "value"; public static const DAE_REF_ATTACHMENT_ELEMENT:String = "ref_attachment"; public static const DAE_DIFFUSE_MATERIAL_PARAMETER:String = "diffuse"; public static const DAE_FORMAT_HINT_NORMALIZED4_VALUE:String = "NORMALIZED4"; public static const DAE_FXCMN_COMPILERTARGET_ELEMENT:String = "compiler_target"; public static const DAE_CONTRIBUTOR_ASSET_ELEMENT:String = "contributor"; public static const DAEMAX_INDEXOFREFRACTION_MATERIAL_PARAMETER:String = "index_of_refraction"; public static const DAE_FXSTD_STATE_RGB_ELEMENT:String = "rgb"; public static const DAE_INITCUBE_ELEMENT:String = "init_cube"; public static const DAE_BODY_ATTRIBUTE:String = "body"; public static const DAE_POLYGON_ELEMENT:String = "p"; public static const DAE_TRANSPARENCY_MATERIAL_PARAMETER:String = "transparency"; public static const DAEMAYA_TEXTURE_OFFSETU_PARAMETER:String = "offsetU"; public static const DAE_FXCMN_STRING_ELEMENT:String = "string"; public static const DAE_MESH_ELEMENT:String = "mesh"; public static const DAEMAYA_TEXTURE_MIRRORV_PARAMETER:String = "mirrorV"; public static const DAEMAX_SKY_SKYMODE:String = "sky_mode"; public static const DAE_CONTROLLER_SKIN_ELEMENT:String = "skin"; public static const DAE_UDEGREE_ATTRIBUTE:String = "udegree"; public static const DAEMAX_DECAY_START_PARAMETER:String = "decay_start"; public static const DAEMAYA_PROJECTION_ELEMENT:String = "projection"; public static const DAE_CAMERA_ORTHO_ELEMENT:String = "orthographic"; public static const DAE_FXCMN_FLOAT_ELEMENT:String = "float"; public static const DAE_SOURCEDATA_ASSET_PARAMETER:String = "source_data"; public static const DAEMAX_FACETED_MATERIAL_PARAMETER:String = "faceted"; public static const DAE_TARGET_MORPH_INPUT:String = "MORPH_TARGET"; public static const DAE_MATRIX_ELEMENT:String = "matrix"; public static const DAE_SPLINE_ELEMENT:String = "spline"; public static const DAE_SET_ATTRIBUTE:String = "set"; public static const DAE_LINESTRIPS_ELEMENT:String = "linestrips"; public static const DAE_COPYRIGHT_ASSET_PARAMETER:String = "copyright"; public static const DAE_ORDER_ELEMENT:String = "order"; public static const DAEMAYA_DRIVER_INPUT:String = "DRIVER"; public static const DAE_FXCMN_HALF3_ELEMENT:String = "half3"; public static const DAEMAX_DISPLACEMENT_MATERIAL_PARAMETER:String = "displacement"; public static const DAE_A_ONE_ELEMENT:String = "A_ONE"; public static const DAE_UNITS_ASSET_PARAMETER:String = "unit"; public static const DAE_TRANSPARENT_MATERIAL_PARAMETER:String = "transparent"; public static const DAE_NAME_ARRAY_ELEMENT:String = "Name_array"; public static const DAEMAX_SKY_COLOR_MAP:String = "color_map"; public static const DAEMAYA_POSTINFINITY_PARAMETER:String = "post_infinity"; public static const DAE_TRANS_LIMIT_MAX_ELEMENT:String = "trans_limit_max"; public static const DAE_FACE_ELEMENT:String = "face"; public static const DAE_BINDMATERIAL_ELEMENT:String = "bind_material"; public static const DAEMAX_SPECLEVEL_MATERIAL_PARAMETER:String = "spec_level"; public static const DAE_INSTANCE_RIGID_CONSTRAINT_ELEMENT:String = "instance_rigid_constraint"; public static const DAE_FXSTD_CONSTANT_ELEMENT:String = "constant"; public static const DAE_ANGULAR_ELEMENT:String = "angular"; public static const DAEMAX_LIGHT_AFFECTS_SHADOW:String = "light_affects_shadow"; public static const DAE_RGB_ZERO_ELEMENT:String = "RGB_ZERO"; public static const DAE_OUTPUT_ANIMATION_INPUT:String = "OUTPUT"; public static const DAE_LIBRARY_CONTROLLER_ELEMENT:String = "library_controllers"; public static const DAE_LIBRARY_PSCENE_ELEMENT:String = "library_physics_scenes"; public static const DAE_VERSION_ATTRIBUTE:String = "version"; public static const DAE_MATRIX_TYPE:String = "float4x4"; public static const DAEMAX_SHADOW_LIST_ILLUMINATES:String = "is_illuminated"; public static const DAE_LIN_ATTENUATION_LIGHT_PARAMETER:String = "linear_attenuation"; public static const DAE_PRIMARY_ELEMENT:String = "primary"; public static const DAEMAX_MAX_PROFILE:String = "MAX3D"; public static const DAE_FORCE_FIELD_ELEMENT:String = "force_field"; public static const DAE_BINDSHAPEMX_SKIN_PARAMETER:String = "bind_shape_matrix"; public static const DAE_TECHNIQUE_ELEMENT:String = "technique"; public static const DAE_Y_UP:String = "Y_UP"; public static const DAE_FXSTD_COLOR_ELEMENT:String = "color"; public static const DAE_FLOAT_ARRAY_ELEMENT:String = "float_array"; public static const DAEMAX_EMISSIONLEVEL_MATERIAL_PARAMETER:String = "emission_level"; public static const DAE_POLYGONHOLED_ELEMENT:String = "ph"; public static const DAEMAX_SKY_CAST_SHADOWS_PARAMETER:String = "cast_shadows"; public static const DAE_INDEXOFREFRACTION_MATERIAL_PARAMETER:String = "index_of_refraction"; public static const DAE_TEXTURE_INPUT:String = "TEXTURE"; public static const DAE_UP:String = "up_axis"; public static const DAE_PHYSICS_RESTITUTION:String = "restitution"; public static const DAE_IDREF_TYPE:String = "IDREF"; public static const DAE_ANNOTATE_ELEMENT:String = "annotate"; public static const DAE_INPUT_ANIMATION_INPUT:String = "INPUT"; public static const DAE_JOINT_NODE_TYPE:String = "JOINT"; public static const DAE_INPUT_SEMANTIC_ATTRIBUTE:String = "input_semantic"; public static const DAE_PRECISION_ELEMENT:String = "precision"; public static const DAE_FXCMN_SAMPLER1D_ELEMENT:String = "sampler1D"; public static const DAE_SWING_CONE_AND_TWIST_ELEMENT:String = "swing_cone_and_twist"; public static const DAEMAYA_TEXTURE_TRANSFRAMEU_PARAMETER:String = "translateFrameU"; public static const DAE_FORMAT_HINT_XYZ_VALUE:String = "XYZ"; public static const DAE_MIP_LEVELS:String = "mip_levels"; public static const DAE_TEXTURE_ATTRIBUTE:String = "texture"; public static const DAE_FXCMN_ANNOTATE_ELEMENT:String = "annotate"; public static const DAE_FXCMN_HALF2_ELEMENT:String = "half2"; public static const DAE_LIBRARY_NODE_ELEMENT:String = "library_nodes"; public static const DAE_FORMAT_HINT_SRGB_GAMMA_VALUE:String = "SRGB_GAMMA"; public static const DAE_FORMAT_HINT_RGB_VALUE:String = "RGB"; public static const DAE_INSTANCE_EFFECT_ELEMENT:String = "instance_effect"; public static const DAE_XMAG_CAMERA_PARAMETER:String = "xmag"; public static const DAEMAX_CAMERA_MB_DITHERSTRENGTH_PARAMETER:String = "dither_strength"; public static const DAEMAYA_TEXTURE_NOISEV_PARAMETER:String = "noiseV"; public static const DAE_KEYWORDS_ASSET_PARAMETER:String = "keywords"; public static const DAE_ANGULAR_VELOCITY_ELEMENT:String = "angular_velocity"; public static const DAE_TITLE_ASSET_PARAMETER:String = "title"; public static const DAE_LIBRARY_PMATERIAL_ELEMENT:String = "library_physics_materials"; public static const DAE_END_ATTRIBUTE:String = "end"; public static const DAE_TECHNIQUE_COMMON_ELEMENT:String = "technique_common"; public static const DAE_LIBRARY_EMITTER_ELEMENT:String = "library_emitters"; public static const DAE_HALF_EXTENTS_ELEMENT:String = "half_extents"; public static const DAE_INSTANCE_NODE_ELEMENT:String = "instance_node"; public static const DAE_FXSTD_STATE_DESTRGB_ELEMENT:String = "dest_rgb"; public static const DAE_JOINTS_ELEMENT:String = "joints"; public static const DAE_NAME_ATTRIBUTE:String = "name"; public static const DAEMAX_CAMERA_MOTIONBLUR_ELEMENT:String = "motion_blur"; public static const DAE_STAGE_ATTRIBUTE:String = "stage"; public static const DAEMAX_FAR_ATTEN_START_PARAMETER:String = "far_attenuation_start"; public static const DAE_SID_ATTRIBUTE:String = "sid"; public static const DAE_DENSITY_ELEMENT:String = "density"; public static const DAE_FXSTD_STATE_REF_ELEMENT:String = "ref"; public static const DAEMAX_CAMERA_MB_DISABLEANTIALIAS_PARAMETER:String = "disable_antialiasing"; public static const DAE_TARGET_MORPH_INPUT_DEPRECATED:String = "TARGET"; public static const DAEMAX_TARGET_LIGHT_PARAMETER:String = "target"; public static const DAE_MATERIAL_ELEMENT:String = "material"; public static const DAE_PHYSICS_STATIC_FRICTION:String = "static_friction"; public static const DAE_ALL_ELEMENT:String = "all"; public static const DAE_FXSTD_PHONG_ELEMENT:String = "phong"; public static const DAE_FORMAT_HINT_D_VALUE:String = "D"; public static const DAE_CLOSEDV_ATTRIBUTE:String = "closed_v"; public static const DAE_CAPSULE_ELEMENT:String = "capsule"; public static const DAE_FXCMN_NEWPARAM_ELEMENT:String = "newparam"; public static const DAE_ASSET_ELEMENT:String = "asset"; public static const DAE_FXSTD_STATE_FAIL_ELEMENT:String = "fail"; public static const DAE_SUBJECT_ASSET_PARAMETER:String = "subject"; public static const DAE_EFFECT_ELEMENT:String = "effect"; public static const DAE_PLATFORM_ATTRIBUTE:String = "platform"; public static const DAE_ANIMATION_ELEMENT:String = "animation"; public static const DAEMAYA_TEXTURE_REPEATU_PARAMETER:String = "repeatU"; public static const DAEMAYA_TEXTURE_COVERAGEV_PARAMETER:String = "coverageV"; } }//package org.ascollada
Section 137
//FreeCamera3D (org.papervision3d.cameras.FreeCamera3D) package org.papervision3d.cameras { import org.papervision3d.core.proto.*; import org.papervision3d.core.math.*; public class FreeCamera3D extends CameraObject3D { public static const TYPE:String = "FREECAMERA3D"; public function FreeCamera3D(_arg1:Number=2, _arg2:Number=100, _arg3:Object=null){ super(_arg1, _arg2, _arg3); } override public function transformView(_arg1:Matrix3D=null):void{ if (this._transformDirty){ updateTransform(); }; super.transformView(); } } }//package org.papervision3d.cameras
Section 138
//MorphController (org.papervision3d.core.animation.controllers.MorphController) package org.papervision3d.core.animation.controllers { import org.papervision3d.core.proto.*; import org.papervision3d.core.animation.core.*; import org.papervision3d.core.geom.renderables.*; public class MorphController extends KeyFrameController { public function MorphController(_arg1:GeometryObject3D):void{ super(_arg1); } protected function updateVertices(_arg1:Number):Boolean{ var _local2:Array; var _local3:int; var _local4:Vertex3D; var _local5:AnimationFrame; var _local6:AnimationFrame; var _local7:Array; var _local8:Array; _arg1 = Math.min(_arg1, 1); _local2 = this.geometry.vertices; _local3 = _local2.length; _local5 = this.frames[currentFrame]; _local6 = this.frames[nextFrame]; if (!_local5){ return (false); }; _local7 = _local5.values; if (!_local6){ while ((_local4 = _local2[--_local3])) { _local4.x = _local7[_local3].x; _local4.y = _local7[_local3].y; _local4.z = _local7[_local3].z; }; return (true); }; _local8 = _local6.values; while ((_local4 = _local2[--_local3])) { interpolateVertices(_local4, _local7[_local3], _local8[_local3], _arg1); }; return (true); } override public function tick(_arg1:Number):void{ super.tick(_arg1); updateVertices((this.split / this.duration)); } private function interpolateVertices(_arg1:Vertex3D, _arg2:Vertex3D, _arg3:Vertex3D, _arg4:Number):void{ _arg1.x = (_arg2.x + (_arg4 * (_arg3.x - _arg2.x))); _arg1.y = (_arg2.y + (_arg4 * (_arg3.y - _arg2.y))); _arg1.z = (_arg2.z + (_arg4 * (_arg3.z - _arg2.z))); } } }//package org.papervision3d.core.animation.controllers
Section 139
//SimpleController (org.papervision3d.core.animation.controllers.SimpleController) package org.papervision3d.core.animation.controllers { import org.papervision3d.core.animation.core.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; public class SimpleController extends KeyFrameController { public var target:DisplayObject3D; public var property:String; public static const SCALE_X:String = "scaleX"; public static const SCALE_Y:String = "scaleY"; public static const SCALE_Z:String = "scaleZ"; public static const TRANSLATION_X:String = "x"; public static const TRANSLATION_Y:String = "y"; public static const TRANSLATION_Z:String = "z"; public static const TRANSFORM:String = "transform"; public static const ROTATION_X:String = "rotationX"; public static const ROTATION_Y:String = "rotationY"; public static const ROTATION_Z:String = "rotationZ"; public static const SCALE:String = "scale"; public function SimpleController(_arg1:DisplayObject3D, _arg2:String):void{ super(_arg1.geometry); this.target = _arg1; this.property = _arg2; } override public function tick(_arg1:Number):void{ var _local2:AnimationFrame; var _local3:AnimationFrame; var _local4:Array; var _local5:Array; var _local6:Matrix3D; var _local7:Matrix3D; var _local8:Matrix3D; super.tick(_arg1); _arg1 = (this.split / this.duration); _local2 = this.frames[currentFrame]; _local3 = this.frames[nextFrame]; if (!_local2){ return; }; _local4 = _local2.values; if (_local3){ _local5 = _local3.values; } else { _local5 = _local4; _arg1 = 0; }; if (this.property == SimpleController.TRANSFORM){ _local6 = target.transform; if ((((_local4[0] is Matrix3D)) && ((_local5[0] is Matrix3D)))){ _local7 = _local4[0]; _local8 = _local5[0]; _local6.n11 = (_local7.n11 + (_arg1 * (_local8.n11 - _local7.n11))); _local6.n12 = (_local7.n12 + (_arg1 * (_local8.n12 - _local7.n12))); _local6.n13 = (_local7.n13 + (_arg1 * (_local8.n13 - _local7.n13))); _local6.n14 = (_local7.n14 + (_arg1 * (_local8.n14 - _local7.n14))); _local6.n21 = (_local7.n21 + (_arg1 * (_local8.n21 - _local7.n21))); _local6.n22 = (_local7.n22 + (_arg1 * (_local8.n22 - _local7.n22))); _local6.n23 = (_local7.n23 + (_arg1 * (_local8.n23 - _local7.n23))); _local6.n24 = (_local7.n24 + (_arg1 * (_local8.n24 - _local7.n24))); _local6.n31 = (_local7.n31 + (_arg1 * (_local8.n31 - _local7.n31))); _local6.n32 = (_local7.n32 + (_arg1 * (_local8.n32 - _local7.n32))); _local6.n33 = (_local7.n33 + (_arg1 * (_local8.n33 - _local7.n33))); _local6.n34 = (_local7.n34 + (_arg1 * (_local8.n34 - _local7.n34))); } else { _local6.n11 = (_local4[0] + (_arg1 * (_local5[0] - _local4[0]))); _local6.n12 = (_local4[1] + (_arg1 * (_local5[1] - _local4[1]))); _local6.n13 = (_local4[2] + (_arg1 * (_local5[2] - _local4[2]))); _local6.n14 = (_local4[3] + (_arg1 * (_local5[3] - _local4[3]))); _local6.n21 = (_local4[4] + (_arg1 * (_local5[4] - _local4[4]))); _local6.n22 = (_local4[5] + (_arg1 * (_local5[5] - _local4[5]))); _local6.n23 = (_local4[6] + (_arg1 * (_local5[6] - _local4[6]))); _local6.n24 = (_local4[7] + (_arg1 * (_local5[7] - _local4[7]))); _local6.n31 = (_local4[8] + (_arg1 * (_local5[8] - _local4[8]))); _local6.n32 = (_local4[9] + (_arg1 * (_local5[9] - _local4[9]))); _local6.n33 = (_local4[10] + (_arg1 * (_local5[10] - _local4[10]))); _local6.n34 = (_local4[11] + (_arg1 * (_local5[11] - _local4[11]))); }; } else { this.target[this.property] = (_local4[0] + (_arg1 * (_local5[0] - _local4[0]))); }; } } }//package org.papervision3d.core.animation.controllers
Section 140
//SkinController (org.papervision3d.core.animation.controllers.SkinController) package org.papervision3d.core.animation.controllers { import org.papervision3d.core.proto.*; import org.papervision3d.core.animation.core.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.objects.parsers.ascollada.*; import org.papervision3d.core.*; public class SkinController extends KeyFrameController { private var _yUp:Boolean; private var _cached:Array; public var skin:Skin3D; public function SkinController(_arg1:Skin3D, _arg2:Boolean=true):void{ super(_arg1.geometry); _yUp = _arg2; this.skin = _arg1; } private function skinMesh(_arg1:Node3D, _arg2:Array, _arg3:Array):void{ var _local4:int; var _local5:Number3D; var _local6:Number3D; var _local7:Vertex3D; var _local8:Array; var _local9:Matrix3D; var _local10:Number; var _local11:int; _local5 = new Number3D(); _local8 = _arg1.blendVerts; _local9 = Matrix3D.multiply(_arg1.world, _arg1.bindMatrix); _local4 = 0; while (_local4 < _local8.length) { _local10 = _local8[_local4].weight; _local11 = _local8[_local4].vertexIndex; if ((((_local10 <= 0.0001)) || ((_local10 >= 1.0001)))){ } else { _local6 = _arg2[_local11]; _local7 = _arg3[_local11]; _local5.x = _local6.x; _local5.y = _local6.y; _local5.z = _local6.z; Matrix3D.multiplyVector(_local9, _local5); _local7.x = (_local7.x + (_local5.x * _local10)); _local7.y = (_local7.y + (_local5.y * _local10)); _local7.z = (_local7.z - (_local5.z * _local10)); }; _local4++; }; } override public function tick(_arg1:Number):void{ var _local2:Array; var _local3:Array; var _local4:int; var _local5:Vertex3D; var _local6:Node3D; if (((this.skin) && (((!(_cached)) || (this.skin.geometry.dirty))))){ cacheVertices(); }; _local2 = this.skin.joints; _local3 = this.skin.geometry.vertices; _local4 = _local3.length; while ((_local5 = _local3[--_local4])) { _local5.x = (_local5.y = (_local5.z = 0)); }; for each (_local6 in _local2) { skinMesh(_local6, _cached, _local3); }; } private function cacheVertices():void{ var _local1:Array; var _local2:int; _local1 = this.skin.geometry.vertices; _cached = new Array(_local1.length); _local2 = 0; while (_local2 < _local1.length) { _cached[_local2] = new Number3D(_local1[_local2].x, _local1[_local2].y, _local1[_local2].z); Matrix3D.multiplyVector(this.skin.bindPose, _cached[_local2]); _local2++; }; } } }//package org.papervision3d.core.animation.controllers
Section 141
//AbstractController (org.papervision3d.core.animation.core.AbstractController) package org.papervision3d.core.animation.core { import flash.events.*; public class AbstractController extends EventDispatcher { protected var engine:AnimationEngine; public var duration:uint;// = 0 protected var totalFrames:uint;// = 0 protected var split:Number; protected var currentFrame:int;// = 0 public var frames:Array; public var playing:Boolean; protected var lastFrame:uint;// = 0 protected var nextFrame:int;// = 0 protected var firstFrame:uint;// = 0 public function AbstractController():void{ duration = 0; currentFrame = 0; nextFrame = 0; totalFrames = 0; lastFrame = 0; firstFrame = 0; super(); this.frames = new Array(); this.engine = AnimationEngine.getInstance(); playing = false; currentFrame = 0; nextFrame = 1; firstFrame = uint.MAX_VALUE; lastFrame = uint.MIN_VALUE; } public function play():void{ gotoAndPlay(currentFrame); } public function gotoAndPlay(_arg1:uint=0):void{ currentFrame = (_arg1 % this.frames.length); nextFrame = ((_arg1 + 1) % this.frames.length); playing = true; } public function stop():void{ playing = false; } public function addFrame(_arg1:AnimationFrame):void{ this.frames[_arg1.frame] = _arg1; totalFrames++; firstFrame = Math.min(firstFrame, _arg1.frame); lastFrame = Math.max(lastFrame, _arg1.frame); } public function findFrameByName(_arg1:String, _arg2:Boolean):AnimationFrame{ var _local3:AnimationFrame; var _local4:RegExp; var _local5:Object; if (_arg2){ _local4 = /^([a-z]+)(\d+)$/i; _local5 = _local4.exec(_arg1); if (((((_local5) && (_local5[1]))) && (_local5[2]))){ _arg1 = _local5[1]; }; }; for each (_local3 in this.frames) { if (_local3.name == _arg1){ return (_local3); }; }; return (null); } public function gotoAndStop(_arg1:uint=0):void{ currentFrame = (_arg1 % this.frames.length); nextFrame = ((_arg1 + 1) % this.frames.length); } public function tick(_arg1:Number):void{ } } }//package org.papervision3d.core.animation.core
Section 142
//AnimationEngine (org.papervision3d.core.animation.core.AnimationEngine) package org.papervision3d.core.animation.core { import org.papervision3d.objects.*; import flash.utils.*; import org.papervision3d.*; import org.papervision3d.core.animation.controllers.*; public class AnimationEngine { public var maxTime:Number; public var currentFrame:uint;// = 0 public var time:Number;// = 0 public static var TICK:Number = 50; private static var _controllers:Array; private static var _animatedObjects:Dictionary; private static var instance:AnimationEngine = new (AnimationEngine); ; private static var _time:Number; public static var NUM_FRAMES:uint = 100; public function AnimationEngine():void{ time = 0; currentFrame = 0; maxTime = (NUM_FRAMES * TICK); super(); if (instance){ throw (new Error("org.papervision3d.animation.AnimationEngine is a singleton class!")); }; _animatedObjects = new Dictionary(); _controllers = new Array(); _time = getTimer(); Papervision3D.log(((("[AnimationEngine] initialized => NUM_FRAMES:" + NUM_FRAMES) + " TICK:") + TICK)); } public function tick():void{ var _local1:*; var _local2:Array; var _local3:int; time = (getTimer() - _time); if (time > TICK){ _time = getTimer(); currentFrame = ((currentFrame < (NUM_FRAMES - 1))) ? (currentFrame + 1) : 0; }; for (_local1 in _animatedObjects) { _local2 = _animatedObjects[_local1]; _local3 = 0; while (_local3 < _local2.length) { _local2[_local3].tick(time); _local3++; }; }; } public static function getControllers(_arg1:DisplayObject3D):Array{ if (_animatedObjects[_arg1]){ return (_animatedObjects[_arg1]); }; return (null); } public static function getInstance():AnimationEngine{ return (instance); } public static function millisToFrame(_arg1:Number):uint{ return (Math.floor((_arg1 / TICK))); } public static function secondsToFrame(_arg1:Number):uint{ return (millisToFrame((_arg1 * 1000))); } public static function setControllers(_arg1:DisplayObject3D, _arg2:Array, _arg3:Boolean=false):void{ var _local4:int; if (_arg3){ _animatedObjects[_arg1] = new Array(); }; _local4 = 0; while (_local4 < _arg2.length) { addController(_arg1, _arg2[_local4]); _local4++; }; } public static function addController(_arg1:DisplayObject3D, _arg2:AbstractController):AbstractController{ var _local3:uint; var _local4:uint; var _local5:AnimationFrame; var _local6:uint; _local3 = NUM_FRAMES; if (!_animatedObjects[_arg1]){ _animatedObjects[_arg1] = new Array(); }; _local4 = 0; for each (_local5 in _arg2.frames) { _local6 = _local5.frame; if (_local6 > NUM_FRAMES){ NUM_FRAMES = _local6; }; _local4 = Math.max(_local4, _local6); }; instance.maxTime = (NUM_FRAMES * TICK); if (NUM_FRAMES > _local3){ Papervision3D.log((("[AnimationEngine] resizing timeline to " + NUM_FRAMES) + " frames")); }; if (NUM_FRAMES > _local4){ NUM_FRAMES = _local4; Papervision3D.log((("[AnimationEngine] resizing timeline to " + NUM_FRAMES) + " frames")); }; _animatedObjects[_arg1].push(_arg2); return (_arg2); } } }//package org.papervision3d.core.animation.core
Section 143
//AnimationFrame (org.papervision3d.core.animation.core.AnimationFrame) package org.papervision3d.core.animation.core { public class AnimationFrame { public var values:Array; public var name:String; public var frame:uint; public var type:uint; public var duration:uint; public var nextFrame:uint; public function AnimationFrame(_arg1:uint, _arg2:uint=1, _arg3:Array=null, _arg4:String=""):void{ this.frame = _arg1; this.duration = _arg2; this.values = ((_arg3) || (new Array())); this.name = _arg4; } } }//package org.papervision3d.core.animation.core
Section 144
//KeyFrameController (org.papervision3d.core.animation.core.KeyFrameController) package org.papervision3d.core.animation.core { import org.papervision3d.core.proto.*; import org.papervision3d.events.*; public class KeyFrameController extends AbstractController { public var geometry:GeometryObject3D; public function KeyFrameController(_arg1:GeometryObject3D):void{ this.geometry = _arg1; } override public function tick(_arg1:Number):void{ var _local2:AnimationFrame; if (this.frames.length < 2){ return; }; currentFrame = ((currentFrame < engine.currentFrame)) ? currentFrame : firstFrame; _local2 = this.frames[currentFrame]; if (!_local2){ currentFrame = firstFrame; _local2 = this.frames[currentFrame]; }; if (currentFrame == firstFrame){ nextFrame = (currentFrame + _local2.duration); }; if (((this.frames[engine.currentFrame]) && ((engine.currentFrame > currentFrame)))){ currentFrame = engine.currentFrame; _local2 = this.frames[currentFrame]; nextFrame = (currentFrame + _local2.duration); nextFrame = ((nextFrame <= lastFrame)) ? nextFrame : firstFrame; this.duration = _local2.duration; this.geometry.dirty = true; dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_NEXT_FRAME, currentFrame, lastFrame, _local2.name)); }; this.split = (engine.currentFrame - currentFrame); } } }//package org.papervision3d.core.animation.core
Section 145
//CoordinateTools (org.papervision3d.core.components.as3.utils.CoordinateTools) package org.papervision3d.core.components.as3.utils { import flash.display.*; import flash.geom.*; public class CoordinateTools { public static function random(_arg1:Number):Number{ return (Math.floor((Math.random() * _arg1))); } public static function localToLocal(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:Point=null):Point{ var _local4:Point; _local4 = (_arg3) ? _arg3 : new Point(); _local4 = _arg1.localToGlobal(_local4); _local4 = _arg2.globalToLocal(_local4); return (_local4); } } }//package org.papervision3d.core.components.as3.utils
Section 146
//DefaultParticleCuller (org.papervision3d.core.culling.DefaultParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public class DefaultParticleCuller implements IParticleCuller { public function testParticle(_arg1:Particle):Boolean{ if (_arg1.material.invisible == false){ if (_arg1.vertex3D.vertex3DInstance.visible == true){ return (true); }; }; return (false); } } }//package org.papervision3d.core.culling
Section 147
//DefaultTriangleCuller (org.papervision3d.core.culling.DefaultTriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; public class DefaultTriangleCuller implements ITriangleCuller { private static var y2:Number; private static var y1:Number; private static var y0:Number; private static var x0:Number; private static var x1:Number; private static var x2:Number; public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ var _local5:MaterialObject3D; if (((((_arg2.visible) && (_arg3.visible))) && (_arg4.visible))){ _local5 = (_arg1.material) ? _arg1.material : _arg1.instance.material; if (_local5.invisible){ return (false); }; x0 = _arg2.x; y0 = _arg2.y; x1 = _arg3.x; y1 = _arg3.y; x2 = _arg4.x; y2 = _arg4.y; if (_local5.oneSide){ if (_local5.opposite){ if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) > 0){ return (false); }; } else { if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) < 0){ return (false); }; }; }; return (true); }; return (false); } } }//package org.papervision3d.core.culling
Section 148
//IObjectCuller (org.papervision3d.core.culling.IObjectCuller) package org.papervision3d.core.culling { import org.papervision3d.objects.*; public interface IObjectCuller { function testObject(_arg1:DisplayObject3D):int; } }//package org.papervision3d.core.culling
Section 149
//IParticleCuller (org.papervision3d.core.culling.IParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface IParticleCuller { function testParticle(_arg1:Particle):Boolean; } }//package org.papervision3d.core.culling
Section 150
//ITriangleCuller (org.papervision3d.core.culling.ITriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface ITriangleCuller { function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean; } }//package org.papervision3d.core.culling
Section 151
//RectangleParticleCuller (org.papervision3d.core.culling.RectangleParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; import flash.geom.*; public class RectangleParticleCuller implements IParticleCuller { public var cullingRectangle:Rectangle; private static var vInstance:Vertex3DInstance; private static var testPoint:Point; public function RectangleParticleCuller(_arg1:Rectangle=null){ this.cullingRectangle = _arg1; testPoint = new Point(); } public function testParticle(_arg1:Particle):Boolean{ vInstance = _arg1.vertex3D.vertex3DInstance; if (_arg1.renderRect.intersects(cullingRectangle)){ return (true); }; return (false); } } }//package org.papervision3d.core.culling
Section 152
//RectangleTriangleCuller (org.papervision3d.core.culling.RectangleTriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; import flash.geom.*; public class RectangleTriangleCuller extends DefaultTriangleCuller implements ITriangleCuller { public var cullingRectangle:Rectangle; private static const DEFAULT_RECT_X:Number = -((DEFAULT_RECT_W / 2)); private static const DEFAULT_RECT_W:Number = 640; private static const DEFAULT_RECT_H:Number = 480; private static const DEFAULT_RECT_Y:Number = -((DEFAULT_RECT_H / 2)); private static var hitRect:Rectangle = new Rectangle(); public function RectangleTriangleCuller(_arg1:Rectangle=null):void{ cullingRectangle = new Rectangle(DEFAULT_RECT_X, DEFAULT_RECT_Y, DEFAULT_RECT_W, DEFAULT_RECT_H); super(); if (_arg1){ this.cullingRectangle = _arg1; }; } override public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ if (super.testFace(_arg1, _arg2, _arg3, _arg4)){ hitRect.x = Math.min(_arg4.x, Math.min(_arg3.x, _arg2.x)); hitRect.width = (Math.max(_arg4.x, Math.max(_arg3.x, _arg2.x)) + Math.abs(hitRect.x)); hitRect.y = Math.min(_arg4.y, Math.min(_arg3.y, _arg2.y)); hitRect.height = (Math.max(_arg4.y, Math.max(_arg3.y, _arg2.y)) + Math.abs(hitRect.y)); return (cullingRectangle.intersects(hitRect)); }; return (false); } } }//package org.papervision3d.core.culling
Section 153
//ViewportObjectFilter (org.papervision3d.core.culling.ViewportObjectFilter) package org.papervision3d.core.culling { import org.papervision3d.objects.*; import flash.utils.*; public class ViewportObjectFilter implements IObjectCuller { protected var _mode:int; protected var objects:Dictionary; public function ViewportObjectFilter(_arg1:int):void{ this.mode = _arg1; init(); } public function addObject(_arg1:DisplayObject3D):void{ objects[_arg1] = _arg1; } public function removeObject(_arg1:DisplayObject3D):void{ delete objects[_arg1]; } public function set mode(_arg1:int):void{ _mode = _arg1; } public function get mode():int{ return (_mode); } private function init():void{ objects = new Dictionary(true); } public function testObject(_arg1:DisplayObject3D):int{ if (objects[_arg1]){ if (_mode == ViewportObjectFilterMode.INCLUSIVE){ return (1); }; if (_mode == ViewportObjectFilterMode.EXCLUSIVE){ return (0); }; } else { if (_mode == ViewportObjectFilterMode.INCLUSIVE){ return (0); }; if (_mode == ViewportObjectFilterMode.EXCLUSIVE){ return (1); }; }; return (0); } public function destroy():void{ objects = null; } } }//package org.papervision3d.core.culling
Section 154
//ViewportObjectFilterMode (org.papervision3d.core.culling.ViewportObjectFilterMode) package org.papervision3d.core.culling { public class ViewportObjectFilterMode { public static const INCLUSIVE:int = 0; public static const EXCLUSIVE:int = 1; } }//package org.papervision3d.core.culling
Section 155
//UserData (org.papervision3d.core.data.UserData) package org.papervision3d.core.data { public class UserData { public var data; public function UserData(_arg1=null){ this.data = _arg1; } } }//package org.papervision3d.core.data
Section 156
//AbstractRenderable (org.papervision3d.core.geom.renderables.AbstractRenderable) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.core.data.*; public class AbstractRenderable implements IRenderable { public var _userData:UserData; public function get userData():UserData{ return (_userData); } public function set userData(_arg1:UserData):void{ _userData = _arg1; } public function getRenderListItem():IRenderListItem{ return (null); } } }//package org.papervision3d.core.geom.renderables
Section 157
//IRenderable (org.papervision3d.core.geom.renderables.IRenderable) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; public interface IRenderable { function getRenderListItem():IRenderListItem; } }//package org.papervision3d.core.geom.renderables
Section 158
//Line3D (org.papervision3d.core.geom.renderables.Line3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.geom.*; public class Line3D extends AbstractRenderable implements IRenderable { public var instance:Lines3D; public var material:LineMaterial; public var size:Number; public var v0:Vertex3D; public var v1:Vertex3D; public var renderCommand:RenderLine; public function Line3D(_arg1:Lines3D, _arg2:LineMaterial, _arg3:Number, _arg4:Vertex3D, _arg5:Vertex3D){ this.size = _arg3; this.material = _arg2; this.v0 = _arg4; this.v1 = _arg5; this.instance = _arg1; this.renderCommand = new RenderLine(this); } override public function getRenderListItem():IRenderListItem{ return (this.renderCommand); } } }//package org.papervision3d.core.geom.renderables
Section 159
//Particle (org.papervision3d.core.geom.renderables.Particle) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.geom.*; public class Particle extends AbstractRenderable implements IRenderable { public var size:Number; public var renderScale:Number; public var renderCommand:RenderParticle; public var renderRect:Rectangle; public var instance:Particles; public var material:ParticleMaterial; public var vertex3D:Vertex3D; public function Particle(_arg1:ParticleMaterial, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){ this.material = _arg1; this.size = _arg2; this.renderCommand = new RenderParticle(this); this.renderRect = new Rectangle(); vertex3D = new Vertex3D(_arg3, _arg4, _arg5); } public function get y():Number{ return (vertex3D.y); } public function updateRenderRect():void{ material.updateRenderRect(this); } override public function getRenderListItem():IRenderListItem{ return (renderCommand); } public function set z(_arg1:Number):void{ vertex3D.z = _arg1; } public function set x(_arg1:Number):void{ vertex3D.x = _arg1; } public function set y(_arg1:Number):void{ vertex3D.y = _arg1; } public function get x():Number{ return (vertex3D.x); } public function get z():Number{ return (vertex3D.z); } } }//package org.papervision3d.core.geom.renderables
Section 160
//Triangle3D (org.papervision3d.core.geom.renderables.Triangle3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; public class Triangle3D extends AbstractRenderable implements IRenderable { private var _uvArray:Array; public var face3DInstance:Triangle3DInstance; public var v1:Vertex3D; public var visible:Boolean; public var id:Number; public var material:MaterialObject3D; public var faceNormal:Number3D; public var instance:DisplayObject3D; public var screenZ:Number; public var uv0:NumberUV; public var uv1:NumberUV; public var _materialName:String; public var renderCommand:RenderTriangle; public var uv2:NumberUV; public var vertices:Array; public var v0:Vertex3D; public var v2:Vertex3D; private static var _totalFaces:Number = 0; public function Triangle3D(_arg1:DisplayObject3D, _arg2:Array, _arg3:MaterialObject3D=null, _arg4:Array=null){ this.instance = _arg1; this.renderCommand = new RenderTriangle(this); face3DInstance = new Triangle3DInstance(this, _arg1); this.vertices = _arg2; v0 = _arg2[0]; v1 = _arg2[1]; v2 = _arg2[2]; this.material = _arg3; this.uv = _arg4; this.id = _totalFaces++; createNormal(); } public function set uv(_arg1:Array):void{ uv0 = NumberUV(_arg1[0]); uv1 = NumberUV(_arg1[1]); uv2 = NumberUV(_arg1[2]); _uvArray = _arg1; } override public function getRenderListItem():IRenderListItem{ return (renderCommand); } public function createNormal():void{ var _local1:Number3D; var _local2:Number3D; var _local3:Number3D; var _local4:Number3D; var _local5:Number3D; _local1 = v0.toNumber3D(); _local2 = v1.toNumber3D(); _local3 = v2.toNumber3D(); _local4 = Number3D.sub(_local2, _local1); _local5 = Number3D.sub(_local3, _local1); faceNormal = Number3D.cross(_local4, _local5); faceNormal.normalize(); } public function get uv():Array{ return (_uvArray); } } }//package org.papervision3d.core.geom.renderables
Section 161
//Triangle3DInstance (org.papervision3d.core.geom.renderables.Triangle3DInstance) package org.papervision3d.core.geom.renderables { import flash.display.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; public class Triangle3DInstance { public var container:Sprite; public var faceNormal:Number3D; public var screenZ:Number; public var visible:Boolean;// = false public var instance:DisplayObject3D; public function Triangle3DInstance(_arg1:Triangle3D, _arg2:DisplayObject3D){ visible = false; super(); this.instance = _arg2; faceNormal = new Number3D(); } } }//package org.papervision3d.core.geom.renderables
Section 162
//Vertex3D (org.papervision3d.core.geom.renderables.Vertex3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.core.math.*; import flash.utils.*; public class Vertex3D extends AbstractRenderable implements IRenderable { public var vertex3DInstance:Vertex3DInstance; public var extra:Object; public var normal:Number3D; public var connectedFaces:Dictionary; public var x:Number; public var y:Number; public var z:Number; public function Vertex3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; this.vertex3DInstance = new Vertex3DInstance(); this.normal = new Number3D(); this.connectedFaces = new Dictionary(); } override public function getRenderListItem():IRenderListItem{ return (null); } public function toNumber3D():Number3D{ return (new Number3D(x, y, z)); } public function clone():Vertex3D{ var _local1:Vertex3D; _local1 = new Vertex3D(x, y, z); _local1.extra = extra; _local1.vertex3DInstance = vertex3DInstance.clone(); _local1.normal = normal.clone(); return (_local1); } public function calculateNormal():void{ var _local1:Triangle3D; var _local2:Number; normal = new Number3D(); _local2 = 0; for each (_local1 in connectedFaces) { _local2++; normal = Number3D.add(_local1.faceNormal, normal); }; normal.x = (normal.x / _local2); normal.y = (normal.y / _local2); normal.z = (normal.z / _local2); normal.normalize(); } } }//package org.papervision3d.core.geom.renderables
Section 163
//Vertex3DInstance (org.papervision3d.core.geom.renderables.Vertex3DInstance) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; public class Vertex3DInstance { public var visible:Boolean; public var normal:Number3D; public var extra:Object; public var x:Number; public var y:Number; public var z:Number; public function Vertex3DInstance(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; this.visible = false; this.normal = new Number3D(); } public function clone():Vertex3DInstance{ var _local1:Vertex3DInstance; _local1 = new Vertex3DInstance(x, y, z); _local1.visible = visible; _local1.extra = extra; return (_local1); } public static function cross(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{ return (((_arg1.x * _arg2.y) - (_arg2.x * _arg1.y))); } public static function dot(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function sub(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Vertex3DInstance{ return (new Vertex3DInstance((_arg2.x - _arg1.x), (_arg2.y - _arg1.y))); } } }//package org.papervision3d.core.geom.renderables
Section 164
//AnimatedMesh3D (org.papervision3d.core.geom.AnimatedMesh3D) package org.papervision3d.core.geom { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.animation.core.*; import org.papervision3d.objects.*; import org.papervision3d.events.*; public class AnimatedMesh3D extends TriangleMesh3D { public function AnimatedMesh3D(_arg1:MaterialObject3D, _arg2:Array=null, _arg3:Array=null, _arg4:String=null):void{ _arg2 = ((_arg2) || (new Array())); _arg3 = ((_arg3) || (new Array())); super(_arg1, _arg2, _arg3, _arg4); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ return (super.project(_arg1, _arg2)); } public function addController(_arg1:AbstractController):AbstractController{ return (AnimationEngine.addController(this, _arg1)); } private function animationProgressHandler(_arg1:AnimationEvent):void{ dispatchEvent(_arg1.clone()); } public function get controllers():Array{ return (AnimationEngine.getControllers(this)); } private function animationCompleteHandler(_arg1:AnimationEvent):void{ dispatchEvent(_arg1.clone()); } } }//package org.papervision3d.core.geom
Section 165
//Lines3D (org.papervision3d.core.geom.Lines3D) package org.papervision3d.core.geom { import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.render.draw.*; public class Lines3D extends Vertices3D { public var lines:Array; private var _material:ILineDrawer; public function Lines3D(_arg1:LineMaterial, _arg2:String=null){ super(null, _arg2); this.material = _arg1; init(); } private function init():void{ this.lines = new Array(); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Line3D; var _local4:Number; super.project(_arg1, _arg2); for each (_local3 in lines) { if (((_local3.v0.vertex3DInstance.visible) && (_local3.v1.vertex3DInstance.visible))){ _local3.renderCommand.renderer = _local3.material; _local4 = (_local4 + (_local3.renderCommand.screenDepth = ((_local3.v0.vertex3DInstance.z + _local3.v1.vertex3DInstance.z) / 2))); _arg2.renderer.addToRenderList(_local3.renderCommand); }; }; return ((_local4 / (lines.length + 1))); } public function addNewSegmentedLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):void{ var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Line3D; var _local13:Vertex3D; var _local14:Vertex3D; var _local15:Number; _local9 = ((_arg6 - _arg3) / _arg2); _local10 = ((_arg7 - _arg4) / _arg2); _local11 = ((_arg8 - _arg5) / _arg2); _local13 = new Vertex3D(_arg3, _arg4, _arg5); _local15 = 0; while (_local15 <= _arg2) { _local14 = new Vertex3D((_arg3 + (_local9 * _local15)), (_arg4 + (_local10 * _local15)), (_arg5 + (_local11 * _local15))); _local12 = new Line3D(this, (material as LineMaterial), _arg1, _local13, _local14); addLine(_local12); _local13 = _local14; _local15++; }; } public function addLine(_arg1:Line3D):void{ lines.push(_arg1); _arg1.instance = this; if (geometry.vertices.indexOf(_arg1.v0) == -1){ geometry.vertices.push(_arg1.v0); }; if (geometry.vertices.indexOf(_arg1.v1) == -1){ geometry.vertices.push(_arg1.v1); }; } public function removeLine(_arg1:Line3D):void{ lines.splice(lines.indexOf(_arg1), 1); } public function addNewLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Line3D{ var _local8:Line3D; _local8 = new Line3D(this, (material as LineMaterial), _arg1, new Vertex3D(_arg2, _arg3, _arg4), new Vertex3D(_arg5, _arg6, _arg7)); addLine(_local8); return (_local8); } } }//package org.papervision3d.core.geom
Section 166
//Particles (org.papervision3d.core.geom.Particles) package org.papervision3d.core.geom { import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class Particles extends Vertices3D { public var particles:Array; private var vertices:Array; public function Particles(_arg1:String="VertexParticles"){ this.vertices = new Array(); this.particles = new Array(); super(vertices, _arg1); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Particle; var _local4:Number; super.project(_arg1, _arg2); _local4 = (_arg2.camera.focus * _arg2.camera.zoom); for each (_local3 in particles) { _local3.renderScale = (_local4 / (_arg2.camera.focus + _local3.vertex3D.vertex3DInstance.z)); _local3.updateRenderRect(); if (_arg2.viewPort.particleCuller.testParticle(_local3)){ _local3.renderCommand.screenDepth = _local3.vertex3D.vertex3DInstance.z; _arg2.renderer.addToRenderList(_local3.renderCommand); } else { _arg2.renderStatistics.culledParticles++; }; }; return (1); } public function removeParticle(_arg1:Particle):void{ _arg1.instance = null; particles.splice(particles.indexOf(_arg1, 0)); vertices.splice(vertices.indexOf(_arg1.vertex3D, 0)); } public function addParticle(_arg1:Particle):void{ _arg1.instance = this; particles.push(_arg1); vertices.push(_arg1.vertex3D); } public function removeAllParticles():void{ particles = new Array(); vertices = new Array(); geometry.vertices = vertices; } } }//package org.papervision3d.core.geom
Section 167
//TriangleMesh3D (org.papervision3d.core.geom.TriangleMesh3D) package org.papervision3d.core.geom { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.culling.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; public class TriangleMesh3D extends Vertices3D { public function TriangleMesh3D(_arg1:MaterialObject3D, _arg2:Array, _arg3:Array, _arg4:String=null, _arg5:Object=null){ super(_arg2, _arg4, _arg5); this.geometry.faces = ((_arg3) || (new Array())); this.material = ((_arg1) || (MaterialObject3D.DEFAULT)); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Array; var _local4:Number; var _local5:Number; var _local6:ITriangleCuller; var _local7:Vertex3DInstance; var _local8:Vertex3DInstance; var _local9:Vertex3DInstance; var _local10:Triangle3DInstance; var _local11:Triangle3D; var _local12:MaterialObject3D; var _local13:RenderTriangle; super.project(_arg1, _arg2); if (!this.culled){ _local3 = this.geometry.faces; _local4 = 0; _local5 = 0; _local6 = _arg2.triangleCuller; for each (_local11 in _local3) { _local12 = (_local11.material) ? _local11.material : material; _local10 = _local11.face3DInstance; _local7 = _local11.v0.vertex3DInstance; _local8 = _local11.v1.vertex3DInstance; _local9 = _local11.v2.vertex3DInstance; if ((_local10.visible = _local6.testFace(_local11, _local7, _local8, _local9))){ _local4 = (_local4 + (_local10.screenZ = (((_local7.z + _local8.z) + _local9.z) / 3))); _local13 = _local11.renderCommand; _local5++; _local13.renderer = (_local12 as ITriangleDrawer); _local13.screenDepth = _local10.screenZ; _arg2.renderer.addToRenderList(_local13); } else { _arg2.renderStatistics.culledTriangles++; }; }; return ((this.screenZ = (_local4 / _local5))); //unresolved jump }; return (0); } public function mergeVertices():void{ var _local1:Dictionary; var _local2:Array; var _local3:Vertex3D; var _local4:Triangle3D; var _local5:Vertex3D; _local1 = new Dictionary(); _local2 = new Array(); for each (_local3 in this.geometry.vertices) { for each (_local5 in _local1) { if ((((((_local3.x == _local5.x)) && ((_local3.y == _local5.y)))) && ((_local3.z == _local5.z)))){ _local1[_local3] = _local5; break; }; }; if (!_local1[_local3]){ _local1[_local3] = _local3; _local2.push(_local3); }; }; this.geometry.vertices = _local2; for each (_local4 in geometry.faces) { _local4.v0 = _local1[_local4.v0]; _local4.v1 = _local1[_local4.v1]; _local4.v2 = _local1[_local4.v2]; }; } public function quarterFaces():void{ var _local1:Array; var _local2:Array; var _local3:Array; var _local4:Triangle3D; var _local5:int; var _local6:Vertex3D; var _local7:Vertex3D; var _local8:Vertex3D; var _local9:Vertex3D; var _local10:Vertex3D; var _local11:Vertex3D; var _local12:NumberUV; var _local13:NumberUV; var _local14:NumberUV; var _local15:NumberUV; var _local16:NumberUV; var _local17:NumberUV; var _local18:Triangle3D; var _local19:Triangle3D; var _local20:Triangle3D; var _local21:Triangle3D; _local1 = new Array(); _local2 = new Array(); _local3 = this.geometry.faces; _local5 = _local3.length; while ((_local4 = _local3[--_local5])) { _local6 = _local4.v0; _local7 = _local4.v1; _local8 = _local4.v2; _local9 = new Vertex3D(((_local6.x + _local7.x) / 2), ((_local6.y + _local7.y) / 2), ((_local6.z + _local7.z) / 2)); _local10 = new Vertex3D(((_local7.x + _local8.x) / 2), ((_local7.y + _local8.y) / 2), ((_local7.z + _local8.z) / 2)); _local11 = new Vertex3D(((_local8.x + _local6.x) / 2), ((_local8.y + _local6.y) / 2), ((_local8.z + _local6.z) / 2)); this.geometry.vertices.push(_local9, _local10, _local11); _local12 = _local4.uv[0]; _local13 = _local4.uv[1]; _local14 = _local4.uv[2]; _local15 = new NumberUV(((_local12.u + _local13.u) / 2), ((_local12.v + _local13.v) / 2)); _local16 = new NumberUV(((_local13.u + _local14.u) / 2), ((_local13.v + _local14.v) / 2)); _local17 = new NumberUV(((_local14.u + _local12.u) / 2), ((_local14.v + _local12.v) / 2)); _local18 = new Triangle3D(this, [_local6, _local9, _local11], _local4.material, [_local12, _local15, _local17]); _local19 = new Triangle3D(this, [_local9, _local7, _local10], _local4.material, [_local15, _local13, _local16]); _local20 = new Triangle3D(this, [_local11, _local10, _local8], _local4.material, [_local17, _local16, _local14]); _local21 = new Triangle3D(this, [_local9, _local10, _local11], _local4.material, [_local15, _local16, _local17]); _local2.push(_local18, _local19, _local20, _local21); }; this.geometry.faces = _local2; this.mergeVertices(); this.geometry.ready = true; } public function projectTexture(_arg1:String="x", _arg2:String="y"):void{ var _local3:Array; var _local4:Object; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:MaterialObject3D; var _local10:String; var _local11:Triangle3D; var _local12:Array; var _local13:Vertex3D; var _local14:Vertex3D; var _local15:Vertex3D; var _local16:NumberUV; var _local17:NumberUV; var _local18:NumberUV; _local3 = this.geometry.faces; _local4 = this.boundingBox(); _local5 = _local4.min[_arg1]; _local6 = _local4.size[_arg1]; _local7 = _local4.min[_arg2]; _local8 = _local4.size[_arg2]; _local9 = this.material; for (_local10 in _local3) { _local11 = _local3[Number(_local10)]; _local12 = _local11.vertices; _local13 = _local12[0]; _local14 = _local12[1]; _local15 = _local12[2]; _local16 = new NumberUV(((_local13[_arg1] - _local5) / _local6), ((_local13[_arg2] - _local7) / _local8)); _local17 = new NumberUV(((_local14[_arg1] - _local5) / _local6), ((_local14[_arg2] - _local7) / _local8)); _local18 = new NumberUV(((_local15[_arg1] - _local5) / _local6), ((_local15[_arg2] - _local7) / _local8)); _local11.uv = [_local16, _local17, _local18]; }; } } }//package org.papervision3d.core.geom
Section 168
//Vertices3D (org.papervision3d.core.geom.Vertices3D) package org.papervision3d.core.geom { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.culling.*; public class Vertices3D extends DisplayObject3D { public function Vertices3D(_arg1:Array, _arg2:String=null, _arg3:Object=null){ super(_arg2, new GeometryObject3D(), _arg3); this.geometry.vertices = ((_arg1) || (new Array())); } public function projectFrustum(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Matrix3D; var _local4:Rectangle; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Vertex3D; var _local27:Vertex3DInstance; var _local28:Array; var _local29:int; _local3 = this.view; _local4 = _arg2.camera.viewport; _local5 = _local3.n11; _local6 = _local3.n12; _local7 = _local3.n13; _local8 = _local3.n21; _local9 = _local3.n22; _local10 = _local3.n23; _local11 = _local3.n31; _local12 = _local3.n32; _local13 = _local3.n33; _local14 = _local3.n41; _local15 = _local3.n42; _local16 = _local3.n43; _local24 = (_local4.width / 2); _local25 = (_local4.height / 2); _local28 = this.geometry.vertices; _local29 = _local28.length; while ((_local26 = _local28[--_local29])) { _local17 = _local26.x; _local18 = _local26.y; _local19 = _local26.z; _local22 = ((((_local17 * _local11) + (_local18 * _local12)) + (_local19 * _local13)) + _local3.n34); _local23 = ((((_local17 * _local14) + (_local18 * _local15)) + (_local19 * _local16)) + _local3.n44); _local27 = _local26.vertex3DInstance; _local22 = (_local22 / _local23); if ((_local27.visible = (((_local22 > 0)) && ((_local22 < 1))))){ _local20 = (((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local3.n14) / _local23); _local21 = (((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local3.n24) / _local23); _local27.x = (_local20 * _local24); _local27.y = (_local21 * _local25); _local27.z = _local22; }; }; return (0); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Matrix3D; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Vertex3D; var _local20:Vertex3DInstance; var _local21:Number; var _local22:Array; var _local23:int; var _local24:Number; var _local25:Number; super.project(_arg1, _arg2); if (this.culled){ return (0); }; if ((_arg2.camera is IObjectCuller)){ return (projectFrustum(_arg1, _arg2)); }; _local3 = this.view; _local4 = _local3.n11; _local5 = _local3.n12; _local6 = _local3.n13; _local7 = _local3.n21; _local8 = _local3.n22; _local9 = _local3.n23; _local10 = _local3.n31; _local11 = _local3.n32; _local12 = _local3.n33; _local22 = this.geometry.vertices; _local23 = _local22.length; _local24 = _arg2.camera.focus; _local25 = (_local24 * _arg2.camera.zoom); while ((_local19 = _local22[--_local23])) { _local13 = _local19.x; _local14 = _local19.y; _local15 = _local19.z; _local18 = ((((_local13 * _local10) + (_local14 * _local11)) + (_local15 * _local12)) + _local3.n34); _local20 = _local19.vertex3DInstance; if ((_local20.visible = (_local18 > 0))){ _local16 = ((((_local13 * _local4) + (_local14 * _local5)) + (_local15 * _local6)) + _local3.n14); _local17 = ((((_local13 * _local7) + (_local14 * _local8)) + (_local15 * _local9)) + _local3.n24); _local21 = (_local25 / (_local24 + _local18)); _local20.x = (_local16 * _local21); _local20.y = (_local17 * _local21); _local20.z = _local18; }; }; return (0); } public function transformVertices(_arg1:Matrix3D):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Array; var _local15:int; var _local16:Vertex3D; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; _local2 = _arg1.n11; _local3 = _arg1.n12; _local4 = _arg1.n13; _local5 = _arg1.n21; _local6 = _arg1.n22; _local7 = _arg1.n23; _local8 = _arg1.n31; _local9 = _arg1.n32; _local10 = _arg1.n33; _local11 = _arg1.n14; _local12 = _arg1.n24; _local13 = _arg1.n34; _local14 = this.geometry.vertices; _local15 = _local14.length; while ((_local16 = _local14[--_local15])) { _local17 = _local16.x; _local18 = _local16.y; _local19 = _local16.z; _local20 = ((((_local17 * _local2) + (_local18 * _local3)) + (_local19 * _local4)) + _local11); _local21 = ((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local12); _local22 = ((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local13); _local16.x = _local20; _local16.y = _local21; _local16.z = _local22; }; } public function boundingBox():Object{ var _local1:Object; var _local2:Object; var _local3:String; var _local4:Vertex3D; _local1 = this.geometry.vertices; _local2 = new Object(); _local2.min = new Number3D(); _local2.max = new Number3D(); _local2.size = new Number3D(); for (_local3 in _local1) { _local4 = _local1[Number(_local3)]; _local2.min.x = ((_local2.min.x)==undefined) ? _local4.x : Math.min(_local4.x, _local2.min.x); _local2.max.x = ((_local2.max.x)==undefined) ? _local4.x : Math.max(_local4.x, _local2.max.x); _local2.min.y = ((_local2.min.y)==undefined) ? _local4.y : Math.min(_local4.y, _local2.min.y); _local2.max.y = ((_local2.max.y)==undefined) ? _local4.y : Math.max(_local4.y, _local2.max.y); _local2.min.z = ((_local2.min.z)==undefined) ? _local4.z : Math.min(_local4.z, _local2.min.z); _local2.max.z = ((_local2.max.z)==undefined) ? _local4.z : Math.max(_local4.z, _local2.max.z); }; _local2.size.x = (_local2.max.x - _local2.min.x); _local2.size.y = (_local2.max.y - _local2.min.y); _local2.size.z = (_local2.max.z - _local2.min.z); return (_local2); } } }//package org.papervision3d.core.geom
Section 169
//TriangleMaterial (org.papervision3d.core.material.TriangleMaterial) package org.papervision3d.core.material { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; public class TriangleMaterial extends MaterialObject3D implements ITriangleDrawer { override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ } } }//package org.papervision3d.core.material
Section 170
//Matrix3D (org.papervision3d.core.math.Matrix3D) package org.papervision3d.core.math { public class Matrix3D { public var n31:Number; public var n32:Number; public var n11:Number; public var n13:Number; public var n14:Number; public var n33:Number; public var n12:Number; public var n42:Number; public var n21:Number; public var n22:Number; public var n23:Number; public var n24:Number; public var n34:Number; public var n41:Number; public var n43:Number; public var n44:Number; private static var _cos:Function = Math.cos; private static var _sin:Function = Math.sin; private static var toDEGREES:Number = 57.2957795130823; private static var toRADIANS:Number = 0.0174532925199433; public function Matrix3D(_arg1:Array=null){ if (((!(_arg1)) || ((_arg1.length < 12)))){ n11 = (n22 = (n33 = (n44 = 1))); n12 = (n13 = (n14 = (n21 = (n23 = (n24 = (n31 = (n32 = (n34 = (n41 = (n42 = (n43 = 0))))))))))); } else { n11 = _arg1[0]; n12 = _arg1[1]; n13 = _arg1[2]; n14 = _arg1[3]; n21 = _arg1[4]; n22 = _arg1[5]; n23 = _arg1[6]; n24 = _arg1[7]; n31 = _arg1[8]; n32 = _arg1[9]; n33 = _arg1[10]; n34 = _arg1[11]; if (_arg1.length == 16){ n41 = _arg1[12]; n42 = _arg1[13]; n43 = _arg1[14]; n44 = _arg1[15]; }; }; } public function calculateMultiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n12; _local10 = _arg2.n12; _local11 = _arg1.n22; _local12 = _arg2.n22; _local13 = _arg1.n32; _local14 = _arg2.n32; _local15 = _arg1.n13; _local16 = _arg2.n13; _local17 = _arg1.n23; _local18 = _arg2.n23; _local19 = _arg1.n33; _local20 = _arg2.n33; this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8)); this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14)); this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20)); this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8)); this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14)); this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20)); this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8)); this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14)); this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20)); } public function get trace():Number{ return ((((this.n11 + this.n22) + this.n33) + 1)); } public function calculateMultiply4x4(_arg1:Matrix3D, _arg2:Matrix3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n41; _local10 = _arg2.n41; _local11 = _arg1.n12; _local12 = _arg2.n12; _local13 = _arg1.n22; _local14 = _arg2.n22; _local15 = _arg1.n32; _local16 = _arg2.n32; _local17 = _arg1.n42; _local18 = _arg2.n42; _local19 = _arg1.n13; _local20 = _arg2.n13; _local21 = _arg1.n23; _local22 = _arg2.n23; _local23 = _arg1.n33; _local24 = _arg2.n33; _local25 = _arg1.n43; _local26 = _arg2.n43; _local27 = _arg1.n14; _local28 = _arg2.n14; _local29 = _arg1.n24; _local30 = _arg2.n24; _local31 = _arg1.n34; _local32 = _arg2.n34; _local33 = _arg1.n44; _local34 = _arg2.n44; this.n11 = (((_local3 * _local4) + (_local11 * _local6)) + (_local19 * _local8)); this.n12 = (((_local3 * _local12) + (_local11 * _local14)) + (_local19 * _local16)); this.n13 = (((_local3 * _local20) + (_local11 * _local22)) + (_local19 * _local24)); this.n14 = ((((_local3 * _local28) + (_local11 * _local30)) + (_local19 * _local32)) + _local27); this.n21 = (((_local5 * _local4) + (_local13 * _local6)) + (_local21 * _local8)); this.n22 = (((_local5 * _local12) + (_local13 * _local14)) + (_local21 * _local16)); this.n23 = (((_local5 * _local20) + (_local13 * _local22)) + (_local21 * _local24)); this.n24 = ((((_local5 * _local28) + (_local13 * _local30)) + (_local21 * _local32)) + _local29); this.n31 = (((_local7 * _local4) + (_local15 * _local6)) + (_local23 * _local8)); this.n32 = (((_local7 * _local12) + (_local15 * _local14)) + (_local23 * _local16)); this.n33 = (((_local7 * _local20) + (_local15 * _local22)) + (_local23 * _local24)); this.n34 = ((((_local7 * _local28) + (_local15 * _local30)) + (_local23 * _local32)) + _local31); this.n41 = (((_local9 * _local4) + (_local17 * _local6)) + (_local25 * _local8)); this.n42 = (((_local9 * _local12) + (_local17 * _local14)) + (_local25 * _local16)); this.n43 = (((_local9 * _local20) + (_local17 * _local22)) + (_local25 * _local24)); this.n44 = ((((_local9 * _local28) + (_local17 * _local30)) + (_local25 * _local32)) + _local33); } public function get det():Number{ return ((((((this.n11 * this.n22) - (this.n21 * this.n12)) * this.n33) - (((this.n11 * this.n32) - (this.n31 * this.n12)) * this.n23)) + (((this.n21 * this.n32) - (this.n31 * this.n22)) * this.n13))); } public function copy3x3(_arg1:Matrix3D):Matrix3D{ this.n11 = _arg1.n11; this.n12 = _arg1.n12; this.n13 = _arg1.n13; this.n21 = _arg1.n21; this.n22 = _arg1.n22; this.n23 = _arg1.n23; this.n31 = _arg1.n31; this.n32 = _arg1.n32; this.n33 = _arg1.n33; return (this); } public function calculateAdd(_arg1:Matrix3D, _arg2:Matrix3D):void{ this.n11 = (_arg1.n11 + _arg2.n11); this.n12 = (_arg1.n12 + _arg2.n12); this.n13 = (_arg1.n13 + _arg2.n13); this.n14 = (_arg1.n14 + _arg2.n14); this.n21 = (_arg1.n21 + _arg2.n21); this.n22 = (_arg1.n22 + _arg2.n22); this.n23 = (_arg1.n23 + _arg2.n23); this.n24 = (_arg1.n24 + _arg2.n24); this.n31 = (_arg1.n31 + _arg2.n31); this.n32 = (_arg1.n32 + _arg2.n32); this.n33 = (_arg1.n33 + _arg2.n33); this.n34 = (_arg1.n34 + _arg2.n34); } public function calculateMultiply(_arg1:Matrix3D, _arg2:Matrix3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n12; _local10 = _arg2.n12; _local11 = _arg1.n22; _local12 = _arg2.n22; _local13 = _arg1.n32; _local14 = _arg2.n32; _local15 = _arg1.n13; _local16 = _arg2.n13; _local17 = _arg1.n23; _local18 = _arg2.n23; _local19 = _arg1.n33; _local20 = _arg2.n33; _local21 = _arg1.n14; _local22 = _arg2.n14; _local23 = _arg1.n24; _local24 = _arg2.n24; _local25 = _arg1.n34; _local26 = _arg2.n34; this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8)); this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14)); this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20)); this.n14 = ((((_local3 * _local22) + (_local9 * _local24)) + (_local15 * _local26)) + _local21); this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8)); this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14)); this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20)); this.n24 = ((((_local5 * _local22) + (_local11 * _local24)) + (_local17 * _local26)) + _local23); this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8)); this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14)); this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20)); this.n34 = ((((_local7 * _local22) + (_local13 * _local24)) + (_local19 * _local26)) + _local25); } public function calculateInverse(_arg1:Matrix3D):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local2 = _arg1.det; if (Math.abs(_local2) > 0.001){ _local2 = (1 / _local2); _local3 = _arg1.n11; _local4 = _arg1.n21; _local5 = _arg1.n31; _local6 = _arg1.n12; _local7 = _arg1.n22; _local8 = _arg1.n32; _local9 = _arg1.n13; _local10 = _arg1.n23; _local11 = _arg1.n33; _local12 = _arg1.n14; _local13 = _arg1.n24; _local14 = _arg1.n34; this.n11 = (_local2 * ((_local7 * _local11) - (_local8 * _local10))); this.n12 = (-(_local2) * ((_local6 * _local11) - (_local8 * _local9))); this.n13 = (_local2 * ((_local6 * _local10) - (_local7 * _local9))); this.n14 = (-(_local2) * (((_local6 * ((_local10 * _local14) - (_local11 * _local13))) - (_local7 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local8 * ((_local9 * _local13) - (_local10 * _local12))))); this.n21 = (-(_local2) * ((_local4 * _local11) - (_local5 * _local10))); this.n22 = (_local2 * ((_local3 * _local11) - (_local5 * _local9))); this.n23 = (-(_local2) * ((_local3 * _local10) - (_local4 * _local9))); this.n24 = (_local2 * (((_local3 * ((_local10 * _local14) - (_local11 * _local13))) - (_local4 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local5 * ((_local9 * _local13) - (_local10 * _local12))))); this.n31 = (_local2 * ((_local4 * _local8) - (_local5 * _local7))); this.n32 = (-(_local2) * ((_local3 * _local8) - (_local5 * _local6))); this.n33 = (_local2 * ((_local3 * _local7) - (_local4 * _local6))); this.n34 = (-(_local2) * (((_local3 * ((_local7 * _local14) - (_local8 * _local13))) - (_local4 * ((_local6 * _local14) - (_local8 * _local12)))) + (_local5 * ((_local6 * _local13) - (_local7 * _local12))))); }; } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + ((((((((int((n11 * 1000)) / 1000) + "\t\t") + (int((n12 * 1000)) / 1000)) + "\t\t") + (int((n13 * 1000)) / 1000)) + "\t\t") + (int((n14 * 1000)) / 1000)) + "\n")); _local1 = (_local1 + ((((((((int((n21 * 1000)) / 1000) + "\t\t") + (int((n22 * 1000)) / 1000)) + "\t\t") + (int((n23 * 1000)) / 1000)) + "\t\t") + (int((n24 * 1000)) / 1000)) + "\n")); _local1 = (_local1 + ((((((((int((n31 * 1000)) / 1000) + "\t\t") + (int((n32 * 1000)) / 1000)) + "\t\t") + (int((n33 * 1000)) / 1000)) + "\t\t") + (int((n34 * 1000)) / 1000)) + "\n")); _local1 = (_local1 + ((((((((int((n41 * 1000)) / 1000) + "\t\t") + (int((n42 * 1000)) / 1000)) + "\t\t") + (int((n43 * 1000)) / 1000)) + "\t\t") + (int((n44 * 1000)) / 1000)) + "\n")); return (_local1); } public function copy(_arg1:Matrix3D):Matrix3D{ this.n11 = _arg1.n11; this.n12 = _arg1.n12; this.n13 = _arg1.n13; this.n14 = _arg1.n14; this.n21 = _arg1.n21; this.n22 = _arg1.n22; this.n23 = _arg1.n23; this.n24 = _arg1.n24; this.n31 = _arg1.n31; this.n32 = _arg1.n32; this.n33 = _arg1.n33; this.n34 = _arg1.n34; return (this); } public static function rotationMatrixWithReference(_arg1:Number3D, _arg2:Number, _arg3:Number3D):Matrix3D{ var _local4:Matrix3D; _local4 = Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z); Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z).calculateMultiply(_local4, Matrix3D.rotationMatrix(_arg1.x, _arg1.y, _arg1.z, _arg2)); _local4.calculateMultiply(_local4, Matrix3D.translationMatrix(-(_arg3.x), _arg3.y, -(_arg3.z))); return (_local4); } public static function multiplyVector3x3(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)); _arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)); _arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)); } public static function multiplyVector4x4(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _local6 = (1 / ((((_local3 * _arg1.n41) + (_local4 * _arg1.n42)) + (_local5 * _arg1.n43)) + _arg1.n44)); _arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14); _arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24); _arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34); _arg2.x = (_arg2.x * _local6); _arg2.y = (_arg2.y * _local6); _arg2.z = (_arg2.z * _local6); } public static function multiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateMultiply3x3(_arg1, _arg2); return (_local3); } public static function normalizeQuaternion(_arg1:Object):Object{ var _local2:Number; _local2 = magnitudeQuaternion(_arg1); _arg1.x = (_arg1.x / _local2); _arg1.y = (_arg1.y / _local2); _arg1.z = (_arg1.z / _local2); _arg1.w = (_arg1.w / _local2); return (_arg1); } public static function multiplyVector(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14); _arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24); _arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34); } public static function axis2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{ var _local5:Number; var _local6:Number; var _local7:Object; _local5 = Math.sin((_arg4 / 2)); _local6 = Math.cos((_arg4 / 2)); _local7 = new Object(); _local7.x = (_arg1 * _local5); _local7.y = (_arg2 * _local5); _local7.z = (_arg3 * _local5); _local7.w = _local6; return (normalizeQuaternion(_local7)); } public static function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{ var _local4:Matrix3D; _local4 = IDENTITY; _local4.n14 = _arg1; _local4.n24 = _arg2; _local4.n34 = _arg3; return (_local4); } public static function magnitudeQuaternion(_arg1:Object):Number{ return (Math.sqrt(((((_arg1.w * _arg1.w) + (_arg1.x * _arg1.x)) + (_arg1.y * _arg1.y)) + (_arg1.z * _arg1.z)))); } public static function euler2quaternion(_arg1:Number, _arg2:Number, _arg3:Number):Object{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Object; _local4 = Math.sin((_arg1 * 0.5)); _local5 = Math.cos((_arg1 * 0.5)); _local6 = Math.sin((_arg2 * 0.5)); _local7 = Math.cos((_arg2 * 0.5)); _local8 = Math.sin((_arg3 * 0.5)); _local9 = Math.cos((_arg3 * 0.5)); _local10 = (_local5 * _local7); _local11 = (_local4 * _local6); _local12 = new Object(); _local12.x = ((_local8 * _local10) - (_local9 * _local11)); _local12.y = (((_local9 * _local4) * _local7) + ((_local8 * _local5) * _local6)); _local12.z = (((_local9 * _local5) * _local6) - ((_local8 * _local4) * _local7)); _local12.w = ((_local9 * _local10) + (_local8 * _local11)); return (_local12); } public static function rotationX(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n22 = _local3; _local2.n23 = -(_local4); _local2.n32 = _local4; _local2.n33 = _local3; return (_local2); } public static function rotationY(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n11 = _local3; _local2.n13 = -(_local4); _local2.n31 = _local4; _local2.n33 = _local3; return (_local2); } public static function rotationZ(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n11 = _local3; _local2.n12 = -(_local4); _local2.n21 = _local4; _local2.n22 = _local3; return (_local2); } public static function clone(_arg1:Matrix3D):Matrix3D{ return (new Matrix3D([_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14, _arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24, _arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34])); } public static function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix3D{ var _local5:Matrix3D; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local5 = IDENTITY; _local6 = Math.cos(_arg4); _local7 = Math.sin(_arg4); _local8 = (1 - _local6); _local9 = ((_arg1 * _arg2) * _local8); _local10 = ((_arg2 * _arg3) * _local8); _local11 = ((_arg1 * _arg3) * _local8); _local12 = (_local7 * _arg3); _local13 = (_local7 * _arg2); _local14 = (_local7 * _arg1); _local5.n11 = (_local6 + ((_arg1 * _arg1) * _local8)); _local5.n12 = (-(_local12) + _local9); _local5.n13 = (_local13 + _local11); _local5.n21 = (_local12 + _local9); _local5.n22 = (_local6 + ((_arg2 * _arg2) * _local8)); _local5.n23 = (-(_local14) + _local10); _local5.n31 = (-(_local13) + _local11); _local5.n32 = (_local14 + _local10); _local5.n33 = (_local6 + ((_arg3 * _arg3) * _local8)); return (_local5); } public static function add(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateAdd(_arg1, _arg2); return (_local3); } public static function rotateAxis(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)); _arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)); _arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)); _arg2.normalize(); } public static function multiply(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateMultiply(_arg1, _arg2); return (_local3); } public static function multiplyQuaternion(_arg1:Object, _arg2:Object):Object{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Object; _local3 = _arg1.x; _local4 = _arg1.y; _local5 = _arg1.z; _local6 = _arg1.w; _local7 = _arg2.x; _local8 = _arg2.y; _local9 = _arg2.z; _local10 = _arg2.w; _local11 = new Object(); _local11.x = ((((_local6 * _local7) + (_local3 * _local10)) + (_local4 * _local9)) - (_local5 * _local8)); _local11.y = ((((_local6 * _local8) + (_local4 * _local10)) + (_local5 * _local7)) - (_local3 * _local9)); _local11.z = ((((_local6 * _local9) + (_local5 * _local10)) + (_local3 * _local8)) - (_local4 * _local7)); _local11.w = ((((_local6 * _local10) - (_local3 * _local7)) - (_local4 * _local8)) - (_local5 * _local9)); return (_local11); } public static function euler2matrix(_arg1:Number3D):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local2 = IDENTITY; _local3 = (_arg1.x * toRADIANS); _local4 = (_arg1.y * toRADIANS); _local5 = (_arg1.z * toRADIANS); _local6 = Math.cos(_local3); _local7 = Math.sin(_local3); _local8 = Math.cos(_local4); _local9 = Math.sin(_local4); _local10 = Math.cos(_local5); _local11 = Math.sin(_local5); _local12 = (_local6 * _local9); _local13 = (_local7 * _local9); _local2.n11 = (_local8 * _local10); _local2.n12 = (-(_local8) * _local11); _local2.n13 = _local9; _local2.n21 = ((_local13 * _local10) + (_local6 * _local11)); _local2.n22 = ((-(_local13) * _local11) + (_local6 * _local10)); _local2.n23 = (-(_local7) * _local8); _local2.n31 = ((-(_local12) * _local10) + (_local7 * _local11)); _local2.n32 = ((_local12 * _local11) + (_local7 * _local10)); _local2.n33 = (_local6 * _local8); return (_local2); } public static function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{ var _local4:Matrix3D; _local4 = IDENTITY; _local4.n11 = _arg1; _local4.n22 = _arg2; _local4.n33 = _arg3; return (_local4); } public static function quaternion2matrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix3D{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Matrix3D; _local5 = (_arg1 * _arg1); _local6 = (_arg1 * _arg2); _local7 = (_arg1 * _arg3); _local8 = (_arg1 * _arg4); _local9 = (_arg2 * _arg2); _local10 = (_arg2 * _arg3); _local11 = (_arg2 * _arg4); _local12 = (_arg3 * _arg3); _local13 = (_arg3 * _arg4); _local14 = IDENTITY; _local14.n11 = (1 - (2 * (_local9 + _local12))); _local14.n12 = (2 * (_local6 - _local13)); _local14.n13 = (2 * (_local7 + _local11)); _local14.n21 = (2 * (_local6 + _local13)); _local14.n22 = (1 - (2 * (_local5 + _local12))); _local14.n23 = (2 * (_local10 - _local8)); _local14.n31 = (2 * (_local7 - _local11)); _local14.n32 = (2 * (_local10 + _local8)); _local14.n33 = (1 - (2 * (_local5 + _local9))); return (_local14); } public static function inverse(_arg1:Matrix3D):Matrix3D{ var _local2:Matrix3D; _local2 = new (Matrix3D); _local2.calculateInverse(_arg1); return (_local2); } public static function matrix2euler(_arg1:Matrix3D):Number3D{ var _local2:Number3D; var _local3:Number3D; var _local4:Number3D; var _local5:Number3D; var _local6:Matrix3D; var _local7:Matrix3D; var _local8:Matrix3D; var _local9:Number; _local2 = new Number3D(); _local3 = new Number3D(_arg1.n11, _arg1.n21, _arg1.n31); _local4 = new Number3D(_arg1.n12, _arg1.n22, _arg1.n32); _local5 = new Number3D(_arg1.n13, _arg1.n23, _arg1.n33); _local3.normalize(); _local4.normalize(); _local5.normalize(); _local6 = new Matrix3D([_local3.x, _local4.x, _local5.x, 0, _local3.y, _local4.y, _local5.y, 0, _local3.z, _local4.z, _local5.z, 0]); _local2.x = Math.atan2(_local6.n23, _local6.n33); _local7 = Matrix3D.rotationX(-(_local2.x)); _local8 = Matrix3D.multiply(_local7, _local6); _local9 = Math.sqrt(((_local8.n11 * _local8.n11) + (_local8.n21 * _local8.n21))); _local2.y = Math.atan2(-(_local8.n31), _local9); _local2.z = Math.atan2(-(_local8.n12), _local8.n11); if (_local2.x == Math.PI){ if (_local2.y > 0){ _local2.y = (_local2.y - Math.PI); } else { _local2.y = (_local2.y + Math.PI); }; _local2.x = 0; _local2.z = (_local2.z + Math.PI); }; _local2.x = (_local2.x * toDEGREES); _local2.y = (_local2.y * toDEGREES); _local2.z = (_local2.z * toDEGREES); return (_local2); } public static function get IDENTITY():Matrix3D{ return (new Matrix3D([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])); } } }//package org.papervision3d.core.math
Section 171
//Number2D (org.papervision3d.core.math.Number2D) package org.papervision3d.core.math { import org.papervision3d.*; public class Number2D { public var x:Number; public var y:Number; public static const DEGTORAD:Number = 0.0174532925199433; public static const RADTODEG:Number = 57.2957795130823; public function Number2D(_arg1:Number=0, _arg2:Number=0){ this.x = _arg1; this.y = _arg2; } public function reverse():void{ this.x = -(this.x); this.y = -(this.y); } public function set(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function isModuloGreaterThan(_arg1:Number):Boolean{ return ((moduloSquared > (_arg1 * _arg1))); } public function toString():String{ var _local1:Number; var _local2:Number; _local1 = (Math.round((this.x * 1000)) / 1000); _local2 = (Math.round((this.y * 1000)) / 1000); return ((((("[" + _local1) + ", ") + _local2) + "]")); } public function get moduloSquared():Number{ return (((this.x * this.x) + (this.y * this.y))); } public function normalise():void{ var _local1:Number; _local1 = this.modulo; this.x = (this.x / _local1); this.y = (this.y / _local1); } public function get modulo():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function copyTo(_arg1:Number2D):void{ _arg1.x = this.x; _arg1.y = this.y; } public function angle():Number{ if (Papervision3D.useDEGREES){ return ((RADTODEG * Math.atan2(y, x))); }; return (Math.atan2(y, x)); } public function rotate(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number2D; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * DEGTORAD); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = clone(); this.x = ((_local4.x * _local2) - (_local4.y * _local3)); this.y = ((_local4.x * _local3) + (_local4.y * _local2)); } public function isModuloLessThan(_arg1:Number):Boolean{ return ((moduloSquared < (_arg1 * _arg1))); } public function clone():Number2D{ return (new Number2D(this.x, this.y)); } public function isModuloEqualTo(_arg1:Number):Boolean{ return ((moduloSquared == (_arg1 * _arg1))); } public function copyFrom(_arg1:Number2D):void{ this.x = _arg1.x; this.y = _arg1.y; } public static function multiplyScalar(_arg1:Number2D, _arg2:Number):Number2D{ return (new Number2D((_arg1.x * _arg2), (_arg1.y * _arg2))); } public static function add(_arg1:Number2D, _arg2:Number2D):Number2D{ return (new Number2D((_arg1.x = (_arg1.x + _arg2.x)), (_arg1.y + _arg2.y))); } public static function dot(_arg1:Number2D, _arg2:Number2D):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function subtract(_arg1:Number2D, _arg2:Number2D):Number2D{ return (new Number2D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y))); } } }//package org.papervision3d.core.math
Section 172
//Number3D (org.papervision3d.core.math.Number3D) package org.papervision3d.core.math { public class Number3D { public var x:Number; public var y:Number; public var z:Number; public function Number3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function set(_arg1:Number, _arg2:Number, _arg3:Number):void{ x = _arg1; y = _arg2; z = _arg3; } public function isModuloLessThan(_arg1:Number):Boolean{ return ((moduloSquared < (_arg1 * _arg1))); } public function toString():String{ return (((((("x:" + x) + " y:") + y) + " z:") + z)); } public function normalize():void{ var _local1:Number; _local1 = this.modulo; if (((!((_local1 == 0))) && (!((_local1 == 1))))){ this.x = (this.x / _local1); this.y = (this.y / _local1); this.z = (this.z / _local1); }; } public function get moduloSquared():Number{ return ((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z))); } public function get modulo():Number{ return (Math.sqrt((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z)))); } public function copyTo(_arg1:Number3D):void{ _arg1.x = x; _arg1.y = y; _arg1.z = z; } public function isModuloGreaterThan(_arg1:Number):Boolean{ return ((moduloSquared > (_arg1 * _arg1))); } public function clone():Number3D{ return (new Number3D(this.x, this.y, this.z)); } public function isModuloEqualTo(_arg1:Number):Boolean{ return ((moduloSquared == (_arg1 * _arg1))); } public static function sub(_arg1:Number3D, _arg2:Number3D):Number3D{ return (new Number3D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z))); } public static function add(_arg1:Number3D, _arg2:Number3D):Number3D{ return (new Number3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z))); } public static function cross(_arg1:Number3D, _arg2:Number3D):Number3D{ return (new Number3D(((_arg2.y * _arg1.z) - (_arg2.z * _arg1.y)), ((_arg2.z * _arg1.x) - (_arg2.x * _arg1.z)), ((_arg2.x * _arg1.y) - (_arg2.y * _arg1.x)))); } public static function get ZERO():Number3D{ return (new Number3D(0, 0, 0)); } public static function dot(_arg1:Number3D, _arg2:Number3D):Number{ return ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg2.z * _arg1.z))); } } }//package org.papervision3d.core.math
Section 173
//NumberUV (org.papervision3d.core.math.NumberUV) package org.papervision3d.core.math { public class NumberUV { public var u:Number; public var v:Number; public function NumberUV(_arg1:Number=0, _arg2:Number=0){ this.u = _arg1; this.v = _arg2; } public function toString():String{ return (((("u:" + u) + " v:") + v)); } public function clone():NumberUV{ return (new NumberUV(this.u, this.v)); } public static function get ZERO():NumberUV{ return (new NumberUV(0, 0)); } } }//package org.papervision3d.core.math
Section 174
//pv3dview (org.papervision3d.core.ns.pv3dview) package org.papervision3d.core.ns { public namespace pv3dview; }//package org.papervision3d.core.ns
Section 175
//CameraObject3D (org.papervision3d.core.proto.CameraObject3D) package org.papervision3d.core.proto { import org.papervision3d.objects.*; import org.papervision3d.core.math.*; import flash.geom.*; public class CameraObject3D extends DisplayObject3D { public var eye:Matrix3D; public var viewport:Rectangle; public var zoom:Number; public var sort:Boolean; public var focus:Number; public static const TYPE:String = "ABSTRACT"; public static var DEFAULT_POS:Number3D = new Number3D(0, 0, -1000); private static var _flipY:Matrix3D = Matrix3D.scaleMatrix(1, -1, 1); public function CameraObject3D(_arg1:Number=3, _arg2:Number=500, _arg3:Object=null){ this.x = (_arg3) ? ((_arg3.x) || (DEFAULT_POS.x)) : DEFAULT_POS.x; this.y = (_arg3) ? ((_arg3.y) || (DEFAULT_POS.y)) : DEFAULT_POS.y; this.z = (_arg3) ? ((_arg3.z) || (DEFAULT_POS.z)) : DEFAULT_POS.z; this.zoom = _arg1; this.focus = _arg2; this.eye = Matrix3D.IDENTITY; this.sort = (_arg3) ? !((_arg3.sort == false)) : true; } public function transformView(_arg1:Matrix3D=null):void{ this.eye = Matrix3D.inverse(Matrix3D.multiply(((_arg1) || (this.transform)), _flipY)); } public function pan(_arg1:Number):void{ super.yaw(_arg1); } public function tilt(_arg1:Number):void{ super.pitch(_arg1); } } }//package org.papervision3d.core.proto
Section 176
//DisplayObjectContainer3D (org.papervision3d.core.proto.DisplayObjectContainer3D) package org.papervision3d.core.proto { import flash.events.*; import org.papervision3d.materials.utils.*; import org.papervision3d.objects.*; import flash.utils.*; import org.papervision3d.*; public class DisplayObjectContainer3D extends EventDispatcher { protected var _children:Dictionary; public var root:DisplayObjectContainer3D; private var _childrenTotal:int; protected var _childrenByName:Object; public function DisplayObjectContainer3D():void{ this._children = new Dictionary(false); this._childrenByName = new Dictionary(true); this._childrenTotal = 0; } public function getChildByName(_arg1:String):DisplayObject3D{ return (this._childrenByName[_arg1]); } public function addCollada(_arg1:String, _arg2:MaterialsList=null, _arg3:Number=1):void{ Papervision3D.log("The addCollada() method has been deprecated. Use addChildren( new Collada( filename ) )"); } public function removeChildByName(_arg1:String):DisplayObject3D{ return (removeChild(getChildByName(_arg1))); } public function get numChildren():int{ return (this._childrenTotal); } override public function toString():String{ return (childrenList()); } public function addChildren(_arg1:DisplayObject3D):DisplayObjectContainer3D{ var _local2:DisplayObject3D; for each (_local2 in _arg1.children) { _arg1.removeChild(_local2); this.addChild(_local2); }; return (this); } public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ if (_arg1){ delete this._childrenByName[this._children[_arg1]]; delete this._children[_arg1]; _arg1.parent = null; _arg1.root = null; return (_arg1); }; if (_arg1 == null){ trace(("DisplayObjectContainer.removeChild() : is " + _arg1)); }; return (null); } public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ _arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id))); this._children[_arg1] = _arg2; this._childrenByName[_arg2] = _arg1; this._childrenTotal++; _arg1.parent = this; _arg1.root = this.root; return (_arg1); } public function childrenList():String{ var _local1:String; var _local2:String; _local1 = ""; for (_local2 in this._children) { _local1 = (_local1 + (_local2 + "\n")); }; return (_local1); } public function get children():Object{ return (this._childrenByName); } } }//package org.papervision3d.core.proto
Section 177
//GeometryObject3D (org.papervision3d.core.proto.GeometryObject3D) package org.papervision3d.core.proto { import flash.events.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import flash.utils.*; public class GeometryObject3D extends EventDispatcher { protected var _boundingSphere2:Number; protected var _boundingSphereDirty:Boolean;// = true public var dirty:Boolean; public var _ready:Boolean;// = false public var faces:Array; public var vertices:Array; public function GeometryObject3D(_arg1:Object=null):void{ _ready = false; _boundingSphereDirty = true; super(); this.dirty = true; } public function transformVertices(_arg1:Matrix3D):void{ } public function get boundingSphere2():Number{ if (_boundingSphereDirty){ return (getBoundingSphere2()); }; return (_boundingSphere2); } public function getBoundingSphere2():Number{ var _local1:Number; var _local2:Number; var _local3:Vertex3D; _local1 = 0; for each (_local3 in this.vertices) { _local2 = (((_local3.x * _local3.x) + (_local3.y * _local3.y)) + (_local3.z * _local3.z)); _local1 = ((_local2)>_local1) ? _local2 : _local1; }; this._boundingSphereDirty = false; return ((_boundingSphere2 = _local1)); } private function createVertexNormals():void{ var _local1:Dictionary; var _local2:Triangle3D; var _local3:Vertex3D; _local1 = new Dictionary(true); for each (_local2 in faces) { _local2.v0.connectedFaces[_local2] = _local2; _local2.v1.connectedFaces[_local2] = _local2; _local2.v2.connectedFaces[_local2] = _local2; _local1[_local2.v0] = _local2.v0; _local1[_local2.v1] = _local2.v1; _local1[_local2.v2] = _local2.v2; }; for each (_local3 in _local1) { _local3.calculateNormal(); }; } public function transformUV(_arg1:MaterialObject3D):void{ var _local2:String; if (_arg1.bitmap){ for (_local2 in this.faces) { faces[_local2].transformUV(_arg1); }; }; } public function set ready(_arg1:Boolean):void{ if (_arg1){ createVertexNormals(); this.dirty = false; }; _ready = _arg1; } public function get ready():Boolean{ return (_ready); } } }//package org.papervision3d.core.proto
Section 178
//MaterialObject3D (org.papervision3d.core.proto.MaterialObject3D) package org.papervision3d.core.proto { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.material.*; import flash.geom.*; import org.papervision3d.materials.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; public class MaterialObject3D extends EventDispatcher implements ITriangleDrawer { public var widthOffset:Number;// = 0 public var name:String; public var scene:SceneObject3D; public var heightOffset:Number;// = 0 public var fillAlpha:Number;// = 0 public var fillColor:Number; public var id:Number; protected var objects:Dictionary; public var invisible:Boolean;// = false public var smooth:Boolean;// = false public var bitmap:BitmapData; public var lineColor:Number; public var lineAlpha:Number;// = 0 public var oneSide:Boolean;// = true public var lineThickness:Number;// = 1 public var opposite:Boolean;// = false public var maxU:Number; public var tiled:Boolean;// = false public var maxV:Number; public var interactive:Boolean;// = false public static var DEFAULT_COLOR:int = 0; public static var DEBUG_COLOR:int = 0xFF00FF; private static var _totalMaterialObjects:Number = 0; public function MaterialObject3D(){ smooth = false; tiled = false; lineColor = DEFAULT_COLOR; lineAlpha = 0; lineThickness = 1; fillColor = DEFAULT_COLOR; fillAlpha = 0; oneSide = true; invisible = false; opposite = false; widthOffset = 0; heightOffset = 0; interactive = false; super(); this.id = _totalMaterialObjects++; MaterialManager.registerMaterial(this); objects = new Dictionary(); } public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ } public function destroy():void{ MaterialManager.unRegisterMaterial(this); } public function get doubleSided():Boolean{ return (!(this.oneSide)); } public function unregisterObject(_arg1:DisplayObject3D):void{ if (objects[_arg1] != null){ delete objects[_arg1]; }; } public function set doubleSided(_arg1:Boolean):void{ this.oneSide = !(_arg1); } public function registerObject(_arg1:DisplayObject3D):void{ objects[_arg1] = _arg1; } public function updateBitmap():void{ } override public function toString():String{ return (((((("[MaterialObject3D] bitmap:" + this.bitmap) + " lineColor:") + this.lineColor) + " fillColor:") + fillColor)); } public function copy(_arg1:MaterialObject3D):void{ this.bitmap = _arg1.bitmap; this.smooth = _arg1.smooth; this.lineColor = _arg1.lineColor; this.lineAlpha = _arg1.lineAlpha; this.fillColor = _arg1.fillColor; this.fillAlpha = _arg1.fillAlpha; this.oneSide = _arg1.oneSide; this.opposite = _arg1.opposite; this.invisible = _arg1.invisible; this.scene = _arg1.scene; this.name = _arg1.name; this.maxU = _arg1.maxU; this.maxV = _arg1.maxV; } public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new MaterialObject3D(); _local1.copy(this); return (_local1); } public static function get DEFAULT():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new WireframeMaterial(); _local1.lineColor = (0xFFFFFF * Math.random()); _local1.lineAlpha = 1; _local1.fillColor = DEFAULT_COLOR; _local1.fillAlpha = 1; _local1.doubleSided = false; return (_local1); } public static function get DEBUG():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new (MaterialObject3D); _local1.lineColor = (0xFFFFFF * Math.random()); _local1.lineAlpha = 1; _local1.fillColor = DEBUG_COLOR; _local1.fillAlpha = 0.37; _local1.doubleSided = true; return (_local1); } } }//package org.papervision3d.core.proto
Section 179
//SceneObject3D (org.papervision3d.core.proto.SceneObject3D) package org.papervision3d.core.proto { import org.papervision3d.materials.utils.*; import org.papervision3d.core.animation.core.*; import org.papervision3d.objects.*; import org.papervision3d.*; public class SceneObject3D extends DisplayObjectContainer3D { public var objects:Array; public var animated:Boolean;// = false public var animationEngine:AnimationEngine; public var materials:MaterialsList; public function SceneObject3D(){ animated = false; super(); this.objects = new Array(); this.materials = new MaterialsList(); Papervision3D.log((((((Papervision3D.NAME + " ") + Papervision3D.VERSION) + " (") + Papervision3D.DATE) + ")\n")); trace("PV3D 2.0a WARNING : DO NOT USE WITH BETA 9 PLAYERS. ONLY WITH OFFICIAL TO TEST."); trace("CHECK YOUR VERSION!"); this.root = this; } override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ var _local3:DisplayObject3D; _local3 = super.addChild(_arg1, (_arg2) ? _arg2 : _arg1.name); _arg1.scene = this; this.objects.push(_local3); return (_local3); } override public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ var _local2:int; super.removeChild(_arg1); _local2 = 0; while (_local2 < this.objects.length) { if (this.objects[_local2] === _arg1){ _arg1.scene = null; this.objects.splice(_local2, 1); return (_arg1); }; _local2++; }; return (_arg1); } } }//package org.papervision3d.core.proto
Section 180
//AbstractRenderListItem (org.papervision3d.core.render.command.AbstractRenderListItem) package org.papervision3d.core.render.command { import org.papervision3d.core.render.data.*; public class AbstractRenderListItem implements IRenderListItem { public var screenDepth:Number; public function render(_arg1:RenderSessionData):void{ } } }//package org.papervision3d.core.render.command
Section 181
//IRenderListItem (org.papervision3d.core.render.command.IRenderListItem) package org.papervision3d.core.render.command { import org.papervision3d.core.render.data.*; public interface IRenderListItem { function render(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.command
Section 182
//RenderableListItem (org.papervision3d.core.render.command.RenderableListItem) package org.papervision3d.core.render.command { import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; public class RenderableListItem extends AbstractRenderListItem { public var renderableInstance:IRenderable; public var renderable:Class; public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ return (_arg2); } } }//package org.papervision3d.core.render.command
Section 183
//RenderLine (org.papervision3d.core.render.command.RenderLine) package org.papervision3d.core.render.command { import org.papervision3d.core.render.data.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.materials.special.*; public class RenderLine extends RenderableListItem implements IRenderListItem { public var renderer:LineMaterial; public var line:Line3D; private static var mouseVector:Number3D = Number3D.ZERO; private static var lineVector:Number3D = Number3D.ZERO; public function RenderLine(_arg1:Line3D){ this.renderable = Line3D; this.renderableInstance = _arg1; this.line = _arg1; } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ var _local3:Number; var _local4:Number2D; var _local5:Number2D; var _local6:Number2D; var _local7:Number2D; var _local8:Number; var _local9:Number2D; var _local10:Number2D; var _local11:Number; var _local12:Number3D; if (renderer.interactive){ _local3 = line.size; _local4 = new Number2D(_arg1.x, _arg1.y); _local5 = new Number2D(line.v0.vertex3DInstance.x, line.v0.vertex3DInstance.y); _local6 = new Number2D(line.v1.vertex3DInstance.x, line.v1.vertex3DInstance.y); _local7 = Number2D.subtract(_local6, _local5); _local8 = ((((_local4.x - _local5.x) * (_local6.x - _local5.x)) + ((_local4.y - _local5.y) * (_local6.y - _local5.y))) / ((_local7.x * _local7.x) + (_local7.y * _local7.y))); if ((((_local8 > 0)) && ((_local8 < 1)))){ _local9 = Number2D.multiplyScalar(_local7, _local8); _local9 = Number2D.add(_local9, _local5); _local10 = Number2D.subtract(_local9, _local4); _local11 = ((_local10.x * _local10.x) + (_local10.y * _local10.y)); if (_local11 < (_local3 * _local3)){ _arg2.displayObject3D = line.instance; _arg2.material = renderer; _arg2.renderable = line; _arg2.hasHit = true; _local12 = new Number3D((line.v1.x - line.v0.x), (line.v1.y - line.v0.y), (line.v1.x - line.v0.x)); new Number3D((line.v1.x - line.v0.x), (line.v1.y - line.v0.y), (line.v1.x - line.v0.x)).x = (_local12.x * _local8); _local12.y = (_local12.y * _local8); _local12.z = (_local12.z * _local8); _local12.x = (_local12.x + line.v0.x); _local12.y = (_local12.y + line.v0.y); _local12.z = (_local12.z + line.v0.z); _arg2.x = _local12.x; _arg2.y = _local12.y; _arg2.z = _local12.z; _arg2.u = 0; _arg2.v = 0; return (_arg2); }; }; }; return (_arg2); } override public function render(_arg1:RenderSessionData):void{ renderer.drawLine(line, _arg1.container.graphics, _arg1); } } }//package org.papervision3d.core.render.command
Section 184
//RenderParticle (org.papervision3d.core.render.command.RenderParticle) package org.papervision3d.core.render.command { import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.materials.special.*; public class RenderParticle extends RenderableListItem implements IRenderListItem { public var particle:Particle; public var renderMat:ParticleMaterial; public function RenderParticle(_arg1:Particle){ this.particle = _arg1; } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ renderMat = particle.material; if (renderMat.interactive){ if (particle.renderRect.contains(_arg1.x, _arg1.y)){ _arg2.displayObject3D = particle.instance; _arg2.material = renderMat; _arg2.renderable = particle; _arg2.hasHit = true; _arg2.x = particle.x; _arg2.y = particle.y; _arg2.z = particle.z; _arg2.u = 0; _arg2.v = 0; return (_arg2); }; }; return (_arg2); } override public function render(_arg1:RenderSessionData):void{ particle.material.drawParticle(particle, _arg1.container.graphics, _arg1); } } }//package org.papervision3d.core.render.command
Section 185
//RenderTriangle (org.papervision3d.core.render.command.RenderTriangle) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.materials.*; import org.papervision3d.core.render.draw.*; public class RenderTriangle extends RenderableListItem implements IRenderListItem { public var renderer:ITriangleDrawer; public var triangle:Triangle3D; private var position:Number3D; public var renderMat:MaterialObject3D; public var container:Sprite; public function RenderTriangle(_arg1:Triangle3D):void{ position = new Number3D(); super(); this.triangle = _arg1; renderableInstance = _arg1; renderable = Triangle3D; } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ var _local3:Vertex3DInstance; var _local4:Vertex3DInstance; var _local5:Vertex3DInstance; var _local6:Vertex3DInstance; renderMat = triangle.material; if (!renderMat){ renderMat = triangle.instance.material; }; if (renderMat.interactive){ _local3 = new Vertex3DInstance(_arg1.x, _arg1.y); _local4 = triangle.v0.vertex3DInstance; _local5 = triangle.v1.vertex3DInstance; _local6 = triangle.v2.vertex3DInstance; if (sameSide(_local3, _local4, _local5, _local6)){ if (sameSide(_local3, _local5, _local4, _local6)){ if (sameSide(_local3, _local6, _local4, _local5)){ return (deepHitTest(triangle, _local3, _arg2)); }; }; }; }; return (_arg2); } public function sameSide(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ var _local5:Number; _local5 = (Vertex3DInstance.cross(Vertex3DInstance.sub(_arg4, _arg3), Vertex3DInstance.sub(_arg1, _arg3)) * Vertex3DInstance.cross(Vertex3DInstance.sub(_arg4, _arg3), Vertex3DInstance.sub(_arg2, _arg3))); return ((_local5 > 0)); } private function deepHitTest(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:RenderHitData):RenderHitData{ var _local4:Vertex3DInstance; var _local5:Vertex3DInstance; var _local6:Vertex3DInstance; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Array; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:BitmapData; var _local40:Number; var _local41:Number; _local4 = _arg1.v0.vertex3DInstance; _local5 = _arg1.v1.vertex3DInstance; _local6 = _arg1.v2.vertex3DInstance; _local7 = (_local6.x - _local4.x); _local8 = (_local6.y - _local4.y); _local9 = (_local5.x - _local4.x); _local10 = (_local5.y - _local4.y); _local11 = (_arg2.x - _local4.x); _local12 = (_arg2.y - _local4.y); _local13 = ((_local7 * _local7) + (_local8 * _local8)); _local14 = ((_local7 * _local9) + (_local8 * _local10)); _local15 = ((_local7 * _local11) + (_local8 * _local12)); _local16 = ((_local9 * _local9) + (_local10 * _local10)); _local17 = ((_local9 * _local11) + (_local10 * _local12)); _local18 = (1 / ((_local13 * _local16) - (_local14 * _local14))); _local19 = (((_local16 * _local15) - (_local14 * _local17)) * _local18); _local20 = (((_local13 * _local17) - (_local14 * _local15)) * _local18); _local21 = (_arg1.v2.x - _arg1.v0.x); _local22 = (_arg1.v2.y - _arg1.v0.y); _local23 = (_arg1.v2.z - _arg1.v0.z); _local24 = (_arg1.v1.x - _arg1.v0.x); _local25 = (_arg1.v1.y - _arg1.v0.y); _local26 = (_arg1.v1.z - _arg1.v0.z); _local27 = ((_arg1.v0.x + (_local21 * _local19)) + (_local24 * _local20)); _local28 = ((_arg1.v0.y + (_local22 * _local19)) + (_local25 * _local20)); _local29 = ((_arg1.v0.z + (_local23 * _local19)) + (_local26 * _local20)); _local30 = _arg1.uv; _local31 = _local30[0].u; _local32 = _local30[1].u; _local33 = _local30[2].u; _local34 = _local30[0].v; _local35 = _local30[1].v; _local36 = _local30[2].v; _local37 = ((((_local32 - _local31) * _local20) + ((_local33 - _local31) * _local19)) + _local31); _local38 = ((((_local35 - _local34) * _local20) + ((_local36 - _local34) * _local19)) + _local34); if (triangle.material){ renderMat = _arg1.material; } else { renderMat = _arg1.instance.material; }; _local39 = renderMat.bitmap; _local40 = 1; _local41 = 1; if (_local39){ _local40 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.widthOffset : _local39.width; _local41 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.heightOffset : _local39.height; }; _arg3.displayObject3D = _arg1.instance; _arg3.material = renderMat; _arg3.renderable = _arg1; _arg3.hasHit = true; position.x = _local27; position.y = _local28; position.z = _local29; Matrix3D.multiplyVector(_arg1.instance.world, position); _arg3.x = position.x; _arg3.y = position.y; _arg3.z = position.z; _arg3.u = (_local37 * _local40); _arg3.v = (_local41 - (_local38 * _local41)); return (_arg3); } override public function render(_arg1:RenderSessionData):void{ renderer.drawTriangle(triangle, _arg1.container.graphics, _arg1); } } }//package org.papervision3d.core.render.command
Section 186
//RenderHitData (org.papervision3d.core.render.data.RenderHitData) package org.papervision3d.core.render.data { import org.papervision3d.core.proto.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class RenderHitData { public var y:Number; public var endTime:int;// = 0 public var displayObject3D:DisplayObject3D; public var startTime:int;// = 0 public var hasHit:Boolean;// = false public var material:MaterialObject3D; public var renderable:IRenderable; public var u:Number; public var v:Number; public var x:Number; public var z:Number; public function RenderHitData(){ startTime = 0; endTime = 0; hasHit = false; super(); } public function toString():String{ return (((displayObject3D + " ") + renderable)); } } }//package org.papervision3d.core.render.data
Section 187
//RenderSessionData (org.papervision3d.core.render.data.RenderSessionData) package org.papervision3d.core.render.data { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.view.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.render.*; public class RenderSessionData { public var renderer:IRenderEngine; public var particleCuller:IParticleCuller; public var viewPort:Viewport3D; public var triangleCuller:ITriangleCuller; public var container:Sprite; public var scene:SceneObject3D; public var camera:CameraObject3D; public var renderStatistics:RenderStatistics; public var sorted:Boolean; public function RenderSessionData():void{ this.renderStatistics = new RenderStatistics(); } } }//package org.papervision3d.core.render.data
Section 188
//RenderStatistics (org.papervision3d.core.render.data.RenderStatistics) package org.papervision3d.core.render.data { public class RenderStatistics { public var renderTime:int;// = 0 public var culledObjects:int;// = 0 public var shadedTriangles:int;// = 0 public var culledParticles:int;// = 0 public var culledTriangles:int;// = 0 public var triangles:int;// = 0 public var particles:int;// = 0 public var rendered:int;// = 0 public var projectionTime:int;// = 0 public var filteredObjects:int;// = 0 public var lines:int;// = 0 public function RenderStatistics(){ projectionTime = 0; renderTime = 0; rendered = 0; triangles = 0; culledTriangles = 0; particles = 0; culledParticles = 0; lines = 0; shadedTriangles = 0; filteredObjects = 0; culledObjects = 0; super(); } public function clear():void{ projectionTime = 0; renderTime = 0; rendered = 0; particles = 0; triangles = 0; culledTriangles = 0; culledParticles = 0; lines = 0; shadedTriangles = 0; filteredObjects = 0; culledObjects = 0; } public function toString():String{ return (new String((((((((((((((((((("ProjectionTime:" + projectionTime) + " RenderTime:") + renderTime) + " Particles:") + particles) + " CulledParticles :") + culledParticles) + " Triangles:") + triangles) + " ShadedTriangles :") + shadedTriangles) + " CulledTriangles:") + culledTriangles) + " FilteredObjects:") + filteredObjects) + " CulledObjects:") + culledObjects) + ""))); } } }//package org.papervision3d.core.render.data
Section 189
//ILineDrawer (org.papervision3d.core.render.draw.ILineDrawer) package org.papervision3d.core.render.draw { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; public interface ILineDrawer { function drawLine(_arg1:Line3D, _arg2:Graphics, _arg3:RenderSessionData):void; } }//package org.papervision3d.core.render.draw
Section 190
//IParticleDrawer (org.papervision3d.core.render.draw.IParticleDrawer) package org.papervision3d.core.render.draw { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; public interface IParticleDrawer { function updateRenderRect(_arg1:Particle):void; function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void; } }//package org.papervision3d.core.render.draw
Section 191
//ITriangleDrawer (org.papervision3d.core.render.draw.ITriangleDrawer) package org.papervision3d.core.render.draw { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; public interface ITriangleDrawer { function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void; } }//package org.papervision3d.core.render.draw
Section 192
//BasicRenderFilter (org.papervision3d.core.render.filter.BasicRenderFilter) package org.papervision3d.core.render.filter { public class BasicRenderFilter implements IRenderFilter { public function filter(_arg1:Array):int{ return (0); } } }//package org.papervision3d.core.render.filter
Section 193
//IRenderFilter (org.papervision3d.core.render.filter.IRenderFilter) package org.papervision3d.core.render.filter { public interface IRenderFilter { function filter(_arg1:Array):int; } }//package org.papervision3d.core.render.filter
Section 194
//IUpdateAfterMaterial (org.papervision3d.core.render.material.IUpdateAfterMaterial) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; public interface IUpdateAfterMaterial { function updateAfterRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.material
Section 195
//IUpdateBeforeMaterial (org.papervision3d.core.render.material.IUpdateBeforeMaterial) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; public interface IUpdateBeforeMaterial { function updateBeforeRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.material
Section 196
//MaterialManager (org.papervision3d.core.render.material.MaterialManager) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import flash.utils.*; public class MaterialManager { private var materials:Dictionary; private static var instance:MaterialManager; public function MaterialManager():void{ if (instance){ throw (new Error("Only 1 instance of materialmanager allowed")); }; init(); } private function init():void{ materials = new Dictionary(); } private function _unRegisterMaterial(_arg1:MaterialObject3D):void{ delete materials[_arg1]; } public function updateMaterialsAfterRender(_arg1:RenderSessionData):void{ var _local2:IUpdateAfterMaterial; var _local3:MaterialObject3D; for each (_local3 in materials) { if ((_local3 is IUpdateAfterMaterial)){ _local2 = (_local3 as IUpdateAfterMaterial); _local2.updateAfterRender(_arg1); }; }; } private function _registerMaterial(_arg1:MaterialObject3D):void{ materials[_arg1] = _arg1; } public function updateMaterialsBeforeRender(_arg1:RenderSessionData):void{ var _local2:IUpdateBeforeMaterial; var _local3:MaterialObject3D; for each (_local3 in materials) { if ((_local3 is IUpdateBeforeMaterial)){ _local2 = (_local3 as IUpdateBeforeMaterial); _local2.updateBeforeRender(_arg1); }; }; } public static function getInstance():MaterialManager{ if (!instance){ instance = new (MaterialManager); }; return (instance); } public static function unRegisterMaterial(_arg1:MaterialObject3D):void{ getInstance()._unRegisterMaterial(_arg1); } public static function registerMaterial(_arg1:MaterialObject3D):void{ getInstance()._registerMaterial(_arg1); } } }//package org.papervision3d.core.render.material
Section 197
//BasicRenderSorter (org.papervision3d.core.render.sort.BasicRenderSorter) package org.papervision3d.core.render.sort { public class BasicRenderSorter implements IRenderSorter { public function sort(_arg1:Array):void{ _arg1.sortOn("screenDepth", Array.NUMERIC); } } }//package org.papervision3d.core.render.sort
Section 198
//IRenderSorter (org.papervision3d.core.render.sort.IRenderSorter) package org.papervision3d.core.render.sort { public interface IRenderSorter { function sort(_arg1:Array):void; } }//package org.papervision3d.core.render.sort
Section 199
//AbstractRenderEngine (org.papervision3d.core.render.AbstractRenderEngine) package org.papervision3d.core.render { import flash.events.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; public class AbstractRenderEngine extends EventDispatcher implements IRenderEngine { public function AbstractRenderEngine(_arg1:IEventDispatcher=null){ super(_arg1); } public function removeFromRenderList(_arg1:IRenderListItem):int{ return (0); } public function addToRenderList(_arg1:IRenderListItem):int{ return (0); } public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics{ return (null); } } }//package org.papervision3d.core.render
Section 200
//IRenderEngine (org.papervision3d.core.render.IRenderEngine) package org.papervision3d.core.render { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; public interface IRenderEngine { function addToRenderList(_arg1:IRenderListItem):int; function removeFromRenderList(_arg1:IRenderListItem):int; function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics; } }//package org.papervision3d.core.render
Section 201
//IVirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.IVirtualMouseEvent) package org.papervision3d.core.utils.virtualmouse { public interface IVirtualMouseEvent { } }//package org.papervision3d.core.utils.virtualmouse
Section 202
//VirtualMouse (org.papervision3d.core.utils.virtualmouse.VirtualMouse) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; import flash.display.*; import flash.geom.*; import com.blitzagency.xray.logger.*; import flash.utils.*; import org.papervision3d.core.components.as3.utils.*; public class VirtualMouse extends EventDispatcher { private var _container:Sprite; private var lastDownTarget:DisplayObject; private var target:InteractiveObject; private var updateMouseDown:Boolean;// = false private var eventEvent:Class; private var _lastEvent:Event; private var mouseEventEvent:Class; private var location:Point; private var delta:int;// = 0 private var disabledEvents:Object; private var log:XrayLog; private var ignoredInstances:Dictionary; private var isLocked:Boolean;// = false private var lastWithinStage:Boolean;// = true private var lastLocation:Point; private var isDoubleClickEvent:Boolean;// = false private var lastMouseDown:Boolean;// = false private var altKey:Boolean;// = false private var _useNativeEvents:Boolean;// = false private var ctrlKey:Boolean;// = false private var shiftKey:Boolean;// = false private var _stage:Stage; public static const UPDATE:String = "update"; private static var _mouseIsDown:Boolean = false; public function VirtualMouse(_arg1:Stage=null, _arg2:Sprite=null, _arg3:Number=0, _arg4:Number=0){ altKey = false; ctrlKey = false; shiftKey = false; delta = 0; isLocked = false; isDoubleClickEvent = false; disabledEvents = new Object(); ignoredInstances = new Dictionary(true); lastMouseDown = false; updateMouseDown = false; lastWithinStage = true; _useNativeEvents = false; eventEvent = VirtualMouseEvent; mouseEventEvent = VirtualMouseMouseEvent; log = new XrayLog(); super(); this.stage = _arg1; this.container = _arg2; location = new Point(_arg3, _arg4); lastLocation = location.clone(); addEventListener(UPDATE, handleUpdate); update(); } public function get mouseIsDown():Boolean{ return (_mouseIsDown); } public function get stage():Stage{ return (_stage); } public function exitContainer():void{ var _local1:Point; _local1 = target.globalToLocal(location); if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); container.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); container.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (target != container){ if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; }; target = _stage; } public function release():void{ updateMouseDown = true; _mouseIsDown = false; if (!isLocked){ update(); }; } public function click():void{ press(); release(); } public function get container():Sprite{ return (_container); } public function set container(_arg1:Sprite):void{ _container = _arg1; } public function get y():Number{ return (location.y); } public function set x(_arg1:Number):void{ location.x = _arg1; if (!isLocked){ update(); }; } public function disableEvent(_arg1:String):void{ disabledEvents[_arg1] = true; } public function get lastEvent():Event{ return (_lastEvent); } private function handleUpdate(_arg1:Event):void{ var _local2:Point; var _local3:Array; var _local4:InteractiveObject; var _local5:DisplayObject; var _local6:int; var _local7:Point; var _local8:Point; var _local9:Boolean; if (!container){ return; }; _local2 = CoordinateTools.localToLocal(container, stage, location); _local3 = container.getObjectsUnderPoint(location); _local6 = _local3.length; while (_local6--) { _local5 = _local3[_local6]; while (_local5) { if (ignoredInstances[_local5]){ _local4 = null; break; }; if (((_local4) && ((_local5 is SimpleButton)))){ _local4 = null; } else { if (((_local4) && (!(DisplayObjectContainer(_local5).mouseChildren)))){ _local4 = null; }; }; if (((((!(_local4)) && ((_local5 is InteractiveObject)))) && (InteractiveObject(_local5).mouseEnabled))){ _local4 = InteractiveObject(_local5); }; _local5 = _local5.parent; }; if (_local4){ break; }; }; if (!_local4){ _local4 = _stage; }; _local7 = target.globalToLocal(location); _local8 = _local4.globalToLocal(location); if (((!((lastLocation.x == location.x))) || (!((lastLocation.y == location.y))))){ _local9 = false; if (stage){ _local9 = (((((((location.x >= 0)) && ((location.y >= 0)))) && ((location.x <= stage.stageWidth)))) && ((location.y <= stage.stageHeight))); }; if (((((!(_local9)) && (lastWithinStage))) && (!(disabledEvents[Event.MOUSE_LEAVE])))){ _lastEvent = new eventEvent(Event.MOUSE_LEAVE, false, false); stage.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (((_local9) && (!(disabledEvents[MouseEvent.MOUSE_MOVE])))){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_MOVE, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastWithinStage = _local9; }; if (_local4 != target){ if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.MOUSE_OVER]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OVER, true, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.ROLL_OVER]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OVER, false, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; }; if (updateMouseDown){ if (_mouseIsDown){ if (!disabledEvents[MouseEvent.MOUSE_DOWN]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_DOWN, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastDownTarget = _local4; updateMouseDown = false; } else { if (!disabledEvents[MouseEvent.MOUSE_UP]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_UP, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (((!(disabledEvents[MouseEvent.CLICK])) && ((_local4 == lastDownTarget)))){ _lastEvent = new mouseEventEvent(MouseEvent.CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastDownTarget = null; updateMouseDown = false; }; }; if (((((isDoubleClickEvent) && (!(disabledEvents[MouseEvent.DOUBLE_CLICK])))) && (_local4.doubleClickEnabled))){ _lastEvent = new mouseEventEvent(MouseEvent.DOUBLE_CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastLocation = location.clone(); lastMouseDown = _mouseIsDown; target = _local4; } public function getLocation():Point{ return (location.clone()); } public function get x():Number{ return (location.x); } public function lock():void{ isLocked = true; } public function get useNativeEvents():Boolean{ return (_useNativeEvents); } public function setLocation(_arg1, _arg2=null):void{ var _local3:Point; if ((_arg1 is Point)){ _local3 = (_arg1 as Point); trace(_local3); location.x = _local3.x; location.y = _local3.y; } else { location.x = Number(_arg1); location.y = Number(_arg2); }; if (!isLocked){ update(); }; } private function keyHandler(_arg1:KeyboardEvent):void{ altKey = _arg1.altKey; ctrlKey = _arg1.ctrlKey; shiftKey = _arg1.shiftKey; } public function unignore(_arg1:DisplayObject):void{ if ((_arg1 in ignoredInstances)){ delete ignoredInstances[_arg1]; }; } public function doubleClick():void{ if (isLocked){ release(); } else { click(); press(); isDoubleClickEvent = true; release(); isDoubleClickEvent = false; }; } public function update():void{ dispatchEvent(new Event(UPDATE, false, false)); } public function ignore(_arg1:DisplayObject):void{ ignoredInstances[_arg1] = true; } public function unlock():void{ isLocked = false; update(); } public function enableEvent(_arg1:String):void{ if ((_arg1 in disabledEvents)){ delete disabledEvents[_arg1]; }; } public function press():void{ updateMouseDown = true; _mouseIsDown = true; if (!isLocked){ update(); }; } public function set useNativeEvents(_arg1:Boolean):void{ if (_arg1 == _useNativeEvents){ return; }; _useNativeEvents = _arg1; if (_useNativeEvents){ eventEvent = VirtualMouseEvent; mouseEventEvent = VirtualMouseMouseEvent; } else { eventEvent = Event; mouseEventEvent = MouseEvent; }; } public function set y(_arg1:Number):void{ location.y = _arg1; if (!isLocked){ update(); }; } public function set stage(_arg1:Stage):void{ var _local2:Boolean; if (_stage){ _local2 = true; _stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyHandler); _stage.removeEventListener(KeyboardEvent.KEY_UP, keyHandler); } else { _local2 = false; }; _stage = _arg1; if (_stage){ _stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler); _stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler); target = _stage; if (!_local2){ update(); }; }; } } }//package org.papervision3d.core.utils.virtualmouse
Section 203
//VirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseEvent) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; public class VirtualMouseEvent extends Event implements IVirtualMouseEvent { public function VirtualMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package org.papervision3d.core.utils.virtualmouse
Section 204
//VirtualMouseMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseMouseEvent) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; import flash.display.*; public class VirtualMouseMouseEvent extends MouseEvent implements IVirtualMouseEvent { public function VirtualMouseMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:InteractiveObject=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false, _arg10:Boolean=false, _arg11:int=0){ super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11); } } }//package org.papervision3d.core.utils.virtualmouse
Section 205
//InteractiveSceneManager (org.papervision3d.core.utils.InteractiveSceneManager) package org.papervision3d.core.utils { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.view.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import com.blitzagency.xray.logger.*; import org.papervision3d.events.*; import org.papervision3d.materials.*; import org.papervision3d.core.utils.virtualmouse.*; public class InteractiveSceneManager extends EventDispatcher { protected var log:XrayLog; public var container:Sprite; public var debug:Boolean;// = false public var mouse3D:Mouse3D; public var enableOverOut:Boolean;// = true public var currentMaterial:MaterialObject3D; public var currentDisplayObject3D:DisplayObject3D; public var virtualMouse:VirtualMouse; public var viewport:Viewport3D; public var renderHitData:RenderHitData; public var currentMouseDO3D:DisplayObject3D;// = null public static var MOUSE_IS_DOWN:Boolean = false; public function InteractiveSceneManager(_arg1:Viewport3D){ virtualMouse = new VirtualMouse(); mouse3D = new Mouse3D(); enableOverOut = true; currentMouseDO3D = null; debug = false; log = new XrayLog(); super(); this.viewport = _arg1; this.container = _arg1.containerSprite; init(); } protected function resolveRenderHitData():void{ var _local1:Point; _local1 = new Point(); _local1.x = container.mouseX; _local1.y = container.mouseY; renderHitData = (viewport.hitTestPoint2D(_local1) as RenderHitData); } public function initListeners():void{ if (viewport.interactive){ container.addEventListener(MouseEvent.MOUSE_DOWN, handleMousePress); container.addEventListener(MouseEvent.MOUSE_UP, handleMouseRelease); container.addEventListener(MouseEvent.CLICK, handleMouseClick); container.stage.addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); }; } public function init():void{ if (container){ if (container.stage){ initVirtualMouse(); } else { container.addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage); }; }; } protected function dispatchObjectEvent(_arg1:String, _arg2:DisplayObject3D):void{ var _local3:Number; var _local4:Number; if (debug){ log.debug(_arg1, _arg2.name); }; if (((renderHitData) && (renderHitData.hasHit))){ _local3 = (renderHitData.u) ? renderHitData.u : 0; _local4 = (renderHitData.v) ? renderHitData.v : 0; dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4)); _arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4)); } else { dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container)); if (_arg2){ _arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container)); }; }; } protected function handleMouseClick(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_CLICK, currentDisplayObject3D); }; } public function updateRenderHitData():void{ resolveRenderHitData(); currentDisplayObject3D = renderHitData.displayObject3D; currentMaterial = renderHitData.material; manageOverOut(); } protected function handleMouseOver(_arg1:DisplayObject3D):void{ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OVER, _arg1); } protected function handleMouseRelease(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; MOUSE_IS_DOWN = false; if (virtualMouse){ virtualMouse.release(); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_RELEASE, currentDisplayObject3D); }; } protected function handleAddedToStage(_arg1:Event):void{ initVirtualMouse(); initListeners(); } protected function handleMouseMove(_arg1:MouseEvent):void{ var _local2:MovieMaterial; if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((virtualMouse) && (renderHitData))){ _local2 = (currentMaterial as MovieMaterial); if (_local2){ virtualMouse.container = (_local2.movie as Sprite); }; if (virtualMouse.container){ virtualMouse.setLocation(renderHitData.u, renderHitData.v); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D); } else { if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D); }; }; } protected function handleMouseOut(_arg1:DisplayObject3D):void{ var _local2:MovieMaterial; if (_arg1){ _local2 = (_arg1.material as MovieMaterial); if (_local2){ virtualMouse.exitContainer(); }; }; dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OUT, _arg1); } protected function manageOverOut():void{ if (!enableOverOut){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ if (((!(currentMouseDO3D)) && (currentDisplayObject3D))){ handleMouseOver(currentDisplayObject3D); currentMouseDO3D = currentDisplayObject3D; } else { if (((currentMouseDO3D) && (!((currentMouseDO3D == currentDisplayObject3D))))){ handleMouseOut(currentMouseDO3D); handleMouseOver(currentDisplayObject3D); currentMouseDO3D = currentDisplayObject3D; }; }; } else { if (currentMouseDO3D != null){ handleMouseOut(currentMouseDO3D); currentMouseDO3D = null; }; }; } protected function initVirtualMouse():void{ virtualMouse.stage = container.stage; virtualMouse.container = container; } protected function handleMousePress(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; MOUSE_IS_DOWN = true; if (virtualMouse){ virtualMouse.press(); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_PRESS, currentDisplayObject3D); }; } } }//package org.papervision3d.core.utils
Section 206
//Mouse3D (org.papervision3d.core.utils.Mouse3D) package org.papervision3d.core.utils { import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; public class Mouse3D extends DisplayObject3D { public static var enabled:Boolean = false; private static var UP:Number3D = new Number3D(0, 1, 0); public function Mouse3D(_arg1:Object=null):void{ } public function updatePosition(_arg1:RenderHitData):void{ var _local2:Triangle3D; var _local3:Number3D; var _local4:Number3D; var _local5:Number3D; var _local6:Matrix3D; var _local7:Number3D; var _local8:Number3D; var _local9:Matrix3D; _local2 = (_arg1.renderable as Triangle3D); _local3 = new Number3D(0, 0, 0); _local4 = new Number3D(_local2.faceNormal.x, _local2.faceNormal.y, _local2.faceNormal.z); _local5 = Number3D.sub(_local4, _local3); _local5.normalize(); if (_local5.modulo > 0.1){ _local7 = Number3D.cross(_local5, UP); _local7.normalize(); _local8 = Number3D.cross(_local5, _local7); _local8.normalize(); _local9 = this.transform; _local9.n11 = _local7.x; _local9.n21 = _local7.y; _local9.n31 = _local7.z; _local9.n12 = -(_local8.x); _local9.n22 = -(_local8.y); _local9.n32 = -(_local8.z); _local9.n13 = _local5.x; _local9.n23 = _local5.y; _local9.n33 = _local5.z; }; _local6 = Matrix3D.IDENTITY; this.transform = Matrix3D.multiply(_local2.instance.world, _local9); x = _arg1.x; y = _arg1.y; z = _arg1.z; } } }//package org.papervision3d.core.utils
Section 207
//StopWatch (org.papervision3d.core.utils.StopWatch) package org.papervision3d.core.utils { import flash.events.*; import flash.utils.*; public class StopWatch extends EventDispatcher { private var startTime:int; private var elapsedTime:int; private var stopTime:int; private var isRunning:Boolean; public function stop():int{ if (isRunning){ stopTime = getTimer(); elapsedTime = (stopTime - startTime); isRunning = false; return (elapsedTime); }; return (0); } public function start():void{ if (!isRunning){ startTime = getTimer(); isRunning = true; }; } public function reset():void{ isRunning = false; } } }//package org.papervision3d.core.utils
Section 208
//IViewport3D (org.papervision3d.core.view.IViewport3D) package org.papervision3d.core.view { public interface IViewport3D { function updateAfterRender():void; function updateBeforeRender():void; } }//package org.papervision3d.core.view
Section 209
//AnimationEvent (org.papervision3d.events.AnimationEvent) package org.papervision3d.events { import flash.events.*; public class AnimationEvent extends Event { public var totalFrames:uint; public var message:String;// = "" public var dataObj:Object;// = null public var currentFrame:uint; public static var ANIMATION_COMPLETE:String = "animationComplete"; public static var ANIMATION_NEXT_FRAME:String = "animationNextFrame"; public static var ANIMATION_ERROR:String = "animationError"; public function AnimationEvent(_arg1:String, _arg2:uint, _arg3:uint, _arg4:String="", _arg5:Object=null, _arg6:Boolean=false, _arg7:Boolean=false){ message = ""; dataObj = null; super(_arg1, _arg6, _arg7); this.currentFrame = _arg2; this.totalFrames = _arg3; this.message = _arg4; this.dataObj = _arg5; } override public function clone():Event{ return (new AnimationEvent(type, currentFrame, totalFrames, message, dataObj, bubbles, cancelable)); } } }//package org.papervision3d.events
Section 210
//FileLoadEvent (org.papervision3d.events.FileLoadEvent) package org.papervision3d.events { import flash.events.*; public class FileLoadEvent extends Event { public var bytesLoaded:Number;// = -1 public var message:String;// = "" public var bytesTotal:Number;// = -1 public var dataObj:Object;// = null public var file:String;// = "" public static var COLLADA_MATERIALS_DONE:String = "colladaMaterialsDone"; public static var LOAD_COMPLETE:String = "loadComplete"; public static var LOAD_PROGRESS:String = "loadProgress"; public static var SECURITY_LOAD_ERROR:String = "securityLoadError"; public static var LOAD_ERROR:String = "loadError"; public function FileLoadEvent(_arg1:String, _arg2:String="", _arg3:Number=-1, _arg4:Number=-1, _arg5:String="", _arg6:Object=null, _arg7:Boolean=false, _arg8:Boolean=false){ file = ""; bytesLoaded = -1; bytesTotal = -1; message = ""; dataObj = null; super(_arg1, _arg7, _arg8); this.file = _arg2; this.bytesLoaded = _arg3; this.bytesTotal = _arg4; this.message = _arg5; this.dataObj = _arg6; } } }//package org.papervision3d.events
Section 211
//InteractiveScene3DEvent (org.papervision3d.events.InteractiveScene3DEvent) package org.papervision3d.events { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class InteractiveScene3DEvent extends Event { public var sprite:Sprite;// = null public var displayObject3D:DisplayObject3D;// = null public var face3d:Triangle3D;// = null public var renderHitData:RenderHitData; public var x:Number;// = 0 public var y:Number;// = 0 public static const OBJECT_ADDED:String = "objectAdded"; public static const OBJECT_PRESS:String = "mousePress"; public static const OBJECT_RELEASE:String = "mouseRelease"; public static const OBJECT_CLICK:String = "mouseClick"; public static const OBJECT_RELEASE_OUTSIDE:String = "mouseReleaseOutside"; public static const OBJECT_OUT:String = "mouseOut"; public static const OBJECT_MOVE:String = "mouseMove"; public static const OBJECT_OVER:String = "mouseOver"; public function InteractiveScene3DEvent(_arg1:String, _arg2:DisplayObject3D=null, _arg3:Sprite=null, _arg4:Triangle3D=null, _arg5:Number=0, _arg6:Number=0, _arg7:RenderHitData=null, _arg8:Boolean=false, _arg9:Boolean=false){ displayObject3D = null; sprite = null; face3d = null; x = 0; y = 0; super(_arg1, _arg8, _arg9); this.displayObject3D = _arg2; this.sprite = _arg3; this.face3d = _arg4; this.x = _arg5; this.y = _arg6; this.renderHitData = _arg7; } } }//package org.papervision3d.events
Section 212
//RendererEvent (org.papervision3d.events.RendererEvent) package org.papervision3d.events { import flash.events.*; import org.papervision3d.core.render.data.*; public class RendererEvent extends Event { public var renderSessionData:RenderSessionData; public static var RENDER_DONE:String = "onRenderDone"; public function RendererEvent(_arg1:String, _arg2:RenderSessionData){ super(_arg1); this.renderSessionData = _arg2; } } }//package org.papervision3d.events
Section 213
//LineMaterial (org.papervision3d.materials.special.LineMaterial) package org.papervision3d.materials.special { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.draw.*; public class LineMaterial extends MaterialObject3D implements ILineDrawer { public function LineMaterial(_arg1:Number=0xFF0000, _arg2:Number=1){ this.lineColor = _arg1; this.lineAlpha = _arg2; } public function drawLine(_arg1:Line3D, _arg2:Graphics, _arg3:RenderSessionData):void{ _arg2.lineStyle(_arg1.size, lineColor, lineAlpha); _arg2.moveTo(_arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y); _arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); _arg2.moveTo(0, 0); _arg2.lineStyle(); } } }//package org.papervision3d.materials.special
Section 214
//ParticleMaterial (org.papervision3d.materials.special.ParticleMaterial) package org.papervision3d.materials.special { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; public class ParticleMaterial extends MaterialObject3D implements IParticleDrawer { public function ParticleMaterial(_arg1:Number, _arg2:Number){ this.fillAlpha = _arg2; this.fillColor = _arg1; } public function updateRenderRect(_arg1:Particle):void{ var _local2:Rectangle; _local2 = _arg1.renderRect; if (_arg1.size == 0){ _local2.width = 1; _local2.height = 1; } else { _local2.width = (_arg1.renderScale * _arg1.size); _local2.height = (_arg1.renderScale * _arg1.size); }; _local2.x = (_arg1.vertex3D.vertex3DInstance.x - (_local2.width / 2)); _local2.y = (_arg1.vertex3D.vertex3DInstance.y - (_local2.width / 2)); } public function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void{ var _local4:Rectangle; _arg2.beginFill(fillColor, fillAlpha); _local4 = _arg1.renderRect; _arg2.drawRect(_local4.x, _local4.y, _local4.width, _local4.height); _arg2.endFill(); _arg3.renderStatistics.particles++; } } }//package org.papervision3d.materials.special
Section 215
//MaterialsList (org.papervision3d.materials.utils.MaterialsList) package org.papervision3d.materials.utils { import org.papervision3d.core.proto.*; import flash.utils.*; public class MaterialsList { public var materialsByName:Dictionary; protected var _materials:Dictionary; private var _materialsTotal:int; public function MaterialsList(_arg1=null):void{ var _local2:String; var _local3:String; super(); this.materialsByName = new Dictionary(true); this._materials = new Dictionary(false); this._materialsTotal = 0; if (_arg1){ if ((_arg1 is Array)){ for (_local2 in _arg1) { this.addMaterial(_arg1[_local2]); }; } else { if ((_arg1 is Object)){ for (_local3 in _arg1) { this.addMaterial(_arg1[_local3], _local3); }; }; }; }; } public function get numMaterials():int{ return (this._materialsTotal); } public function addMaterial(_arg1:MaterialObject3D, _arg2:String=null):MaterialObject3D{ _arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id))); this._materials[_arg1] = _arg2; this.materialsByName[_arg2] = _arg1; this._materialsTotal++; return (_arg1); } public function removeMaterial(_arg1:MaterialObject3D):MaterialObject3D{ delete this.materialsByName[this._materials[_arg1]]; delete this._materials[_arg1]; return (_arg1); } public function toString():String{ var _local1:String; var _local2:MaterialObject3D; _local1 = ""; for each (_local2 in this.materialsByName) { _local1 = (_local1 + (this._materials[_local2] + "\n")); }; return (_local1); } public function removeMaterialByName(_arg1:String):MaterialObject3D{ return (removeMaterial(getMaterialByName(_arg1))); } public function clone():MaterialsList{ var _local1:MaterialsList; var _local2:MaterialObject3D; _local1 = new MaterialsList(); for each (_local2 in this.materialsByName) { _local1.addMaterial(_local2.clone(), this._materials[_local2]); }; return (_local1); } public function getMaterialByName(_arg1:String):MaterialObject3D{ return ((this.materialsByName[_arg1]) ? this.materialsByName[_arg1] : this.materialsByName["all"]); } } }//package org.papervision3d.materials.utils
Section 216
//BitmapFileMaterial (org.papervision3d.materials.BitmapFileMaterial) package org.papervision3d.materials { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import flash.net.*; import org.papervision3d.events.*; import flash.utils.*; import org.papervision3d.*; import org.papervision3d.core.render.draw.*; public class BitmapFileMaterial extends BitmapMaterial implements ITriangleDrawer { public var loaded:Boolean; public var url:String;// = "" private var errorLoading:Boolean;// = false public static var LOADING_COLOR:int = MaterialObject3D.DEFAULT_COLOR; public static var callback:Function; private static var _loadedBitmaps:Object = new Object(); private static var _loadingIdle:Boolean = true; private static var _waitingBitmaps:Array = new Array(); private static var _subscribedMaterials:Object = new Object(); public static var ERROR_COLOR:int = MaterialObject3D.DEBUG_COLOR; private static var _loaderUrls:Dictionary = new Dictionary(); public function BitmapFileMaterial(_arg1:String=""){ url = ""; errorLoading = false; super(); this.url = _arg1; this.loaded = false; this.fillAlpha = 1; this.fillColor = LOADING_COLOR; if (_arg1.length > 0){ texture = _arg1; }; } private function loadNextBitmap():void{ var file:String; var request:URLRequest; var bitmapLoader:Loader; file = _waitingBitmaps[0]; request = new URLRequest(file); bitmapLoader = new Loader(); bitmapLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadBitmapProgressHandler); bitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBitmapCompleteHandler); bitmapLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadBitmapErrorHandler); try { bitmapLoader.load(request); _loaderUrls[bitmapLoader] = file; _loadingIdle = false; Papervision3D.log(("BitmapFileMaterial: Loading bitmap from " + file)); } catch(error:Error) { _waitingBitmaps.shift(); _loadingIdle = true; Papervision3D.log(("[ERROR] BitmapFileMaterial: Unable to load file " + error.message)); }; } private function loadBitmapErrorHandler(_arg1:IOErrorEvent):void{ var _local2:String; var _local3:FileLoadEvent; _local2 = String(_waitingBitmaps.shift()); _loadedBitmaps[_local2] = null; _subscribedMaterials[_local2] = null; this.errorLoading = true; this.lineColor = ERROR_COLOR; this.lineAlpha = 1; this.lineThickness = 1; if (_waitingBitmaps.length > 0){ loadNextBitmap(); } else { _loadingIdle = true; if (Boolean(callback)){ callback(); }; }; _local3 = new FileLoadEvent(FileLoadEvent.LOAD_ERROR, _local2, -1, -1, _arg1.text); dispatchEvent(_local3); } private function queueBitmap(_arg1:String):void{ if (!_subscribedMaterials[_arg1]){ _waitingBitmaps.push(_arg1); _subscribedMaterials[_arg1] = new Array(); }; _subscribedMaterials[_arg1].push(this); if (_loadingIdle){ loadNextBitmap(); }; } protected function createBitmapFromURL(_arg1:String):BitmapData{ var _local2:BitmapData; if (_arg1 == ""){ return (null); }; if (_loadedBitmaps[_arg1]){ _local2 = _loadedBitmaps[_arg1]; bitmap = super.createBitmap(_local2); this.loadComplete(); return (_local2); }; queueBitmap(_arg1); return (null); } private function loadComplete():void{ var _local1:FileLoadEvent; this.fillAlpha = 0; this.fillColor = 0; this.loaded = true; _local1 = new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE, this.url); this.dispatchEvent(_local1); } override public function set texture(_arg1:Object):void{ if ((_arg1 is String) == false){ Papervision3D.log("Error: BitmapFileMaterial.texture requires a String for the texture"); return; }; bitmap = createBitmapFromURL(String(_arg1)); _texture = _arg1; } override public function get texture():Object{ return (this._texture); } private function loadBitmapProgressHandler(_arg1:ProgressEvent):void{ var _local2:FileLoadEvent; _local2 = new FileLoadEvent(FileLoadEvent.LOAD_PROGRESS, url, _arg1.bytesLoaded, _arg1.bytesTotal); dispatchEvent(_local2); } private function loadBitmapCompleteHandler(_arg1:Event):void{ var _local2:Loader; var _local3:Bitmap; var _local4:String; var _local5:BitmapData; var _local6:BitmapFileMaterial; _local2 = Loader(_arg1.target.loader); _local3 = Bitmap(_local2.content); _local4 = _loaderUrls[_local2]; _local5 = super.createBitmap(_local3.bitmapData); for each (_local6 in _subscribedMaterials[_local4]) { _local6.bitmap = _local5; _local6.maxU = this.maxU; _local6.maxV = this.maxV; _local6.resetMapping(); _local6.loadComplete(); }; _loadedBitmaps[_local4] = _local5; _waitingBitmaps.shift(); if (_waitingBitmaps.length > 0){ loadNextBitmap(); } else { _loadingIdle = true; if (Boolean(callback)){ callback(); }; }; } override public function destroy():void{ super.destroy(); bitmap.dispose(); } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ if ((((bitmap == null)) || (errorLoading))){ if (errorLoading){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); }; _arg2.beginFill(fillColor, fillAlpha); _arg2.moveTo(_arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y); _arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); _arg2.lineTo(_arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y); _arg2.lineTo(_arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y); _arg2.endFill(); if (errorLoading){ _arg2.lineStyle(); }; _arg3.renderStatistics.triangles++; }; super.drawTriangle(_arg1, _arg2, _arg3); } } }//package org.papervision3d.materials
Section 217
//BitmapMaterial (org.papervision3d.materials.BitmapMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import flash.utils.*; import org.papervision3d.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class BitmapMaterial extends TriangleMaterial implements ITriangleDrawer { private var _precise:Boolean; public var uvMatrices:Dictionary; public var focus:Number;// = 100 protected var _texture:Object; public var minimumRenderSize:Number;// = 2 public var precision:Number;// = 8 protected static var _triMap:Matrix; public static var AUTO_MIP_MAPPING:Boolean = false; protected static var _localMatrix:Matrix = new Matrix(); public static var MIP_MAP_DEPTH:Number = 8; protected static var _triMatrix:Matrix = new Matrix(); public function BitmapMaterial(_arg1:BitmapData=null, _arg2:Boolean=false){ focus = 100; minimumRenderSize = 2; precision = 8; uvMatrices = new Dictionary(); super(); if (_arg1){ texture = _arg1; }; this.precise = _arg2; } override public function toString():String{ return (((((("Texture:" + this.texture) + " lineColor:") + this.lineColor) + " lineAlpha:") + this.lineAlpha)); } protected function extendBitmapEdges(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{ var _local4:Rectangle; var _local5:Point; var _local6:int; _local4 = new Rectangle(); _local5 = new Point(); if (_arg1.width > _arg2){ _local4.x = (_arg2 - 1); _local4.y = 0; _local4.width = 1; _local4.height = _arg3; _local5.y = 0; _local6 = _arg2; while (_local6 < _arg1.width) { _local5.x = _local6; _arg1.copyPixels(_arg1, _local4, _local5); _local6++; }; }; if (_arg1.height > _arg3){ _local4.x = 0; _local4.y = (_arg3 - 1); _local4.width = _arg1.width; _local4.height = 1; _local5.x = 0; _local6 = _arg3; while (_local6 < _arg1.height) { _local5.y = _local6; _arg1.copyPixels(_arg1, _local4, _local5); _local6++; }; }; } public function resetMapping():void{ uvMatrices = new Dictionary(); } public function set texture(_arg1:Object):void{ if ((_arg1 is BitmapData) == false){ Papervision3D.log("Error: BitmapMaterial.texture requires a BitmapData object for the texture"); return; }; bitmap = createBitmap(BitmapData(_arg1)); _texture = _arg1; } public function renderRec(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Number, _arg15:Number, _arg16:Number, _arg17:Number, _arg18:RenderSessionData, _arg19:BitmapData):void{ var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; if ((((((_arg10 <= 0)) && ((_arg13 <= 0)))) && ((_arg16 <= 0)))){ return; }; if ((((((((_arg17 >= 100)) || ((focus == Infinity)))) || (((Math.max(Math.max(_arg8, _arg11), _arg14) - Math.min(Math.min(_arg8, _arg11), _arg14)) < minimumRenderSize)))) || (((Math.max(Math.max(_arg9, _arg12), _arg15) - Math.min(Math.min(_arg9, _arg12), _arg15)) < minimumRenderSize)))){ renderTriangleBitmap(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg11, _arg12, _arg14, _arg15, smooth, tiled, _arg19); _arg18.renderStatistics.triangles++; return; }; _local20 = (focus + _arg10); _local21 = (focus + _arg13); _local22 = (focus + _arg16); _local23 = (2 / (_local20 + _local21)); _local24 = (2 / (_local21 + _local22)); _local25 = (2 / (_local22 + _local20)); _local26 = (((_arg8 * _local20) + (_arg11 * _local21)) * _local23); _local27 = (((_arg9 * _local20) + (_arg12 * _local21)) * _local23); _local28 = (((_arg11 * _local21) + (_arg14 * _local22)) * _local24); _local29 = (((_arg12 * _local21) + (_arg15 * _local22)) * _local24); _local30 = (((_arg14 * _local22) + (_arg8 * _local20)) * _local25); _local31 = (((_arg15 * _local22) + (_arg9 * _local20)) * _local25); _local32 = ((_arg8 + _arg11) - _local26); _local33 = ((_arg9 + _arg12) - _local27); _local34 = ((_arg11 + _arg14) - _local28); _local35 = ((_arg12 + _arg15) - _local29); _local36 = ((_arg14 + _arg8) - _local30); _local37 = ((_arg15 + _arg9) - _local31); _local38 = ((_local32 * _local32) + (_local33 * _local33)); _local39 = ((_local34 * _local34) + (_local35 * _local35)); _local40 = ((_local36 * _local36) + (_local37 * _local37)); if ((((((_local38 <= precision)) && ((_local40 <= precision)))) && ((_local39 <= precision)))){ renderTriangleBitmap(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg11, _arg12, _arg14, _arg15, smooth, tiled, _arg19); _arg18.renderStatistics.triangles++; return; }; if ((((((_local38 > precision)) && ((_local40 > precision)))) && ((_local39 > precision)))){ renderRec(_arg1, (_arg2 * 2), (_arg3 * 2), (_arg4 * 2), (_arg5 * 2), (_arg6 * 2), (_arg7 * 2), _arg8, _arg9, _arg10, (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_arg17 + 1), _arg18, _arg19); renderRec(_arg1, (_arg2 * 2), (_arg3 * 2), (_arg4 * 2), (_arg5 * 2), ((_arg6 * 2) - 1), (_arg7 * 2), (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), _arg11, _arg12, _arg13, (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), (_arg17 + 1), _arg18, _arg19); renderRec(_arg1, (_arg2 * 2), (_arg3 * 2), (_arg4 * 2), (_arg5 * 2), (_arg6 * 2), ((_arg7 * 2) - 1), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19); renderRec(_arg1, (-(_arg2) * 2), (-(_arg3) * 2), (-(_arg4) * 2), (-(_arg5) * 2), ((-(_arg6) * 2) + 1), ((-(_arg7) * 2) + 1), (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), (_arg17 + 1), _arg18, _arg19); return; }; _local41 = Math.max(_local38, Math.max(_local40, _local39)); if (_local38 == _local41){ renderRec(_arg1, (_arg2 * 2), (_arg3 * 1), (_arg4 * 2), (_arg5 * 1), (_arg6 * 2), (_arg7 * 1), _arg8, _arg9, _arg10, (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19); renderRec(_arg1, ((_arg2 * 2) + _arg3), (_arg3 * 1), ((2 * _arg4) + _arg5), (_arg5 * 1), (((_arg6 * 2) + _arg7) - 1), (_arg7 * 1), (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), _arg11, _arg12, _arg13, _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19); return; }; if (_local40 == _local41){ renderRec(_arg1, (_arg2 * 1), (_arg3 * 2), (_arg4 * 1), (_arg5 * 2), (_arg6 * 1), (_arg7 * 2), _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_arg17 + 1), _arg18, _arg19); renderRec(_arg1, (_arg2 * 1), ((_arg3 * 2) + _arg2), (_arg4 * 1), ((_arg5 * 2) + _arg4), _arg6, (((_arg7 * 2) + _arg6) - 1), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), _arg11, _arg12, _arg13, _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19); return; }; renderRec(_arg1, (_arg2 - _arg3), (_arg3 * 2), (_arg4 - _arg5), (_arg5 * 2), (_arg6 - _arg7), (_arg7 * 2), _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), (_arg17 + 1), _arg18, _arg19); renderRec(_arg1, (2 * _arg2), (_arg3 - _arg2), (_arg4 * 2), (_arg5 - _arg4), (2 * _arg6), (_arg7 - _arg6), _arg8, _arg9, _arg10, (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19); } public function transformUV(_arg1:Triangle3D):Matrix{ var _local2:Array; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Matrix; var _local16:Matrix; if (!_arg1.uv){ Papervision3D.log("MaterialObject3D: transformUV() uv not found!"); } else { if (bitmap){ _local2 = _arg1.uv; _local3 = (bitmap.width * maxU); _local4 = (bitmap.height * maxV); _local5 = (_local3 * _arg1.uv0.u); _local6 = (_local4 * (1 - _arg1.uv0.v)); _local7 = (_local3 * _arg1.uv1.u); _local8 = (_local4 * (1 - _arg1.uv1.v)); _local9 = (_local3 * _arg1.uv2.u); _local10 = (_local4 * (1 - _arg1.uv2.v)); if ((((((_local5 == _local7)) && ((_local6 == _local8)))) || ((((_local5 == _local9)) && ((_local6 == _local10)))))){ _local5 = (_local5 - ((_local5)>0.05) ? 0.05 : -0.05); _local6 = (_local6 - ((_local6)>0.07) ? 0.07 : -0.07); }; if ((((_local9 == _local7)) && ((_local10 == _local8)))){ _local9 = (_local9 - ((_local9)>0.05) ? 0.04 : -0.04); _local10 = (_local10 - ((_local10)>0.06) ? 0.06 : -0.06); }; _local11 = (_local7 - _local5); _local12 = (_local8 - _local6); _local13 = (_local9 - _local5); _local14 = (_local10 - _local6); _local15 = new Matrix(_local11, _local12, _local13, _local14, _local5, _local6); _local15.invert(); _local16 = ((uvMatrices[_arg1]) || ((uvMatrices[_arg1] = _local15.clone()))); _local16.a = _local15.a; _local16.b = _local15.b; _local16.c = _local15.c; _local16.d = _local15.d; _local16.tx = _local15.tx; _local16.ty = _local15.ty; } else { Papervision3D.log("MaterialObject3D: transformUV() material.bitmap not found!"); }; }; return (_local16); } protected function correctBitmap(_arg1:BitmapData):BitmapData{ var _local2:BitmapData; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Boolean; _local3 = (1 << MIP_MAP_DEPTH); _local4 = (_arg1.width / _local3); _local4 = ((_local4 == uint(_local4))) ? _local4 : (uint(_local4) + 1); _local5 = (_arg1.height / _local3); _local5 = ((_local5 == uint(_local5))) ? _local5 : (uint(_local5) + 1); _local6 = (_local3 * _local4); _local7 = (_local3 * _local5); _local8 = true; if (_local6 > 2880){ _local6 = _arg1.width; _local8 = false; }; if (_local7 > 2880){ _local7 = _arg1.height; _local8 = false; }; if (!_local8){ Papervision3D.log((("Material " + this.name) + ": Texture too big for mip mapping. Resizing recommended for better performance and quality.")); }; if (((_arg1) && (((!(((_arg1.width % _local3) == 0))) || (!(((_arg1.height % _local3) == 0))))))){ _local2 = new BitmapData(_local6, _local7, _arg1.transparent, 0); widthOffset = _arg1.width; heightOffset = _arg1.height; this.maxU = (_arg1.width / _local6); this.maxV = (_arg1.height / _local7); _local2.draw(_arg1); extendBitmapEdges(_local2, _arg1.width, _arg1.height); } else { this.maxU = (this.maxV = 1); _local2 = _arg1; }; return (_local2); } public function renderTriangleBitmap(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Boolean, _arg15:Boolean, _arg16:BitmapData):void{ var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Matrix; _local17 = (_arg10 - _arg8); _local18 = (_arg11 - _arg9); _local19 = (_arg12 - _arg8); _local20 = (_arg13 - _arg9); _local21 = new Matrix(((_arg2 * _local17) + (_arg3 * _local19)), ((_arg2 * _local18) + (_arg3 * _local20)), ((_arg4 * _local17) + (_arg5 * _local19)), ((_arg4 * _local18) + (_arg5 * _local20)), (((_arg6 * _local17) + (_arg7 * _local19)) + _arg8), (((_arg6 * _local18) + (_arg7 * _local20)) + _arg9)); _arg1.beginBitmapFill(_arg16, _local21, _arg15, _arg14); _arg1.moveTo(_arg8, _arg9); _arg1.lineTo(_arg10, _arg11); _arg1.lineTo(_arg12, _arg13); _arg1.endFill(); } public function get texture():Object{ return (this._texture); } protected function createBitmap(_arg1:BitmapData):BitmapData{ resetMapping(); if (AUTO_MIP_MAPPING){ return (correctBitmap(_arg1)); }; this.maxU = (this.maxV = 1); return (_arg1); } public function get precise():Boolean{ return (_precise); } public function set precise(_arg1:Boolean):void{ _precise = _arg1; } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; if (!_precise){ if (lineAlpha){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); }; if (bitmap){ _triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUV(_arg1))); _local6 = _arg1.v0.vertex3DInstance.x; _local7 = _arg1.v0.vertex3DInstance.y; _local8 = _arg1.v1.vertex3DInstance.x; _local9 = _arg1.v1.vertex3DInstance.y; _local10 = _arg1.v2.vertex3DInstance.x; _local11 = _arg1.v2.vertex3DInstance.y; _triMatrix.a = (_local8 - _local6); _triMatrix.b = (_local9 - _local7); _triMatrix.c = (_local10 - _local6); _triMatrix.d = (_local11 - _local7); _triMatrix.tx = _local6; _triMatrix.ty = _local7; _localMatrix.a = _triMap.a; _localMatrix.b = _triMap.b; _localMatrix.c = _triMap.c; _localMatrix.d = _triMap.d; _localMatrix.tx = _triMap.tx; _localMatrix.ty = _triMap.ty; _localMatrix.concat(_triMatrix); _arg2.beginBitmapFill((_arg4) ? _arg4 : bitmap, _localMatrix, tiled, smooth); }; _arg2.moveTo(_local6, _local7); _arg2.lineTo(_local8, _local9); _arg2.lineTo(_local10, _local11); _arg2.lineTo(_local6, _local7); if (bitmap){ _arg2.endFill(); }; if (lineAlpha){ _arg2.lineStyle(); }; _arg3.renderStatistics.triangles++; } else { _triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUV(_arg1))); focus = _arg3.camera.focus; renderRec(_arg2, _triMap.a, _triMap.b, _triMap.c, _triMap.d, _triMap.tx, _triMap.ty, _arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y, _arg1.v0.vertex3DInstance.z, _arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y, _arg1.v1.vertex3DInstance.z, _arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y, _arg1.v2.vertex3DInstance.z, 0, _arg3, (_arg4) ? _arg4 : bitmap); }; } override public function copy(_arg1:MaterialObject3D):void{ super.copy(_arg1); this.maxU = _arg1.maxU; this.maxV = _arg1.maxV; } override public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = super.clone(); _local1.maxU = this.maxU; _local1.maxV = this.maxV; return (_local1); } } }//package org.papervision3d.materials
Section 218
//ColorMaterial (org.papervision3d.materials.ColorMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class ColorMaterial extends TriangleMaterial implements ITriangleDrawer { public function ColorMaterial(_arg1:Number=0xFF00FF, _arg2:Number=1, _arg3:Boolean=false){ this.fillColor = _arg1; this.fillAlpha = _arg2; this.interactive = _arg3; } override public function toString():String{ return (((("ColorMaterial - color:" + this.fillColor) + " alpha:") + this.fillAlpha)); } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _local6 = _arg1.v0.vertex3DInstance.x; _local7 = _arg1.v0.vertex3DInstance.y; _local8 = _arg1.v1.vertex3DInstance.x; _local9 = _arg1.v1.vertex3DInstance.y; _local10 = _arg1.v2.vertex3DInstance.x; _local11 = _arg1.v2.vertex3DInstance.y; _arg2.beginFill(fillColor, fillAlpha); _arg2.moveTo(_local6, _local7); _arg2.lineTo(_local8, _local9); _arg2.lineTo(_local10, _local11); _arg2.lineTo(_local6, _local7); _arg2.endFill(); _arg3.renderStatistics.triangles++; } } }//package org.papervision3d.materials
Section 219
//MovieMaterial (org.papervision3d.materials.MovieMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.material.*; import flash.geom.*; import org.papervision3d.*; import org.papervision3d.core.render.draw.*; public class MovieMaterial extends BitmapMaterial implements ITriangleDrawer, IUpdateBeforeMaterial { private var _animated:Boolean; public var movieTransparent:Boolean; public var allowAutoResize:Boolean;// = true public var movie:DisplayObject; public function MovieMaterial(_arg1:DisplayObject=null, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Boolean=false){ allowAutoResize = true; super(); movieTransparent = _arg2; this.animated = _arg3; this.interactive = interactive; this.precise = _arg4; if (_arg1){ texture = _arg1; }; } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:int; var _local3:int; if (_animated){ _local2 = int(movie.width); _local3 = int(movie.height); if (((allowAutoResize) && (((!((_local2 == bitmap.width))) || (!((_local3 == bitmap.height))))))){ initBitmap(movie); }; drawBitmap(); }; } public function drawBitmap():void{ var _local1:Matrix; bitmap.fillRect(bitmap.rect, this.fillColor); _local1 = new Matrix(); _local1.scale(movie.scaleX, movie.scaleY); bitmap.draw(movie, _local1, movie.transform.colorTransform); } public function get animated():Boolean{ return (_animated); } protected function createBitmapFromSprite(_arg1:DisplayObject):BitmapData{ movie = _arg1; initBitmap(movie); drawBitmap(); bitmap = super.createBitmap(bitmap); return (bitmap); } public function set animated(_arg1:Boolean):void{ _animated = _arg1; } override public function set texture(_arg1:Object):void{ if ((_arg1 is DisplayObject) == false){ Papervision3D.log("Error: MovieMaterial.texture requires a Sprite to be passed as the object"); return; }; bitmap = createBitmapFromSprite(DisplayObject(_arg1)); _texture = _arg1; } override public function get texture():Object{ return (this._texture); } protected function initBitmap(_arg1:DisplayObject):void{ if (bitmap){ bitmap.dispose(); }; bitmap = new BitmapData(_arg1.width, _arg1.height, this.movieTransparent); } override public function destroy():void{ super.destroy(); bitmap.dispose(); } } }//package org.papervision3d.materials
Section 220
//WireframeMaterial (org.papervision3d.materials.WireframeMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class WireframeMaterial extends TriangleMaterial implements ITriangleDrawer { public function WireframeMaterial(_arg1:Number=0xFF00FF, _arg2:Number=100, _arg3:Number=0){ this.lineColor = _arg1; this.lineAlpha = _arg2; this.lineThickness = _arg3; this.doubleSided = false; } override public function toString():String{ return (((("WireframeMaterial - color:" + this.lineColor) + " alpha:") + this.lineAlpha)); } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:Number; var _local7:Number; _local6 = _arg1.v0.vertex3DInstance.x; _local7 = _arg1.v0.vertex3DInstance.y; if (lineAlpha){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); _arg2.moveTo(_local6, _local7); _arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); _arg2.lineTo(_arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y); _arg2.lineTo(_local6, _local7); _arg2.lineStyle(); _arg3.renderStatistics.triangles++; }; } } }//package org.papervision3d.materials
Section 221
//Node3D (org.papervision3d.objects.parsers.ascollada.Node3D) package org.papervision3d.objects.parsers.ascollada { import org.papervision3d.core.math.*; import org.papervision3d.core.geom.*; import org.papervision3d.materials.*; import org.papervision3d.objects.primitives.*; public class Node3D extends AnimatedMesh3D { public var daeSID:String; public var matrixStack:Array; public var bindMatrix:Matrix3D; public var transforms:Array; public var blendVerts:Array; public var daeID:String; public static var DEBUG_SPHERE_RADIUS:Number = 100; public static var DEBUG_SPHERE_COLOR:uint = 0xFFFF00; public function Node3D(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Boolean=false):void{ super(new WireframeMaterial(), new Array(), new Array(), _arg1); this.daeID = _arg2; this.daeSID = ((_arg3) || (_arg2)); this.transform = Matrix3D.IDENTITY; this.world = Matrix3D.IDENTITY; this.bindMatrix = Matrix3D.IDENTITY; this.blendVerts = new Array(); this.matrixStack = new Array(); this.transforms = new Array(); if (_arg4){ addChild(new Sphere(new WireframeMaterial(DEBUG_SPHERE_COLOR), DEBUG_SPHERE_RADIUS, 4, 3)); }; } } }//package org.papervision3d.objects.parsers.ascollada
Section 222
//Skin3D (org.papervision3d.objects.parsers.ascollada.Skin3D) package org.papervision3d.objects.parsers.ascollada { import org.papervision3d.core.proto.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.*; public class Skin3D extends AnimatedMesh3D { public var joints:Array; public var bindPose:Matrix3D; public var skeletons:Array; public function Skin3D(_arg1:MaterialObject3D, _arg2:Array, _arg3:Array, _arg4:String=null, _arg5:Boolean=true):void{ super(_arg1, _arg2, _arg3, _arg4); this.bindPose = Matrix3D.IDENTITY; this.joints = new Array(); } } }//package org.papervision3d.objects.parsers.ascollada
Section 223
//DAE (org.papervision3d.objects.parsers.DAE) package org.papervision3d.objects.parsers { import flash.events.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.animation.core.*; import org.papervision3d.objects.*; import org.papervision3d.core.math.*; import org.ascollada.core.*; import org.papervision3d.core.geom.renderables.*; import org.ascollada.types.*; import org.ascollada.fx.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.geom.*; import org.papervision3d.objects.parsers.ascollada.*; import org.papervision3d.events.*; import org.papervision3d.materials.*; import flash.utils.*; import org.papervision3d.*; import org.ascollada.utils.*; import org.ascollada.*; import org.ascollada.io.*; import org.papervision3d.core.animation.controllers.*; import org.papervision3d.core.*; import org.papervision3d.materials.shadematerials.*; public class DAE extends DisplayObject3D { public var filename:String; private var _yUp:Boolean; public var fileTitle:String; private var _materialInstances:Object; public var baseUrl:String; public var document:DaeDocument; private var _rootNode:DisplayObject3D; public var skin:Skin3D; private var _morphs:Dictionary; private var _skins:Dictionary; private var _loadScaleSet:Boolean;// = false private var _materialTextureSets:Object; public var hasAnimations:Boolean;// = false public var texturePath:String; private var _reader:DaeReader; private var _asset; public static var DEFAULT_SCALE:Number = 100; private static var _numClones:uint = 0; public function DAE(_arg1:Boolean=false):void{ hasAnimations = false; _loadScaleSet = false; super(); _reader = new DaeReader(_arg1); this.name = ("DAE_" + this.id); } public function setChildMaterialByName(_arg1:String, _arg2:MaterialObject3D):Boolean{ return (this.setChildMaterial(getChildByName(_arg1), _arg2)); } protected function doLoad(_arg1:String):void{ this.filename = _arg1; _reader.addEventListener(Event.COMPLETE, buildScene); _reader.addEventListener(ProgressEvent.PROGRESS, loadProgressHandler); _reader.addEventListener(IOErrorEvent.IO_ERROR, handleIOError, false, 0, true); _reader.read(filename); } private function animationProgressHandler(_arg1:ProgressEvent):void{ dispatchEvent(_arg1); } private function findChildByName(_arg1:DisplayObject3D, _arg2:String):DisplayObject3D{ var _local3:DisplayObject3D; var _local4:DisplayObject3D; if (_arg1.name == _arg2){ return (_arg1); }; for each (_local3 in _arg1.children) { _local4 = findChildByName(_local3, _arg2); if (_local4){ return (_local4); }; }; return (null); } private function buildMaterialInstances(_arg1:Array):MaterialObject3D{ var _local2:MaterialObject3D; var _local3:DaeInstanceMaterial; var _local4:MaterialObject3D; var _local5:String; var _local6:DaeBindVertexInput; for each (_local3 in _arg1) { _local4 = this.materials.getMaterialByName(_local3.symbol); if (!_local4){ _local4 = this.materials.getMaterialByName(_local3.target); }; if (!_local4){ } else { _materialInstances[_local3.symbol] = _local4; if (!_local2){ _local2 = _local4; }; if (_materialTextureSets[_local3.target]){ _local5 = _materialTextureSets[_local3.target]; _local6 = _local3.findBindVertexInput(_local5); if (_local6){ _materialTextureSets[_local3.symbol] = _local6; }; }; }; }; return (_local2); } override public function get scaleZ():Number{ return (super.scaleZ); } private function cloneObj(_arg1:DisplayObject3D, _arg2:DisplayObject3D):void{ var _local3:DisplayObject3D; var _local4:DisplayObject3D; var _local5:Node3D; if (_arg2 === _rootNode){ _local3 = new DisplayObject3D(((_arg2.name + "-") + _numClones)); _local3.copyTransform(_arg2.transform); _arg1 = _arg1.addChild(_local3); } else { if ((_arg2 is TriangleMesh3D)){ _local3 = new TriangleMesh3D(_arg2.material, new Array(), new Array(), ((_arg2.name + "-") + _numClones)); _local3.geometry = cloneGeometry(_local3, _arg2.geometry); _local3.geometry.ready = true; _arg1 = _arg1.addChild(_local3); } else { if ((_arg2 is Node3D)){ _local5 = (_arg2 as Node3D); _local3 = new Node3D(((_local5.name + "-") + _numClones), _local5.daeID, _local5.daeSID); _local3.copyTransform(_local5.transform); _arg1 = _arg1.addChild(_local3); } else { if ((_arg2 is DisplayObject3D)){ _local3 = new DisplayObject3D(((_arg2.name + "-") + _numClones)); _local3.copyTransform(_arg2.transform); _arg1 = _arg1.addChild(_local3); }; }; }; }; for each (_local4 in _arg2.children) { cloneObj(_arg1, _local4); }; } private function buildAnimations(_arg1:DisplayObject3D):void{ var joint:Node3D; var channels:Array; var child:DisplayObject3D; var keys:Array; var baked:Boolean; var i:int; var channel:DaeChannel; var transform:DaeTransform; var matrices:Array; var ms:Array; var node = _arg1; joint = (node as Node3D); channels = null; if (joint){ channels = findAnimationChannelsByID(joint.daeSID); if (!channels.length){ channels = findAnimationChannelsByID(joint.daeID); }; }; if (((channels) && (channels.length))){ keys = buildAnimationKeys(channels); baked = false; i = 0; while (i < channels.length) { channel = channels[i]; transform = findTransformBySID(joint, channel.syntax.targetSID); if (!transform){ throw (new Error(("no transform targeted by channel : " + channel.syntax.targetSID))); }; matrices = transform.buildAnimatedMatrices(channel); if (matrices.length != channel.input.length){ } else { channel.output = matrices; if ((((channels.length == 1)) && ((transform.type == ASCollada.DAE_MATRIX_ELEMENT)))){ try { buildAnimationController(joint, keys, matrices); } catch(e:Error) { Logger.error(((("[ERROR] " + joint.name) + "\n") + channel.syntax)); }; baked = true; break; }; }; i = (i + 1); }; if (!baked){ ms = bakeJointMatrices(joint, keys, channels); joint.copyTransform(ms[0]); buildAnimationController(joint, keys, ms); }; }; for each (child in node.children) { buildAnimations(child); }; } private function buildVertices(_arg1:DaeMesh):Array{ var _local2:Array; var _local3:int; var _local4:Array; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.vertices.length) { _local4 = _arg1.vertices[_local3]; _local2.push(new Vertex3D(_local4[0], _local4[1], _local4[2])); _local3++; }; return (_local2); } override public function getChildByName(_arg1:String):DisplayObject3D{ return (findChildByName(this, _arg1)); } override public function set scale(_arg1:Number):void{ super.scaleX = _arg1; super.scaleY = _arg1; super.scaleZ = -(_arg1); _loadScaleSet = true; } private function loadProgressHandler(_arg1:ProgressEvent):void{ dispatchEvent(_arg1); } override public function set scaleZ(_arg1:Number):void{ super.scaleZ = -(_arg1); _loadScaleSet = true; } private function linkSkin(_arg1:Skin3D, _arg2:DaeInstanceController):void{ var _local3:DaeController; var _local4:DaeSkin; var _local5:Object; var _local6:int; var _local7:SkinController; var _local8:Node3D; var _local9:String; var _local10:DisplayObject3D; var _local11:int; var _local12:String; var _local13:Node3D; var _local14:Array; _local3 = document.controllers[_arg2.url]; _local4 = _local3.skin; _local5 = new Object(); _arg1.joints = new Array(); _arg1.skeletons = new Array(); if (!_arg2.skeletons.length){ _local8 = findRootNode(this); if (_local8){ _arg2.skeletons.push(_local8.daeID); } else { throw (new Error("instance_controller doesn't have a skeleton node, and no _rootNode could be found!")); }; }; _local6 = 0; while (_local6 < _arg2.skeletons.length) { _local9 = _arg2.skeletons[_local6]; _local10 = findChildByID(this, _local9); if (!_local10){ Papervision3D.log(("[ERROR] could not find skeleton: " + _local9)); throw (new Error(("could not find skeleton: " + _local9))); }; _arg1.skeletons.push(_local10); _local11 = 0; while (_local11 < _local4.joints.length) { _local12 = _local4.joints[_local11]; if (_local5[_local12]){ } else { _local13 = (findChildByID(_local10, _local12) as Node3D); if (!_local13){ _local13 = (findChildByID(_local10, _local12, true) as Node3D); }; if (!_local13){ _local13 = (findChildByID(this, _local12, true) as Node3D); }; if (!_local13){ Papervision3D.log(((("[ERROR] could not find joint: " + _local12) + " ") + _local9)); throw (new Error(((("could not find joint: " + _local12) + " ") + _local9))); }; _local14 = _local4.findJointBindMatrix2(_local12); if (!_local14){ Papervision3D.log(("[ERROR] could not find bindmatrix for joint: " + _local12)); throw (new Error(("could not find bindmatrix for joint: " + _local12))); }; _local13.bindMatrix = new Matrix3D(_local14); _local13.blendVerts = _local4.findJointVertexWeightsByIDOrSID(_local12); if (!_local13.blendVerts){ Papervision3D.log(("[ERROR] could not find influences for joint: " + _local12)); throw (new Error(("could not find influences for joint: " + _local12))); }; _arg1.joints.push(_local13); _local5[_local12] = _local13; }; _local11++; }; _local6++; }; _local7 = new SkinController(_arg1, _yUp); _arg1.addController(_local7); } private function bakeJointMatrices(_arg1:Node3D, _arg2:Array, _arg3:Array):Array{ var _local4:Array; var _local5:int; var _local6:Matrix3D; var _local7:int; var _local8:DaeTransform; var _local9:Matrix3D; _local4 = new Array(); _local5 = 0; while (_local5 < _arg2.length) { _local6 = Matrix3D.IDENTITY; _local7 = 0; while (_local7 < _arg1.transforms.length) { _local8 = _arg1.transforms[_local7]; _local9 = findChannelMatrix(_arg3, _local8.sid, _arg2[_local5]); if (_local9){ _local6 = Matrix3D.multiply(_local6, _local9); } else { _local6 = Matrix3D.multiply(_local6, new Matrix3D(_local8.matrix)); }; _local7++; }; _local4.push(_local6); _local5++; }; return (_local4); } private function readySkins(_arg1:DisplayObject3D):void{ } private function buildScene(_arg1:Event):void{ if (_reader.hasEventListener(Event.COMPLETE)){ _reader.removeEventListener(Event.COMPLETE, buildScene); }; this.document = _reader.document; _yUp = (this.document.asset.yUp == ASCollada.DAE_Y_UP); _materialInstances = new Object(); _materialTextureSets = new Object(); _skins = new Dictionary(); _morphs = new Dictionary(); buildMaterials(); buildVisualScene(); linkSkins(this._rootNode); readySkins(this); readyMorphs(this); if (!_loadScaleSet){ this.scale = DEFAULT_SCALE; }; if (document.numQueuedAnimations){ hasAnimations = true; _reader.addEventListener(Event.COMPLETE, animationCompleteHandler); _reader.addEventListener(ProgressEvent.PROGRESS, animationProgressHandler); _reader.readAnimations(); } else { hasAnimations = false; }; dispatchEvent(new Event(Event.COMPLETE)); } private function findRootNode(_arg1:DisplayObject3D):Node3D{ var _local2:DisplayObject3D; var _local3:DisplayObject3D; if ((_arg1 is Node3D)){ return (Node3D(_arg1)); }; for each (_local2 in _arg1.children) { _local3 = findRootNode(_local2); if ((_local3 is Node3D)){ return (Node3D(_local3)); }; }; return (null); } public function load(_arg1, _arg2:MaterialsList=null):void{ this.materials = ((_arg2) || (new MaterialsList())); this.buildFileInfo(_arg1); _asset = _arg1; if ((((_asset is ByteArray)) || ((_asset is XML)))){ if (!this._reader.hasEventListener(Event.COMPLETE)){ this._reader.addEventListener(Event.COMPLETE, buildScene); }; this._reader.loadDocument(_asset); } else { doLoad(String(_asset)); }; } private function buildFileInfo(_arg1):void{ var _local2:Array; this.filename = ((_arg1 is String)) ? String(_arg1) : "./meshes/rawdata_dae"; this.filename = this.filename.split("\\").join("/"); if (this.filename.indexOf("/") != -1){ _local2 = this.filename.split("/"); this.fileTitle = String(_local2.pop()); this.baseUrl = _local2.join("/"); } else { this.fileTitle = this.filename; this.baseUrl = ""; }; } private function materialErrorHandler(_arg1:FileLoadEvent):void{ Logger.error(("[ERROR] a texture failed to load: " + _arg1.file)); dispatchEvent(_arg1); } private function cloneGeometry(_arg1:DisplayObject3D, _arg2:GeometryObject3D):GeometryObject3D{ var _local3:GeometryObject3D; var _local4:Array; var _local5:Array; var _local6:int; var _local7:Dictionary; var _local8:Vertex3D; var _local9:Triangle3D; var _local10:Vertex3D; var _local11:Vertex3D; var _local12:Vertex3D; var _local13:NumberUV; var _local14:NumberUV; var _local15:NumberUV; var _local16:Triangle3D; _local3 = new GeometryObject3D(); _local4 = _arg2.vertices; _local5 = _arg2.faces; _local7 = new Dictionary(); _local3.vertices = new Array(); _local3.faces = new Array(); _local6 = 0; while (_local6 < _local4.length) { _local8 = _local4[_local6]; _local7[_local8] = _local8.clone(); _local3.vertices.push(_local7[_local8]); _local6++; }; _local6 = 0; while (_local6 < _local5.length) { _local9 = _local5[_local6]; _local10 = _local7[_local9.v0]; _local11 = _local7[_local9.v1]; _local12 = _local7[_local9.v2]; _local13 = _local9.uv[0].clone(); _local14 = _local9.uv[1].clone(); _local15 = _local9.uv[2].clone(); _local16 = new Triangle3D(_arg1, [_local10, _local11, _local12], _local9.material, [_local13, _local14, _local15]); _local3.faces.push(_local16); _local6++; }; return (_local3); } private function linkSkins(_arg1:DisplayObject3D):void{ var _local2:DisplayObject3D; if ((((_skins[_arg1] is DaeInstanceController)) && ((_arg1 is Skin3D)))){ linkSkin((_arg1 as Skin3D), _skins[_arg1]); }; for each (_local2 in _arg1.children) { linkSkins(_local2); }; } private function buildAnimationController(_arg1:Node3D, _arg2:Array, _arg3:Array):void{ var _local4:Array; var _local5:SimpleController; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:uint; var _local11:AnimationFrame; _local4 = new Array(_arg3.length); _local5 = new SimpleController(_arg1, SimpleController.TRANSFORM); _local6 = 0; while (_local6 < _arg3.length) { _local7 = ((_local6 + 1) % _arg3.length); _local4[_local6] = ((_arg3[_local6] is Matrix3D)) ? _arg3[_local6] : new Matrix3D(_arg3[_local6]); _local8 = AnimationEngine.secondsToFrame(_arg2[_local6]); _local9 = AnimationEngine.secondsToFrame(_arg2[_local7]); _local10 = ((_local7 > 0)) ? (_local9 - _local8) : 10; _local11 = new AnimationFrame(_local8, _local10, [_local4[_local6]]); _local5.addFrame(_local11); _local6++; }; _arg1.addController(_local5); } private function findTransformBySID(_arg1:Node3D, _arg2:String):DaeTransform{ var _local3:DaeTransform; for each (_local3 in _arg1.transforms) { if (_local3.sid == _arg2){ return (_local3); }; }; return (null); } private function buildSkin(_arg1:DaeInstanceController, _arg2:MaterialObject3D=null):TriangleMesh3D{ var _local3:DaeController; var _local4:DaeSkin; var _local5:Skin3D; var _local6:Boolean; var _local7:DaeController; var _local8:MorphController; var _local9:String; var _local10:int; var _local11:uint; var _local12:int; var _local13:DisplayObject3D; var _local14:String; var _local15:Number; var _local16:Boolean; _local3 = document.controllers[_arg1.url]; if (((!(_local3)) || (!(_local3.skin)))){ Logger.trace("[WARNING] no skin controller!"); return (null); }; _local4 = _local3.skin; _local5 = new Skin3D(_arg2, new Array(), new Array(), _local4.source, (document.yUp == DaeDocument.Y_UP)); _local5.bindPose = new Matrix3D(_local4.bind_shape_matrix); _local5.joints = new Array(); _local6 = buildGeometry(_local4.source, _local5); if (((!(_local6)) && (document.controllers[_local4.source]))){ _local7 = document.controllers[_local4.source]; if (_local7.morph){ _local6 = buildGeometry(_local7.morph.source, _local5); if (_local6){ _local8 = new MorphController(_local5.geometry); _local9 = _local7.morph.method; _local10 = (AnimationEngine.NUM_FRAMES / _local7.morph.targets.length); _local11 = 0; _local12 = 0; while (_local12 < _local7.morph.targets.length) { _local13 = new DisplayObject3D(); _local14 = _local7.morph.targets[_local12]; _local15 = _local7.morph.weights[_local12]; _local16 = buildGeometry(_local14, _local13); if (_local16){ _local8.addFrame(new AnimationFrame(_local11, _local10, _local13.geometry.vertices, _local14)); _local11 = (_local11 + _local10); }; _local12++; }; _local5.addController(_local8); }; }; }; if (!_local6){ Logger.error("[ERROR] could not find geometry for skin!"); throw (new Error("could not find geometry for skin!")); }; _local5.geometry.ready = true; _skins[_local5] = _arg1; if (!this.skin){ this.skin = _local5; }; return (_local5); } private function findSkinController(_arg1:DaeNode):DaeInstanceController{ var _local2:DaeInstanceController; var _local3:DaeController; for each (_local2 in _arg1.controllers) { _local3 = document.controllers[_local2.url]; if (_local3.skin){ return (_local2); }; }; return (null); } private function findAnimationChannelsByID(_arg1:String):Array{ var channels:Array; var animation:DaeAnimation; var channel:DaeChannel; var target:String; var id = _arg1; channels = new Array(); try { for each (animation in document.animations) { for each (channel in animation.channels) { target = (channel.target.split("/").shift() as String); if (target == id){ channels.push(channel); }; }; }; } catch(e:Error) { }; return (channels); } public function setChildMaterial(_arg1:DisplayObject3D, _arg2:MaterialObject3D):Boolean{ var _local3:uint; var _local4:uint; var _local5:DisplayObject3D; var _local6:GeometryObject3D; var _local7:Triangle3D; var _local8:DisplayObject3D; if (!_arg1){ Papervision3D.log((("Object with name: '" + _arg1.name) + "' is not a child of this DAE!")); return (false); }; _local3 = 10; _local4 = 0; _local5 = _arg1; _local6 = null; while (((!(_local6)) && (((_local4 + 1) < _local3)))) { if (((((_local5.geometry) && (_local5.geometry.faces))) && (_local5.geometry.faces.length))){ _local6 = _local5.geometry; } else { for each (_local8 in _local5.children) { _local5 = _local8; break; }; }; }; if (!_local6){ Papervision3D.log("Couldn't find any geometry!"); return (false); }; _local5.material = _arg2; for each (_local7 in _local6.faces) { _local7.material = _arg2; }; return (true); } private function findChildByID(_arg1:DisplayObject3D, _arg2:String, _arg3:Boolean=false):DisplayObject3D{ var _local4:DisplayObject3D; var _local5:DisplayObject3D; if ((_arg1 is Node3D)){ if (((_arg3) && ((Node3D(_arg1).daeSID == _arg2)))){ return (_arg1); }; if (((!(_arg3)) && ((Node3D(_arg1).daeID == _arg2)))){ return (_arg1); }; }; for each (_local4 in _arg1.children) { _local5 = findChildByID(_local4, _arg2, _arg3); if (_local5){ return (_local5); }; }; return (null); } private function buildGeometry(_arg1:String, _arg2:DisplayObject3D, _arg3:MaterialObject3D=null):Boolean{ var _local4:DaeGeometry; var _local5:GeometryObject3D; var _local6:int; _local4 = document.geometries[_arg1]; if (!_local4){ return (false); }; if (_local4.mesh){ _arg2.geometry = (_arg2.geometry) ? _arg2.geometry : new GeometryObject3D(); _local5 = _arg2.geometry; _local5.vertices = buildVertices(_local4.mesh); _local5.faces = new Array(); _local6 = 0; while (_local6 < _local4.mesh.primitives.length) { buildFaces(_local4.mesh.primitives[_local6], _local5, _arg2, _arg3); _local6++; }; _local5.ready = true; Logger.trace(((("created geometry v:" + _local5.vertices.length) + " f:") + _local5.faces.length)); return (true); }; return (false); } private function buildMorph(_arg1:DaeInstanceController, _arg2:AnimatedMesh3D):void{ var _local3:DaeController; var _local4:DaeMorph; var _local5:Boolean; var _local6:MorphController; var _local7:DisplayObject3D; var _local8:uint; var _local9:uint; var _local10:int; var _local11:DisplayObject3D; var _local12:String; var _local13:Number; _local3 = document.controllers[_arg1.url]; _local4 = _local3.morph; _local5 = buildGeometry(_local4.source, _arg2); if (!_local5){ Logger.error("[ERROR] could not find geometry for morph!"); throw (new Error("could not find geometry for morph!")); }; _local6 = new MorphController(_arg2.geometry); _local7 = new DisplayObject3D(); buildGeometry(_local4.source, _local7); _local8 = 0; _local9 = (AnimationEngine.NUM_FRAMES / _local4.targets.length); _local6.addFrame(new AnimationFrame(_local8, _local9, _local7.geometry.vertices, "start")); _local8 = (_local8 + _local9); _local10 = 0; while (_local10 < _local4.targets.length) { _local11 = new DisplayObject3D(); _local12 = _local4.targets[_local10]; _local13 = _local4.weights[_local10]; buildGeometry(_local12, _local11); _local6.addFrame(new AnimationFrame(_local8, _local9, _local11.geometry.vertices, _local12)); _local8 = (_local8 + _local9); _local10++; }; _arg2.addController(_local6); _morphs[_arg2] = true; } override public function get scale():Number{ if ((((super.scaleX == super.scaleY)) && ((super.scaleX == -(super.scaleZ))))){ return (super.scaleX); }; return (NaN); } private function handleIOError(_arg1:IOErrorEvent):void{ dispatchEvent(_arg1); } public function clone():DAE{ var _local1:DAE; _local1 = new DAE(); cloneObj(_local1, this._rootNode); _numClones++; return (_local1); } private function buildImagePath(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:Array; var _local5:String; if (texturePath != null){ _arg2 = (texturePath + _arg2.slice((_arg2.lastIndexOf("/") + 1))); }; _local3 = _arg1.split("/"); _local4 = _arg2.split("/"); while (_local3[0] == ".") { _local3.shift(); }; while (_local4[0] == ".") { _local4.shift(); }; while (_local4[0] == "..") { _local4.shift(); _local3.pop(); }; _local5 = ((_local3.length > 1)) ? _local3.join("/") : (_local3.length) ? _local3[0] : ""; _local5 = ((_local5)!="") ? ((_local5 + "/") + _local4.join("/")) : _local4.join("/"); return (_local5); } private function updateMaterials(_arg1:DisplayObject3D, _arg2:MaterialObject3D, _arg3:MaterialObject3D):void{ var _local4:DisplayObject3D; var _local5:Triangle3D; _arg2.unregisterObject(_arg1); if (_arg1.material === _arg2){ _arg1.material = _arg3; }; if (((((_arg1.geometry) && (_arg1.geometry.faces))) && (_arg1.geometry.faces.length))){ for each (_local5 in _arg1.geometry.faces) { if (_local5.material === _arg2){ _local5.material = _arg3; }; }; }; for each (_local4 in _arg1.children) { updateMaterials(_local4, _arg2, _arg3); }; } private function buildMaterials():void{ var _local1:Object; var _local2:String; var _local3:DaeMaterial; var _local4:Boolean; var _local5:String; var _local6:DaeEffect; var _local7:DaeLambert; var _local8:MaterialObject3D; var _local9:DaeImage; var _local10:String; _local1 = document.materialSymbolToTarget; for (_local2 in document.materials) { _local3 = document.materials[_local2]; _local4 = false; for (_local5 in this.materials.materialsByName) { if (_local1[_local5] == _local3.id){ _local4 = true; break; }; }; if (_local4){ } else { _local6 = document.effects[_local3.effect]; _local7 = (_local6.color as DaeLambert); if (((_local7) && (_local7.diffuse.texture))){ _materialTextureSets[_local3.id] = _local7.diffuse.texture.texcoord; }; if (((_local6) && (_local6.texture_url))){ _local9 = document.images[_local6.texture_url]; //unresolved if _local10 = buildImagePath(this.baseUrl, _local9.init_from); _local8 = new BitmapFileMaterial(_local10); _local8.tiled = true; _local8.addEventListener(FileLoadEvent.LOAD_COMPLETE, materialCompleteHandler); _local8.addEventListener(FileLoadEvent.LOAD_ERROR, materialErrorHandler); this.materials.addMaterial(_local8, _local3.id); } else { if (((_local7) && (_local7.diffuse.color))){ _local8 = new ColorMaterial(buildColor(_local7.diffuse.color)); } else { _local8 = MaterialObject3D.DEFAULT; }; this.materials.addMaterial(_local8, _local3.id); }; }; }; } private function findChannelMatrix(_arg1:Array, _arg2:String, _arg3:Number=0):Matrix3D{ var i:int; var channel:DaeChannel; var j:int; var t:Number; var channels = _arg1; var sid = _arg2; var time = _arg3; try { i = 0; while (i < channels.length) { channel = channels[i]; if (channel.syntax.targetSID == sid){ j = 0; while (j < channel.input.length) { t = channel.input[j]; if (t == time){ return (new Matrix3D(channel.output[j])); }; if (t > time){ break; }; j = (j + 1); }; }; i = (i + 1); }; } catch(e:Error) { Papervision3D.log(("[WARNING] Could not find channel matrix for SID=" + sid)); }; return (null); } public function replaceMaterialByName(_arg1:MaterialObject3D, _arg2:String):void{ var _local3:MaterialObject3D; if (!this.materials){ return; }; _local3 = this.materials.getMaterialByName(_arg2); if (_local3){ if (this.material === _local3){ this.material = _arg1; }; _local3 = this.materials.removeMaterial(_local3); _local3.unregisterObject(this); _arg1 = this.materials.addMaterial(_arg1, _arg2); updateMaterials(this, _local3, _arg1); }; } private function buildNode(_arg1:DaeNode, _arg2:DisplayObject3D):void{ var _local3:DaeInstanceController; var _local4:DaeInstanceController; var _local5:DisplayObject3D; var _local6:DisplayObject3D; var _local7:MaterialObject3D; var _local8:int; var _local9:int; var _local10:Matrix3D; var _local11:DaeInstanceGeometry; var _local12:TriangleMesh3D; var _local13:DaeInstanceNode; var _local14:DaeNode; _local3 = findSkinController(_arg1); _local4 = findMorphController(_arg1); if (_local3){ buildMaterialInstances(_local3.materials); _local5 = buildSkin(_local3, _local7); if (_local5){ _local6 = _arg2.addChild(_local5); }; } else { if (_local4){ buildMaterialInstances(_local4.materials); _local5 = new AnimatedMesh3D(_local7, new Array(), new Array(), _arg1.id); buildMorph(_local4, (_local5 as AnimatedMesh3D)); _local6 = _arg2.addChild(_local5); } else { if (_arg1.geometries.length){ _local5 = new Node3D(_arg1.name, _arg1.id, _arg1.sid); for each (_local11 in _arg1.geometries) { _local7 = buildMaterialInstances(_local11.materials); _local12 = new TriangleMesh3D(_local7, new Array(), new Array()); buildGeometry(_local11.url, _local12, _local7); _local5.addChild(_local12); }; _local6 = _arg2.addChild(_local5); Node3D(_local6).matrixStack = buildMatrixStack(_arg1); Node3D(_local6).transforms = _arg1.transforms; } else { _local6 = _arg2.addChild(new Node3D(_arg1.name, _arg1.id, _arg1.sid)); Node3D(_local6).matrixStack = buildMatrixStack(_arg1); Node3D(_local6).transforms = _arg1.transforms; }; }; }; _local8 = 0; while (_local8 < _arg1.instance_nodes.length) { _local13 = _arg1.instance_nodes[_local8]; _local14 = document.getDaeNodeById(_local13.url); buildNode(_local14, _local6); _local8++; }; _local9 = 0; while (_local9 < _arg1.nodes.length) { buildNode(_arg1.nodes[_local9], _local6); _local9++; }; _local10 = buildMatrix(_arg1); _local6.copyTransform(_local10); } private function buildColor(_arg1:Array):uint{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = (_arg1[0] * 0xFF); _local3 = (_arg1[1] * 0xFF); _local4 = (_arg1[2] * 0xFF); return ((((_local2 << 16) | (_local3 << 8)) | _local4)); } private function materialCompleteHandler(_arg1:FileLoadEvent):void{ dispatchEvent(_arg1); } private function animationCompleteHandler(_arg1:Event):void{ buildAnimations(this); } private function buildMatrix(_arg1:DaeNode):Matrix3D{ var _local2:Matrix3D; var _local3:int; var _local4:DaeTransform; _local2 = Matrix3D.IDENTITY; _local3 = 0; while (_local3 < _arg1.transforms.length) { _local4 = _arg1.transforms[_local3]; _local2 = Matrix3D.multiply(_local2, new Matrix3D(_local4.matrix)); _local3++; }; return (_local2); } private function buildAnimationKeys(_arg1:Array):Array{ var _local2:Array; var _local3:Array; var _local4:Object; var _local5:int; var _local6:int; var _local7:DaeChannel; _local2 = new Array(); _local3 = new Array(); _local4 = new Object(); _local5 = 0; while (_local5 < _arg1.length) { _local7 = _arg1[_local5]; _local6 = 0; while (_local6 < _local7.input.length) { if (!_local4[_local7.input[_local6]]){ _local4[_local7.input[_local6]] = true; _local3.push({time:_local7.input[_local6]}); }; _local6++; }; _local5++; }; _local3.sortOn("time", Array.NUMERIC); _local5 = 0; while (_local5 < _local3.length) { _local2.push(_local3[_local5].time); _local5++; }; return (_local2); } private function findMorphController(_arg1:DaeNode):DaeInstanceController{ var _local2:DaeInstanceController; var _local3:DaeController; for each (_local2 in _arg1.controllers) { _local3 = document.controllers[_local2.url]; if (_local3.morph){ return (_local2); }; }; return (null); } private function buildVisualScene():void{ var _local1:int; this._rootNode = addChild(new DisplayObject3D("COLLADA_root")); _local1 = 0; while (_local1 < document.vscene.nodes.length) { buildNode(document.vscene.nodes[_local1], this._rootNode); _local1++; }; } private function buildSpline(_arg1:DaeSpline):DisplayObject3D{ var _local2:Lines3D; var _local3:int; var _local4:Array; var _local5:Array; _local2 = new Lines3D(new LineMaterial(0xFFFF00, 0.5)); _local3 = 0; while (_local3 < _arg1.vertices.length) { _local4 = _arg1.vertices[_local3]; _local5 = _arg1.vertices[((_local3 + 1) % _arg1.vertices.length)]; _local2.addNewLine(0, _local4[0], _local4[1], _local4[2], _local5[0], _local5[1], _local5[2]); _local3++; }; return (_local2); } private function buildFaces(_arg1:DaePrimitive, _arg2:GeometryObject3D, _arg3:DisplayObject3D, _arg4:MaterialObject3D=null):void{ var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:DaeBindVertexInput; var _local10:int; var _local11:Array; var _local12:Boolean; var _local13:Array; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:Array; var _local18:Array; _arg4 = ((_materialInstances[_arg1.material]) || (_arg4)); _arg4 = ((_arg4) || (MaterialObject3D.DEFAULT)); _local8 = new Array(); _local9 = ((_materialTextureSets[_arg1.material] is DaeBindVertexInput)) ? _materialTextureSets[_arg1.material] : null; _local10 = ((_local9 is DaeBindVertexInput)) ? _local9.input_set : 0; _local11 = _arg1.getTexCoords(_local10); _local5 = 0; while (_local5 < _local11.length) { _local16 = _local11[_local5]; _local8.push(new NumberUV(_local16[0], _local16[1])); _local5++; }; _local12 = (_local8.length == _arg1.vertices.length); _local13 = new Array(); _local14 = new Array(); _local15 = new Array(); switch (_arg1.type){ case ASCollada.DAE_LINES_ELEMENT: _local5 = 0; while (_local5 < _arg1.vertices.length) { _local14[0] = _arg2.vertices[_arg1.vertices[_local5]]; _local14[1] = _arg2.vertices[_arg1.vertices[(_local5 + 1)]]; _local15[0] = (_local12) ? _local8[_local5] : new NumberUV(); _local15[1] = (_local12) ? _local8[(_local5 + 1)] : new NumberUV(); _local5 = (_local5 + 2); }; break; case ASCollada.DAE_LINESTRIPS_ELEMENT: _local5 = 1; while (_local5 < _arg1.vertices.length) { _local14[0] = _arg2.vertices[_arg1.vertices[(_local5 - 1)]]; _local14[1] = _arg2.vertices[_arg1.vertices[_local5]]; _local15[0] = (_local12) ? _local8[(_local5 - 1)] : new NumberUV(); _local15[1] = (_local12) ? _local8[_local5] : new NumberUV(); _local5++; }; break; case ASCollada.DAE_TRIANGLES_ELEMENT: _local5 = 0; _local6 = 0; while (_local5 < _arg1.vertices.length) { _local13[0] = _arg1.vertices[_local5]; _local13[1] = _arg1.vertices[(_local5 + 1)]; _local13[2] = _arg1.vertices[(_local5 + 2)]; _local14[0] = _arg2.vertices[_local13[0]]; _local14[1] = _arg2.vertices[_local13[1]]; _local14[2] = _arg2.vertices[_local13[2]]; _local15[0] = (_local12) ? _local8[(_local5 + 0)] : new NumberUV(); _local15[1] = (_local12) ? _local8[(_local5 + 1)] : new NumberUV(); _local15[2] = (_local12) ? _local8[(_local5 + 2)] : new NumberUV(); _arg2.faces.push(new Triangle3D(_arg3, [_local14[0], _local14[1], _local14[2]], _arg4, [_local15[0], _local15[1], _local15[2]])); _local5 = (_local5 + 3); _local6++; }; break; case ASCollada.DAE_TRIFANS_ELEMENT: _local14[0] = _arg2.vertices[_arg1.vertices[0]]; _local14[1] = _arg2.vertices[_arg1.vertices[1]]; _local14[2] = _arg2.vertices[_arg1.vertices[2]]; _local15[0] = (_local12) ? _local8[0] : new NumberUV(); _local15[1] = (_local12) ? _local8[1] : new NumberUV(); _local15[2] = (_local12) ? _local8[2] : new NumberUV(); _arg2.faces.push(new Triangle3D(_arg3, [_local14[0], _local14[1], _local14[2]], _arg4, [_local15[0], _local15[1], _local15[2]])); _local5 = 3; while (_local5 < _arg1.vertices.length) { _local14[1] = _arg2.vertices[_arg1.vertices[(_local5 - 1)]]; _local14[2] = _arg2.vertices[_arg1.vertices[_local5]]; _local15[1] = (_local12) ? _local8[(_local5 - 1)] : new NumberUV(); _local15[2] = (_local12) ? _local8[_local5] : new NumberUV(); _arg2.faces.push(new Triangle3D(_arg3, [_local14[0], _local14[1], _local14[2]], _arg4, [_local15[0], _local15[1], _local15[2]])); _local5++; }; break; case ASCollada.DAE_TRISTRIPS_ELEMENT: _local14[0] = _arg2.vertices[_arg1.vertices[0]]; _local14[1] = _arg2.vertices[_arg1.vertices[1]]; _local14[2] = _arg2.vertices[_arg1.vertices[2]]; _local15[0] = (_local12) ? _local8[0] : new NumberUV(); _local15[1] = (_local12) ? _local8[1] : new NumberUV(); _local15[2] = (_local12) ? _local8[2] : new NumberUV(); _arg2.faces.push(new Triangle3D(_arg3, [_local14[0], _local14[1], _local14[2]], _arg4, [_local15[0], _local15[1], _local15[2]])); _local5 = 3; while (_local5 < _arg1.vertices.length) { _local14[0] = _arg2.vertices[_arg1.vertices[(_local5 - 2)]]; _local14[1] = _arg2.vertices[_arg1.vertices[(_local5 - 1)]]; _local14[2] = _arg2.vertices[_arg1.vertices[_local5]]; _local15[0] = (_local12) ? _local8[(_local5 - 2)] : new NumberUV(); _local15[1] = (_local12) ? _local8[(_local5 - 1)] : new NumberUV(); _local15[2] = (_local12) ? _local8[_local5] : new NumberUV(); _arg2.faces.push(new Triangle3D(_arg3, [_local14[0], _local14[1], _local14[2]], _arg4, [_local15[0], _local15[1], _local15[2]])); _local5++; }; break; case ASCollada.DAE_POLYLIST_ELEMENT: _local5 = 0; _local7 = 0; while (_local5 < _arg1.vcount.length) { _local17 = new Array(); _local18 = new Array(); _local6 = 0; while (_local6 < _arg1.vcount[_local5]) { _local18.push((_local12) ? _local8[_local7] : new NumberUV()); var _temp1 = _local7; _local7 = (_local7 + 1); _local17.push(_arg2.vertices[_arg1.vertices[_temp1]]); _local6++; }; if (((((!(_arg2)) || (!(_arg2.faces)))) || (!(_arg2.vertices)))){ throw (new Error("no geomotry")); }; if (!_arg3){ throw (new Error("no instance")); }; _local14[0] = _local17[0]; _local15[0] = _local18[0]; _local6 = 1; while (_local6 < (_local17.length - 1)) { _local14[1] = _local17[_local6]; _local14[2] = _local17[(_local6 + 1)]; _local15[1] = _local18[_local6]; _local15[2] = _local18[(_local6 + 1)]; _arg2.faces.push(new Triangle3D(_arg3, [_local14[0], _local14[1], _local14[2]], _arg4, [_local15[0], _local15[1], _local15[2]])); _local6++; }; _local5++; }; break; case ASCollada.DAE_POLYGONS_ELEMENT: break; default: break; }; } private function readyMorphs(_arg1:DisplayObject3D):void{ } private function buildMatrixStack(_arg1:DaeNode):Array{ var _local2:Array; var _local3:int; var _local4:DaeTransform; var _local5:Matrix3D; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.transforms.length) { _local4 = _arg1.transforms[_local3]; _local5 = new Matrix3D(_local4.matrix); _local2.push(_local5); _local3++; }; return (_local2); } } }//package org.papervision3d.objects.parsers
Section 224
//Cube (org.papervision3d.objects.primitives.Cube) package org.papervision3d.objects.primitives { import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Cube extends TriangleMesh3D { private var insideFaces:int; public var segments:Number3D; private var excludeFaces:int; public static var ALL:int = (((((FRONT + BACK) + RIGHT) + LEFT) + TOP) + BOTTOM); public static var LEFT:int = 8; public static var FRONT:int = 1; public static var BOTTOM:int = 32; public static var TOP:int = 16; public static var BACK:int = 2; public static var NONE:int = 0; public static var RIGHT:int = 4; public function Cube(_arg1:MaterialsList, _arg2:Number=500, _arg3:Number=500, _arg4:Number=500, _arg5:int=1, _arg6:int=1, _arg7:int=1, _arg8:int=0, _arg9:int=0, _arg10:Object=null){ super(_arg1.getMaterialByName("all"), new Array(), new Array(), null, _arg10); this.materials = _arg1; this.insideFaces = _arg8; this.excludeFaces = _arg9; segments = new Number3D(_arg5, _arg6, _arg7); buildCube(_arg2, _arg4, _arg3); } private function buildPlane(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false):void{ var _local8:MaterialObject3D; var _local9:String; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:Array; var _local17:Array; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:NumberUV; var _local24:NumberUV; var _local25:NumberUV; var _local26:int; var _local27:Vertex3D; var _local28:Vertex3D; var _local29:Vertex3D; var _local30:Vertex3D; _local8 = materials.getMaterialByName(_arg1); if (!_local8){ _local8 = materials.getMaterialByName("all"); if (!_local8){ Papervision3D.log("Cube: Required material not found in given materials list. Supported materials are: front, back, right, left, top, bottom & all."); return; }; }; if ((((((_arg2 == "x")) && ((_arg3 == "y")))) || ((((_arg2 == "y")) && ((_arg3 == "x")))))){ _local9 = "z"; } else { if ((((((_arg2 == "x")) && ((_arg3 == "z")))) || ((((_arg2 == "z")) && ((_arg3 == "x")))))){ _local9 = "y"; } else { if ((((((_arg2 == "z")) && ((_arg3 == "y")))) || ((((_arg2 == "y")) && ((_arg3 == "z")))))){ _local9 = "x"; }; }; }; _local10 = (_arg7) ? -1 : 1; _local11 = this.segments[_arg2]; _local12 = this.segments[_arg3]; _local13 = (_local11 + 1); _local14 = (_local12 + 1); _local15 = this.geometry.vertices; _local16 = this.geometry.faces; _local17 = new Array(); _local18 = (_arg4 / 2); _local19 = (_arg5 / 2); _local20 = (_arg4 / _local11); _local21 = (_arg5 / _local12); _local22 = 0; while (_local22 < _local13) { _local26 = 0; while (_local26 < _local14) { _local27 = new Vertex3D(); _local27[_arg2] = (((_local22 * _local20) - _local18) * _local10); _local27[_arg3] = ((_local26 * _local21) - _local19); _local27[_local9] = _arg6; _local15.push(_local27); _local17.push(_local27); _local26++; }; _local22++; }; _local22 = 0; while (_local22 < _local11) { _local26 = 0; while (_local26 < _local12) { _local28 = _local17[((_local22 * _local14) + _local26)]; _local29 = _local17[((_local22 * _local14) + (_local26 + 1))]; _local30 = _local17[(((_local22 + 1) * _local14) + _local26)]; _local23 = new NumberUV((_local22 / _local11), (_local26 / _local12)); _local24 = new NumberUV((_local22 / _local11), ((_local26 + 1) / _local12)); _local25 = new NumberUV(((_local22 + 1) / _local11), (_local26 / _local12)); _local16.push(new Triangle3D(this, [_local28, _local30, _local29], _local8, [_local23, _local25, _local24])); _local28 = _local17[(((_local22 + 1) * _local14) + (_local26 + 1))]; _local29 = _local17[(((_local22 + 1) * _local14) + _local26)]; _local30 = _local17[((_local22 * _local14) + (_local26 + 1))]; _local23 = new NumberUV(((_local22 + 1) / _local11), ((_local26 + 1) / _local12)); _local24 = new NumberUV(((_local22 + 1) / _local11), (_local26 / _local12)); _local25 = new NumberUV((_local22 / _local11), ((_local26 + 1) / _local12)); _local16.push(new Triangle3D(this, [_local29, _local28, _local30], _local8, [_local24, _local23, _local25])); _local26++; }; _local22++; }; } private function buildCube(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Number; var _local6:Number; _local4 = (_arg1 / 2); _local5 = (_arg2 / 2); _local6 = (_arg3 / 2); if (!(excludeFaces & FRONT)){ buildPlane("front", "x", "y", _arg1, _arg2, _local6, !(Boolean((insideFaces & FRONT)))); }; if (!(excludeFaces & BACK)){ buildPlane("back", "x", "y", _arg1, _arg2, -(_local6), Boolean((insideFaces & BACK))); }; if (!(excludeFaces & RIGHT)){ buildPlane("right", "z", "y", _arg3, _arg2, _local4, Boolean((insideFaces & RIGHT))); }; if (!(excludeFaces & LEFT)){ buildPlane("left", "z", "y", _arg3, _arg2, -(_local4), !(Boolean((insideFaces & LEFT)))); }; if (!(excludeFaces & TOP)){ buildPlane("top", "x", "z", _arg1, _arg3, _local5, Boolean((insideFaces & TOP))); }; if (!(excludeFaces & BOTTOM)){ buildPlane("bottom", "x", "z", _arg1, _arg3, -(_local5), !(Boolean((insideFaces & BOTTOM)))); }; mergeVertices(); this.geometry.ready = true; } } }//package org.papervision3d.objects.primitives
Section 225
//Plane (org.papervision3d.objects.primitives.Plane) package org.papervision3d.objects.primitives { import org.papervision3d.core.proto.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; public class Plane extends TriangleMesh3D { public var segmentsH:Number; public var segmentsW:Number; public static var DEFAULT_SCALE:Number = 1; public static var DEFAULT_SEGMENTS:Number = 1; public static var DEFAULT_SIZE:Number = 500; public function Plane(_arg1:MaterialObject3D=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Object=null){ var _local7:Number; super(_arg1, new Array(), new Array(), null, _arg6); this.segmentsW = ((_arg4) || (DEFAULT_SEGMENTS)); this.segmentsH = ((_arg5) || (this.segmentsW)); _local7 = DEFAULT_SCALE; if (!_arg3){ if (_arg2){ _local7 = _arg2; }; if (((_arg1) && (_arg1.bitmap))){ _arg2 = (_arg1.bitmap.width * _local7); _arg3 = (_arg1.bitmap.height * _local7); } else { _arg2 = (DEFAULT_SIZE * _local7); _arg3 = (DEFAULT_SIZE * _local7); }; }; buildPlane(_arg2, _arg3); } private function buildPlane(_arg1:Number, _arg2:Number):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Array; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:int; var _local14:NumberUV; var _local15:NumberUV; var _local16:NumberUV; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Vertex3D; var _local21:Vertex3D; var _local22:Vertex3D; _local3 = this.segmentsW; _local4 = this.segmentsH; _local5 = (_local3 + 1); _local6 = (_local4 + 1); _local7 = this.geometry.vertices; _local8 = this.geometry.faces; _local9 = (_arg1 / 2); _local10 = (_arg2 / 2); _local11 = (_arg1 / _local3); _local12 = (_arg2 / _local4); _local13 = 0; while (_local13 < (_local3 + 1)) { _local17 = 0; while (_local17 < _local6) { _local18 = ((_local13 * _local11) - _local9); _local19 = ((_local17 * _local12) - _local10); _local7.push(new Vertex3D(_local18, _local19, 0)); _local17++; }; _local13++; }; _local13 = 0; while (_local13 < _local3) { _local17 = 0; while (_local17 < _local4) { _local20 = _local7[((_local13 * _local6) + _local17)]; _local21 = _local7[((_local13 * _local6) + (_local17 + 1))]; _local22 = _local7[(((_local13 + 1) * _local6) + _local17)]; _local14 = new NumberUV((_local13 / _local3), (_local17 / _local4)); _local15 = new NumberUV((_local13 / _local3), ((_local17 + 1) / _local4)); _local16 = new NumberUV(((_local13 + 1) / _local3), (_local17 / _local4)); _local8.push(new Triangle3D(this, [_local20, _local22, _local21], null, [_local14, _local16, _local15])); _local20 = _local7[(((_local13 + 1) * _local6) + (_local17 + 1))]; _local21 = _local7[(((_local13 + 1) * _local6) + _local17)]; _local22 = _local7[((_local13 * _local6) + (_local17 + 1))]; _local14 = new NumberUV(((_local13 + 1) / _local3), ((_local17 + 1) / _local4)); _local15 = new NumberUV(((_local13 + 1) / _local3), (_local17 / _local4)); _local16 = new NumberUV((_local13 / _local3), ((_local17 + 1) / _local4)); _local8.push(new Triangle3D(this, [_local20, _local22, _local21], null, [_local14, _local16, _local15])); _local17++; }; _local13++; }; this.geometry.ready = true; } } }//package org.papervision3d.objects.primitives
Section 226
//Sphere (org.papervision3d.objects.primitives.Sphere) package org.papervision3d.objects.primitives { import org.papervision3d.core.proto.*; import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; public class Sphere extends TriangleMesh3D { public var segmentsH:Number; public var segmentsW:Number; public static var MIN_SEGMENTSW:Number = 3; public static var DEFAULT_SCALE:Number = 1; public static var DEFAULT_RADIUS:Number = 100; public static var DEFAULT_SEGMENTSH:Number = 6; public static var MIN_SEGMENTSH:Number = 2; public static var DEFAULT_SEGMENTSW:Number = 8; public function Sphere(_arg1:MaterialObject3D=null, _arg2:Number=100, _arg3:int=8, _arg4:int=6, _arg5:Object=null){ var _local6:Number; super(_arg1, new Array(), new Array(), null, _arg5); this.segmentsW = Math.max(MIN_SEGMENTSW, ((_arg3) || (DEFAULT_SEGMENTSW))); this.segmentsH = Math.max(MIN_SEGMENTSH, ((_arg4) || (DEFAULT_SEGMENTSH))); if (_arg2 == 0){ _arg2 = DEFAULT_RADIUS; }; _local6 = DEFAULT_SCALE; buildSphere(_arg2); } private function buildSphere(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Array; var _local9:Array; var _local10:int; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Array; var _local15:Vertex3D; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:Boolean; var _local21:Vertex3D; var _local22:Vertex3D; var _local23:Vertex3D; var _local24:Vertex3D; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:NumberUV; var _local30:NumberUV; var _local31:NumberUV; var _local32:NumberUV; _local5 = Math.max(3, this.segmentsW); _local6 = Math.max(2, this.segmentsH); _local7 = this.geometry.vertices; _local8 = this.geometry.faces; _local9 = new Array(); _local3 = 0; while (_local3 < (_local6 + 1)) { _local11 = Number((_local3 / _local6)); _local12 = (-(_arg1) * Math.cos((_local11 * Math.PI))); _local13 = (_arg1 * Math.sin((_local11 * Math.PI))); _local14 = new Array(); _local2 = 0; while (_local2 < _local5) { _local16 = Number(((2 * _local2) / _local5)); _local17 = (_local13 * Math.sin((_local16 * Math.PI))); _local18 = (_local13 * Math.cos((_local16 * Math.PI))); if (!(((((_local3 == 0)) || ((_local3 == _local6)))) && ((_local2 > 0)))){ _local15 = new Vertex3D(_local18, _local12, _local17); _local7.push(_local15); }; _local14.push(_local15); _local2++; }; _local9.push(_local14); _local3++; }; _local10 = _local9.length; _local3 = 0; while (_local3 < _local10) { _local19 = _local9[_local3].length; if (_local3 > 0){ _local2 = 0; while (_local2 < _local19) { _local20 = (_local2 == (_local19 - 0)); _local21 = _local9[_local3][(_local20) ? 0 : _local2]; _local22 = _local9[_local3][(((_local2 == 0)) ? _local19 : _local2 - 1)]; _local23 = _local9[(_local3 - 1)][(((_local2 == 0)) ? _local19 : _local2 - 1)]; _local24 = _local9[(_local3 - 1)][(_local20) ? 0 : _local2]; _local25 = (_local3 / (_local10 - 1)); _local26 = ((_local3 - 1) / (_local10 - 1)); _local27 = ((_local2 + 1) / _local19); _local28 = (_local2 / _local19); _local29 = new NumberUV(_local27, _local26); _local30 = new NumberUV(_local27, _local25); _local31 = new NumberUV(_local28, _local25); _local32 = new NumberUV(_local28, _local26); if (_local3 < (_local9.length - 1)){ _local8.push(new Triangle3D(this, new Array(_local21, _local22, _local23), material, new Array(_local30, _local31, _local32))); }; if (_local3 > 1){ _local8.push(new Triangle3D(this, new Array(_local21, _local23, _local24), material, new Array(_local30, _local32, _local29))); }; _local2++; }; }; _local3++; }; this.geometry.ready = true; } } }//package org.papervision3d.objects.primitives
Section 227
//DisplayObject3D (org.papervision3d.objects.DisplayObject3D) package org.papervision3d.objects { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.math.*; import com.blitzagency.xray.logger.*; import org.papervision3d.core.data.*; import org.papervision3d.view.layer.*; import org.papervision3d.core.culling.*; import org.papervision3d.*; import org.papervision3d.core.ns.*; public class DisplayObject3D extends DisplayObjectContainer3D { public var extra:Object; public var id:int; private var _rotationY:Number; private var _rotationZ:Number; public var meshSort:uint;// = 1 public var materials:MaterialsList; private var _rotationX:Number; private var _scaleDirty:Boolean;// = false public var transform:Matrix3D; public var screenZ:Number; public var visible:Boolean; private var _scaleX:Number; private var _scaleY:Number; private var _scaleZ:Number; public var geometry:GeometryObject3D; public var screen:Number3D; protected var _useOwnContainer:Boolean; public var name:String; public var culled:Boolean; public var world:Matrix3D; private var _material:MaterialObject3D; protected var _userData:UserData; public var parent:DisplayObjectContainer3D; public var view:Matrix3D; protected var _scene:SceneObject3D;// = null protected var _containerSortMode:int; public var faces:Array; protected var _containerBlendMode:int; protected var _filters:Array; protected var _transformDirty:Boolean;// = false private var _rotationDirty:Boolean;// = false protected var _sorted:Array; public static const MESH_SORT_CENTER:uint = 1; public static const MESH_SORT_CLOSE:uint = 3; public static const MESH_SORT_FAR:uint = 2; private static var entry_count:uint = 0; private static var LEFT:Number3D = new Number3D(-1, 0, 0); private static var _totalDisplayObjects:int = 0; private static var UP:Number3D = new Number3D(0, 1, 0); public static var sortedArray:Array = new Array(); private static var BACKWARD:Number3D = new Number3D(0, 0, -1); private static var FORWARD:Number3D = new Number3D(0, 0, 1); private static var DOWN:Number3D = new Number3D(0, -1, 0); public static var faceLevelMode:Boolean; private static var toDEGREES:Number = 57.2957795130823; private static var toRADIANS:Number = 0.0174532925199433; private static var RIGHT:Number3D = new Number3D(1, 0, 0); public function DisplayObject3D(_arg1:String=null, _arg2:GeometryObject3D=null, _arg3:Object=null):void{ var _local4:Number; screen = new Number3D(); _scene = null; meshSort = MESH_SORT_CENTER; faces = new Array(); _transformDirty = false; _rotationDirty = false; _scaleDirty = false; super(); this.culled = false; this.transform = Matrix3D.IDENTITY; this.world = Matrix3D.IDENTITY; this.view = Matrix3D.IDENTITY; if (_arg3 != null){ this.x = (_arg3.x) ? ((_arg3.x) || (0)) : 0; this.y = (_arg3.y) ? ((_arg3.y) || (0)) : 0; this.z = (_arg3.z) ? ((_arg3.z) || (0)) : 0; }; rotationX = (_arg3) ? ((_arg3.rotationX) || (0)) : 0; rotationY = (_arg3) ? ((_arg3.rotationY) || (0)) : 0; rotationZ = (_arg3) ? ((_arg3.rotationZ) || (0)) : 0; _local4 = (Papervision3D.usePERCENT) ? 100 : 1; scaleX = (_arg3) ? ((_arg3.scaleX) || (_local4)) : _local4; scaleY = (_arg3) ? ((_arg3.scaleY) || (_local4)) : _local4; scaleZ = (_arg3) ? ((_arg3.scaleZ) || (_local4)) : _local4; if (((_arg3) && (_arg3.extra))){ this.extra = _arg3.extra; }; this.visible = true; this.id = _totalDisplayObjects++; this.name = ((_arg1) || (String(this.id))); if (_arg2){ addGeometry(_arg2); }; } override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ _arg1 = super.addChild(_arg1, _arg2); if (_arg1.scene == null){ _arg1.scene = scene; }; return (_arg1); } public function set z(_arg1:Number):void{ this.transform.n34 = _arg1; } public function set containerSortMode(_arg1:int):void{ _containerSortMode = _arg1; } public function get containerSortMode():int{ return (_containerSortMode); } public function get filters():Array{ return (_filters); } public function moveDown(_arg1:Number):void{ translate(_arg1, DOWN); } public function get userData():UserData{ return (_userData); } public function set scene(_arg1:SceneObject3D):void{ var _local2:DisplayObject3D; _scene = _arg1; for each (_local2 in this._childrenByName) { if (_local2.scene == null){ _local2.scene = _scene; }; }; } public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Number; var _local4:Number; var _local5:DisplayObject3D; if (_arg2.viewPort.viewportObjectFilter){ if (_arg2.viewPort.viewportObjectFilter.testObject(this) == 0){ return (0); }; }; if (this._transformDirty){ updateTransform(); }; this.world.calculateMultiply(_arg1.world, this.transform); if ((_arg2.camera is IObjectCuller)){ if (this === _arg2.camera){ this.culled = true; } else { this.culled = (IObjectCuller(_arg2.camera).testObject(this) < 0); }; if (this.culled){ _arg2.renderStatistics.culledObjects++; return (0); }; if (_arg1 !== _arg2.camera){ this.view.calculateMultiply4x4(_arg1.view, this.transform); }; } else { if (_arg1 !== _arg2.camera){ this.view.calculateMultiply(_arg1.view, this.transform); }; }; calculateScreenCoords(_arg2.camera); _local3 = 0; _local4 = 0; if (_useOwnContainer){ }; for each (_local5 in this._childrenByName) { if (_local5.visible){ _local3 = (_local3 + _local5.project(this, _arg2)); _local4++; }; }; return ((this.screenZ = (_local3 / _local4))); } public function set containerBlendMode(_arg1:int):void{ _containerBlendMode = _arg1; } public function get material():MaterialObject3D{ return (_material); } public function set userData(_arg1:UserData):void{ _userData = _arg1; } pv3dview function setLayerForViewport(_arg1:ViewportLayer):void{ } private function calculateScreenCoords(_arg1:CameraObject3D):void{ var _local2:Number; _local2 = ((_arg1.focus * _arg1.zoom) / (_arg1.focus + view.n34)); screen.x = (view.n14 * _local2); screen.y = (view.n24 * _local2); screen.z = view.n34; } public function lookAt(_arg1:DisplayObject3D, _arg2:Number3D=null):void{ var _local3:Number3D; var _local4:Number3D; var _local5:Number3D; var _local6:Number3D; var _local7:Number3D; var _local8:Matrix3D; var _local9:XrayLog; _local3 = new Number3D(this.x, this.y, this.z); _local4 = new Number3D(_arg1.x, _arg1.y, _arg1.z); _local5 = Number3D.sub(_local4, _local3); _local5.normalize(); if (_local5.modulo > 0.1){ _local6 = Number3D.cross(_local5, ((_arg2) || (UP))); _local6.normalize(); _local7 = Number3D.cross(_local5, _local6); _local7.normalize(); _local8 = this.transform; _local8.n11 = (_local6.x * _scaleX); _local8.n21 = (_local6.y * _scaleX); _local8.n31 = (_local6.z * _scaleX); _local8.n12 = (-(_local7.x) * _scaleY); _local8.n22 = (-(_local7.y) * _scaleY); _local8.n32 = (-(_local7.z) * _scaleY); _local8.n13 = (_local5.x * _scaleZ); _local8.n23 = (_local5.y * _scaleZ); _local8.n33 = (_local5.z * _scaleZ); this._transformDirty = false; this._rotationDirty = true; } else { _local9 = new XrayLog(); _local9.debug("lookAt Error"); }; } public function set rotationX(_arg1:Number):void{ this._rotationX = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1); this._transformDirty = true; } public function get containerBlendMode():int{ return (_containerBlendMode); } public function set rotationY(_arg1:Number):void{ this._rotationY = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1); this._transformDirty = true; } public function set rotationZ(_arg1:Number):void{ this._rotationZ = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1); this._transformDirty = true; } public function addGeometry(_arg1:GeometryObject3D=null):void{ if (_arg1){ this.geometry = _arg1; }; } public function get sceneX():Number{ return (this.world.n14); } public function get scaleX():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleX * 100)); }; return (this._scaleX); } public function get scaleY():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleY * 100)); }; return (this._scaleY); } public function get scaleZ():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleZ * 100)); }; return (this._scaleZ); } public function moveUp(_arg1:Number):void{ translate(_arg1, UP); } public function get sceneZ():Number{ return (this.world.n34); } public function distanceTo(_arg1:DisplayObject3D):Number{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = (this.x - _arg1.x); _local3 = (this.y - _arg1.y); _local4 = (this.z - _arg1.z); return (Math.sqrt((((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4)))); } public function get scale():Number{ if ((((this._scaleX == this._scaleY)) && ((this._scaleX == this._scaleZ)))){ if (Papervision3D.usePERCENT){ return ((this._scaleX * 100)); }; return (this._scaleX); //unresolved jump }; return (NaN); } public function get sceneY():Number{ return (this.world.n24); } public function set material(_arg1:MaterialObject3D):void{ if (_material){ _material.unregisterObject(this); }; _material = _arg1; _material.registerObject(this); } public function hitTestObject(_arg1:DisplayObject3D, _arg2:Number=1):Boolean{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = (this.x - _arg1.x); _local4 = (this.y - _arg1.y); _local5 = (this.z - _arg1.z); _local6 = (((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5)); _local7 = (this.geometry) ? this.geometry.boundingSphere2 : 0; _local8 = (_arg1.geometry) ? _arg1.geometry.boundingSphere2 : 0; _local7 = (_local7 * _arg2); return (((_local7 + _local8) > _local6)); } public function translate(_arg1:Number, _arg2:Number3D):void{ var _local3:Number3D; _local3 = _arg2.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local3); this.x = (this.x + (_arg1 * _local3.x)); this.y = (this.y + (_arg1 * _local3.y)); this.z = (this.z + (_arg1 * _local3.z)); } private function updateRotation():void{ var _local1:Number3D; _local1 = Matrix3D.matrix2euler(this.transform); this._rotationX = (_local1.x * toRADIANS); this._rotationY = (_local1.y * toRADIANS); this._rotationZ = (_local1.z * toRADIANS); this._rotationDirty = false; } public function pitch(_arg1:Number):void{ var _local2:Number3D; var _local3:Matrix3D; _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; _local2 = RIGHT.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local2); _local3 = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1); this.transform.calculateMultiply3x3(_local3, transform); this._rotationDirty = true; } public function yaw(_arg1:Number):void{ var _local2:Number3D; var _local3:Matrix3D; _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; _local2 = UP.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local2); _local3 = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1); this.transform.calculateMultiply3x3(_local3, transform); this._rotationDirty = true; } public function copyTransform(_arg1):void{ var _local2:Matrix3D; var _local3:Matrix3D; _local2 = this.transform; _local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1; _local2.n11 = _local3.n11; _local2.n12 = _local3.n12; _local2.n13 = _local3.n13; _local2.n14 = _local3.n14; _local2.n21 = _local3.n21; _local2.n22 = _local3.n22; _local2.n23 = _local3.n23; _local2.n24 = _local3.n24; _local2.n31 = _local3.n31; _local2.n32 = _local3.n32; _local2.n33 = _local3.n33; _local2.n34 = _local3.n34; this._transformDirty = false; this._rotationDirty = true; } public function moveLeft(_arg1:Number):void{ translate(_arg1, LEFT); } public function get z():Number{ return (this.transform.n34); } override public function toString():String{ return (((((((this.name + ": x:") + Math.round(this.x)) + " y:") + Math.round(this.y)) + " z:") + Math.round(this.z))); } public function roll(_arg1:Number):void{ var _local2:Number3D; var _local3:Matrix3D; _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; _local2 = FORWARD.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local2); _local3 = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1); this.transform.calculateMultiply3x3(_local3, transform); this._rotationDirty = true; } public function getMaterialByName(_arg1:String):MaterialObject3D{ var _local2:MaterialObject3D; var _local3:DisplayObject3D; _local2 = this.materials.getMaterialByName(_arg1); if (_local2){ return (_local2); }; for each (_local3 in this._childrenByName) { _local2 = _local3.getMaterialByName(_arg1); if (_local2){ return (_local2); }; }; return (null); } public function lookAtCords(_arg1:Number3D, _arg2:Number3D=null):void{ var _local3:Number3D; var _local4:Number3D; var _local5:Number3D; var _local6:Number3D; var _local7:Number3D; var _local8:Matrix3D; var _local9:XrayLog; _local3 = new Number3D(this.x, this.y, this.z); _local4 = _arg1; _local5 = Number3D.sub(_local4, _local3); _local5.normalize(); if (_local5.modulo > 0.1){ _local6 = Number3D.cross(_local5, ((_arg2) || (UP))); _local6.normalize(); _local7 = Number3D.cross(_local5, _local6); _local7.normalize(); _local8 = this.transform; _local8.n11 = (_local6.x * _scaleX); _local8.n21 = (_local6.y * _scaleX); _local8.n31 = (_local6.z * _scaleX); _local8.n12 = (-(_local7.x) * _scaleY); _local8.n22 = (-(_local7.y) * _scaleY); _local8.n32 = (-(_local7.z) * _scaleY); _local8.n13 = (_local5.x * _scaleZ); _local8.n23 = (_local5.y * _scaleZ); _local8.n33 = (_local5.z * _scaleZ); this._transformDirty = false; this._rotationDirty = true; } else { _local9 = new XrayLog(); _local9.debug("lookAt Error"); }; } public function get x():Number{ return (this.transform.n14); } public function get scene():SceneObject3D{ return (_scene); } public function set useOwnContainer(_arg1:Boolean):void{ _useOwnContainer = _arg1; } public function set scale(_arg1:Number):void{ if (Papervision3D.usePERCENT){ _arg1 = (_arg1 / 100); }; this._scaleX = (this._scaleY = (this._scaleZ = _arg1)); this._transformDirty = true; } public function get rotationY():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (-(this._rotationY) * toDEGREES) : -(this._rotationY)); } public function get rotationZ():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (-(this._rotationZ) * toDEGREES) : -(this._rotationZ)); } public function set scaleY(_arg1:Number):void{ if (Papervision3D.usePERCENT){ this._scaleY = (_arg1 / 100); } else { this._scaleY = _arg1; }; this._transformDirty = true; } public function set scaleZ(_arg1:Number):void{ if (Papervision3D.usePERCENT){ this._scaleZ = (_arg1 / 100); } else { this._scaleZ = _arg1; }; this._transformDirty = true; } public function get rotationX():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (-(this._rotationX) * toDEGREES) : -(this._rotationX)); } public function set scaleX(_arg1:Number):void{ if (Papervision3D.usePERCENT){ this._scaleX = (_arg1 / 100); } else { this._scaleX = _arg1; }; this._transformDirty = true; } public function get y():Number{ return (this.transform.n24); } protected function updateTransform():void{ var _local1:Object; var _local2:Matrix3D; var _local3:Matrix3D; var _local4:Matrix3D; _local1 = Matrix3D.euler2quaternion(-(this._rotationY), -(this._rotationZ), this._rotationX); _local2 = Matrix3D.quaternion2matrix(_local1.x, _local1.y, _local1.z, _local1.w); _local3 = this.transform; _local2.n14 = _local3.n14; _local2.n24 = _local3.n24; _local2.n34 = _local3.n34; _local3.copy(_local2); _local4 = Matrix3D.IDENTITY; _local4.n11 = this._scaleX; _local4.n22 = this._scaleY; _local4.n33 = this._scaleZ; this.transform.calculateMultiply(_local3, _local4); this._transformDirty = false; } public function moveForward(_arg1:Number):void{ translate(_arg1, FORWARD); } public function copyPosition(_arg1):void{ var _local2:Matrix3D; var _local3:Matrix3D; _local2 = this.transform; _local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1; _local2.n14 = _local3.n14; _local2.n24 = _local3.n24; _local2.n34 = _local3.n34; } public function get useOwnContainer():Boolean{ return (_useOwnContainer); } public function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = (this.x - _arg1); _local5 = (this.y - _arg2); _local6 = (this.z - _arg3); _local7 = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)); _local8 = (this.geometry) ? this.geometry.boundingSphere2 : 0; return ((_local8 > _local7)); } public function moveRight(_arg1:Number):void{ translate(_arg1, RIGHT); } public function moveBackward(_arg1:Number):void{ translate(_arg1, BACKWARD); } public function materialsList():String{ var _local1:String; var _local2:String; var _local3:DisplayObject3D; _local1 = ""; for (_local2 in this.materials) { _local1 = (_local1 + (_local2 + "\n")); }; for each (_local3 in this._childrenByName) { for (_local2 in _local3.materials.materialsByName) { _local1 = (_local1 + (("+ " + _local2) + "\n")); }; }; return (_local1); } public function set x(_arg1:Number):void{ this.transform.n14 = _arg1; } public function set y(_arg1:Number):void{ this.transform.n24 = _arg1; } public function set filters(_arg1:Array):void{ _filters = _arg1; } public static function get ZERO():DisplayObject3D{ return (new (DisplayObject3D)); } } }//package org.papervision3d.objects
Section 228
//BasicRenderEngine (org.papervision3d.render.BasicRenderEngine) package org.papervision3d.render { import org.papervision3d.core.render.data.*; import org.papervision3d.core.proto.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.render.material.*; import flash.geom.*; import org.papervision3d.events.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.render.*; import org.papervision3d.core.render.sort.*; import org.papervision3d.core.render.filter.*; import org.papervision3d.core.utils.*; public class BasicRenderEngine extends AbstractRenderEngine implements IRenderEngine { public var sorter:IRenderSorter; protected var renderStatistics:RenderStatistics; protected var renderList:Array; protected var renderSessionData:RenderSessionData; protected var stopWatch:StopWatch; public var filter:IRenderFilter; protected var cleanRHD:RenderHitData; public function BasicRenderEngine():void{ cleanRHD = new RenderHitData(); super(); init(); } override public function removeFromRenderList(_arg1:IRenderListItem):int{ return (renderList.splice(renderList.indexOf(_arg1), 1)); } protected function doRender(_arg1:RenderSessionData):RenderStatistics{ var _local2:IRenderListItem; stopWatch.reset(); stopWatch.start(); MaterialManager.getInstance().updateMaterialsBeforeRender(_arg1); filter.filter(renderList); sorter.sort(renderList); while ((_local2 = renderList.pop())) { _local2.render(_arg1); _arg1.viewPort.lastRenderList.push(_local2); }; MaterialManager.getInstance().updateMaterialsAfterRender(_arg1); _arg1.renderStatistics.renderTime = stopWatch.stop(); _arg1.viewPort.updateAfterRender(); return (renderStatistics); } protected function init():void{ renderStatistics = new RenderStatistics(); stopWatch = new StopWatch(); sorter = new BasicRenderSorter(); filter = new BasicRenderFilter(); renderList = new Array(); renderSessionData = new RenderSessionData(); renderSessionData.renderer = this; } protected function doProject(_arg1:RenderSessionData):void{ var _local2:Array; var _local3:DisplayObject3D; var _local4:Number; stopWatch.reset(); stopWatch.start(); _arg1.camera.transformView(); _local2 = _arg1.scene.objects; _local4 = _local2.length; if ((_arg1.camera is IObjectCuller)){ for each (_local3 in _local2) { if (_local3.visible){ if (_arg1.viewPort.viewportObjectFilter){ if (_arg1.viewPort.viewportObjectFilter.testObject(_local3)){ _local3.view.calculateMultiply4x4(_arg1.camera.eye, _local3.transform); _local3.project(_arg1.camera, _arg1); } else { _arg1.renderStatistics.filteredObjects++; }; } else { _local3.view.calculateMultiply4x4(_arg1.camera.eye, _local3.transform); _local3.project(_arg1.camera, _arg1); }; }; }; } else { for each (_local3 in _local2) { if (_local3.visible){ if (_arg1.viewPort.viewportObjectFilter){ if (_arg1.viewPort.viewportObjectFilter.testObject(_local3)){ _local3.view.calculateMultiply(_arg1.camera.eye, _local3.transform); _local3.project(_arg1.camera, _arg1); } else { _arg1.renderStatistics.filteredObjects++; }; } else { _local3.view.calculateMultiply(_arg1.camera.eye, _local3.transform); _local3.project(_arg1.camera, _arg1); }; }; }; }; _arg1.renderStatistics.projectionTime = stopWatch.stop(); } override public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics{ _arg3.updateBeforeRender(); _arg3.lastRenderer = this; if (((_arg1.animationEngine) && ((_arg4 == true)))){ _arg1.animationEngine.tick(); }; renderSessionData.scene = _arg1; renderSessionData.camera = _arg2; renderSessionData.viewPort = _arg3; renderSessionData.container = _arg3.containerSprite; renderSessionData.triangleCuller = _arg3.triangleCuller; renderSessionData.particleCuller = _arg3.particleCuller; renderSessionData.renderStatistics.clear(); doProject(renderSessionData); doRender(renderSessionData); dispatchEvent(new RendererEvent(RendererEvent.RENDER_DONE, renderSessionData)); return (renderSessionData.renderStatistics); } public function hitTestPoint2D(_arg1:Point, _arg2:Viewport3D):RenderHitData{ return (_arg2.hitTestPoint2D(_arg1)); } override public function addToRenderList(_arg1:IRenderListItem):int{ return (renderList.push(_arg1)); } } }//package org.papervision3d.render
Section 229
//Scene3D (org.papervision3d.scenes.Scene3D) package org.papervision3d.scenes { import org.papervision3d.core.proto.*; import org.papervision3d.core.animation.core.*; public class Scene3D extends SceneObject3D { public function Scene3D(_arg1:Boolean=false){ this.animated = _arg1; if (_arg1){ this.animationEngine = AnimationEngine.getInstance(); }; } public function clearAllChildren():void{ var _local1:int; _local1 = 0; while (this.objects.length > 0) { removeChild(this.objects[0]); _local1++; }; trace(("Scene3D.clearAllChildren() children removed: " + _local1)); } } }//package org.papervision3d.scenes
Section 230
//ViewportBaseLayer (org.papervision3d.view.layer.ViewportBaseLayer) package org.papervision3d.view.layer { import org.papervision3d.view.*; public class ViewportBaseLayer extends ViewportLayer { public function ViewportBaseLayer(_arg1:Viewport3D){ super(_arg1, null); } } }//package org.papervision3d.view.layer
Section 231
//ViewportLayer (org.papervision3d.view.layer.ViewportLayer) package org.papervision3d.view.layer { import flash.display.*; import org.papervision3d.view.*; import org.papervision3d.objects.*; import org.papervision3d.core.ns.*; public class ViewportLayer extends Sprite { private var childLayers:Array; protected var _displayObject3D:DisplayObject3D; protected var viewport:Viewport3D; public function ViewportLayer(_arg1:Viewport3D, _arg2:DisplayObject3D){ this.viewport = _arg1; this.displayObject3D = _arg2; init(); } private function init():void{ childLayers = new Array(); } pv3dview function getChildLayerFor(_arg1:DisplayObject3D):ViewportLayer{ var _local2:ViewportLayer; if (_arg1){ _local2 = new ViewportLayer(viewport, _arg1); addChild(_local2); return (_local2); }; trace("Needs to be a do3d"); return (null); } pv3dview function clear():void{ var _local1:ViewportLayer; for each (_local1 in childLayers) { _local1.clear(); removeChild(_local1); }; graphics.clear(); } public function set displayObject3D(_arg1:DisplayObject3D):void{ _displayObject3D = _arg1; } public function get displayObject3D():DisplayObject3D{ return (_displayObject3D); } } }//package org.papervision3d.view.layer
Section 232
//Viewport3D (org.papervision3d.view.Viewport3D) package org.papervision3d.view { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.view.layer.*; import org.papervision3d.events.*; import org.papervision3d.render.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.render.*; import org.papervision3d.core.view.*; import org.papervision3d.core.utils.*; public class Viewport3D extends Sprite implements IViewport3D { protected var _interactive:Boolean; public var cullingRectangle:Rectangle; protected var _viewportObjectFilter:ViewportObjectFilter; protected var _hWidth:Number; protected var _autoScaleToStage:Boolean; protected var _lastRenderer:IRenderEngine; public var sizeRectangle:Rectangle; protected var _hHeight:Number; protected var _containerSprite:ViewportBaseLayer; protected var _autoClipping:Boolean; protected var _height:Number; public var interactiveSceneManager:InteractiveSceneManager; public var lastRenderList:Array; protected var _autoCulling:Boolean; public var particleCuller:IParticleCuller; protected var _width:Number; public var triangleCuller:ITriangleCuller; public function Viewport3D(_arg1:Number=640, _arg2:Number=480, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=true, _arg6:Boolean=true){ this.interactive = _arg4; init(); this.viewportWidth = _arg1; this.viewportHeight = _arg2; this.autoClipping = _arg5; this.autoCulling = _arg6; this.autoScaleToStage = _arg3; } public function set autoCulling(_arg1:Boolean):void{ if (_arg1){ triangleCuller = new RectangleTriangleCuller(cullingRectangle); particleCuller = new RectangleParticleCuller(cullingRectangle); } else { if (!_arg1){ triangleCuller = new DefaultTriangleCuller(); particleCuller = new DefaultParticleCuller(); }; }; _autoCulling = _arg1; } protected function onStageResize(_arg1:Event=null):void{ if (_autoScaleToStage){ viewportWidth = stage.stageWidth; viewportHeight = stage.stageHeight; }; } public function hitTestMouse():RenderHitData{ var _local1:Point; _local1 = new Point(containerSprite.mouseX, containerSprite.mouseY); return (hitTestPoint2D(_local1)); } protected function init():void{ lastRenderList = new Array(); sizeRectangle = new Rectangle(); cullingRectangle = new Rectangle(); _containerSprite = new ViewportBaseLayer(this); addChild(_containerSprite); if (interactive){ interactiveSceneManager = new InteractiveSceneManager(this); }; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } public function set autoClipping(_arg1:Boolean):void{ if (_arg1){ scrollRect = sizeRectangle; } else { scrollRect = null; }; _autoClipping = _arg1; } public function updateAfterRender():void{ } public function get viewportHeight():Number{ return (_height); } public function hitTestPoint2D(_arg1:Point):RenderHitData{ var _local2:RenderableListItem; var _local3:RenderHitData; var _local4:IRenderListItem; var _local5:uint; if (interactive){ _local3 = new RenderHitData(); _local5 = lastRenderList.length; while ((_local4 = lastRenderList[--_local5])) { if ((_local4 is RenderableListItem)){ _local2 = (_local4 as RenderableListItem); _local3 = _local2.hitTestPoint2D(_arg1, _local3); if (_local3.hasHit){ return (_local3); }; }; }; }; return (new RenderHitData()); } public function get autoCulling():Boolean{ return (_autoCulling); } public function get viewportObjectFilter():ViewportObjectFilter{ return (_viewportObjectFilter); } public function updateBeforeRender():void{ lastRenderList.length = 0; _containerSprite.clear(); } protected function handleRenderDone(_arg1:RendererEvent):void{ interactiveSceneManager.updateRenderHitData(); } protected function onAddedToStage(_arg1:Event):void{ stage.addEventListener(Event.RESIZE, onStageResize); onStageResize(); } public function set viewportWidth(_arg1:Number):void{ _width = _arg1; _hWidth = (_arg1 / 2); containerSprite.x = _hWidth; sizeRectangle.width = _arg1; cullingRectangle.x = -(_hWidth); cullingRectangle.width = _arg1; scrollRect = sizeRectangle; } public function get autoClipping():Boolean{ return (_autoClipping); } public function get containerSprite():ViewportLayer{ return (_containerSprite); } public function set viewportObjectFilter(_arg1:ViewportObjectFilter):void{ _viewportObjectFilter = _arg1; } public function get viewportWidth():Number{ return (_width); } public function set autoScaleToStage(_arg1:Boolean):void{ _autoScaleToStage = _arg1; if (((_arg1) && (!((stage == null))))){ onStageResize(); }; } public function set interactive(_arg1:Boolean):void{ _interactive = _arg1; } public function set viewportHeight(_arg1:Number):void{ _height = _arg1; _hHeight = (_arg1 / 2); containerSprite.y = _hHeight; sizeRectangle.height = _arg1; cullingRectangle.y = -(_hHeight); cullingRectangle.height = _arg1; scrollRect = sizeRectangle; } public function get autoScaleToStage():Boolean{ return (_autoScaleToStage); } public function get interactive():Boolean{ return (_interactive); } public function set lastRenderer(_arg1:BasicRenderEngine):void{ if (!interactive){ return; }; _arg1.removeEventListener(RendererEvent.RENDER_DONE, handleRenderDone); _arg1.addEventListener(RendererEvent.RENDER_DONE, handleRenderDone); } protected function onRemovedFromStage(_arg1:Event):void{ stage.removeEventListener(Event.RESIZE, onStageResize); } } }//package org.papervision3d.view
Section 233
//Papervision3D (org.papervision3d.Papervision3D) package org.papervision3d { public class Papervision3D { public static var useDEGREES:Boolean = true; public static var VERBOSE:Boolean = true; public static var AUTHOR:String = "(c) 2006-2007 Copyright by Carlos Ulloa - | John Grden | Ralph Hauwert | Tim Knip | Andy Zupko"; public static var DATE:String = "14.2.08"; public static var NAME:String = "Papervision3D"; public static var VERSION:String = "Public Alpha 2.0 - Great White"; public static var usePERCENT:Boolean = false; public static function log(_arg1:String):void{ if (Papervision3D.VERBOSE){ trace(_arg1); }; } } }//package org.papervision3d
Section 234
//FontHolder (FontHolder) package { import flash.display.*; import flash.text.*; public dynamic class FontHolder extends MovieClip { public var asd:TextField; } }//package

Library Items

Symbol 1 Sound {com.devm.tevlon.data.sounds.MissileFireSnd}
Symbol 2 Sound {com.devm.tevlon.data.sounds.MusicShortSnd}
Symbol 3 Sound {com.devm.tevlon.data.sounds.MusicSnd}
Symbol 4 Sound {com.devm.tevlon.data.sounds.ExplosionSnd}
Symbol 5 Sound {com.devm.tevlon.data.sounds.EngineSnd}
Symbol 6 Sound {com.devm.tevlon.data.sounds.EngineHighSnd}
Symbol 7 Bitmap {com.devm.tevlon.data.textures.WallTextureTop}
Symbol 8 Bitmap {com.devm.tevlon.data.textures.PlayerShadowTexture}
Symbol 9 Bitmap {com.devm.tevlon.data.textures.PlayerTexture}
Symbol 10 Bitmap {com.devm.tevlon.data.textures.MissileTexture}
Symbol 11 Bitmap {com.devm.tevlon.data.textures.MineAdvTexture}
Symbol 12 Bitmap {com.devm.tevlon.data.textures.MineTexture}
Symbol 13 Bitmap {com.devm.tevlon.data.textures.HudBottom}
Symbol 14 Bitmap {com.devm.tevlon.data.textures.HomeBaseTexture}
Symbol 15 Bitmap {com.devm.tevlon.data.textures.GroundWaterTexture}
Symbol 16 Bitmap {com.devm.tevlon.data.textures.WallTexture}
Symbol 17 Bitmap {com.devm.tevlon.data.textures.GroundNormalTexture}
Symbol 18 Bitmap {com.devm.tevlon.data.textures.GroundCraterTexture}
Symbol 19 Bitmap {com.devm.tevlon.data.textures.GroundConcreteTexture}
Symbol 20 Bitmap {com.devm.tevlon.data.textures.ExplosionTexture}
Symbol 21 Bitmap {com.devm.tevlon.data.textures.PlayerEngineTexture}
Symbol 22 Bitmap {com.devm.tevlon.data.textures.EnemyBaseTexture}
Symbol 23 BitmapUsed by:24
Symbol 24 GraphicUses:23Used by:76
Symbol 25 GraphicUsed by:26
Symbol 26 MovieClipUses:25Used by:75
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClipUses:27Used by:75
Symbol 29 GraphicUsed by:32
Symbol 30 GraphicUsed by:32
Symbol 31 GraphicUsed by:32
Symbol 32 ButtonUses:29 30 31Used by:75
Symbol 33 SoundUsed by:75
Symbol 34 BitmapUsed by:35
Symbol 35 GraphicUses:34Used by:75
Symbol 36 GraphicUsed by:37
Symbol 37 MovieClipUses:36Used by:75
Symbol 38 GraphicUsed by:41
Symbol 39 GraphicUsed by:41
Symbol 40 GraphicUsed by:41
Symbol 41 MovieClipUses:38 39 40Used by:75
Symbol 42 SoundUsed by:75
Symbol 43 BitmapUsed by:44
Symbol 44 GraphicUses:43Used by:75
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClipUses:45Used by:75
Symbol 47 SoundUsed by:75
Symbol 48 BitmapUsed by:49
Symbol 49 GraphicUses:48Used by:75
Symbol 50 GraphicUsed by:51
Symbol 51 MovieClipUses:50Used by:75
Symbol 52 BitmapUsed by:53
Symbol 53 GraphicUses:52Used by:75
Symbol 54 GraphicUsed by:55
Symbol 55 MovieClipUses:54Used by:75
Symbol 56 BitmapUsed by:57
Symbol 57 GraphicUses:56Used by:75
Symbol 58 GraphicUsed by:59
Symbol 59 MovieClipUses:58Used by:75
Symbol 60 GraphicUsed by:61
Symbol 61 MovieClipUses:60Used by:75
Symbol 62 BitmapUsed by:63
Symbol 63 GraphicUses:62Used by:75
Symbol 64 BitmapUsed by:65
Symbol 65 GraphicUses:64Used by:75
Symbol 66 GraphicUsed by:67
Symbol 67 MovieClipUses:66Used by:75
Symbol 68 SoundUsed by:75
Symbol 69 SoundUsed by:75
Symbol 70 BitmapUsed by:71
Symbol 71 GraphicUses:70Used by:75
Symbol 72 SoundUsed by:75
Symbol 73 GraphicUsed by:74
Symbol 74 MovieClipUses:73Used by:75
Symbol 75 MovieClip {3dGame_fla.mc_stones_13}Uses:26 28 32 33 35 37 41 42 44 46 47 49 51 53 55 57 59 61 63 65 67 68 69 71 72 74Used by:76
Symbol 76 MovieClip {com.mygame.MyGameLoader}Uses:24 75
Symbol 77 BitmapUsed by:78
Symbol 78 GraphicUses:77Used by:82
Symbol 79 BitmapUsed by:80
Symbol 80 GraphicUses:79Used by:81
Symbol 81 MovieClipUses:80Used by:82
Symbol 82 MovieClip {com.devm.tevlon.Menu}Uses:78 81
Symbol 83 FontUsed by:84
Symbol 84 EditableTextUses:83Used by:85
Symbol 85 MovieClip {FontHolder}Uses:84
Symbol 86 GraphicUsed by:89
Symbol 87 GraphicUsed by:88
Symbol 88 MovieClipUses:87Used by:89
Symbol 89 MovieClip {com.devm.util.gui.HealthMeter}Uses:86 88
Symbol 90 BitmapUsed by:91
Symbol 91 GraphicUses:90Used by:92
Symbol 92 MovieClip {com.devm.util.gui.ControlsHelp}Uses:91
Symbol 93 GraphicUsed by:94
Symbol 94 MovieClip {com.devm.tevlon.hud.FarclipFog}Uses:93
Symbol 95 BitmapUsed by:96
Symbol 96 GraphicUses:95Used by:131
Symbol 97 BitmapUsed by:98
Symbol 98 GraphicUses:97Used by:131
Symbol 99 BitmapUsed by:100
Symbol 100 GraphicUses:99Used by:131
Symbol 101 BitmapUsed by:102
Symbol 102 GraphicUses:101Used by:131
Symbol 103 BitmapUsed by:104
Symbol 104 GraphicUses:103Used by:131
Symbol 105 BitmapUsed by:106
Symbol 106 GraphicUses:105Used by:131
Symbol 107 BitmapUsed by:108
Symbol 108 GraphicUses:107Used by:131
Symbol 109 BitmapUsed by:110
Symbol 110 GraphicUses:109Used by:131
Symbol 111 BitmapUsed by:112
Symbol 112 GraphicUses:111Used by:131
Symbol 113 BitmapUsed by:114
Symbol 114 GraphicUses:113Used by:131
Symbol 115 BitmapUsed by:116
Symbol 116 GraphicUses:115Used by:131
Symbol 117 BitmapUsed by:118
Symbol 118 GraphicUses:117Used by:131
Symbol 119 BitmapUsed by:120
Symbol 120 GraphicUses:119Used by:131
Symbol 121 BitmapUsed by:122
Symbol 122 GraphicUses:121Used by:131
Symbol 123 BitmapUsed by:124
Symbol 124 GraphicUses:123Used by:131
Symbol 125 BitmapUsed by:126
Symbol 126 GraphicUses:125Used by:131
Symbol 127 BitmapUsed by:128
Symbol 128 GraphicUses:127Used by:131
Symbol 129 BitmapUsed by:130
Symbol 130 GraphicUses:129Used by:131
Symbol 131 MovieClip {com.devm.tevlon.data.Maps}Uses:96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130
Symbol 132 BitmapUsed by:133
Symbol 133 GraphicUses:132Used by:134
Symbol 134 MovieClip {com.devm.tevlon.hud.HudMeter2}Uses:133
Symbol 135 BitmapUsed by:136
Symbol 136 GraphicUses:135Used by:137
Symbol 137 MovieClip {com.devm.tevlon.hud.HudMeter1}Uses:136
Symbol 138 BitmapUsed by:139
Symbol 139 GraphicUses:138Used by:140
Symbol 140 MovieClip {com.devm.tevlon.hud.MyGameLogoMini}Uses:139

Instance Names

"stonesHitarea_mc"Symbol 75 MovieClip {3dGame_fla.mc_stones_13} Frame 1Symbol 26 MovieClip
"play_btn"Symbol 75 MovieClip {3dGame_fla.mc_stones_13} Frame 1Symbol 32 Button
"stones_mc"Symbol 76 MovieClip {com.mygame.MyGameLoader} Frame 1Symbol 75 MovieClip {3dGame_fla.mc_stones_13}
"asd"Symbol 85 MovieClip {FontHolder} Frame 1Symbol 84 EditableText

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 10 bytes ""




http://swfchan.com/7/31323/info.shtml
Created: 18/5 -2019 18:08:30 Last modified: 18/5 -2019 18:08:30 Server time: 10/05 -2024 15:01:36