/**
     * <summary>
     * Adjust weapon position when switching new weapons or new frames.
     * </summary>
     *
     * <returns>
     * void
     * </returns>
     */
    public void AdjustWeaponPosition()
    {
        HelicopterUnitWeaponPart helicopterWeapon = this.GetWeapon().GetComponent <HelicopterUnitWeaponPart>();
        HelicopterUnitBodyPart   helicopterBody   = this.GetBody().GetComponent <HelicopterUnitBodyPart>();

        Vector3 newLocalPosition = Vector3.zero;

        /**
         * Medium light single barrel machine gun and light frame
         */
        if (
            helicopterWeapon.GetID() == HelicopterUnitPartID.Weapon.LightSingleBarrelMachineGun &&
            helicopterBody.GetID() == HelicopterUnitPartID.Body.LightFrame ||
            helicopterWeapon.GetID() == HelicopterUnitPartID.Weapon.LightDoubleBarrelMachineGun &&
            helicopterBody.GetID() == HelicopterUnitPartID.Body.LightFrame
            )
        {
            newLocalPosition = new Vector3(0f, -2.15f, 5.45f);
        }

        /**
         * Rocket launcher and light frame
         */
        else if (
            helicopterWeapon.GetID() == HelicopterUnitPartID.Weapon.RocketLauncher &&
            helicopterBody.GetID() == HelicopterUnitPartID.Body.LightFrame
            )
        {
            newLocalPosition = new Vector3(0f, -2.05f, 4.55f);
        }

        this.weapon.transform.localPosition = newLocalPosition;
    }
    /**
     * <summary>
     * Initialize parts
     * </summary>
     *
     * <returns>
     * void
     * </returns>
     */
    protected void InitializeParts()
    {
        HelicopterUnitWeaponPart currentWeapon    = this.weapon.GetComponent <HelicopterUnitWeaponPart>();
        HelicopterUnitBodyPart   currentBodyFrame = this.body.GetComponent <HelicopterUnitBodyPart>();

        List <HelicopterUnitPart> newParts = new List <HelicopterUnitPart>();

        newParts.Add(currentWeapon);
        newParts.Add(currentBodyFrame);

        this.SetHelicopterParts(newParts);
    }