/src/away3d/tools/serialize/TraceSerializer.as

http://github.com/away3d/away3d-core-fp11 · ActionScript · 157 lines · 106 code · 16 blank · 35 comment · 10 complexity · 7792345a23c6784feba6f1f24e021cce MD5 · raw file

  1. package away3d.tools.serialize
  2. {
  3. import away3d.arcane;
  4. import away3d.core.math.Quaternion;
  5. import flash.geom.Vector3D;
  6. use namespace arcane;
  7. /**
  8. * TraceSerializer is a concrete Serializer that will output its results to trace(). It has user settable tabSize and separator vars.
  9. *
  10. * @see away3d.tools.serialize.Serialize
  11. */
  12. public class TraceSerializer extends SerializerBase
  13. {
  14. private var _indent:uint = 0;
  15. public var separator:String = ": ";
  16. public var tabSize:uint = 2;
  17. /**
  18. * Creates a new TraceSerializer object.
  19. */
  20. public function TraceSerializer()
  21. {
  22. super();
  23. }
  24. /**
  25. * @inheritDoc
  26. */
  27. public override function beginObject(className:String, instanceName:String):void
  28. {
  29. writeString(className, instanceName);
  30. _indent += tabSize;
  31. }
  32. /**
  33. * @inheritDoc
  34. */
  35. public override function writeInt(name:String, value:int):void
  36. {
  37. var outputString:String = _indentString();
  38. outputString += name;
  39. outputString += separator;
  40. outputString += value;
  41. trace(outputString);
  42. }
  43. /**
  44. * @inheritDoc
  45. */
  46. public override function writeUint(name:String, value:uint):void
  47. {
  48. var outputString:String = _indentString();
  49. outputString += name;
  50. outputString += separator;
  51. outputString += value;
  52. trace(outputString);
  53. }
  54. /**
  55. * @inheritDoc
  56. */
  57. public override function writeBoolean(name:String, value:Boolean):void
  58. {
  59. var outputString:String = _indentString();
  60. outputString += name;
  61. outputString += separator;
  62. outputString += value;
  63. trace(outputString);
  64. }
  65. /**
  66. * @inheritDoc
  67. */
  68. public override function writeString(name:String, value:String):void
  69. {
  70. var outputString:String = _indentString();
  71. outputString += name;
  72. if (value) {
  73. outputString += separator;
  74. outputString += value;
  75. }
  76. trace(outputString);
  77. }
  78. /**
  79. * @inheritDoc
  80. */
  81. public override function writeVector3D(name:String, value:Vector3D):void
  82. {
  83. var outputString:String = _indentString();
  84. outputString += name;
  85. if (value) {
  86. outputString += separator;
  87. outputString += value;
  88. }
  89. trace(outputString);
  90. }
  91. /**
  92. * @inheritDoc
  93. */
  94. public override function writeTransform(name:String, value:Vector.<Number>):void
  95. {
  96. var outputString:String = _indentString();
  97. outputString += name;
  98. if (value) {
  99. outputString += separator;
  100. var matrixIndent:uint = outputString.length;
  101. for (var i:uint = 0; i < value.length; i++) {
  102. outputString += value[i];
  103. if ((i < (value.length - 1)) && (((i + 1)%4) == 0)) {
  104. outputString += "\n";
  105. for (var j:uint = 0; j < matrixIndent; j++)
  106. outputString += " ";
  107. } else
  108. outputString += " ";
  109. }
  110. }
  111. trace(outputString);
  112. }
  113. /**
  114. * @inheritDoc
  115. */
  116. public override function writeQuaternion(name:String, value:Quaternion):void
  117. {
  118. var outputString:String = _indentString();
  119. outputString += name;
  120. if (value) {
  121. outputString += separator;
  122. outputString += value;
  123. }
  124. trace(outputString);
  125. }
  126. /**
  127. * @inheritDoc
  128. */
  129. public override function endObject():void
  130. {
  131. _indent -= tabSize;
  132. }
  133. private function _indentString():String
  134. {
  135. var indentString:String = "";
  136. for (var i:uint = 0; i < _indent; i++)
  137. indentString += " ";
  138. return indentString;
  139. }
  140. }
  141. }