doxygen: prevent GPL license block from being parsed as doxygen comment.
[blender.git] / source / gameengine / Ketsji / KX_ConstraintActuator.h
index 5a1d4d23217551b4db9c36f1a2e794aa14694e0f..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
 
@@ -37,6 +39,9 @@
 #include "MT_Vector3.h"
 #include "KX_ClientObjectInfo.h"
 
+class KX_RayCast;
+class KX_GameObject;
+
 class KX_ConstraintActuator : public SCA_IActuator
 {
        Py_Header;
@@ -48,8 +53,13 @@ protected:
        float m_minimumBound;
        // max (float)
        float m_maximumBound;
+       // sinus of minimum angle
+       float m_minimumSine;
+       // sinus of maximum angle
+       float m_maximumSine;
        // reference direction
-       MT_Vector3 m_refDirection;
+       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
@@ -58,7 +68,9 @@ protected:
        // option
        int m_option;
        // property to check
-       char m_property[32];
+       STR_String m_property;
+       // hit object
+       KX_GameObject* m_hitObject;
 
        /**
         * Clamp <var> to <min>, <max>. Borders are included (in as far as
@@ -80,12 +92,18 @@ protected:
                KX_ACT_CONSTRAINT_DIRPX,
                KX_ACT_CONSTRAINT_DIRPY,
                KX_ACT_CONSTRAINT_DIRPZ,
-               KX_ACT_CONSTRAINT_DIRMX,
-               KX_ACT_CONSTRAINT_DIRMY,
-               KX_ACT_CONSTRAINT_DIRMZ,
+               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
@@ -93,10 +111,13 @@ protected:
                KX_ACT_CONSTRAINT_NORMAL = 64,
                KX_ACT_CONSTRAINT_MATERIAL = 128,
                KX_ACT_CONSTRAINT_PERMANENT = 256,
-               KX_ACT_CONSTRAINT_DISTANCE = 512
+               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, MT_Point3& hit_point, MT_Vector3& hit_normal, void * const data);
+       bool RayHit(KX_ClientObjectInfo* client, KX_RayCast* result, void * const data);
+       bool NeedRayCast(KX_ClientObjectInfo*);
 
        KX_ConstraintActuator(SCA_IObject* gameobj,
                                                  int posDamptime,
@@ -107,14 +128,11 @@ protected:
                                                  int locrot,
                                                  int time,
                                                  int option,
-                                                 char *property,
-                                                 PyTypeObject* T=&Type);
+                                                 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;
        };
 
@@ -124,30 +142,9 @@ protected:
        /* Python interface ---------------------------------------------------- */
        /* --------------------------------------------------------------------- */
 
-       virtual PyObject* _getattr(const STR_String& attr);
+       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);
 
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetDamp);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetDamp);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetRotDamp);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetRotDamp);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetDirection);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetDirection);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetOption);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetOption);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetTime);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetTime);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetProperty);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetProperty);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetMin);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetMin);
-       static char SetDistance_doc[];
-       static char GetDistance_doc[];
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetMax);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetMax);
-       static char SetRayLength_doc[];
-       static char GetRayLength_doc[];
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,SetLimit);
-       KX_PYMETHOD_DOC(KX_ConstraintActuator,GetLimit);
 };
 
 #endif //__KX_CONSTRAINTACTUATOR