public void SetConvolutionImplementation(ConvolutionImplementation implementation)
 {
     if (implementation == _convolutionImplementationChoice)
     {
         return;
     }
     _heightFieldGenerator = ConvEnumToInstance(_convolutionImplementationChoice);
     _heightFieldGenerator.Initialise(_extendedHeightField.heightFieldInfo, _particleContainer);
 }
    public WaveParticleSystem(float particleSpeed, float particleRadius, int maxNumParticles, int horRes, int vertRes, float height, float width, float waveParticleKillThreshold)
    {
        _particleSpeed             = particleSpeed;
        _particleRadius            = particleRadius;
        _numParticles              = maxNumParticles;
        _waveParticleKillThreshold = waveParticleKillThreshold;
        _currentFrame              = 0;
        // TODO: move all relvant code to do with this to here!
        _frameCycleLength = WaveParticle.FRAME_CYCLE_LENGTH;

        _extendedHeightField = new ExtendedHeightField(width, height, horRes, vertRes);
        _extendedHeightField.Clear();

        _particleContainer = SplatEnumToInstance(_splatImplementationChoice);
        _particleContainer.Initialise(maxNumParticles, waveParticleKillThreshold);
        _heightFieldGenerator = ConvEnumToInstance(_convolutionImplementationChoice);
        _heightFieldGenerator.Initialise(_extendedHeightField.heightFieldInfo, _particleContainer);
    }