コード例 #1
0
//-----------------------------------------------------------------------
void PUSphereSurfaceEmitter::initParticleDirection(PUParticle3D* particle)
{
    if (_autoDirection)
    {
        // The value of the direction vector that has been set does not have a meaning for
        // the sphere surface emitter.
        float angle = 0.0f;
        generateAngle(angle);
        if (angle != 0.0f)
        {
            //particle->direction = _randomVector.randomDeviant(angle, mUpVector);
            particle->direction = PUUtil::randomDeviant(_randomVector, angle, _upVector);
            particle->originalDirection = particle->direction;
        }
        else
        {
            particle->direction = _randomVector;
            particle->originalDirection = particle->direction;
        }
    }
    else
    {
        // Use the standard way
        PUEmitter::initParticleDirection(particle);
    }
}
コード例 #2
0
//-----------------------------------------------------------------------
void PUCircleEmitter::initParticleDirection(PUParticle3D* particle)
{
    if (_autoDirection)
    {
        // The value of the direction vector that has been set does not have a meaning for
        // the circle emitter.
        float angle = 0.0f;
        generateAngle(angle);
        if (angle != 0.0f)
        {
            //particle->direction = (mOrientation * Vec3(mX, 0, mZ) ).randomDeviant(angle, mUpVector);
            Mat4 mat;
            Mat4::createRotation(_orientation, &mat);
            Vec3 temp = mat * Vec3(_x, 0, _z);

            particle->direction = PUUtil::randomDeviant(temp, angle, _upVector);

            particle->originalDirection = particle->direction;
        }
        else
        {
            Mat4 rotMat;
            Mat4::createRotation(_orientation, &rotMat);
            particle->direction = rotMat * Vec3(_x, 0, _z);
        }
    }
    else
    {
        // Use the standard way
        PUEmitter::initParticleDirection(particle);
    }
}
コード例 #3
0
		glm::vec3 Emitter::getInitialDirection() const
		{
			float angle = generateAngle();
			//std::cerr << "angle:" << angle;
			if(angle != 0) {
				return create_deviating_vector(angle, current.direction);
			}
			return current.direction;
		}
コード例 #4
0
ファイル: CCPUEmitter.cpp プロジェクト: DominicD/Hyperdrive
void PUEmitter::initParticleDirection( PUParticle3D* particle )
{
    // Use the default way of initialising the particle direction
    float angle = 0.0f;
    generateAngle(angle);
    if (angle != 0.0f)
    {
        particle->direction = PUUtil::randomDeviant(_particleDirection, angle, _upVector);
    }
    else
    {
        particle->direction = _particleDirection;
    }
    particle->originalDirection = particle->direction;
    particle->originalDirectionLength = particle->direction.length();
}
コード例 #5
0
ファイル: mosquito.cpp プロジェクト: lobachevzky/buzzbuzz
glm::vec2 Mosquito::calculateNextMove(glm::vec2 nearestLightPos) {
    if (isCaught) {
        glm::vec2 dir = nearestLightPos - this->position;
        glm::vec2 newPos = this->position + 0.01f*dir;
        float random = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX/(60)));
        float randomAngle = generateAngle(nearestLightPos, this->position) - 30 + random;
        float deltax = 2.0f * cos(randomAngle);
        float deltay = 2.0f * sin(randomAngle);
        float newx = newPos.x + deltax;
        float newy = newPos.y - deltay;

        return glm::vec2(newx, newy);
    } else {
        float randomAngle = generateRandomAngle();
        float deltax = 2.0f * cos(randomAngle);
        float deltay = 2.0f * sin(randomAngle);
        float newx = this->position.x + deltax;
        float newy = this->position.y - deltay;

        return glm::vec2(newx,newy);
    }
}
コード例 #6
0
ファイル: CCPULineEmitter.cpp プロジェクト: 1005491398/Threes
//-----------------------------------------------------------------------
void PULineEmitter::initParticleDirection(PUParticle3D* particle)
{
    if (_autoDirection)
    {
        float angle = 0.0f;
        generateAngle(angle);
        if (angle != 0.0f)
        {
            //particle->direction = _perpendicular.randomDeviant(angle, mUpVector);
            particle->direction = PUUtil::randomDeviant(_perpendicular, angle, _upVector);
            particle->originalDirection = particle->direction;
        }
        else
        {
            particle->direction = _perpendicular;
            particle->originalDirection = particle->direction;
        }
    }
    else
    {
        // Use the standard way
        PUEmitter::initParticleDirection(particle);
    }
}
コード例 #7
0
ファイル: ProxSense.cpp プロジェクト: Pitt-RAS/sumo_revamp
int ProxSense::readAngle() {
	update();
	return generateAngle();
}