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; }
/// <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)); }
/// <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) { }
/// <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) { }