[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19669] trunk/blender/source/gameengine: use long long rather then int for storing game logic properties.
Campbell Barton
ideasman42 at gmail.com
Sun Apr 12 08:41:02 CEST 2009
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. @@
More information about the Bf-blender-cvs
mailing list