Example #1
0
        private IEnumerator SceneryGeneration()
        {
            float interval      = 1f / Properties.ScenerySpawnrate;
            var   sceneryParent = transform.GetChild(2);

            if (sceneryParent.name != "Scenery")
            {
                var newParent = new GameObject("Scenery");
                _generatedGameObjectRoots.Add(newParent);

                newParent.transform.SetParent(transform);
                newParent.transform.SetSiblingIndex(2);
                sceneryParent = newParent.transform;
            }

            while (_animateScenery)
            {
                IScenery scenery = null;
                if (_sceneryPool.Count + _sceneryInMotion.Count < Properties.SceneryPoolMaxSize)
                {
                    var rand = Random.Range(0, Properties.SceneryPrefabs.Length);
                    scenery = Instantiate(Properties.SceneryPrefabs[rand], Vector3.zero, Quaternion.identity) as IScenery;
                    scenery.gameObject.transform.SetParent(sceneryParent);
                }
                else if (_sceneryPool.Count > 0)
                {
                    scenery = _sceneryPool.Dequeue();
                }

                if (scenery != null)
                {
                    var speed = Properties.SceneryUnitsPerSecondRange.GetRandom();
                    var color = Random.ColorHSV(0, 1, 0.3f, 0.3f, 0.7f, 0.7f);

                    _sceneryInMotion.Add(scenery);
                    scenery.Init(color, Properties.SceneryYRange, speed, _sceneryPool, _sceneryInMotion);

                    var radius     = Properties.SceneryDistanceFromCenterRange.GetRandom();
                    var xzPosition = Random.insideUnitCircle.normalized * radius;
                    scenery.gameObject.transform.position = new Vector3(xzPosition.x, Properties.SceneryYRange.Min, xzPosition.y);
                }

                yield return(new WaitForSeconds(interval));
            }
        }
 /// <summary>
 /// Registra la primitiva que actĂșa como suelo
 /// </summary>
 /// <param name="scenery">Primitiva</param>
 public void RegisterScenery(IScenery scenery)
 {
     this.m_SceneryPrimitive = scenery;
 }
Example #3
0
 /// <summary>returns the number of ticks remaining in a custom animation (or zero, if the animation is over).</summary>
 public short scenery_get_animation_time(IScenery scenery)
 {
     return(default(short));
 }
Example #4
0
 /// <summary>starts a custom animation playing on a piece of scenery relative to a parent object</summary>
 public void scenery_animation_start_relative(IScenery scenery, AnimationGraphTag animation, string /*id*/ emotion, IGameObject entity)
 {
 }
Example #5
0
 /// <summary>starts a custom looping animation playing on a piece of scenery</summary>
 public void scenery_animation_start_loop(IScenery scenery, AnimationGraphTag animation, string /*id*/ emotion)
 {
 }