Newer
Older
CGTrack / Assets / Oculus / Platform / Samples / VrHoops / Scripts / PlayerArea.cs
namespace Oculus.Platform.Samples.VrHoops
{
	using UnityEngine;
	using UnityEngine.UI;
	using Oculus.Platform.Models;

	public class PlayerArea : MonoBehaviour
	{
		// the prefab for the ball that players will shoot
		[SerializeField] private GameObject m_ballPrefab = null;

		// cached gameobject that where the player camera will move to
		private GameObject m_playerHead;

		// cached Text component where we'll render the player's name
		private Text m_nameText;

		// cached component used to align the backboard movement between devices
		private P2PNetworkGoal m_p2pGoal;

		public Player Player
		{
			get { return m_playerHead.GetComponent<Player>(); }
		}

		public Text NameText
		{
			get { return m_nameText; }
		}

		void Awake()
		{
			m_playerHead = gameObject.transform.Find("Player Head").gameObject;
			m_nameText = gameObject.GetComponentsInChildren<Text>()[1];
			m_p2pGoal = gameObject.GetComponentInChildren<P2PNetworkGoal> ();
		}

		public T SetupForPlayer<T>(string name) where T : Player
		{
			var oldplayer = m_playerHead.GetComponent<Player>();
			if (oldplayer) Destroy(oldplayer);

			var player = m_playerHead.AddComponent<T>();
			player.BallPrefab = m_ballPrefab;
			m_nameText.text = name;

			if (player is RemotePlayer)
			{
				(player as RemotePlayer).Goal = m_p2pGoal;
				m_p2pGoal.SendUpdates = false;
			}
			else if (player is LocalPlayer)
			{
				m_p2pGoal.SendUpdates = true;
			}
			else
			{
				m_p2pGoal.SendUpdates = false;
			}

			return player;
		}
	}
}