protected override void OnUpdate()
    {
        if (m_PlayerData.Player.Length < 0 || m_PlayerData.Player[0].CurrencyAmount <= 0)
        {
            for (int i = 0; i < m_Inputs.InputEntities.Length; i++)
            {
                var data = m_Inputs.InputEntities[i];
                PostUpdateCommands.DestroyEntity(data);
            }
            for (int i = 0; i < m_InputChildren.InputEntities.Length; i++)
            {
                var data = m_InputChildren.InputEntities[i];
                PostUpdateCommands.DestroyEntity(data);
            }

            return;
        }

        if (m_Inputs.Length > 0)
        {
            RaycastHit hit;
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                var gridIndex    = Grid.ConvertToGridIndex(hit.point);
                var gridWorldPos = Grid.ConvertToWorldPosition(gridIndex);

                if (Input.GetMouseButtonDown(0))
                {
                    if (hit.collider.tag.Equals("Floor") && PathingSystem.TryFindPathWithBlocker(gridIndex))
                    {
                        for (int i = 0; i < m_PlayerData.Player.Length; i++)
                        {
                            var playerData = m_PlayerData.Player[i];
                            playerData.CurrencyAmount--;
                            m_PlayerData.Player[i] = playerData;
                        }

                        InstanceTurret(gridWorldPos);
                    }
                }
                else if (Input.GetMouseButtonDown(1))
                {
                    for (int i = 0; i < m_Inputs.InputEntities.Length; i++)
                    {
                        var data = m_Inputs.InputEntities[i];
                        PostUpdateCommands.DestroyEntity(data);
                    }
                    for (int i = 0; i < m_InputChildren.InputEntities.Length; i++)
                    {
                        var data = m_InputChildren.InputEntities[i];
                        PostUpdateCommands.DestroyEntity(data);
                    }
                }
                else
                {
                    for (int i = 0; i < m_Inputs.TurretPosition.Length; i++)
                    {
                        var data = m_Inputs.TurretPosition[i];
                        data = new Position(gridWorldPos);
                        m_Inputs.TurretPosition[i] = data;
                    }
                }
            }
        }
    }