forked from bartvdbraak/blender
251 lines
8.6 KiB
Python
251 lines
8.6 KiB
Python
# $Id$
|
|
# Documentation for KX_ObjectActuator
|
|
from SCA_IActuator import *
|
|
|
|
class KX_ObjectActuator(SCA_IActuator):
|
|
"""
|
|
The object actuator ("Motion Actuator") applies force, torque, displacement, angular displacement,
|
|
velocity, or angular velocity to an object.
|
|
Servo control allows to regulate force to achieve a certain speed target.
|
|
"""
|
|
def getForce():
|
|
"""
|
|
Returns the force applied by the actuator.
|
|
|
|
@rtype: list [fx, fy, fz, local]
|
|
@return: A four item list, containing the vector force, and a flag specifying whether the force is local.
|
|
"""
|
|
def setForce(fx, fy, fz, local):
|
|
"""
|
|
Sets the force applied by the actuator.
|
|
|
|
@type fx: float
|
|
@param fx: the x component of the force.
|
|
@type fy: float
|
|
@param fy: the z component of the force.
|
|
@type fz: float
|
|
@param fz: the z component of the force.
|
|
@type local: boolean
|
|
@param local: - False: the force is applied in world coordinates.
|
|
- True: the force is applied in local coordinates.
|
|
"""
|
|
def getTorque():
|
|
"""
|
|
Returns the torque applied by the actuator.
|
|
|
|
@rtype: list [S{Tau}x, S{Tau}y, S{Tau}z, local]
|
|
@return: A four item list, containing the vector torque, and a flag specifying whether
|
|
the torque is applied in local coordinates (True) or world coordinates (False)
|
|
"""
|
|
def setTorque(tx, ty, tz, local):
|
|
"""
|
|
Sets the torque applied by the actuator.
|
|
|
|
@type tx: float
|
|
@param tx: the x component of the torque.
|
|
@type ty: float
|
|
@param ty: the z component of the torque.
|
|
@type tz: float
|
|
@param tz: the z component of the torque.
|
|
@type local: boolean
|
|
@param local: - False: the torque is applied in world coordinates.
|
|
- True: the torque is applied in local coordinates.
|
|
"""
|
|
def getDLoc():
|
|
"""
|
|
Returns the displacement vector applied by the actuator.
|
|
|
|
@rtype: list [dx, dy, dz, local]
|
|
@return: A four item list, containing the vector displacement, and whether
|
|
the displacement is applied in local coordinates (True) or world
|
|
coordinates (False)
|
|
"""
|
|
def setDLoc(dx, dy, dz, local):
|
|
"""
|
|
Sets the displacement vector applied by the actuator.
|
|
|
|
Since the displacement is applied every frame, you must adjust the displacement
|
|
based on the frame rate, or you game experience will depend on the player's computer
|
|
speed.
|
|
|
|
@type dx: float
|
|
@param dx: the x component of the displacement vector.
|
|
@type dy: float
|
|
@param dy: the z component of the displacement vector.
|
|
@type dz: float
|
|
@param dz: the z component of the displacement vector.
|
|
@type local: boolean
|
|
@param local: - False: the displacement vector is applied in world coordinates.
|
|
- True: the displacement vector is applied in local coordinates.
|
|
"""
|
|
def getDRot():
|
|
"""
|
|
Returns the angular displacement vector applied by the actuator.
|
|
|
|
@rtype: list [dx, dy, dz, local]
|
|
@return: A four item list, containing the angular displacement vector, and whether
|
|
the displacement is applied in local coordinates (True) or world
|
|
coordinates (False)
|
|
"""
|
|
def setDRot(dx, dy, dz, local):
|
|
"""
|
|
Sets the angular displacement vector applied by the actuator.
|
|
|
|
Since the displacement is applied every frame, you must adjust the displacement
|
|
based on the frame rate, or you game experience will depend on the player's computer
|
|
speed.
|
|
|
|
@type dx: float
|
|
@param dx: the x component of the angular displacement vector.
|
|
@type dy: float
|
|
@param dy: the z component of the angular displacement vector.
|
|
@type dz: float
|
|
@param dz: the z component of the angular displacement vector.
|
|
@type local: boolean
|
|
@param local: - False: the angular displacement vector is applied in world coordinates.
|
|
- True: the angular displacement vector is applied in local coordinates.
|
|
"""
|
|
def getLinearVelocity():
|
|
"""
|
|
Returns the linear velocity applied by the actuator.
|
|
For the servo control actuator, this is the target speed.
|
|
|
|
@rtype: list [vx, vy, vz, local]
|
|
@return: A four item list, containing the vector velocity, and whether the velocity is applied in local coordinates (True) or world coordinates (False)
|
|
"""
|
|
def setLinearVelocity(vx, vy, vz, local):
|
|
"""
|
|
Sets the linear velocity applied by the actuator.
|
|
For the servo control actuator, sets the target speed.
|
|
|
|
@type vx: float
|
|
@param vx: the x component of the velocity vector.
|
|
@type vy: float
|
|
@param vy: the z component of the velocity vector.
|
|
@type vz: float
|
|
@param vz: the z component of the velocity vector.
|
|
@type local: boolean
|
|
@param local: - False: the velocity vector is in world coordinates.
|
|
- True: the velocity vector is in local coordinates.
|
|
"""
|
|
def getAngularVelocity():
|
|
"""
|
|
Returns the angular velocity applied by the actuator.
|
|
|
|
@rtype: list [S{omega}x, S{omega}y, S{omega}z, local]
|
|
@return: A four item list, containing the vector velocity, and whether
|
|
the velocity is applied in local coordinates (True) or world
|
|
coordinates (False)
|
|
"""
|
|
def setAngularVelocity(wx, wy, wz, local):
|
|
"""
|
|
Sets the angular velocity applied by the actuator.
|
|
|
|
@type wx: float
|
|
@param wx: the x component of the velocity vector.
|
|
@type wy: float
|
|
@param wy: the z component of the velocity vector.
|
|
@type wz: float
|
|
@param wz: the z component of the velocity vector.
|
|
@type local: boolean
|
|
@param local: - False: the velocity vector is applied in world coordinates.
|
|
- True: the velocity vector is applied in local coordinates.
|
|
"""
|
|
def getDamping():
|
|
"""
|
|
Returns the damping parameter of the servo controller.
|
|
|
|
@rtype: integer
|
|
@return: the time constant of the servo controller in frame unit.
|
|
"""
|
|
def setDamping(damp):
|
|
"""
|
|
Sets the damping parameter of the servo controller.
|
|
|
|
@type damp: integer
|
|
@param damp: the damping parameter in frame unit.
|
|
"""
|
|
def getForceLimitX():
|
|
"""
|
|
Returns the min/max force limit along the X axis used by the servo controller.
|
|
|
|
@rtype: list [min, max, enabled]
|
|
@return: A three item list, containing the min and max limits of the force as float
|
|
and whether the limits are active(true) or inactive(true)
|
|
"""
|
|
def setForceLimitX(min, max, enable):
|
|
"""
|
|
Sets the min/max force limit along the X axis and activates or deactivates the limits in the servo controller.
|
|
|
|
@type min: float
|
|
@param min: the minimum value of the force along the X axis.
|
|
@type max: float
|
|
@param max: the maximum value of the force along the X axis.
|
|
@type enable: boolean
|
|
@param enable: - True: the force will be limited to the min/max
|
|
- False: the force will not be limited
|
|
"""
|
|
def getForceLimitY():
|
|
"""
|
|
Returns the min/max force limit along the Y axis used by the servo controller.
|
|
|
|
@rtype: list [min, max, enabled]
|
|
@return: A three item list, containing the min and max limits of the force as float
|
|
and whether the limits are active(true) or inactive(true)
|
|
"""
|
|
def setForceLimitY(min, max, enable):
|
|
"""
|
|
Sets the min/max force limit along the Y axis and activates or deactivates the limits in the servo controller.
|
|
|
|
@type min: float
|
|
@param min: the minimum value of the force along the Y axis.
|
|
@type max: float
|
|
@param max: the maximum value of the force along the Y axis.
|
|
@type enable: boolean
|
|
@param enable: - True: the force will be limited to the min/max
|
|
- False: the force will not be limited
|
|
"""
|
|
def getForceLimitZ():
|
|
"""
|
|
Returns the min/max force limit along the Z axis used by the servo controller.
|
|
|
|
@rtype: list [min, max, enabled]
|
|
@return: A three item list, containing the min and max limits of the force as float
|
|
and whether the limits are active(true) or inactive(true)
|
|
"""
|
|
def setForceLimitZ(min, max, enable):
|
|
"""
|
|
Sets the min/max force limit along the Z axis and activates or deactivates the limits in the servo controller.
|
|
|
|
@type min: float
|
|
@param min: the minimum value of the force along the Z axis.
|
|
@type max: float
|
|
@param max: the maximum value of the force along the Z axis.
|
|
@type enable: boolean
|
|
@param enable: - True: the force will be limited to the min/max
|
|
- False: the force will not be limited
|
|
"""
|
|
def getPID():
|
|
"""
|
|
Returns the PID coefficient of the servo controller.
|
|
|
|
@rtype: list [P, I, D]
|
|
@return: A three item list, containing the PID coefficient as floats:
|
|
P : proportional coefficient
|
|
I : Integral coefficient
|
|
D : Derivate coefficient
|
|
"""
|
|
def setPID(P, I, D):
|
|
"""
|
|
Sets the PID coefficients of the servo controller.
|
|
|
|
@type P: flat
|
|
@param P: proportional coefficient
|
|
@type I: float
|
|
@param I: Integral coefficient
|
|
@type D: float
|
|
@param D: Derivate coefficient
|
|
"""
|
|
|
|
|