[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