Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/GameLogic/SCA_RandomActuator.cpp
| Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
| #include "SCA_IActuator.h" | #include "SCA_IActuator.h" | ||||
| #include "SCA_RandomActuator.h" | #include "SCA_RandomActuator.h" | ||||
| #include "MT_Transform.h" | #include "MT_Transform.h" | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| /* Native functions */ | /* Native functions */ | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| SCA_RandomActuator::SCA_RandomActuator(SCA_IObject *gameobj, | SCA_RandomActuator::SCA_RandomActuator(SCA_IObject *gameobj, | ||||
| long seed, | long seed, | ||||
| SCA_RandomActuator::KX_RANDOMACT_MODE mode, | KX_RANDOMACT_MODE mode, | ||||
| float para1, | float para1, | ||||
| float para2, | float para2, | ||||
| const STR_String &propName) | const STR_String &propName) | ||||
| : SCA_IActuator(gameobj, KX_ACT_RANDOM), | : SCA_IActuator(gameobj, SCA_ACT_RANDOM), | ||||
| m_propname(propName), | m_propname(propName), | ||||
| m_parameter1(para1), | m_parameter1(para1), | ||||
| m_parameter2(para2), | m_parameter2(para2), | ||||
| m_distribution(mode) | m_distribution(mode) | ||||
| { | { | ||||
| m_base = new SCA_RandomNumberGenerator(seed); | m_base = new SCA_RandomNumberGenerator(seed); | ||||
| m_counter = 0; | m_counter = 0; | ||||
| enforceConstraints(); | enforceConstraints(); | ||||
| ▲ Show 20 Lines • Show All 197 Lines • ▼ Show 20 Lines | void SCA_RandomActuator::enforceConstraints() | ||||
| case KX_RANDOMACT_BOOL_UNIFORM: | case KX_RANDOMACT_BOOL_UNIFORM: | ||||
| case KX_RANDOMACT_INT_CONST: | case KX_RANDOMACT_INT_CONST: | ||||
| case KX_RANDOMACT_INT_UNIFORM: | case KX_RANDOMACT_INT_UNIFORM: | ||||
| case KX_RANDOMACT_FLOAT_UNIFORM: | case KX_RANDOMACT_FLOAT_UNIFORM: | ||||
| case KX_RANDOMACT_FLOAT_CONST: | case KX_RANDOMACT_FLOAT_CONST: | ||||
| ; /* Nothing to be done here. We allow uniform distro's to have */ | ; /* Nothing to be done here. We allow uniform distro's to have */ | ||||
| /* 'funny' domains, i.e. max < min. This does not give problems. */ | /* 'funny' domains, i.e. max < min. This does not give problems. */ | ||||
| break; | break; | ||||
| case KX_RANDOMACT_BOOL_BERNOUILLI: | case KX_RANDOMACT_BOOL_BERNOUILLI: | ||||
| /* clamp to [0, 1] */ | /* clamp to [0, 1] */ | ||||
| if (m_parameter1 < 0.0) { | if (m_parameter1 < 0.0) { | ||||
| m_parameter1 = 0.0; | m_parameter1 = 0.0; | ||||
| } else if (m_parameter1 > 1.0) { | } else if (m_parameter1 > 1.0) { | ||||
| m_parameter1 = 1.0; | m_parameter1 = 1.0; | ||||
| } | } | ||||
| break; | break; | ||||
| case KX_RANDOMACT_INT_POISSON: | case KX_RANDOMACT_INT_POISSON: | ||||
| /* non-negative */ | /* non-negative */ | ||||
| if (m_parameter1 < 0.0) { | if (m_parameter1 < 0.0) { | ||||
| m_parameter1 = 0.0; | m_parameter1 = 0.0; | ||||
| } | } | ||||
| break; | break; | ||||
| case KX_RANDOMACT_FLOAT_NORMAL: | case KX_RANDOMACT_FLOAT_NORMAL: | ||||
| /* standard dev. is non-negative */ | /* standard dev. is non-negative */ | ||||
| if (m_parameter2 < 0.0) { | if (m_parameter2 < 0.0) { | ||||
| m_parameter2 = 0.0; | m_parameter2 = 0.0; | ||||
| } | } | ||||
| break; | break; | ||||
| case KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL: | case KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL: | ||||
| /* halflife must be non-negative */ | /* halflife must be non-negative */ | ||||
| if (m_parameter1 < 0.0) { | if (m_parameter1 < 0.0) { | ||||
| m_parameter1 = 0.0; | m_parameter1 = 0.0; | ||||
| } | } | ||||
| break; | break; | ||||
| default: | default: | ||||
| ; /* unknown distribution... */ | ; /* unknown distribution... */ | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 245 Lines • Show Last 20 Lines | |||||