You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			122 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
 | 
						|
//
 | 
						|
// Purpose: Spawns balloons
 | 
						|
//
 | 
						|
//=============================================================================
 | 
						|
 | 
						|
using UnityEngine;
 | 
						|
using System.Collections;
 | 
						|
 | 
						|
namespace Valve.VR.InteractionSystem
 | 
						|
{
 | 
						|
	//-------------------------------------------------------------------------
 | 
						|
	public class BalloonSpawner : MonoBehaviour
 | 
						|
	{
 | 
						|
		public float minSpawnTime = 5f;
 | 
						|
		public float maxSpawnTime = 15f;
 | 
						|
		private float nextSpawnTime;
 | 
						|
		public GameObject balloonPrefab;
 | 
						|
 | 
						|
		public bool autoSpawn = true;
 | 
						|
		public bool spawnAtStartup = true;
 | 
						|
 | 
						|
		public bool playSounds = true;
 | 
						|
		public SoundPlayOneshot inflateSound;
 | 
						|
		public SoundPlayOneshot stretchSound;
 | 
						|
 | 
						|
		public bool sendSpawnMessageToParent = false;
 | 
						|
 | 
						|
		public float scale = 1f;
 | 
						|
 | 
						|
		public Transform spawnDirectionTransform;
 | 
						|
		public float spawnForce;
 | 
						|
 | 
						|
		public bool attachBalloon = false;
 | 
						|
 | 
						|
		public Balloon.BalloonColor color = Balloon.BalloonColor.Random;
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		void Start()
 | 
						|
		{
 | 
						|
			if ( balloonPrefab == null )
 | 
						|
			{
 | 
						|
				return;
 | 
						|
			}
 | 
						|
 | 
						|
			if ( autoSpawn && spawnAtStartup )
 | 
						|
			{
 | 
						|
				SpawnBalloon( color );
 | 
						|
				nextSpawnTime = Random.Range( minSpawnTime, maxSpawnTime ) + Time.time;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		void Update()
 | 
						|
		{
 | 
						|
			if ( balloonPrefab == null )
 | 
						|
			{
 | 
						|
				return;
 | 
						|
			}
 | 
						|
 | 
						|
			if ( ( Time.time > nextSpawnTime ) && autoSpawn )
 | 
						|
			{
 | 
						|
				SpawnBalloon( color );
 | 
						|
				nextSpawnTime = Random.Range( minSpawnTime, maxSpawnTime ) + Time.time;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		public GameObject SpawnBalloon( Balloon.BalloonColor color = Balloon.BalloonColor.Red )
 | 
						|
		{
 | 
						|
			if ( balloonPrefab == null )
 | 
						|
			{
 | 
						|
				return null;
 | 
						|
			}
 | 
						|
			GameObject balloon = Instantiate( balloonPrefab, transform.position, transform.rotation ) as GameObject;
 | 
						|
			balloon.transform.localScale = new Vector3( scale, scale, scale );
 | 
						|
			if ( attachBalloon )
 | 
						|
			{
 | 
						|
				balloon.transform.parent = transform;
 | 
						|
			}
 | 
						|
 | 
						|
			if ( sendSpawnMessageToParent )
 | 
						|
			{
 | 
						|
				if ( transform.parent != null )
 | 
						|
				{
 | 
						|
					transform.parent.SendMessage( "OnBalloonSpawned", balloon, SendMessageOptions.DontRequireReceiver );
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			if ( playSounds )
 | 
						|
			{
 | 
						|
				if ( inflateSound != null )
 | 
						|
				{
 | 
						|
					inflateSound.Play();
 | 
						|
				}
 | 
						|
				if ( stretchSound != null )
 | 
						|
				{
 | 
						|
					stretchSound.Play();
 | 
						|
				}
 | 
						|
			}
 | 
						|
			balloon.GetComponentInChildren<Balloon>().SetColor( color );
 | 
						|
			if ( spawnDirectionTransform != null )
 | 
						|
			{
 | 
						|
				balloon.GetComponentInChildren<Rigidbody>().AddForce( spawnDirectionTransform.forward * spawnForce );
 | 
						|
			}
 | 
						|
 | 
						|
			return balloon;
 | 
						|
		}
 | 
						|
 | 
						|
 | 
						|
		//-------------------------------------------------
 | 
						|
		public void SpawnBalloonFromEvent( int color )
 | 
						|
		{
 | 
						|
			// Copy of SpawnBalloon using int because we can't pass in enums through the event system
 | 
						|
			SpawnBalloon( (Balloon.BalloonColor)color );
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |