doxygen: prevent GPL license block from being parsed as doxygen comment.
[blender.git] / source / gameengine / Ketsji / KX_ConstraintActuator.h
index 247e7ea55f9c75c85686cf823580784cb07d2119..d2eea1f7414404cd201baffca19f11e6fe399b1c 100644 (file)
@@ -1,17 +1,12 @@
-/**
- * KX_ConstraintActuator.h
- *
+/*
  * $Id$
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,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.
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file KX_ConstraintActuator.h
+ *  \ingroup ketsji
  */
 
 #ifndef __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
@@ -60,6 +80,7 @@ class KX_ConstraintActuator : public SCA_IActuator
 
        
  public:
+        //  m_locrot
        enum KX_CONSTRAINTTYPE {
                KX_ACT_CONSTRAINT_NODEF = 0,
                KX_ACT_CONSTRAINT_LOCX,
@@ -68,42 +89,63 @@ class KX_ConstraintActuator : public SCA_IActuator
                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;
        };
 
-       virtual bool Update(double curtime,double deltatime);
+       virtual bool Update(double curtime, bool frame);
 
        /* --------------------------------------------------------------------- */
        /* Python interface ---------------------------------------------------- */
        /* --------------------------------------------------------------------- */
 
-       virtual PyObject*  _getattr(char *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);
 
 };
+
 #endif //__KX_CONSTRAINTACTUATOR
+