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; }
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; }
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); }
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(); } }
public ProjectileMotion(ProjectileMotionData aPmData) { data = new ProjectileMotionData(aPmData); }