//public void CreatePlatform(GamePadState receivedInput)
    //{
    //    if (Charges > 0)
    //    {
    //        GameObject platform = Instantiate(ResourceUtils.Instance.refPrefabPlatform.prefabPlatformistDefault);
    //        platform.transform.position = transform.position + transform.forward * summonDistance + Vector3.up * summonHeight;
    //        platform.transform.rotation = transform.rotation;
    //        platform.transform.GetComponent<AutoDestroyPlatform>().Init(platformLifetime);

    //        Charges--;
    //        if (receivedInput.Buttons.LeftShoulder == ButtonState.Pressed)
    //        {
    //            platform.GetComponent<PlatformGameplay>().isBouncy = true;
    //        }
    //        TrappedPlatform trappedComponent = platform.GetComponent<TrappedPlatform>();
    //        if (trappedComponent)
    //            trappedComponent.owner = GetComponent<Player>();
    //    }
    //}

    public void CreatePlatforms()
    {
        ClearShowPattern();

        if (Charges > 0)
        {
            float isGroundedOffset = 0.0f;

            if (!GetComponent <PlayerController>().IsGrounded)
            {
                GameObject initial = Instantiate(ResourceUtils.Instance.refPrefabPlatform.prefabPlatformistDefault);
                initial.transform.position = transform.position - 0.4f * Vector3.up;
                initial.transform.rotation = transform.rotation;
                initial.transform.GetComponent <AutoDestroyPlatform>().Init(platformLifetime);

                TrappedPlatform trappedComponent = initial.GetComponent <TrappedPlatform>();
                if (trappedComponent)
                {
                    trappedComponent.owner = GetComponent <Player>();
                }
            }
            else
            {
                isGroundedOffset = 1.0f;
            }

            GameObject[]       platforms = new GameObject[Charges];
            PlatformistPattern pattern   = PlatformistPatternFactory.GetPatternFromIndex(IndexPattern);

            for (int i = 0; i < Charges; i++)
            {
                platforms[i] = Instantiate(ResourceUtils.Instance.refPrefabPlatform.prefabPlatformistDefault);
                platforms[i].transform.position = transform.position - 0.4f * Vector3.up
                                                  + transform.forward * pattern.summonDistance * (pattern.distanceStep * (i + 1))
                                                  + Vector3.up * (pattern.summonHeight * (pattern.heightStep * (i + 1)) + isGroundedOffset);
                platforms[i].transform.rotation = transform.rotation;
                platforms[i].transform.GetComponent <AutoDestroyPlatform>().Init(platformLifetime);

                TrappedPlatform trappedComponent = platforms[i].GetComponent <TrappedPlatform>();
                if (trappedComponent)
                {
                    trappedComponent.owner = GetComponent <Player>();
                }
            }
            Charges = 0;
        }
    }
    void ShowPattern()
    {
        ClearShowPattern();

        showPattern = new List <GameObject>();

        if (Charges > 0)
        {
            float isGroundedOffset = 0.0f;

            PlatformistPattern pattern = PlatformistPatternFactory.GetPatternFromIndex(IndexPattern);

            if (!GetComponent <PlayerController>().IsGrounded)
            {
                GameObject platform = Instantiate(ResourceUtils.Instance.refPrefabPlatform.prefabPlatformistShowPattern);
                platform.transform.position = transform.position - 0.4f * Vector3.up;
                platform.transform.rotation = transform.rotation;
                showPattern.Add(platform);
            }
            else
            {
                isGroundedOffset = 1.0f;
            }

            for (int i = 0; i < Charges; i++)
            {
                GameObject platform = Instantiate(ResourceUtils.Instance.refPrefabPlatform.prefabPlatformistShowPattern);
                platform.transform.position = transform.position - 0.4f * Vector3.up
                                              + transform.forward * pattern.summonDistance * (pattern.distanceStep * (i + 1))
                                              + Vector3.up * (pattern.summonHeight * (pattern.heightStep * (i + 1)) + isGroundedOffset);
                platform.transform.rotation = transform.rotation;
                showPattern.Add(platform);
            }
        }

        if (!hasPlayedSecondTuto && !MinigameManager.IsAMiniGameScene())
        {
            hasPlayedSecondTuto = true;
            Utils.PopTutoText("Press RB to change platforms' pattern", GetComponent <Player>());
        }
    }