diff --git a/NIF_Blocks.h b/NIF_Blocks.h index 400a065b69966ed2d0fb79bbba9927a11dfb90de..69d3f4ec2711a321451bb3ca9f7c5f33d5e78d10 100644 --- a/NIF_Blocks.h +++ b/NIF_Blocks.h @@ -2197,6 +2197,42 @@ private: vector<Key<float> > _keys; }; +class NiStringsExtraData : public AExtraData { +public: + NiStringsExtraData() {} + ~NiStringsExtraData() {} + string GetBlockType() const { return "NiStringsExtraData"; }; + + void Read( istream& file, unsigned int version ) { + AExtraData::Read( file, version ); + uint count = ReadUInt( file ); + string_data.resize( count ); + NifStream( string_data, file ); + } + void Write( ostream& file, unsigned int version ) const { + AExtraData::Write( file, version ); + WriteUInt( uint(string_data.size()), file ); + NifStream( string_data, file ); + } + + string asString() const { + stringstream out; + out.setf(ios::fixed, ios::floatfield); + out << setprecision(1); + + out << AExtraData::asString() + << "Strings: " << uint(string_data.size()) << endl; + + for ( uint i = 0; i < string_data.size(); ++i ) { + out << " " << i << ": " << string_data[i] << endl; + } + + return out.str(); + } +private: + vector<string> string_data; +}; + class NiStringExtraData : public AExtraData { public: NiStringExtraData() { @@ -2326,7 +2362,7 @@ public: << "Floats: " << uint(float_data.size()) << endl; for ( uint i = 0; i < float_data.size(); ++i ) { - out << " " << i + i << ": " << float_data[i] << endl; + out << " " << i << ": " << float_data[i] << endl; } return out.str(); @@ -2362,7 +2398,7 @@ public: << "Ints: " << uint(int_data.size()) << endl; for ( uint i = 0; i < int_data.size(); ++i ) { - out << " " << i + i << ": " << int_data[i] << endl; + out << " " << i << ": " << int_data[i] << endl; } return out.str(); diff --git a/SConstruct b/SConstruct index d58140349a8ba327ae8c2a5ba5bf9c57dc29966a..929d973d2ebbf8e2bfc57877e531d7bcce0686eb 100644 --- a/SConstruct +++ b/SConstruct @@ -45,7 +45,7 @@ env.StaticLibrary('niflib', Split('niflib.cpp nif_math.cpp NIF_Blocks.cpp NIF_IO env.SharedLibrary('_niflib', 'pyniflib.i', LIBS=['niflib'] + python_lib, LIBPATH=['.'] + python_libpath, SWIGFLAGS = '-c++ -python', CPPPATH = ['.'] + python_include, CPPFLAGS = cppflags, SHLIBPREFIX='') # Here's how to compile niflyze: -#env.Program('niflyze', 'niflyze.cpp', LIBS=['niflib'], LIBPATH=['.'], CPPFLAGS = cppflags) +env.Program('niflyze', 'niflyze.cpp', LIBS=['niflib'], LIBPATH=['.'], CPPFLAGS = cppflags) # A test program: #env.Program('test', 'test.cpp', LIBS=['niflib'], LIBPATH=['.'], CPPFLAGS = cppflags) diff --git a/docsys_extract.cpp b/docsys_extract.cpp index b74b307e13ac3d63436513b31185621b9aa0f56b..9ce0bbbdee77e30bfec3718f7f0aded87fdeaf28 100644 --- a/docsys_extract.cpp +++ b/docsys_extract.cpp @@ -1256,6 +1256,10 @@ IBlock * CreateNiStringPalette() { return new NiStringPalette; } +IBlock * CreateNiStringsExtraData() { + return new NiStringsExtraData; +} + IBlock * CreateNiTextKeyExtraData() { return new NiTextKeyExtraData; } @@ -1447,6 +1451,7 @@ void RegisterBlockFactories () { global_block_map["NiStencilProperty"] = CreateNiStencilProperty; global_block_map["NiStringExtraData"] = CreateNiStringExtraData; global_block_map["NiStringPalette"] = CreateNiStringPalette; + global_block_map["NiStringsExtraData"] = CreateNiStringsExtraData; global_block_map["NiTextKeyExtraData"] = CreateNiTextKeyExtraData; global_block_map["NiTextureEffect"] = CreateNiTextureEffect; global_block_map["NiTextureTransformController"] = CreateNiTextureTransformController;