Add files via upload
authorTrianglesPCT <dain.bray@gmail.com>
Sun, 24 Jul 2016 08:23:59 +0000 (02:23 -0600)
committerGitHub <noreply@github.com>
Sun, 24 Jul 2016 08:23:59 +0000 (02:23 -0600)
fix blender vert colors being casted to signed char, which was causing negative values.

Also fix blender vert colors being way outside of 0 to 1 range which aiColor specifies

code/BlenderDNA.inl
code/BlenderScene.h

index 0b3f2fd..7397e29 100644 (file)
@@ -532,7 +532,7 @@ template <typename T> struct signless;
 template <> struct signless<char> {typedef unsigned char type;};
 template <> struct signless<short> {typedef unsigned short type;};
 template <> struct signless<int> {typedef unsigned int type;};
-
+template <> struct signless<unsigned char> { typedef unsigned char type; };
 template <typename T>
 struct static_cast_silent {
     template <typename V>
@@ -615,6 +615,22 @@ template <> inline void Structure :: Convert<char>   (char& dest,const FileDatab
 }
 
 // ------------------------------------------------------------------------------------------------
+template <> inline void Structure::Convert<unsigned char>(unsigned char& dest, const FileDatabase& db) const
+{
+       // automatic rescaling from char to float and vice versa (seems useful for RGB colors)
+       if (name == "float") {
+               dest = static_cast<unsigned char>(db.reader->GetF4() * 255.f);
+               return;
+       }
+       else if (name == "double") {
+               dest = static_cast<unsigned char>(db.reader->GetF8() * 255.f);
+               return;
+       }
+       ConvertDispatcher(dest, *this, db);
+}
+
+
+// ------------------------------------------------------------------------------------------------
 template <> inline void Structure :: Convert<float>  (float& dest,const FileDatabase& db) const
 {
     // automatic rescaling from char to float and vice versa (seems useful for RGB colors)
index 9de0fcb..765d950 100644 (file)
@@ -175,7 +175,7 @@ struct MLoopUV : ElemBase {
 // -------------------------------------------------------------------------------
 // Note that red and blue are not swapped, as with MCol
 struct MLoopCol : ElemBase {
-    char r, g, b, a;
+       unsigned char r, g, b, a;
 };
 
 // -------------------------------------------------------------------------------