Exemplo n.º 1
0
        public void InitializeWithSettings(StimulusSettings settings)
        {
            stimulusSettings = settings;
            var apertureRadius = Mathf.Tan(stimulusSettings.apertureRadiusDegrees * Mathf.PI / 180) *
                                 stimulusSettings.stimDepthMeters;

            var approxMeterPerDegree = Mathf.Tan(1.0f * Mathf.PI / 180.0f) * stimulusSettings.stimDepthMeters;

            numDots = Mathf.RoundToInt(Mathf.Pow(apertureRadius / approxMeterPerDegree, 2.0f) * Mathf.PI *
                                       stimulusSettings.density);

            if (settings.buddyDotsEnabled && numDots % 2 != 0)
            {
                numDots += 1;
            }

            _shaderData?.ClearBuffers();
            _shaderData = new DotShaderData(dotMesh, numDots);

            var dotSpeed = stimulusSettings.speed * (Mathf.PI / 180) * stimulusSettings.stimDepthMeters;

            if (settings.buddyDotsEnabled)
            {
                GenerateDotsWithBuddy(apertureRadius, dotSpeed);
            }
            else
            {
                GenerateDots(apertureRadius, dotSpeed);
            }
        }
Exemplo n.º 2
0
        public Dot(Vector2 velocity, Vector3 startingPosition, StimulusSettings settings)
        {
            _velocity        = velocity;
            _currentPosition = startingPosition;
            Position         = _currentPosition;
            _settings        = settings;
            _elapsedTime     = 0;

            var dotSize = settings.dotSizeArcMinutes * Mathf.PI / (60 * 180) * settings.stimDepthMeters;

            _apertureRadius    = Mathf.Tan(settings.apertureRadiusDegrees * Mathf.PI / 180) * settings.stimDepthMeters;
            _sqrApertureRadius = _apertureRadius * _apertureRadius;
            scale = dotSize;

            // In case first update puts dot outside circle
            var randomPosition = Random.insideUnitCircle * _apertureRadius;

            _oldPosition = new Vector3(randomPosition.x, 0, randomPosition.y);
        }
Exemplo n.º 3
0
        private void InitializeStimuli()
        {
            _innerStimulusSettings = innerStimulus.GetComponent <DotManager>().GetSettings();
            _outerStimulusSettings = outerStimulus.GetComponent <DotManager>().GetSettings();
            _innerStimulusSettings.stimDepthMeters       = sessionSettings.stimulusDepth - sessionSettings.stimulusSpacing;
            _outerStimulusSettings.stimDepthMeters       = sessionSettings.stimulusDepth;
            _innerStimulusSettings.apertureRadiusDegrees = sessionSettings.innerStimulusRadius;
            _outerStimulusSettings.apertureRadiusDegrees = sessionSettings.outerStimulusRadius;
            _innerStimulusSettings.density            = sessionSettings.stimulusDensity;
            _outerStimulusSettings.density            = sessionSettings.stimulusDensity;
            _innerStimulusSettings.minDotLifetime     = sessionSettings.minDotLifetime;
            _outerStimulusSettings.minDotLifetime     = sessionSettings.minDotLifetime;
            _innerStimulusSettings.maxDotLifetime     = sessionSettings.maxDotLifetime;
            _outerStimulusSettings.maxDotLifetime     = sessionSettings.maxDotLifetime;
            _innerStimulusSettings.dotSizeArcMinutes  = sessionSettings.dotSize;
            _outerStimulusSettings.dotSizeArcMinutes  = sessionSettings.dotSize;
            _innerStimulusSettings.noiseDotPercentage = sessionSettings.innerStimulusNoisePercentage;
            _outerStimulusSettings.noiseDotPercentage = sessionSettings.outerStimulusNoisePercentage;
            _innerStimulusSettings.buddyDotsEnabled   = sessionSettings.buddyDotsEnabled;
            _outerStimulusSettings.buddyDotsEnabled   = sessionSettings.buddyDotsEnabled;

            innerStimulus.GetComponent <DotManager>().InitializeWithSettings(_innerStimulusSettings);
            outerStimulus.GetComponent <DotManager>().InitializeWithSettings(_outerStimulusSettings);
        }