doxygen: prevent GPL license block from being parsed as doxygen comment.
[blender.git] / source / gameengine / Ketsji / KX_ConstraintActuator.h
index a21a5f30de64be808d4de12a21f710409f76dd93..d2eea1f7414404cd201baffca19f11e6fe399b1c 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * KX_ConstraintActuator.h
- *
+/*
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -17,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file KX_ConstraintActuator.h
+ *  \ingroup ketsji
+ */
+
 #ifndef __KX_CONSTRAINTACTUATOR
 #define __KX_CONSTRAINTACTUATOR
 
 #include "SCA_IActuator.h"
 #include "MT_Scalar.h"
+#include "MT_Vector3.h"
+#include "KX_ClientObjectInfo.h"
+
+class KX_RayCast;
+class KX_GameObject;
 
 class KX_ConstraintActuator : public SCA_IActuator
 {
        Py_Header;
 protected:     
        // Damp time (int),
-       int m_dampTime;
-       // min (float),
+       int m_posDampTime;
+       int m_rotDampTime;
+       // min (float) 
        float m_minimumBound;
-       // max (float),
+       // max (float)
        float m_maximumBound;
+       // sinus of minimum angle
+       float m_minimumSine;
+       // sinus of maximum angle
+       float m_maximumSine;
+       // reference direction
+       float m_refDirection[3];
+       MT_Vector3 m_refDirVector;      // same as m_refDirection
        // locrotxyz choice (pick one): only one choice allowed at a time!
        int m_locrot;
+       // active time of actuator
+       int m_activeTime;
+       int m_currentTime;
+       // option
+       int m_option;
+       // property to check
+       STR_String m_property;
+       // hit object
+       KX_GameObject* m_hitObject;
 
        /**
         * Clamp <var> to <min>, <max>. Borders are included (in as far as
@@ -56,6 +80,7 @@ protected:
 
        
  public:
+        //  m_locrot
        enum KX_CONSTRAINTTYPE {
                KX_ACT_CONSTRAINT_NODEF = 0,
                KX_ACT_CONSTRAINT_LOCX,
@@ -64,23 +89,50 @@ protected:
                KX_ACT_CONSTRAINT_ROTX,
                KX_ACT_CONSTRAINT_ROTY,
                KX_ACT_CONSTRAINT_ROTZ,
+               KX_ACT_CONSTRAINT_DIRPX,
+               KX_ACT_CONSTRAINT_DIRPY,
+               KX_ACT_CONSTRAINT_DIRPZ,
+               KX_ACT_CONSTRAINT_DIRNX,
+               KX_ACT_CONSTRAINT_DIRNY,
+               KX_ACT_CONSTRAINT_DIRNZ,
+               KX_ACT_CONSTRAINT_ORIX,
+               KX_ACT_CONSTRAINT_ORIY,
+               KX_ACT_CONSTRAINT_ORIZ,
+               KX_ACT_CONSTRAINT_FHPX,
+               KX_ACT_CONSTRAINT_FHPY,
+               KX_ACT_CONSTRAINT_FHPZ,
+               KX_ACT_CONSTRAINT_FHNX,
+               KX_ACT_CONSTRAINT_FHNY,
+               KX_ACT_CONSTRAINT_FHNZ,
                KX_ACT_CONSTRAINT_MAX
        };
-
+       // match ACT_CONST_... values from BIF_interface.h
+       enum KX_CONSTRAINTOPT {
+               KX_ACT_CONSTRAINT_NORMAL = 64,
+               KX_ACT_CONSTRAINT_MATERIAL = 128,
+               KX_ACT_CONSTRAINT_PERMANENT = 256,
+               KX_ACT_CONSTRAINT_DISTANCE = 512,
+               KX_ACT_CONSTRAINT_LOCAL = 1024,
+               KX_ACT_CONSTRAINT_DOROTFH = 2048
+       };
        bool IsValidMode(KX_CONSTRAINTTYPE m); 
+       bool RayHit(KX_ClientObjectInfo* client, KX_RayCast* result, void * const data);
+       bool NeedRayCast(KX_ClientObjectInfo*);
 
        KX_ConstraintActuator(SCA_IObject* gameobj,
-                                                 int damptime,
+                                                 int posDamptime,
+                                                 int rotDampTime,
                                                  float min,
                                                  float max,
+                                                 float refDir[3],
                                                  int locrot,
-                                                 PyTypeObject* T=&Type);
+                                                 int time,
+                                                 int option,
+                                                 char *property);
        virtual ~KX_ConstraintActuator();
        virtual CValue* GetReplica() {
                KX_ConstraintActuator* replica = new KX_ConstraintActuator(*this);
                replica->ProcessReplica();
-               // this will copy properties and so on...
-               CValue::AddDataToReplica(replica);
                return replica;
        };
 
@@ -90,16 +142,8 @@ protected:
        /* Python interface ---------------------------------------------------- */
        /* --------------------------------------------------------------------- */
 
-       virtual PyObject* _getattr(const STR_String& attr);
-
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetDamp);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetDamp);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetMin);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetMin);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetMax);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetMax);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetLimit);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetLimit);
+       static int pyattr_check_direction(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+       static int pyattr_check_min(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
 
 };