|
@@ -11,14 +11,14 @@ class XBXWriter
|
|
|
public function new(o) {
|
|
|
this.o = o;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public function write( n : FbxNode )
|
|
|
{
|
|
|
o.writeString("XBX");
|
|
|
o.writeByte(0); // version
|
|
|
writeNode(n);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
function writeString( s : String ) {
|
|
|
if( s.length < 0x80 )
|
|
|
o.writeByte(s.length);
|
|
@@ -28,40 +28,44 @@ class XBXWriter
|
|
|
}
|
|
|
o.writeString(s);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public function writeNode( n : FbxNode)
|
|
|
{
|
|
|
writeString( n.name);
|
|
|
o.writeByte( n.props.length );
|
|
|
for ( p in n.props)
|
|
|
writeProperty( p );
|
|
|
-
|
|
|
+
|
|
|
o.writeInt24( n.childs.length );
|
|
|
for ( c in n.childs )
|
|
|
writeNode( c );
|
|
|
}
|
|
|
-
|
|
|
- public function writeFloat(v)
|
|
|
- {
|
|
|
- o.writeDouble( v);
|
|
|
+
|
|
|
+ inline function writeInt(v) {
|
|
|
+ #if haxe3
|
|
|
+ o.writeInt32(v);
|
|
|
+ #else
|
|
|
+ o.writeInt31(v);
|
|
|
+ #end
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
public function writeProperty( p : FbxProp )
|
|
|
{
|
|
|
o.writeByte( Type.enumIndex( p ) );
|
|
|
-
|
|
|
+
|
|
|
switch( p )
|
|
|
{
|
|
|
- case PInt( v ): o.writeInt31( v );
|
|
|
- case PFloat( v ): writeFloat( v );
|
|
|
+ case PInt( v ): writeInt( v );
|
|
|
+ case PFloat( v ): i.writeFloat(v);
|
|
|
case PString( v ): writeString( v );
|
|
|
case PIdent( v ): writeString( v );
|
|
|
case PInts( va ):
|
|
|
- o.writeInt31( va.length );
|
|
|
- for ( i in va ) o.writeInt31( i );
|
|
|
+ writeInt( va.length );
|
|
|
+ for ( i in va ) writeInt( i );
|
|
|
case PFloats( va ):
|
|
|
o.writeInt31( va.length );
|
|
|
- for ( i in va ) writeFloat( i );
|
|
|
+ for ( i in va ) i.writeFloat(i);
|
|
|
}
|
|
|
}
|
|
|
|