From 8c16f4c7d0b334b70ec3b01ac1d81d280e9759b1 Mon Sep 17 00:00:00 2001 From: Jorge Bernal Date: Tue, 3 Jun 2014 13:20:59 -0700 Subject: BGE: New Property sensor evaluation types This patch adds "Less Than" and "Greater Than" evaluation types to the property sensor. The Wiki Docs modifications http://wiki.blender.org/index.php/User:Lordloki/Doc:2.6/Manual/Game_Engine/Logic/Sensors/Property Also, I have attached a screenshot and a blend to check. Reviewers: dfelinto, moguri Reviewed By: moguri Differential Revision: https://developer.blender.org/D476 --- source/gameengine/Expressions/BoolValue.cpp | 7 +++++++ source/gameengine/Expressions/BoolValue.h | 1 + source/gameengine/Expressions/EmptyValue.cpp | 7 +++++++ source/gameengine/Expressions/EmptyValue.h | 1 + source/gameengine/Expressions/ErrorValue.cpp | 7 +++++++ source/gameengine/Expressions/ErrorValue.h | 1 + source/gameengine/Expressions/FloatValue.cpp | 7 +++++++ source/gameengine/Expressions/FloatValue.h | 1 + source/gameengine/Expressions/IntValue.cpp | 7 +++++++ source/gameengine/Expressions/IntValue.h | 1 + source/gameengine/Expressions/ListValue.cpp | 7 +++++++ source/gameengine/Expressions/ListValue.h | 1 + source/gameengine/Expressions/StringValue.cpp | 7 +++++++ source/gameengine/Expressions/StringValue.h | 1 + source/gameengine/Expressions/Value.cpp | 9 +++++++++ source/gameengine/Expressions/Value.h | 8 +++----- source/gameengine/Expressions/VectorValue.cpp | 8 ++++++++ source/gameengine/Expressions/VectorValue.h | 1 + source/gameengine/Expressions/VoidValue.h | 1 + 19 files changed, 78 insertions(+), 5 deletions(-) (limited to 'source/gameengine/Expressions') diff --git a/source/gameengine/Expressions/BoolValue.cpp b/source/gameengine/Expressions/BoolValue.cpp index ee913877c96..9ff53395056 100644 --- a/source/gameengine/Expressions/BoolValue.cpp +++ b/source/gameengine/Expressions/BoolValue.cpp @@ -186,6 +186,13 @@ double CBoolValue::GetNumber() +int CBoolValue::GetValueType() +{ + return VALUE_BOOL_TYPE; +} + + + const STR_String& CBoolValue::GetText() { return m_bool ? sTrueString : sFalseString; diff --git a/source/gameengine/Expressions/BoolValue.h b/source/gameengine/Expressions/BoolValue.h index b88c839a58e..161d6112f68 100644 --- a/source/gameengine/Expressions/BoolValue.h +++ b/source/gameengine/Expressions/BoolValue.h @@ -41,6 +41,7 @@ public: virtual const STR_String& GetText(); virtual double GetNumber(); + virtual int GetValueType(); bool GetBool(); virtual void SetValue(CValue* newval); diff --git a/source/gameengine/Expressions/EmptyValue.cpp b/source/gameengine/Expressions/EmptyValue.cpp index 7f3af9f649d..f8e72181ed7 100644 --- a/source/gameengine/Expressions/EmptyValue.cpp +++ b/source/gameengine/Expressions/EmptyValue.cpp @@ -82,6 +82,13 @@ double CEmptyValue::GetNumber() +int CEmptyValue::GetValueType() +{ + return VALUE_EMPTY_TYPE; +} + + + CListValue* CEmptyValue::GetPolySoup() { CListValue* soup = new CListValue(); diff --git a/source/gameengine/Expressions/EmptyValue.h b/source/gameengine/Expressions/EmptyValue.h index 8eccb97e0f5..88ef206f0f0 100644 --- a/source/gameengine/Expressions/EmptyValue.h +++ b/source/gameengine/Expressions/EmptyValue.h @@ -32,6 +32,7 @@ public: virtual const STR_String & GetText(); virtual double GetNumber(); + virtual int GetValueType(); CListValue* GetPolySoup(); virtual double* GetVector3(bool bGetTransformedVec=false); bool IsInside(CValue* testpoint,bool bBorderInclude=true); diff --git a/source/gameengine/Expressions/ErrorValue.cpp b/source/gameengine/Expressions/ErrorValue.cpp index ba9c52be6c7..46e09b9073f 100644 --- a/source/gameengine/Expressions/ErrorValue.cpp +++ b/source/gameengine/Expressions/ErrorValue.cpp @@ -107,6 +107,13 @@ double CErrorValue::GetNumber() +int CErrorValue::GetValueType() +{ + return VALUE_ERROR_TYPE; +} + + + const STR_String & CErrorValue::GetText() { return m_strErrorText; diff --git a/source/gameengine/Expressions/ErrorValue.h b/source/gameengine/Expressions/ErrorValue.h index 0095528254e..61c72151f40 100644 --- a/source/gameengine/Expressions/ErrorValue.h +++ b/source/gameengine/Expressions/ErrorValue.h @@ -27,6 +27,7 @@ class CErrorValue : public CPropValue public: virtual const STR_String & GetText(); virtual double GetNumber(); + virtual int GetValueType(); CErrorValue(); CErrorValue(const char *errmsg); virtual ~CErrorValue(); diff --git a/source/gameengine/Expressions/FloatValue.cpp b/source/gameengine/Expressions/FloatValue.cpp index 0f468e328ed..4d6f3f467eb 100644 --- a/source/gameengine/Expressions/FloatValue.cpp +++ b/source/gameengine/Expressions/FloatValue.cpp @@ -285,6 +285,13 @@ double CFloatValue::GetNumber() +int CFloatValue::GetValueType() +{ + return VALUE_FLOAT_TYPE; +} + + + void CFloatValue::SetValue(CValue* newval) { m_float = (float)newval->GetNumber(); diff --git a/source/gameengine/Expressions/FloatValue.h b/source/gameengine/Expressions/FloatValue.h index bc6a2d052d4..379c3e951bc 100644 --- a/source/gameengine/Expressions/FloatValue.h +++ b/source/gameengine/Expressions/FloatValue.h @@ -33,6 +33,7 @@ public: void Configure(CValue* menuvalue); virtual double GetNumber(); + virtual int GetValueType(); virtual void SetValue(CValue* newval); float GetFloat(); void SetFloat(float fl); diff --git a/source/gameengine/Expressions/IntValue.cpp b/source/gameengine/Expressions/IntValue.cpp index fa4c9ad8ac9..5cb8a1ca296 100644 --- a/source/gameengine/Expressions/IntValue.cpp +++ b/source/gameengine/Expressions/IntValue.cpp @@ -298,6 +298,13 @@ double CIntValue::GetNumber() +int CIntValue::GetValueType() +{ + return VALUE_INT_TYPE; +} + + + const STR_String & CIntValue::GetText() { if (!m_pstrRep) diff --git a/source/gameengine/Expressions/IntValue.h b/source/gameengine/Expressions/IntValue.h index 8411b09693c..6da975f4f7f 100644 --- a/source/gameengine/Expressions/IntValue.h +++ b/source/gameengine/Expressions/IntValue.h @@ -31,6 +31,7 @@ class CIntValue : public CPropValue public: virtual const STR_String& GetText(); virtual double GetNumber(); + virtual int GetValueType(); cInt GetInt(); CIntValue(); diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp index 1f12a9b78e1..75e3b490505 100644 --- a/source/gameengine/Expressions/ListValue.cpp +++ b/source/gameengine/Expressions/ListValue.cpp @@ -250,6 +250,13 @@ double CListValue::GetNumber() +int CListValue::GetValueType() +{ + return VALUE_LIST_TYPE; +} + + + void CListValue::SetModified(bool bModified) { CValue::SetModified(bModified); diff --git a/source/gameengine/Expressions/ListValue.h b/source/gameengine/Expressions/ListValue.h index 5240c54ae4e..bb188179836 100644 --- a/source/gameengine/Expressions/ListValue.h +++ b/source/gameengine/Expressions/ListValue.h @@ -40,6 +40,7 @@ public: VALUE_OPERATOR op, CValue* val); virtual double GetNumber(); + virtual int GetValueType(); virtual CValue* GetReplica(); public: diff --git a/source/gameengine/Expressions/StringValue.cpp b/source/gameengine/Expressions/StringValue.cpp index 166125bc906..098949c9d7b 100644 --- a/source/gameengine/Expressions/StringValue.cpp +++ b/source/gameengine/Expressions/StringValue.cpp @@ -120,6 +120,13 @@ double CStringValue::GetNumber() +int CStringValue::GetValueType() +{ + return VALUE_STRING_TYPE; +} + + + const STR_String & CStringValue::GetText() { return m_strString; diff --git a/source/gameengine/Expressions/StringValue.h b/source/gameengine/Expressions/StringValue.h index 22d433455ec..cb60600ad88 100644 --- a/source/gameengine/Expressions/StringValue.h +++ b/source/gameengine/Expressions/StringValue.h @@ -36,6 +36,7 @@ public: virtual bool IsEqual(const STR_String & other); virtual const STR_String & GetText(); virtual double GetNumber(); + virtual int GetValueType(); virtual CValue* Calc(VALUE_OPERATOR op, CValue *val); virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val); diff --git a/source/gameengine/Expressions/Value.cpp b/source/gameengine/Expressions/Value.cpp index e5c4001de4c..1ced71e66a4 100644 --- a/source/gameengine/Expressions/Value.cpp +++ b/source/gameengine/Expressions/Value.cpp @@ -494,6 +494,15 @@ void CValue::ProcessReplica() /* was AddDataToReplica in 2.48 */ } } + + +int CValue::GetValueType() +{ + return VALUE_NO_TYPE; +} + + + CValue* CValue::FindIdentifier(const STR_String& identifiername) { diff --git a/source/gameengine/Expressions/Value.h b/source/gameengine/Expressions/Value.h index db7d69a638f..7f6ce9aa703 100644 --- a/source/gameengine/Expressions/Value.h +++ b/source/gameengine/Expressions/Value.h @@ -82,11 +82,9 @@ enum VALUE_DATA_TYPE { VALUE_BOOL_TYPE, VALUE_ERROR_TYPE, VALUE_EMPTY_TYPE, - VALUE_SOLID_TYPE, - VALUE_COMBISOLID_TYPE, + VALUE_LIST_TYPE, + VALUE_VOID_TYPE, VALUE_VECTOR_TYPE, - VALUE_MENU_TYPE, - VALUE_ACTOR_TYPE, VALUE_MAX_TYPE //only here to provide number of types }; @@ -311,6 +309,7 @@ public: virtual const STR_String & GetText() = 0; virtual double GetNumber() = 0; + virtual int GetValueType(); // Get Prop value type double* ZeroVector() { return m_sZeroVec; } virtual double* GetVector3(bool bGetTransformedVec = false); @@ -323,7 +322,6 @@ public: virtual void ProcessReplica(); //virtual CValue* Copy() = 0; - STR_String op2str(VALUE_OPERATOR op); // setting / getting flags diff --git a/source/gameengine/Expressions/VectorValue.cpp b/source/gameengine/Expressions/VectorValue.cpp index a0e1b616d5e..6931ba2aa76 100644 --- a/source/gameengine/Expressions/VectorValue.cpp +++ b/source/gameengine/Expressions/VectorValue.cpp @@ -162,6 +162,14 @@ double CVectorValue::GetNumber() } + +int CVectorValue::GetValueType() +{ + return VALUE_VECTOR_TYPE; +} + + + double* CVectorValue::GetVector3(bool bGetTransformedVec) { if (bGetTransformedVec) diff --git a/source/gameengine/Expressions/VectorValue.h b/source/gameengine/Expressions/VectorValue.h index 69f2d4b54ae..717fa68f6dc 100644 --- a/source/gameengine/Expressions/VectorValue.h +++ b/source/gameengine/Expressions/VectorValue.h @@ -37,6 +37,7 @@ public: void Configure(CValue* menuvalue); virtual double* GetVector3(bool bGetTransformedVec=false); virtual double GetNumber(); + virtual int GetValueType(); CValue* Calc(VALUE_OPERATOR op, CValue *val) { return val->CalcFinal(VALUE_VECTOR_TYPE, op, this); diff --git a/source/gameengine/Expressions/VoidValue.h b/source/gameengine/Expressions/VoidValue.h index 832f75c9c9f..4f74910dd8a 100644 --- a/source/gameengine/Expressions/VoidValue.h +++ b/source/gameengine/Expressions/VoidValue.h @@ -59,6 +59,7 @@ public: /// Value -> String or number virtual const STR_String & GetText(); /* Get string description of void value (unimplemented) */ virtual double GetNumber() { return -1; } + virtual int GetValueType() { return VALUE_VOID_TYPE; } /// Value calculation virtual CValue* Calc(VALUE_OPERATOR op, CValue *val); -- cgit v1.2.3