Exemple #1
0
    public void Play()
    {
        if (_isRunning)
        {
            Debug.LogWarning("Simulation is already running, can't play it.");
        }
        if (_isDone)
        {
            Debug.LogWarning("Simulation is done, can't play it.");
        }

        if (!_hasStarted)
        {
            projectileMotion = new ProjectileMotion(initData);
            currentData      = projectileMotion.data;
            catapultController.JustThrow();
            _hasStarted = true;
        }

        if (OnSimulationStart != null)
        {
            OnSimulationStart();
        }

        trajectoryController.isRendering = true;
        _isRunning = true;
    }
Exemple #2
0
 public ProjectileMotion()
 {
     data      = new ProjectileMotionData();
     data.yPos = 0.0f;
     data.velocityVector.SetVector(10.0f, 45.0f);
     data.gravityAcceleration = 9.81f;
     data.mass               = 1.0f;
     data.airDensity         = 1.225f;
     data.dragCoefficient    = 0.5f;
     data.crossSectionalArea = 0.0314f;
     data.isAirDrag          = false;
 }
Exemple #3
0
 public void Awake()
 {
     catapultController.JustReset();
     ballBaseController.height        = 0.0f;
     trajectoryController.isRendering = false;
     initData    = new ProjectileMotionData();
     currentData = initData;
     SetDefaultSettings();
     projectileMotion = null;
     _hasStarted      = false;
     _isRunning       = false;
     _isDone          = false;
 }
 public ProjectileMotionData(ProjectileMotionData other)
 {
     xPos                = other.xPos;
     yPos                = other.yPos;
     zPos                = other.zPos;
     velocityVector      = new VelocityVector(other.velocityVector);
     gravityAcceleration = other.gravityAcceleration;
     time                = other.time;
     deltaTime           = other.deltaTime;
     maxY                = other.maxY;
     maxYTime            = other.maxYTime;
     isAirDrag           = other.isAirDrag;
     mass                = other.mass;
     airDensity          = other.airDensity;
     dragCoefficient     = other.dragCoefficient;
     crossSectionalArea  = other.crossSectionalArea;
 }
 public void UpdateStats()
 {
     _data = simulationController.currentData;
     if (_data == null)
     {
         Debug.LogError("StatisticsManager: _data is null");
         return;
     }
     timeInput.value      = Utilities.Round(_data.time);
     deltaTimeInput.value = Utilities.Round(_data.deltaTime);
     xPosInput.value      = Utilities.Round(_data.xPos);
     yPosInput.value      = Utilities.Round(_data.yPos);
     angleInput.value     = Utilities.Round(_data.velocityVector.angle);
     velocityInput.value  = Utilities.Round(_data.velocityVector.magnitude);
     velocityXInput.value = Utilities.Round(_data.velocityVector.horizontal);
     velocityYInput.value = Utilities.Round(_data.velocityVector.vertical);
     maxYInput.value      = Utilities.Round(_data.maxY);
     maxYTimeInput.value  = Utilities.Round(_data.maxYTime);
 }
    public void UpdateInputs()
    {
        ProjectileMotionData data = simulationController.initData;

        velocityInput.value   = Utilities.Round(data.velocityVector.magnitude);
        angleInput.value      = Utilities.Round(data.velocityVector.angle);
        heightInput.value     = Utilities.Round(data.yPos);
        gravityAccInput.value = Utilities.Round(data.gravityAcceleration);

        airDragToggle.onValueChanged.RemoveListener(simulationController.SwitchIsAirDrag);
        airDragToggle.onValueChanged.RemoveListener(SwitchAirDrag);
        airDragToggle.isOn = data.isAirDrag;
        airDragToggle.onValueChanged.AddListener(simulationController.SwitchIsAirDrag);
        airDragToggle.onValueChanged.AddListener(SwitchAirDrag);
        //Debug.Log (airDragToggle.isOn);

        massInput.value            = Utilities.Round(data.mass);
        airDensityInput.value      = Utilities.Round(data.airDensity);
        dragCoefficientInput.value = Utilities.Round(data.dragCoefficient);
        areaInput.value            = Utilities.Round(data.crossSectionalArea);
    }
Exemple #7
0
    public void Reset()
    {
        _isDone     = false;
        _isRunning  = false;
        _hasStarted = false;
        trajectoryController.isRendering = false;

        ballTransform.localPosition = new Vector3(initData.xPos,
                                                  initData.yPos,
                                                  initData.zPos);
        ballBaseController.height = initData.yPos;
        catapultController.JustReset();

        projectileMotion = null;
        currentData      = initData;

        if (OnSimulationReset != null)
        {
            OnSimulationReset();
        }
    }
Exemple #8
0
 public ProjectileMotion(ProjectileMotionData aPmData)
 {
     data = new ProjectileMotionData(aPmData);
 }