コード例 #1
0
        /*
         * public static bool Destroy( GameObject _creature )
         * {
         *      if( _creature == null )
         *              return false;
         *
         *      CreatureGroupObject _group = GetCreatureGroup( _creature.name );
         *
         *      if( _group != null )
         *              return _group.DestroyCreature( _creature );
         *      else
         *              return false;
         * }*/

        public static void DestroyGroup(string _name)
        {
            CreatureGroupObject _group = GetCreatureGroup(_name);

            if (_group != null)
            {
                _group.DestroyCreatures();
                m_CreatureGroups.Remove(_group);
            }
        }
コード例 #2
0
        /// <summary>
        /// Finds the nearest creature.
        /// </summary>
        /// <returns>The nearest creature.</returns>
        /// <param name="_name">_name.</param>
        /// <param name="_origin">_origin.</param>
        /// <param name="_dist">_dist.</param>
        public static GameObject FindNearestCreature(string _name, Vector3 _origin, float _dist)
        {
            CreatureGroupObject _group = GetCreatureGroup(_name);

            if (_group == null)
            {
                return(null);
            }

            return(_group.FindNearestCreature(_origin, _dist));
        }
コード例 #3
0
        public static void DeathNotice(GameObject _creature)
        {
            if (_creature == null)
            {
                return;
            }

            CreatureGroupObject _group = GetCreatureGroup(_creature.name);

            if (_group != null)
            {
                _group.DeathNotice(_creature);
            }
        }
コード例 #4
0
        /// <summary>
        /// Adds a new creature group.
        /// </summary>
        /// <returns>The creature group.</returns>
        /// <param name="_name">_name.</param>
        public static CreatureGroupObject AddCreatureGroup(string _name)
        {
            _name = CleanName(_name);

            CreatureGroupObject _group = GetCreatureGroup(_name);

            if (_group == null)
            {
                _group = new CreatureGroupObject(CleanName(_name));

                m_CreatureGroups.Add(_group);
            }

            return(_group);
        }
コード例 #5
0
        public static bool Deregister(GameObject _creature)
        {
            if (_creature == null)
            {
                return(false);
            }

            CreatureGroupObject _group = GetCreatureGroup(_creature.name);

            if (_group != null)
            {
                return(_group.Deregister(_creature));
            }
            else
            {
                return(false);
            }
        }
コード例 #6
0
        /// <summary>
        /// Register the specified _creature.
        /// </summary>
        /// <param name="_creature">_creature.</param>
        public static void Register(GameObject _creature)
        {
            if (_creature == null)
            {
                return;
            }

            CreatureGroupObject _group = GetCreatureGroup(_creature.name);

            if (_group == null)
            {
                _group = AddCreatureGroup(_creature.name);
            }

            if (_group != null)
            {
                _group.Register(_creature);
            }
        }
コード例 #7
0
        public void Spawn()
        {
            CreatureGroupObject _group = CreatureRegister.ForceCreatureGroup(Name);

            if (_group == null)
            {
                return;
            }

            m_CreaturesCount = _group.Creatures.Count;

            if (m_CreaturesCount < MaxCreatures)
            {
                Vector3    _position = GetSpawnPosition();
                Quaternion _rotation = Random.rotation;

                _rotation.z = 0;
                _rotation.x = 0;

                GameObject _creature = (GameObject)Object.Instantiate(Creature, _position, _rotation);

                if (UseRandomScale)
                {
                    RandomScaleMin = -1;
                    RandomScaleMax = 1;
                    float _scale_multiplier = (float)Random.Range(RandomScaleMin, RandomScaleMax) / 100 * UseRandomScaleMultiplier * 0.5f;

                    _creature.transform.localScale = _creature.transform.localScale + (_creature.transform.localScale * _scale_multiplier);
                }

                _creature.name = Creature.name;

                if (UseGroupObject)
                {
                    if (m_GroupObject == null)
                    {
                        m_GroupObject = new GameObject();

                        m_GroupObject.name = Name + "(Group)";
                        m_GroupObject.transform.position = Vector3.zero;

                        if (Register != null)
                        {
                            Register.transform.position    = Vector3.zero;
                            m_GroupObject.transform.parent = Register.transform;
                        }
                    }

                    _creature.transform.parent = m_GroupObject.transform;

                    if (_creature.GetComponent <ICECreatureControl>() != null)
                    {
                        _creature.GetComponent <ICECreatureControl>().Creature.Status.Reset();
                    }

                    _creature.SetActive(true);

                    CreatureRegister.Register(_creature);
                }
            }
        }