/// <summary>
    /// Load Enemy Ship data from definition, init components and setup config data
    /// </summary>
    public void Init(EdgeCollider2D path)
    {
        ShipDefinition =
            GameDefinitions.ShipDefinitions.FirstOrDefault(x => x.ID == LevelManager.EnemyDefinitionPool.ID);

        shipStats = new ShipStats(ShipDefinition.Health, ShipDefinition.Speed, ShipDefinition.ShootTime);

        ShipRendererBehaviour = GetComponentInChildren <ShipRendererBehaviour>();
        ShipRendererBehaviour.Init(this);

        if (path != null)
        {
            aiManager = new AIManager(this);
            aiManager.Init(path, shipStats);
        }
    }
    /// <summary>
    /// Load Player Ship data from definition, init components and setup config data
    /// </summary>
    public void Init()
    {
        ShipDefinition =
            GameDefinitions.ShipDefinitions.FirstOrDefault(x => x.ID == LevelManager.PlayerDefitionPool.ID);

        ShipStats = new ShipStats(ShipDefinition.Health, ShipDefinition.Speed, ShipDefinition.ShootTime);
        Weapons   = new Weapons(this, ShipDefinition);

#if UNITY_EDITOR
        playerController = new PlayerController();
#elif UNITY_ANDROID
        playerController = new PlayerMobileController();
#endif

        playerController.Init(this);

        ShipRendererBehaviour = GetComponentInChildren <ShipRendererBehaviour>();
        ShipRendererBehaviour.Init(this);
    }