// -------------------------------------------

        /*
         * Initialization of the element
         */
        public override void Initialize(params object[] _list)
        {
            if ((m_dataEnemy == null) && (_list[0] != null))
            {
                m_dataEnemy = ItemMultiObjectEntry.Parse((string)_list[0]);

                this.gameObject.tag = TAG_ENEMY;
                m_enter             = (int)m_dataEnemy.Objects[1];
                m_exit                = (int)m_dataEnemy.Objects[2];
                m_trajectory          = new Vector2(m_enter, m_exit);
                m_animationDefinition = (string)m_dataEnemy.Objects[3];
                m_speed               = (float)(((float)((int)m_dataEnemy.Objects[4])) / 10f);
                m_life                = (int)m_dataEnemy.Objects[5];

                if (GameEventController.Instance.TotalPlayersInGame > 1)
                {
                    float lastLife = m_life;
                    m_life = m_life * GameEventController.Instance.TotalPlayersInGame;
                    m_life = m_life * 0.9f;
                }

                // SET UP IN FIRST WAYPOINT
                m_waypointIndex = 0;
                List <Vector3> ways = EnemiesController.Instance.WaypointsEnemies(m_trajectory);
                m_waypoints = new List <Vector3>();
                for (int i = 0; i < ways.Count; i++)
                {
                    m_waypoints.Add(Utilities.ClonePoint(ways[i]));
                }
                m_waypointPosition = m_waypoints[m_waypointIndex];
                transform.position = m_waypointPosition;
                FXController.Instance.NewFXAppearEnemy(m_waypointPosition);
                SoundsConstants.PlayFXEnemyAppear();
                transform.localScale = new Vector3(GameConfiguration.CELL_SIZE, GameConfiguration.CELL_SIZE, GameConfiguration.CELL_SIZE);

                // UPDATE TO NEXT WAYPOINT
                UpdateToNextWaypoint();

                InitializeCommon();

                ChangeState(STATE_RUNNING);

                if (IsMine())
                {
                    NetworkEventController.Instance.DispatchNetworkEvent(NetworkEventController.EVENT_WORLDOBJECTCONTROLLER_INITIAL_DATA, NetworkID.GetID(), m_dataEnemy.ToString());
                }
            }
        }