Revision: 19669
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19669
Author:   campbellbarton
Date:     2009-04-12 08:41:01 +0200 (Sun, 12 Apr 2009)

Log Message:
-----------
use long long rather then int for storing game logic properties.

There were also some problems with int to python conversion
- assigning a PyLong to a KX_GameObject from python would raise an error
- PyLong were coerced into floats when used with internal CValue arithmetic

Changes...
- PyLong is converted into CIntValue for coercing and assigning from python
- CValue's generic GetNumber() function returns a double rather then a float.
- Print an error when a PyType cant be coerced into a CValue

Tested with python, expressions and property sensor.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Expressions/BoolValue.cpp
    trunk/blender/source/gameengine/Expressions/BoolValue.h
    trunk/blender/source/gameengine/Expressions/ConstExpr.cpp
    trunk/blender/source/gameengine/Expressions/ConstExpr.h
    trunk/blender/source/gameengine/Expressions/EmptyValue.cpp
    trunk/blender/source/gameengine/Expressions/EmptyValue.h
    trunk/blender/source/gameengine/Expressions/ErrorValue.cpp
    trunk/blender/source/gameengine/Expressions/ErrorValue.h
    trunk/blender/source/gameengine/Expressions/FloatValue.cpp
    trunk/blender/source/gameengine/Expressions/FloatValue.h
    trunk/blender/source/gameengine/Expressions/InputParser.cpp
    trunk/blender/source/gameengine/Expressions/InputParser.h
    trunk/blender/source/gameengine/Expressions/IntValue.cpp
    trunk/blender/source/gameengine/Expressions/IntValue.h
    trunk/blender/source/gameengine/Expressions/ListValue.cpp
    trunk/blender/source/gameengine/Expressions/ListValue.h
    trunk/blender/source/gameengine/Expressions/StringValue.cpp
    trunk/blender/source/gameengine/Expressions/StringValue.h
    trunk/blender/source/gameengine/Expressions/Value.cpp
    trunk/blender/source/gameengine/Expressions/Value.h
    trunk/blender/source/gameengine/Expressions/VectorValue.cpp
    trunk/blender/source/gameengine/Expressions/VectorValue.h
    trunk/blender/source/gameengine/Expressions/VoidValue.h
    trunk/blender/source/gameengine/GameLogic/SCA_ExpressionController.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_ILogicBrick.h
    trunk/blender/source/gameengine/GameLogic/SCA_ISensor.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_ISensor.h
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.h
    trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp
    trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.h
    trunk/blender/source/gameengine/Ketsji/KX_PolyProxy.cpp
    trunk/blender/source/gameengine/Ketsji/KX_PolyProxy.h
    trunk/blender/source/gameengine/Ketsji/KX_VertexProxy.cpp
    trunk/blender/source/gameengine/Ketsji/KX_VertexProxy.h

Modified: trunk/blender/source/gameengine/Expressions/BoolValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/BoolValue.cpp   2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/BoolValue.cpp   2009-04-12 
06:41:01 UTC (rev 19669)
@@ -181,9 +181,9 @@
 
 
 
-float CBoolValue::GetNumber()
+double CBoolValue::GetNumber()
 {
-       return (float)m_bool;
+       return (double)m_bool;
 }
 
 

Modified: trunk/blender/source/gameengine/Expressions/BoolValue.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/BoolValue.h     2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/BoolValue.h     2009-04-12 
06:41:01 UTC (rev 19669)
@@ -33,7 +33,7 @@
        CBoolValue(bool innie, STR_String name, AllocationTYPE alloctype = 
CValue::HEAPVALUE);
 
        virtual const STR_String& GetText();
-       virtual float           GetNumber();
+       virtual double          GetNumber();
        bool                            GetBool();
        virtual void            SetValue(CValue* newval);
        

Modified: trunk/blender/source/gameengine/Expressions/ConstExpr.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/ConstExpr.cpp   2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/ConstExpr.cpp   2009-04-12 
06:41:01 UTC (rev 19669)
@@ -84,7 +84,7 @@
 
 
 
-float CConstExpr::GetNumber()
+double CConstExpr::GetNumber()
 {
        return -1;
 }

Modified: trunk/blender/source/gameengine/Expressions/ConstExpr.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/ConstExpr.h     2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/ConstExpr.h     2009-04-12 
06:41:01 UTC (rev 19669)
@@ -32,7 +32,7 @@
        //bool IsInside(float x,float y,float z,bool bBorderInclude=true);
        bool NeedsRecalculated();
        void ClearModified();
-       virtual float GetNumber();
+       virtual double GetNumber();
        virtual CValue* Calculate();
        CConstExpr(CValue* constval);
        CConstExpr();

Modified: trunk/blender/source/gameengine/Expressions/EmptyValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/EmptyValue.cpp  2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/EmptyValue.cpp  2009-04-12 
06:41:01 UTC (rev 19669)
@@ -76,7 +76,7 @@
 
 
 
-float CEmptyValue::GetNumber()
+double CEmptyValue::GetNumber()
 {
        return 0;
 }

Modified: trunk/blender/source/gameengine/Expressions/EmptyValue.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/EmptyValue.h    2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/EmptyValue.h    2009-04-12 
06:41:01 UTC (rev 19669)
@@ -27,7 +27,7 @@
        virtual                                 ~CEmptyValue();
 
        virtual const STR_String &      GetText();
-       virtual float                   GetNumber();
+       virtual double                  GetNumber();
        CListValue*                             GetPolySoup();
        virtual double*                 GetVector3(bool 
bGetTransformedVec=false);
        bool                                    IsInside(CValue* testpoint,bool 
bBorderInclude=true);

Modified: trunk/blender/source/gameengine/Expressions/ErrorValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/ErrorValue.cpp  2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/ErrorValue.cpp  2009-04-12 
06:41:01 UTC (rev 19669)
@@ -99,7 +99,7 @@
 
 
 
-float CErrorValue::GetNumber()
+double CErrorValue::GetNumber()
 {
        return -1;
 }

Modified: trunk/blender/source/gameengine/Expressions/ErrorValue.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/ErrorValue.h    2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/ErrorValue.h    2009-04-12 
06:41:01 UTC (rev 19669)
@@ -23,7 +23,7 @@
 
 public:
        virtual const STR_String & GetText();
-       virtual float GetNumber();
+       virtual double GetNumber();
        CErrorValue();
        CErrorValue(STR_String errmsg);
        virtual ~CErrorValue();

Modified: trunk/blender/source/gameengine/Expressions/FloatValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/FloatValue.cpp  2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/FloatValue.cpp  2009-04-12 
06:41:01 UTC (rev 19669)
@@ -278,7 +278,7 @@
 
 
 
-float CFloatValue::GetNumber()
+double CFloatValue::GetNumber()
 {
        return m_float;
 }
@@ -287,7 +287,7 @@
 
 void CFloatValue::SetValue(CValue* newval)
 {      
-       m_float = newval->GetNumber(); 
+       m_float = (float)newval->GetNumber(); 
        SetModified(true);
 }
 

Modified: trunk/blender/source/gameengine/Expressions/FloatValue.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/FloatValue.h    2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/FloatValue.h    2009-04-12 
06:41:01 UTC (rev 19669)
@@ -28,7 +28,7 @@
        virtual const STR_String & GetText();
 
        void Configure(CValue* menuvalue);
-       virtual float GetNumber();
+       virtual double GetNumber();
        virtual void SetValue(CValue* newval);
        float GetFloat();
        void SetFloat(float fl);

Modified: trunk/blender/source/gameengine/Expressions/InputParser.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/InputParser.cpp 2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/InputParser.cpp 2009-04-12 
06:41:01 UTC (rev 19669)
@@ -319,12 +319,14 @@
        }
 }
 
+#if 0
 int CParser::MakeInt() {
        // returns the integer representation of the value in the global
        // variable const_as_string
        // pre: const_as_string contains only numercal chars
        return atoi(const_as_string);
 }
+#endif
 
 STR_String CParser::Symbol2Str(int s) {
        // returns a string representation of of symbol s,
@@ -436,8 +438,8 @@
                                        break;
                                case inttype:
                                        {
-                                               int temp;
-                                               temp = atoi(const_as_string);
+                                               cInt temp;
+                                               temp = strtoll(const_as_string, 
NULL, 10); /* atoi is for int only */
                                                e1 = new CConstExpr(new 
CIntValue(temp));
                                                break;
                                        }
@@ -580,7 +582,7 @@
        CExpression* expr = ProcessText(txt);
        if (expr) {
                val = expr->Calculate();
-               result=val->GetNumber();
+               result=(float)val->GetNumber();
                
                
        

Modified: trunk/blender/source/gameengine/Expressions/InputParser.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/InputParser.h   2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/InputParser.h   2009-04-12 
06:41:01 UTC (rev 19669)
@@ -94,7 +94,9 @@
        void CharRep();
        void GrabString(int start);
        void NextSym();
+#if 0  /* not used yet */
        int MakeInt();
+#endif
        STR_String Symbol2Str(int s);
        void Term(int s);
        int Priority(int optor);

Modified: trunk/blender/source/gameengine/Expressions/IntValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/IntValue.cpp    2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/IntValue.cpp    2009-04-12 
06:41:01 UTC (rev 19669)
@@ -42,10 +42,10 @@
 
 
 
-CIntValue::CIntValue(int innie)
+CIntValue::CIntValue(cInt innie)
 /*
 pre:
-effect: constructs a new CIntValue containing int innie
+effect: constructs a new CIntValue containing cInt innie
 */
 {
        m_int = innie;
@@ -54,7 +54,7 @@
 
 
 
-CIntValue::CIntValue(int innie,STR_String name,AllocationTYPE alloctype)
+CIntValue::CIntValue(cInt innie,STR_String name,AllocationTYPE alloctype)
 {
        m_int = innie;
        SetName(name);
@@ -280,10 +280,10 @@
 
 
 
-int CIntValue::GetInt()
+cInt CIntValue::GetInt()
 /*
 pre:
-ret: the int stored in the object
+ret: the cInt stored in the object
 */
 {
        return m_int;
@@ -291,7 +291,7 @@
 
 
 
-float CIntValue::GetNumber()
+double CIntValue::GetNumber()
 {
        return (float) m_int;
 }
@@ -302,7 +302,7 @@
 {
        if (!m_pstrRep)
                m_pstrRep=new STR_String();
-       m_pstrRep->Format("%d",m_int);
+       m_pstrRep->Format("%lld",m_int);
        
        return *m_pstrRep;
 }
@@ -321,7 +321,7 @@
 
 void CIntValue::SetValue(CValue* newval)
 {      
-       m_int = (int)newval->GetNumber(); 
+       m_int = (cInt)newval->GetNumber(); 
        SetModified(true);
 }
 
@@ -329,5 +329,8 @@
 
 PyObject* CIntValue::ConvertValueToPython()
 {
-       return PyInt_FromLong(m_int);
+       if((m_int > INT_MIN) && (m_int < INT_MAX))
+               return PyInt_FromLong(m_int);
+       else
+               return PyLong_FromLongLong(m_int);
 }

Modified: trunk/blender/source/gameengine/Expressions/IntValue.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/IntValue.h      2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/IntValue.h      2009-04-12 
06:41:01 UTC (rev 19669)
@@ -18,18 +18,20 @@
 
 #include "Value.h"
 
+typedef long long cInt; 
+
 class CIntValue : public CPropValue  
 {
        //PLUGIN_DECLARE_SERIAL (CIntValue,CValue)
 
 public:
        virtual const STR_String& GetText();
-       virtual float                   GetNumber();
+       virtual double                  GetNumber();
        
-       int GetInt();
+       cInt GetInt();
        CIntValue();
-       CIntValue(int innie);
-       CIntValue(int innie,
+       CIntValue(cInt innie);
+       CIntValue(cInt innie,
                          STR_String name,
                          AllocationTYPE alloctype=CValue::HEAPVALUE);
        
@@ -51,7 +53,7 @@
        virtual                 ~CIntValue();
 
 private:
-       int                             m_int;
+       cInt                    m_int;
        STR_String*             m_pstrRep;
 
 };

Modified: trunk/blender/source/gameengine/Expressions/ListValue.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/ListValue.cpp   2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/ListValue.cpp   2009-04-12 
06:41:01 UTC (rev 19669)
@@ -561,7 +561,7 @@
 
 
 
-float CListValue::GetNumber()
+double CListValue::GetNumber()
 {
        return -1;
 }

Modified: trunk/blender/source/gameengine/Expressions/ListValue.h
===================================================================
--- trunk/blender/source/gameengine/Expressions/ListValue.h     2009-04-11 
20:58:09 UTC (rev 19668)
+++ trunk/blender/source/gameengine/Expressions/ListValue.h     2009-04-12 
06:41:01 UTC (rev 19669)
@@ -36,7 +36,7 @@
        virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype,
                                                          VALUE_OPERATOR op,
                                                          CValue* val);

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to