private void InitShapeView(GameShape gameShape, GameShapeController gameShapeController)
 {
     shapeController = gameShapeController;
     shape           = gameShape;
     animator        = gameObject.GetComponent <Animator>();
     animator.speed  = gameShape.SpawnSpeed;
     gameShape.RegisterOnPositionUpdated(OnPositionUpdated);
     gameShape.RegisterOnStateChanged(OnStateChanged);
 }
    public static void CreateShape(GameObject shapePrefab, GameShape shape, GameObject parent, GameShapeController shapeController)
    {
        GameObject shapeObj = Instantiate(shapePrefab, shape.Position, Quaternion.identity);

        shapeObj.transform.SetParent(parent.transform);
        GameShapeView shapeView = shapeObj.AddComponent <GameShapeView>();

        shapeView.InitShapeView(shape, shapeController);
    }