Esempio n. 1
0
 public void NotifyMidTransition(SimulationMethod method)
 {
     if (method == currentSimulationMethod && OnEcosystemMidTransition != null)
     {
         OnEcosystemMidTransition();
     }
 }
Esempio n. 2
0
    public int GetRecommendedMaxParticles(SimulationMethod simMethod)
    {
        switch (simMethod)
        {
        case SimulationMethod.Texture:
            return(4096);

        case SimulationMethod.InteractionEngine:
        default:
            return(24);
        }
    }
Esempio n. 3
0
    private void restartSimulator(SimulationMethod method,
                                  EcosystemDescription ecosystemDescription,
                                  ResetBehavior resetBehavior)
    {
        switch (method)
        {
        case SimulationMethod.InteractionEngine:
            _ieSimulator.RestartSimulation(ecosystemDescription, resetBehavior);
            break;

        case SimulationMethod.Texture:
            _textureSimulator.RestartSimulation(ecosystemDescription, resetBehavior);
            break;

        default:
            throw new System.InvalidOperationException();
        }
    }
Esempio n. 4
0
    public void NotifyEndedTransition(SimulationMethod method)
    {
        isPerformingTransition = false;

        if (method == _currentSimulationMethod)
        {
            switch (method)
            {
            case SimulationMethod.Texture:
                _currentDescription = _textureSimulator.currentDescription;
                break;

            case SimulationMethod.InteractionEngine:
                _currentDescription = _ieSimulator.currentDescription;
                break;
            }

            if (OnEcosystemEndedTransition != null)
            {
                OnEcosystemEndedTransition();
            }
        }
    }
Esempio n. 5
0
    public void RestartSimulation(EcosystemDescription ecosystemDescription,
                                  ResetBehavior resetBehavior)
    {
        var oldMethod = _currentSimulationMethod;
        var newMethod = _simulationMethod;

        _currentSimulationMethod = newMethod;

        isPerformingTransition = true;
        if (OnEcosystemBeginTransition != null)
        {
            OnEcosystemBeginTransition();
        }

        if (oldMethod != newMethod)
        {
            restartSimulator(oldMethod, EcosystemDescription.empty, resetBehavior);
            restartSimulator(newMethod, ecosystemDescription, resetBehavior);
        }
        else
        {
            restartSimulator(_currentSimulationMethod, ecosystemDescription, resetBehavior);
        }
    }
Esempio n. 6
0
    private void handleUserInput()
    {
        if (buttonOrKey("Restart", _resetParticlePositionsKey))
        {
            RestartSimulation(ResetBehavior.ResetPositions);
        }

        if (buttonOrKey("Load Preset", _loadPresetEcosystemKey))
        {
            RestartSimulation(_presetToLoad, ResetBehavior.ResetPositions);
        }

        if (buttonOrKey("Randomize Ecosystem", _randomizeEcosystemKey))
        {
            RandomizeSimulation(ResetBehavior.ResetPositions);
        }

        if (buttonOrKey("Randomize Colors", _ranzomizeColorsKey))
        {
            RandomizeSimulationColors();
        }

        beginHorizontal();

        if (buttonOrKey("Zoom In", _zoomInKey))
        {
            _displayAnchor.localScale *= (1.0f + _zoomFactor);
        }

        if (buttonOrKey("Zoom Out", _zoomOutKey))
        {
            _displayAnchor.localScale /= (1.0f + _zoomFactor);
        }

        endHorizontal();

        beginHorizontal();

        if (buttonOrKey("GPU", KeyCode.Alpha1) && _simulationMethod != SimulationMethod.Texture)
        {
            _simulationMethod = SimulationMethod.Texture;
            RestartSimulation(ResetBehavior.ResetPositions);
        }

        if (buttonOrKey("IE", KeyCode.Alpha2) && _simulationMethod != SimulationMethod.InteractionEngine)
        {
            _simulationMethod = SimulationMethod.InteractionEngine;
            RestartSimulation(ResetBehavior.ResetPositions);
        }

        endHorizontal();

        if (_meshLods != null && _meshLods.Length > 0)
        {
            beginHorizontal();

            for (int i = 0; i < _meshLods.Length; i++)
            {
                if (buttonOrKey("LOD" + i, KeyCode.F1 + i))
                {
                    particleMesh = _meshLods[i];
                }
            }

            endHorizontal();
        }

        beginHorizontal();

        if (buttonOrKey("Save Ecosystem", _saveEcosystemKey))
        {
            SaveEcosystem();
        }

        if (buttonOrKey("Load Prev", _loadPrevEcosystem))
        {
            loadAtOffset(-1);
        }

        if (buttonOrKey("Load Next", _loadNextEcosystem))
        {
            loadAtOffset(1);
        }

        endHorizontal();
    }