BGE Rasterizer Cleanup: Removing KX_BlenderGL since it was mostly one-line functions...
[blender.git] / source / gameengine / Converter / BlenderWorldInfo.cpp
index eb03a3c2a388c6ee1fae5d6349572712c2624faf..f1f264b33671539e905207a400a36c5766fdc704 100644 (file)
@@ -1,14 +1,10 @@
-/**
- * $Id$
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
- * This program is free software; you can redistribute it and/or
+ * This program is free software; you can [0]istribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,7 +13,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file gameengine/Converter/BlenderWorldInfo.cpp
+ *  \ingroup bgeconv
+ */
+
+
 #include <stdio.h>  // printf()
 
 #include "BlenderWorldInfo.h"
-#include "KX_BlenderGL.h"
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
 
 /* This little block needed for linking to Blender... */
 #ifdef WIN32
 #include "DNA_world_types.h"
 #include "DNA_screen_types.h"
 
+#include "BLI_math.h"
+
 #include "BKE_global.h"
 /* end of blender include block */
 
 
-BlenderWorldInfo::BlenderWorldInfo(struct World* blenderworld)
+BlenderWorldInfo::BlenderWorldInfo(struct Scene *blenderscene, struct World* blenderworld)
 {
        if (blenderworld)
        {
@@ -78,27 +76,24 @@ BlenderWorldInfo::BlenderWorldInfo(struct World* blenderworld)
                        m_hasmist = true;
                        m_miststart = blenderworld->miststa;
                        m_mistdistance = blenderworld->mistdist;
-                       m_mistred = blenderworld->horr;
-                       m_mistgreen = blenderworld->horg;
-                       m_mistblue = blenderworld->horb;
+                       copy_v3_v3(m_mistcolor, &blenderworld->horr);
                }
                else
                {
                        m_hasmist = false;
                        m_miststart = 0.0;
                        m_mistdistance = 0.0;
-                       m_mistred = 0.0;
-                       m_mistgreen = 0.0;
-                       m_mistblue = 0.0;
+                       zero_v3(m_mistcolor);
                }
 
-               m_backgroundred = blenderworld->horr;
-               m_backgroundgreen = blenderworld->horg;
-               m_backgroundblue = blenderworld->horb;
-               
-               m_ambientred = blenderworld->ambr;
-               m_ambientgreen = blenderworld->ambg;
-               m_ambientblue = blenderworld->ambb;
+               copy_v3_v3(m_backgroundcolor, &blenderworld->horr);
+               copy_v3_v3(m_ambientcolor, &blenderworld->ambr);
+
+               if (blenderscene->r.color_mgt_flag & R_COLOR_MANAGEMENT) {
+                       linearrgb_to_srgb_v3_v3(m_mistcolor, m_mistcolor);
+                       linearrgb_to_srgb_v3_v3(m_backgroundcolor, m_backgroundcolor);
+                       linearrgb_to_srgb_v3_v3(m_ambientcolor, m_ambientcolor);
+               }
        }
        else
        {
@@ -130,37 +125,37 @@ bool BlenderWorldInfo::hasMist()
 
 float BlenderWorldInfo::getBackColorRed()
 {
-       return m_backgroundred;
+       return m_backgroundcolor[0];
 }
 
 
 
 float BlenderWorldInfo::getBackColorGreen()
 {
-       return m_backgroundgreen;
+       return m_backgroundcolor[1];
 }  
 
 
 
 float BlenderWorldInfo::getBackColorBlue()
 {
-       return m_backgroundblue;
+       return m_backgroundcolor[2];
 }  
 
 
 float BlenderWorldInfo::getAmbientColorRed()
 {
-       return m_ambientred;
+       return m_ambientcolor[0];
 }
 
 float BlenderWorldInfo::getAmbientColorGreen()
 {
-       return m_ambientgreen;
+       return m_ambientcolor[1];
 }
 
 float BlenderWorldInfo::getAmbientColorBlue()
 {
-       return m_ambientblue;
+       return m_ambientcolor[2];
 }
 
 float BlenderWorldInfo::getMistStart()
@@ -173,31 +168,37 @@ float BlenderWorldInfo::getMistStart()
 float BlenderWorldInfo::getMistDistance()
 {
        return m_mistdistance;
-}  
-    
+}
+
+
 
-    
 float BlenderWorldInfo::getMistColorRed()
 {
-       return m_mistred;
+       return m_mistcolor[0];
 }
 
 
 
 float BlenderWorldInfo::getMistColorGreen()
 {
-       return m_mistgreen;
+       return m_mistcolor[1];
 }   
 
 
 
 float BlenderWorldInfo::getMistColorBlue()
 {
-       return m_mistblue;
+       return m_mistcolor[2];
 }
 
+void BlenderWorldInfo::setBackColor(float r, float g, float b)
+{
+       m_backgroundcolor[0] = r;
+       m_backgroundcolor[1] = g;
+       m_backgroundcolor[2] = b;
+}
 
-       void    
+       void
 BlenderWorldInfo::setMistStart(
        float d
 ) {
@@ -213,11 +214,11 @@ BlenderWorldInfo::setMistDistance(
 }
 
 
-       void    
+       void
 BlenderWorldInfo::setMistColorRed(
        float d
 ) {
-       m_mistred = d;
+       m_mistcolor[0] = d;
 }
 
 
@@ -225,13 +226,13 @@ BlenderWorldInfo::setMistColorRed(
 BlenderWorldInfo::setMistColorGreen(
        float d
 ) {
-       m_mistgreen = d;
+       m_mistcolor[1] = d;
 }
 
 
-       void    
+       void
 BlenderWorldInfo::setMistColorBlue(
        float d
 ) {
-       m_mistblue = d;
+       m_mistcolor[2] = d;
 }