public override void Initialize(int widht, int height, Mesh objectMesh, Material objectMaterial)
    {
        monoComponents = new WaveMonoComponent[widht * height];

        float startX = widht / 2 * -1;
        float startZ = height / 2 * -1;

        int indexer = 0;

        for (int i = 0; i < widht; i++)
        {
            for (int ii = 0; ii < height; ii++)
            {
                float xPosition = startX + (i + 1) * 1;
                float zPosition = startZ + (ii + 1) * 1;

                float magnitude = Mathf.Sqrt(xPosition * xPosition + zPosition * zPosition);

                GameObject gameObject = new GameObject("GameObject", typeof(MeshRenderer), typeof(MeshFilter), typeof(WaveMonoComponent));

                gameObject.GetComponent <MeshFilter>().mesh       = objectMesh;
                gameObject.GetComponent <MeshRenderer>().material = objectMaterial;

                gameObject.transform.position = new Vector3(xPosition, 0, zPosition);

                WaveMonoComponent waveMonoComponent = gameObject.GetComponent <WaveMonoComponent>();
                waveMonoComponent.distanceToOrigin = magnitude;
                monoComponents[indexer]            = waveMonoComponent;

                indexer++;
            }
        }
    }
    private void Update()
    {
        _time += Time.deltaTime * 5f;

        for (int i = 0; i < GameObjectSpawner.monoComponents.Length; i++)
        {
            WaveMonoComponent waveComponent = GameObjectSpawner.monoComponents[i];
            Vector3           pos           = waveComponent.transform.position;
            pos.y = Mathf.Sin((waveComponent.distanceToOrigin - _time) * 0.5f);
            waveComponent.transform.position = pos;
        }
    }