From 03a73e957274893f3f2929630c7262b68898f070 Mon Sep 17 00:00:00 2001
From: Amorilia <amorilia@users.sourceforge.net>
Date: Wed, 15 Mar 2006 18:24:59 +0000
Subject: [PATCH] Synchronized KfChild with docsys to reflect new findings
 about Kf files.

---
 NIF_Blocks.cpp | 50 +++++++++++++++++++++++++-------------------------
 NIF_Blocks.h   | 13 ++++++++-----
 2 files changed, 33 insertions(+), 30 deletions(-)

diff --git a/NIF_Blocks.cpp b/NIF_Blocks.cpp
index e22c68a1..4f263ca4 100644
--- a/NIF_Blocks.cpp
+++ b/NIF_Blocks.cpp
@@ -3598,15 +3598,15 @@ void NiControllerSequence::Read( istream& file, unsigned int version ) {
 			ReadUInt(file);
 			//Read offsets
 			NifStream( children[i].name_offset, file );
-			NifStream( children[i].unk_offs1, file );
-			NifStream( children[i].unk_offs2, file );
-			NifStream( children[i].unk_offs3, file );
+			NifStream( children[i].unk_short1, file );
+			NifStream( children[i].property_offset, file );
+			NifStream( children[i].unk_short2, file );
 			NifStream( children[i].controller_offset, file );
-			NifStream( children[i].unk_offs4, file );
-			NifStream( children[i].unk_offs5, file );
-			NifStream( children[i].unk_offs6, file );
-			NifStream( children[i].unk_offs7, file );
-			NifStream( children[i].unk_offs8, file );
+			NifStream( children[i].unk_short3, file );
+			NifStream( children[i].var1_offset, file );
+			NifStream( children[i].unk_short4, file );
+			NifStream( children[i].var2_offset, file );
+			NifStream( children[i].unk_short5, file );
 		}
 	}
 	
@@ -3656,15 +3656,15 @@ void NiControllerSequence::Write( ostream& file, unsigned int version ) const {
 			//Write duplicate palette index
 			GetAttr("String Palette")->Write( file, version );
 			NifStream( children[i].name_offset, file );
-			NifStream( children[i].unk_offs1, file );
-			NifStream( children[i].unk_offs2, file );
-			NifStream( children[i].unk_offs3, file );
+			NifStream( children[i].unk_short1, file );
+			NifStream( children[i].property_offset, file );
+			NifStream( children[i].unk_short2, file );
 			NifStream( children[i].controller_offset, file );
-			NifStream( children[i].unk_offs4, file );
-			NifStream( children[i].unk_offs5, file );
-			NifStream( children[i].unk_offs6, file );
-			NifStream( children[i].unk_offs7, file );
-			NifStream( children[i].unk_offs8, file );
+			NifStream( children[i].unk_short3, file );
+			NifStream( children[i].var1_offset, file );
+			NifStream( children[i].unk_short4, file );
+			NifStream( children[i].var2_offset, file );
+			NifStream( children[i].unk_short5, file );
 		}
 
 		//And from version 10.2.0.0 there is a lot more stuff down here as well
@@ -3715,16 +3715,16 @@ string NiControllerSequence::asString() const {
 			<< "      Name:  "  << children[i].name << endl
 			<< "      Block:  " << children[i].block << endl
 			<< "      Unknown Link:  " << children[i].unk_link << endl
-			<< "      Name Offset:  " << children[i].name_offset <<" (" << GetSubStr( pal, children[i].name_offset) << ")" << endl
-			<< "      Unknown Offset 1:  " << children[i].unk_offs1 << " (" << GetSubStr( pal, children[i].unk_offs1) << ")" << endl
-			<< "      Unknown Offset 2:  " << children[i].unk_offs2 << " (" << GetSubStr( pal, children[i].unk_offs2) << ")" << endl
-			<< "      Unknown Offset 3:  " << children[i].unk_offs3 << " (" << GetSubStr( pal, children[i].unk_offs3) << ")" << endl
+			<< "      Name Offset      :  " << children[i].name_offset <<" (" << GetSubStr( pal, children[i].name_offset) << ")" << endl
+			<< "      Unknown Short 1  :  " << children[i].unk_short1 << endl
+			<< "      Property Offset  :  " << children[i].property_offset << " (" << GetSubStr( pal, children[i].property_offset) << ")" << endl
+			<< "      Unknown Short 2  :  " << children[i].unk_short2 << endl
 			<< "      Controller Offset:  " << children[i].controller_offset << " (" << GetSubStr( pal, children[i].controller_offset) << ")" << endl
-			<< "      Unknown Offset 4:  " << children[i].unk_offs4 << " (" << GetSubStr( pal, children[i].unk_offs4) << ")" << endl
-			<< "      Unknown Offset 5:  " << children[i].unk_offs5 << " (" << GetSubStr( pal, children[i].unk_offs5) << ")" << endl
-			<< "      Unknown Offset 6:  " << children[i].unk_offs6 << " (" << GetSubStr( pal, children[i].unk_offs6) << ")" << endl
-			<< "      Unknown Offset 7:  " << children[i].unk_offs7 << " (" << GetSubStr( pal, children[i].unk_offs7) << ")" << endl
-			<< "      Unknown Offset 8:  " << children[i].unk_offs8 << " (" << GetSubStr( pal, children[i].unk_offs8) << ")" << endl;
+			<< "      Unknown Short 3  :  " << children[i].unk_short3 << endl
+			<< "      Variable 1 Offset:  " << children[i].var1_offset << " (" << GetSubStr( pal, children[i].var1_offset) << ")" << endl
+			<< "      Unknown Short 4  :  " << children[i].unk_short4 << endl
+			<< "      Variable 2 Offset:  " << children[i].var2_offset << " (" << GetSubStr( pal, children[i].var2_offset) << ")" << endl
+			<< "      Unknown Short 5  :  " << children[i].unk_short5 << endl;
 	}
 
 	out << "Unknown Float 1:  " << unk_float1 << endl
diff --git a/NIF_Blocks.h b/NIF_Blocks.h
index 279f1db7..90d0c012 100644
--- a/NIF_Blocks.h
+++ b/NIF_Blocks.h
@@ -2162,13 +2162,16 @@ private:
 	struct KfChild {
 		blk_ref block;
 		string name;
+		blk_ref unk_link;
 		short name_offset;
+		short property_offset;
 		short controller_offset;
-		blk_ref unk_link;
-		short unk_offs1, unk_offs2, unk_offs3, unk_offs4, unk_offs5, unk_offs6, unk_offs7, unk_offs8;
-		KfChild() : block(), name(), name_offset(-1), controller_offset(-1), unk_link(),
-		unk_offs1(-1), unk_offs2(-1), unk_offs3(-1), unk_offs4(-1),
-		unk_offs5(-1), unk_offs6(-1), unk_offs7(-1), unk_offs8(-1) {};
+		short var1_offset;
+		short var2_offset;
+		short unk_short1, unk_short2, unk_short3, unk_short4, unk_short5;
+		KfChild() : block(), name(), unk_link(),
+		name_offset(-1), controller_offset(-1), property_offset(-1), var1_offset(-1), var2_offset(-1),
+		unk_short1(0), unk_short2(0), unk_short3(0), unk_short4(0), unk_short5(0) {};
 	};
 	string txt_key_name;
 	blk_ref txt_key_blk;
-- 
GitLab