void HandleRocketCollision(RocketBehaviour rocket, Vector3 hitPosition)
    {
        if (!rocket.state.launched)
        {
            return;
        }

        if (rocket.configuration.sourcePlanet == this && !rocket.state.leftPlanet)
        {
            return;
        }

        GetComponent <AudioSource> ().Play();

        HitInfo hitInfo = ReceiveDamage(rocket.damage, hitPosition, rocket.configuration.sourcePlanet.configuration.mainColor);

        var rocketBody = rocket.GetComponent <Rigidbody> ();
        var rigidBody  = GetComponent <Rigidbody> ();

        rigidBody.velocity += rocketBody.velocity * rocketBody.mass / rigidBody.mass;

        var eventManager = GameObject.Find("EventManager").GetComponent <EventManager>();

        eventManager.planetHitEvent.Invoke(this, rocket, hitInfo);

        Destroy(rocket.gameObject);

        // go boom
        explosion.gameObject.transform.localPosition = hitPosition;
        explosion.gameObject.transform.localRotation = Quaternion.LookRotation(hitPosition);

        var emitParams = new ParticleSystem.EmitParams();

        emitParams.startColor = rocket.configuration.sourcePlanet.configuration.mainColor;
        explosion.Emit(emitParams, 1000 * (int)hitInfo.damageDealt + 100);
    }