Commit: 8c16f4c7d0b334b70ec3b01ac1d81d280e9759b1 Author: Jorge Bernal Date: Tue Jun 3 13:20:59 2014 -0700 https://developer.blender.org/rB8c16f4c7d0b334b70ec3b01ac1d81d280e9759b1
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 =================================================================== M doc/python_api/rst/bge.logic.rst M source/blender/editors/space_logic/logic_window.c M source/blender/makesdna/DNA_sensor_types.h M source/blender/makesrna/intern/rna_sensor.c M source/gameengine/Converter/KX_ConvertSensors.cpp M source/gameengine/Expressions/BoolValue.cpp M source/gameengine/Expressions/BoolValue.h M source/gameengine/Expressions/EmptyValue.cpp M source/gameengine/Expressions/EmptyValue.h M source/gameengine/Expressions/ErrorValue.cpp M source/gameengine/Expressions/ErrorValue.h M source/gameengine/Expressions/FloatValue.cpp M source/gameengine/Expressions/FloatValue.h M source/gameengine/Expressions/IntValue.cpp M source/gameengine/Expressions/IntValue.h M source/gameengine/Expressions/ListValue.cpp M source/gameengine/Expressions/ListValue.h M source/gameengine/Expressions/StringValue.cpp M source/gameengine/Expressions/StringValue.h M source/gameengine/Expressions/Value.cpp M source/gameengine/Expressions/Value.h M source/gameengine/Expressions/VectorValue.cpp M source/gameengine/Expressions/VectorValue.h M source/gameengine/Expressions/VoidValue.h M source/gameengine/GameLogic/SCA_PropertySensor.cpp M source/gameengine/GameLogic/SCA_PropertySensor.h M source/gameengine/Ketsji/KX_PythonInit.cpp =================================================================== diff --git a/doc/python_api/rst/bge.logic.rst b/doc/python_api/rst/bge.logic.rst index 0ddae47..b378064 100644 --- a/doc/python_api/rst/bge.logic.rst +++ b/doc/python_api/rst/bge.logic.rst @@ -507,6 +507,18 @@ Property Sensor :value: 5 +.. data:: KX_PROPSENSOR_LESSTHAN + + Activate when the property is less than the sensor value + + :value: 6 + +.. data:: KX_PROPSENSOR_GREATERTHAN + + Activate when the property is greater than the sensor value + + :value: 7 + ------------ Radar Sensor ------------ diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 4b53329..7f0fadc 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -1182,9 +1182,9 @@ static void draw_sensor_property(uiLayout *layout, PointerRNA *ptr) uiItemR(row, ptr, "value_max", 0, NULL, ICON_NONE); break; case SENS_PROP_EQUAL: - uiItemR(layout, ptr, "value", 0, NULL, ICON_NONE); - break; case SENS_PROP_NEQUAL: + case SENS_PROP_LESSTHAN: + case SENS_PROP_GREATERTHAN: uiItemR(layout, ptr, "value", 0, NULL, ICON_NONE); break; case SENS_PROP_CHANGED: diff --git a/source/blender/makesdna/DNA_sensor_types.h b/source/blender/makesdna/DNA_sensor_types.h index fcdbbe3..cd1977c 100644 --- a/source/blender/makesdna/DNA_sensor_types.h +++ b/source/blender/makesdna/DNA_sensor_types.h @@ -202,6 +202,8 @@ typedef struct bJoystickSensor { #define SENS_PROP_INTERVAL 2 #define SENS_PROP_CHANGED 3 #define SENS_PROP_EXPRESSION 4 +#define SENS_PROP_LESSTHAN 5 +#define SENS_PROP_GREATERTHAN 6 /* raysensor->axisflag */ /* flip x and y to make y default!!! */ diff --git a/source/blender/makesrna/intern/rna_sensor.c b/source/blender/makesrna/intern/rna_sensor.c index f5e5911..aeef04f 100644 --- a/source/blender/makesrna/intern/rna_sensor.c +++ b/source/blender/makesrna/intern/rna_sensor.c @@ -478,6 +478,8 @@ static void rna_def_property_sensor(BlenderRNA *brna) {SENS_PROP_INTERVAL, "PROPINTERVAL", 0, "Interval", ""}, {SENS_PROP_CHANGED, "PROPCHANGED", 0, "Changed", ""}, /* {SENS_PROP_EXPRESSION, "PROPEXPRESSION", 0, "Expression", ""}, NOT_USED_IN_UI */ + {SENS_PROP_LESSTHAN, "PROPLESSTHAN", 0, "Less Than", ""}, + {SENS_PROP_GREATERTHAN, "PROPGREATERTHAN", 0, "Greater Than", ""}, {0, NULL, 0, NULL, NULL} }; @@ -498,7 +500,7 @@ static void rna_def_property_sensor(BlenderRNA *brna) prop = RNA_def_property(srna, "value", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "value"); - RNA_def_property_ui_text(prop, "Value", "Check for this value in types in Equal or Not Equal types"); + RNA_def_property_ui_text(prop, "Value", "Check for this value in types in Equal, Not Equal, Less Than and Greater Than types"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop = RNA_def_property(srna, "value_min", PROP_STRING, PROP_NONE); diff --git a/source/gameengine/Converter/KX_ConvertSensors.cpp b/source/gameengine/Converter/KX_ConvertSensors.cpp index b3c6f6d..93a5ee1 100644 --- a/source/gameengine/Converter/KX_ConvertSensors.cpp +++ b/source/gameengine/Converter/KX_ConvertSensors.cpp @@ -377,6 +377,12 @@ void BL_ConvertSensors(struct Object* blenderobject, propchecktype = SCA_PropertySensor::KX_PROPSENSOR_EXPRESSION; /* error */ break; + case SENS_PROP_LESSTHAN: + propchecktype = SCA_PropertySensor::KX_PROPSENSOR_LESSTHAN; + break; + case SENS_PROP_GREATERTHAN: + propchecktype = SCA_PropertySensor::KX_PROPSENSOR_GREATERTHAN; + break; default: ; /* error */ } diff --git a/source/gameengine/Expressions/BoolValue.cpp b/source/gameengine/Expressions/BoolValue.cpp index ee91387..9ff5339 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 b88c839..161d611 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 7f3af9f..f8e7218 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 8eccb97..88ef206 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 ba9c52b..46e09b9 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 0095528..61c7215 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 0f468e3..4d6f3f4 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 bc6a2d0..379c3e9 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 fa4c9ad..5cb8a1c 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 8411b09..6da975f 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 1f12a9b..75e3b49 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 5240c54..bb18817 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 166125b..098949c 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 22d4334..cb60600 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 e5c4001..1ced71e 100644 --- a/source/gameengine/Expressions/Value.cpp +++ b/source/gameengine/Expressions/Value.cpp @@ -494,6 +494,15 @@ void CVa @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-blender-cvs
