From aba79f3f40a2a5145454827f9594b0f950051200 Mon Sep 17 00:00:00 2001 From: Amorilia <amorilia@users.sourceforge.net> Date: Fri, 10 Mar 2006 03:36:31 +0000 Subject: [PATCH] NiStringsExtraData support --- NIF_Blocks.h | 40 ++++++++++++++++++++++++++++++++++++++-- SConstruct | 2 +- docsys_extract.cpp | 5 +++++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/NIF_Blocks.h b/NIF_Blocks.h index 400a065b..69d3f4ec 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 d5814034..929d973d 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 b74b307e..9ce0bbbd 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; -- GitLab