public void Revert()
    {
        // Depending on vales chosen to reset, reset variables
        if (_resetPosition)
        {
            _transform.position = _position;
        }
        if (_resetRotation)
        {
            _transform.rotation = _rotation;
        }
        if (_resetScale)
        {
            _transform.localScale = _scale;
        }
        if (_resetActive)
        {
            _gameObject.SetActive(_active);
        }

        //Depending on an objects coponents reset appropriate values.
        if (_rb != null)
        {
            _rb.isKinematic     = _isKin;
            _rb.velocity        = Vector3.zero;
            _rb.angularVelocity = Vector3.zero;
        }

        if (_do != null)
        {
            _do.objectHealth = _health;
            _do.isOnFire     = false;
            _do.ResetFire();
            _do.SetHasExploded(false);
        }

        if (_ren != null)
        {
            _ren.material.color = _color;
        }

        if (_playerPhysics != null)
        {
            _playerPhysics.collisions = 0;
            _playerPhysics.ResetAimBalls();
        }

        if (_fireBreathing != null)
        {
            _fireBreathing.flameTime = 1.5f;
        }

        //reset pick-ups and cancael any onvokes
        GameDataModel.SetPickUpVal(GameDataModel.pickupTypes.Fire, 0);
        GameDataModel.Attempts = 3;

        _GameManager.Single().CancelInvoke("EndTurn");
        _GameManager.Single().CancelInvoke("EndInvoker");
        _GameManager.Single().CancelInvoke("CheckForEnd");
    }