/// <summary>
    /// Instantiates the values for all private properties
    /// </summary>
    private void SetProperties()
    {
        _xForm                    = transform;
        _pool                     = PoolManager.Pools[_BULLET_POOL_STRING];
        swarmBehavior             = GameObject.Find("SwarmBehaviorPrefab").GetComponent<SwarmBehavior>();

        // SWARM BEHAVIORS
        // Create a new swarm behavior if it is null
        if (swarmBehavior != null) return;
        var swarmObject           = new GameObject();
        swarmObject.AddComponent<SwarmBehavior>();
        swarmObject.AddComponent<ParticleEffectsManager>();
        swarmBehavior             = swarmObject.GetComponent<SwarmBehavior>();
    }
    public void setSwarmBehavior(SwarmBehavior behavior)
    {
        switch (behavior)
        {
        case SwarmBehavior.CONTRACT_TO_TARGET:
            BoidManagerHelper.instance.boidManager.setTarget(boidsTarget);
            BoidManagerHelper.instance.boidManager.setSettings(BoidManagerHelper.instance.boidSettingsTight);
            break;

        case SwarmBehavior.RELEASE_FROM_TARGET:
            BoidManagerHelper.instance.boidManager.setTarget(null);
            BoidManagerHelper.instance.boidManager.setSettings(BoidManagerHelper.instance.boidSettingsLoose);
            break;
        }
    }
    /// <summary>
    /// Instantiates the values for all private properties
    /// </summary>
    private void SetProperties()
    {
        _xForm        = transform;
        _pool         = PoolManager.Pools[_BULLET_POOL_STRING];
        swarmBehavior = GameObject.Find("SwarmBehaviorPrefab").GetComponent <SwarmBehavior>();

        // SWARM BEHAVIORS
        // Create a new swarm behavior if it is null
        if (swarmBehavior != null)
        {
            return;
        }
        var swarmObject = new GameObject();

        swarmObject.AddComponent <SwarmBehavior>();
        swarmObject.AddComponent <ParticleEffectsManager>();
        swarmBehavior = swarmObject.GetComponent <SwarmBehavior>();
    }
    private void CheckCloseToSwarmsToHunt()
    {
        if (gameObject.name == "Player1")
        {
            GameObject    userSwarm1         = (GameObject)GameObject.FindGameObjectWithTag("SwarmPlayer1");
            SwarmBehavior userSwarm1Behavior = userSwarm1.GetComponent <SwarmBehavior>();
            if (userSwarm1Behavior.updatingList)
            {
                return;
            }

            GameObject creature1 = (GameObject)GameObject.FindGameObjectWithTag("creature1");
            if (creature1 != null)
            {
                CreatureController creature1Controller = creature1.GetComponent <CreatureController>();
                if (creature1Controller.myCharState == CreatureController.CharState.Celebrating ||
                    creature1Controller.myCharState == CreatureController.CharState.Going_to_merge ||
                    creature1Controller.myCharState == CreatureController.CharState.Going_to_manipulate ||
                    creature1Controller.myCharState == CreatureController.CharState.Manipulating ||
                    creature1Controller.myCharState == CreatureController.CharState.Merging ||
                    creature1Controller.myCharState == CreatureController.CharState.Celebrating ||
                    creature1Controller.myCharState == CreatureController.CharState.Waiting ||
                    creature1Controller.myCharState == CreatureController.CharState.Pointing)
                {
                    return;
                }
            }
        }

        if (gameObject.name == "Player2")
        {
            GameObject    userSwarm2         = (GameObject)GameObject.FindGameObjectWithTag("SwarmPlayer2");
            SwarmBehavior userSwarm2Behavior = userSwarm2.GetComponent <SwarmBehavior>();
            if (userSwarm2Behavior.updatingList)
            {
                return;
            }

            GameObject creature2 = (GameObject)GameObject.FindGameObjectWithTag("creature2");
            if (creature2 != null)
            {
                CreatureController creature2Controller = creature2.GetComponent <CreatureController>();
                if (creature2Controller.myCharState == CreatureController.CharState.Celebrating ||
                    creature2Controller.myCharState == CreatureController.CharState.Going_to_merge ||
                    creature2Controller.myCharState == CreatureController.CharState.Going_to_manipulate ||
                    creature2Controller.myCharState == CreatureController.CharState.Manipulating ||
                    creature2Controller.myCharState == CreatureController.CharState.Merging ||
                    creature2Controller.myCharState == CreatureController.CharState.Celebrating ||
                    creature2Controller.myCharState == CreatureController.CharState.Waiting ||
                    creature2Controller.myCharState == CreatureController.CharState.Pointing)
                {
                    return;
                }
            }
        }

        if ((swarm1.position - myTransform.position).sqrMagnitude < distanceToCatch * distanceToCatch && emptyswarm1 == false)
        {
            if (timerswarm1 == 0)
            {
                // Just got close to swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player1", "free_swarm1", swarm1));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player2", "free_swarm1", swarm1));
                }
            }

            if (timerswarm1 > timeToCatch)
            {
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player1", "free_swarm1", swarm1));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player2", "free_swarm1", swarm1));
                }
                timerswarm1   = -1;
                swarm1_count += 2;
            }

            timerswarm1 += Time.deltaTime;
        }
        else
        {
            if (timerswarm1 != 0)
            {
                // Just got away from the swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player1", "free_swarm1", swarm1));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player2", "free_swarm1", swarm1));
                }
            }

            timerswarm1 = 0;
        }

        if ((swarm2.position - myTransform.position).sqrMagnitude < distanceToCatch * distanceToCatch && emptyswarm2 == false)
        {
            if (timerswarm2 == 0)
            {
                // Just got close to swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player1", "free_swarm2", swarm2));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player2", "free_swarm2", swarm2));
                }
            }

            if (timerswarm2 > timeToCatch)
            {
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player1", "free_swarm2", swarm2));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player2", "free_swarm2", swarm2));
                }
                timerswarm2   = -1;
                swarm2_count += 2;
            }

            timerswarm2 += Time.deltaTime;
        }
        else
        {
            if (timerswarm2 != 0)
            {
                // Just got away from the swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player1", "free_swarm2", swarm2));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player2", "free_swarm2", swarm2));
                }
            }

            timerswarm2 = 0;
        }

        if ((swarm3.position - myTransform.position).sqrMagnitude < distanceToCatch * distanceToCatch && emptyswarm3 == false)
        {
            if (timerswarm3 == 0)
            {
                // Just got close to swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player1", "free_swarm3", swarm3));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player2", "free_swarm3", swarm3));
                }
            }

            if (timerswarm3 > timeToCatch)
            {
                if (gameObject.tag == "Player")                // && creature_user1 == false)
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player1", "free_swarm3", swarm3));
                }
                if (gameObject.tag == "Player2")                // && creature_user2 == false)
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player2", "free_swarm3", swarm3));
                }
                timerswarm3   = 0;
                swarm3_count += 2;
            }

            timerswarm3 += Time.deltaTime;
        }
        else
        {
            if (timerswarm3 != 0)
            {
                // Just got away from the swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player1", "free_swarm3", swarm3));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player2", "free_swarm3", swarm3));
                }
            }

            timerswarm3 = 0;
        }

        if ((swarm4.position - myTransform.position).sqrMagnitude < distanceToCatch * distanceToCatch && emptyswarm4 == false)
        {
            if (timerswarm4 == 0)
            {
                // Just got close to swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player1", "free_swarm4", swarm4));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Close_to_swarm_player2", "free_swarm4", swarm4));
                }
            }

            if (timerswarm4 > timeToCatch)
            {
                if (gameObject.tag == "Player")                // && creature_user1 == false)
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player1", "free_swarm4", swarm4));
                }
                if (gameObject.tag == "Player2")                // && creature_user2 == false)
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Insect_catched_player2", "free_swarm4", swarm4));
                }
                timerswarm4   = 0;
                swarm4_count += 2;
            }

            timerswarm4 += Time.deltaTime;
        }
        else
        {
            if (timerswarm4 != 0)
            {
                // Just got away from the swarm
                if (gameObject.tag == "Player")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player1", "free_swarm4", swarm4));
                }
                if (gameObject.tag == "Player2")
                {
                    Messenger.SendToListeners(new Message_transform(gameObject, "Away_from_swarm_player2", "free_swarm4", swarm4));
                }
            }

            timerswarm4 = 0;
        }
    }