Undo revision 23130 which was a merge with 2.5, a messy one because I did something...
[blender.git] / source / gameengine / GameLogic / SCA_ILogicBrick.h
index c28711a..5067985 100644 (file)
@@ -53,32 +53,74 @@ protected:
        CValue* GetEvent();
 
 public:
-       SCA_ILogicBrick(SCA_IObject* gameobj,PyTypeObject* T );
+       SCA_ILogicBrick(SCA_IObject* gameobj);
        virtual ~SCA_ILogicBrick();
 
        void SetExecutePriority(int execute_Priority);
        void SetUeberExecutePriority(int execute_Priority);
 
-       SCA_IObject*    GetParent();
+       SCA_IObject*    GetParent() { return m_gameobj; }
+
        virtual void    ReParent(SCA_IObject* parent);
        virtual void    Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map);
+       virtual void Delete() { Release(); }
 
        // act as a BoolValue (with value IsPositiveTrigger)
        virtual CValue* Calc(VALUE_OPERATOR op, CValue *val);
        virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
 
        virtual const STR_String &      GetText();
-       virtual float           GetNumber();
-       virtual STR_String      GetName();
-       virtual void            SetName(STR_String name);
-       virtual void            ReplicaSetName(STR_String name);
+       virtual double          GetNumber();
+       virtual STR_String&     GetName();
+       virtual void            SetName(const char *);
                
-       bool                            IsActive();
-       void                            SetActive(bool active) ;
+       bool                            IsActive()
+       {
+               return m_bActive;
+       }
+
+       void                            SetActive(bool active)
+       {
+               m_bActive=active;
+       }
+
+       // insert in a QList at position corresponding to m_Execute_Priority
+       void                        InsertActiveQList(SG_QList& head)
+       {
+               SG_QList::iterator<SCA_ILogicBrick> it(head);
+               for(it.begin(); !it.end() && m_Execute_Priority > (*it)->m_Execute_Priority; ++it);
+               it.add_back(this);
+       }
+
+       // insert in a QList at position corresponding to m_Execute_Priority
+       // inside a longer list that contains elements of other objects. 
+       // Sorting is done only between the elements of the same object.
+       // head is the head of the combined list
+       // current points to the first element of the object in the list, NULL if none yet
+       void                        InsertSelfActiveQList(SG_QList& head, SG_QList** current)
+       {
+               if (!*current)
+               {
+                       // first element can be put anywhere
+                       head.QAddBack(this);
+                       *current = this;
+                       return;
+               }
+               // note: we assume current points actually to one o our element, skip the tests
+               SG_QList::iterator<SCA_ILogicBrick> it(head,*current);
+               if (m_Execute_Priority <= (*it)->m_Execute_Priority)
+               {
+                       // this element comes before the first
+                       *current = this;
+               }
+               else
+               {
+                       for(++it; !it.end() && (*it)->m_gameobj == m_gameobj &&  m_Execute_Priority > (*it)->m_Execute_Priority; ++it);
+               }
+               it.add_back(this);
+       }
 
        virtual bool            LessComparedTo(SCA_ILogicBrick* other);
-       
-       virtual PyObject* _getattr(const STR_String& attr);
 
        static class SCA_LogicManager*  m_sCurrentLogicManager;
 
@@ -86,8 +128,13 @@ public:
        // python methods
 
        KX_PYMETHOD_NOARGS(SCA_ILogicBrick,GetOwner);
-       KX_PYMETHOD(SCA_ILogicBrick,SetExecutePriority);
+       KX_PYMETHOD_VARARGS(SCA_ILogicBrick,SetExecutePriority);
        KX_PYMETHOD_NOARGS(SCA_ILogicBrick,GetExecutePriority);
+       
+       static PyObject*        pyattr_get_owner(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+       // check that attribute is a property
+       static int CheckProperty(void *self, const PyAttributeDef *attrdef);
 
        enum KX_BOOL_TYPE {
                KX_BOOL_NODEF = 0,