void RandomMovementParticleAffector::changed(ConstFieldMaskArg whichField, 
                            UInt32            origin,
                            BitVector         details)
{
    Inherited::changed(whichField, origin, details);

    if(whichField & PersistanceFieldMask)
    {
        getPerlinDistribution()->setPersistance(getPersistance());
    } 
    else if (whichField & FrequencyFieldMask)
    {
        getPerlinDistribution()->setFrequency(getFrequency());
    } 
    else if (whichField & InterpolationTypeFieldMask)
    {
        getPerlinDistribution()->setInterpolationType(getInterpolationType());
    } 
    else if (whichField & OctavesFieldMask)
    {
        getPerlinDistribution()->setOctaves(getOctaves());
    } 
    else if (whichField & AmplitudeFieldMask )
    {
        getPerlinDistribution()->setAmplitude(getAmplitude());
    }
    else if (whichField & PhaseFieldMask )
    {
        getPerlinDistribution()->setPhase(getPhase()[0]);
    }
}
bool TurbulenceParticleAffector::distributionIsNotInitialized(void)
{
    PerlinNoiseDistribution1DRefPtr dist(getPerlinDistribution());

    return (1.0f != getAmplitude() ||
            dist->getPersistance() != getPersistance() ||
            dist->getOctaves() != getOctaves() ||
            dist->getInterpolationType() != getInterpolationType() ||
            dist->getFrequency() != getFrequency());
}
void TurbulenceParticleAffector::changed(ConstFieldMaskArg whichField, 
                            UInt32            origin,
                            BitVector         details)
{
    Inherited::changed(whichField, origin, details);

    if(distributionIsNotInitialized())
    {
        getPerlinDistribution()->setFrequency(getFrequency());
        getPerlinDistribution()->setPersistance(getPersistance());
        getPerlinDistribution()->setOctaves(getOctaves());
        getPerlinDistribution()->setAmplitude(1.0f);
        getPerlinDistribution()->setInterpolationType(getInterpolationType());
        getPerlinDistribution()->setPhase(getPhase()[0]);
        getPerlinDistribution()->setUseSmoothing(true);
    }
    if(whichField & PersistanceFieldMask)
    {
        getPerlinDistribution()->setPersistance(getPersistance());
    } 
    else if (whichField & FrequencyFieldMask)
    {
        getPerlinDistribution()->setFrequency(getFrequency());
    } 
    else if (whichField & InterpolationTypeFieldMask)
    {
        getPerlinDistribution()->setInterpolationType(getInterpolationType());
    } 
    else if (whichField & OctavesFieldMask)
    {
        getPerlinDistribution()->setOctaves(getOctaves());
    } 
    else if (whichField & AmplitudeFieldMask )
    {
        getPerlinDistribution()->setAmplitude(1.0f);
    }
    else if (whichField & PhaseFieldMask )
    {
        getPerlinDistribution()->setPhase(getPhase()[0]);
    }
}
예제 #4
0
	//-----------------------------------------------------------------------
	void ForceField::setForceFieldType(const ForceField::ForceFieldType forceFieldType)
	{
		if (mForceFieldCalculationFactory)
		{
			Ogre::ushort octaves = getOctaves();
			double frequency = getFrequency();
			double amplitude = getAmplitude();
			double persistence = getPersistence();
			unsigned int forceFieldSize = getForceFieldSize();
			Ogre::Vector3 worldSize = getWorldSize();
			
			initialise(forceFieldType, forceFieldSize, octaves, frequency, amplitude, persistence, worldSize);
		}
	}
void RandomMovementParticleAffector::onCreate(const RandomMovementParticleAffector *source)
{
    if(source != NULL)
    {
        //Shader Chunk
        PerlinNoiseDistribution1DRefPtr TheNoiseDist = PerlinNoiseDistribution1D::create();
        TheNoiseDist->setFrequency(getFrequency());
        TheNoiseDist->setPersistance(getPersistance());
        TheNoiseDist->setOctaves(getOctaves());
        TheNoiseDist->setAmplitude(getAmplitude());
        TheNoiseDist->setInterpolationType(getInterpolationType());
        TheNoiseDist->setPhase(getPhase().x());
        TheNoiseDist->setUseSmoothing(true);

        setPerlinDistribution(TheNoiseDist);
    }
}
Real32 PerlinNoiseDistribution2D::generate(Pnt2f t) const
{	
	return calcPerlinNoise(t,getAmplitude(),getFrequency(),getPhase(),getPersistance(),getOctaves(),getInterpolationType(),getUseSmoothing());
}