void GenerateBlockInstance()
        {
            var position = transform.position.ToVector2();

            rotatedBlocks = new Blocks.BlocksCollection(ComponentData.Component.Rotate(rotateStep));
            if (!blockInstance)
            {
                blockInstance = BlockInstance.CreateInstance(new BlockInstanceOptions()
                {
                    BlockType        = rotatedBlocks.First().BlockType,
                    Blocks           = rotatedBlocks,
                    GenerateRenderer = true,
                    GenerateCollider = true,
                    IsTrigger        = true,
                    IsStatic         = true,
                    GameObject       = gameObject
                });
                var rigidbody = blockInstance.GetComponent <Rigidbody2D>();
                rigidbody.bodyType                    = RigidbodyType2D.Kinematic;
                rigidbody.sleepMode                   = RigidbodySleepMode2D.NeverSleep;
                blockInstance.transform.parent        = transform;
                blockInstance.transform.localPosition = Vector3.zero;
                BlockInstance = blockInstance;
            }
            else
            {
                blockInstance.UpdateInstance(new BlockInstanceOptions()
                {
                    BlockType        = rotatedBlocks.First().BlockType,
                    Blocks           = rotatedBlocks,
                    GenerateRenderer = true,
                    GenerateCollider = true,
                    IsTrigger        = true,
                    IsStatic         = true,
                    GameObject       = gameObject
                });
            }
            UI.sizeDelta = rotatedBlocks.Bound.size.ToVector2();
            MoveTo(position);
            renderers = GetComponentsInChildren <SpriteRenderer>();
        }