From e44727f620c18a77ccb5326dec38bd6d17e9178a Mon Sep 17 00:00:00 2001
From: Amorilia <amorilia@users.sourceforge.net>
Date: Sat, 10 Dec 2011 21:44:25 +0000
Subject: [PATCH] Fix for having ByteColor4 inside a Key.

---
 include/NIF_IO.h                       |  6 ++++++
 include/obj/NiPSSimulatorGeneralStep.h |  2 ++
 src/NIF_IO.cpp                         | 21 +++++++++++++++++++++
 3 files changed, 29 insertions(+)

diff --git a/include/NIF_IO.h b/include/NIF_IO.h
index 70b58b92..ed1456cf 100644
--- a/include/NIF_IO.h
+++ b/include/NIF_IO.h
@@ -214,6 +214,12 @@ ostream & operator<<( ostream & out, Char8String const & val );
 void NifStream( InertiaMatrix & val, istream& in, const NifInfo & info);
 void NifStream( InertiaMatrix const & val, ostream& out, const NifInfo & info);
 
+//ByteColor4
+class ByteColor4;
+void NifStream( ByteColor4 & val, istream& in, const NifInfo & info);
+void NifStream( ByteColor4 const & val, ostream& out, const NifInfo & info);
+ostream & operator<<( ostream & out, ByteColor4 const & val );
+
 //--Templates--//
 
 void NifStream( Key<Quaternion> & key, istream& file, const NifInfo & info, KeyType type );
diff --git a/include/obj/NiPSSimulatorGeneralStep.h b/include/obj/NiPSSimulatorGeneralStep.h
index dd069e48..e6a5cc60 100644
--- a/include/obj/NiPSSimulatorGeneralStep.h
+++ b/include/obj/NiPSSimulatorGeneralStep.h
@@ -12,6 +12,8 @@ All rights reserved.  Please see niflib.h for license. */
 
 //--BEGIN FILE HEAD CUSTOM CODE--//
 
+#include "../gen/ByteColor4.h"
+
 //--END CUSTOM CODE--//
 
 #include "NiPSSimulatorStep.h"
diff --git a/src/NIF_IO.cpp b/src/NIF_IO.cpp
index f39cb744..c815c995 100644
--- a/src/NIF_IO.cpp
+++ b/src/NIF_IO.cpp
@@ -4,6 +4,7 @@ All rights reserved.  Please see niflib.h for license. */
 #include "../include/NIF_IO.h"
 #include "../include/niflib.h"
 #include "../include/gen/Header.h"
+#include "../include/gen/ByteColor4.h"
 namespace Niflib {
 
 //--Endian Support Functions--//
@@ -890,6 +891,26 @@ void NifStream( InertiaMatrix const & val, ostream& out, const NifInfo & info )
 	}
 }
 
+//ByteColor4
+void NifStream( ByteColor4 & val, istream& in, const NifInfo & info ) {
+  val.r = ReadByte(in);
+  val.g = ReadByte(in);
+  val.b = ReadByte(in);
+  val.a = ReadByte(in);
+}
+
+void NifStream( ByteColor4 const & val, ostream& out, const NifInfo & info ) {
+  WriteByte( val.r, out);
+  WriteByte( val.g, out);
+  WriteByte( val.b, out);
+  WriteByte( val.a, out);
+}
+
+ostream & operator<<( ostream & out, ByteColor4 const & val ) {
+  out << "RGBA: " << val.r << " " << val.g << " " << val.b << " " << val.a;
+  return out;
+}
+
 ostream & operator<<( ostream & out, hdrInfo const & val ) {
 	out.pword(hdrInfo::infoIdx) = (void*)val.info;
 	return (out);
-- 
GitLab