Advertisement
Guest User

Untitled

a guest
Dec 28th, 2013
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.55 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class BluetoothMultiplayerAndroidDemoGui : MonoBehaviour {
  4.     public GameObject ActorPrefab; // reference to out test actor
  5.  
  6.     private const string LocalIp = "127.0.0.1"; // An IP for Network.Connect(), must always be 127.0.0.1
  7.     private const int Port = 28000; // Local server IP. Must be the same for client and server
  8.  
  9.     private bool _initResult;
  10.     private BluetoothMultiplayerMode _desiredMode = BluetoothMultiplayerMode.None;
  11.  
  12.     void Awake() {
  13.         // Setting the UUID. Must be unique for every application
  14.         _initResult = BluetoothMultiplayerAndroid.Init("8ce255c0-200a-11e0-ac64-0800200c9a66");
  15.         // Enabling verbose logging. See log cat!
  16.         BluetoothMultiplayerAndroid.SetVerboseLog(true);
  17.  
  18.         // Registering the event delegates
  19.         BluetoothMultiplayerAndroidManager.onBluetoothListeningStartedEvent += onBluetoothListeningStarted;
  20.         BluetoothMultiplayerAndroidManager.onBluetoothListeningCanceledEvent += onBluetoothListeningCanceled;
  21.         BluetoothMultiplayerAndroidManager.onBluetoothAdapterEnabledEvent += onBluetoothAdapterEnabled;
  22.         BluetoothMultiplayerAndroidManager.onBluetoothAdapterEnableFailedEvent += onBluetoothAdapterEnableFailed;
  23.         BluetoothMultiplayerAndroidManager.onBluetoothAdapterDisabledEvent += onBluetoothAdapterDisabled;
  24.         BluetoothMultiplayerAndroidManager.onBluetoothConnectedToServerEvent += onBluetoothConnectedToServer;
  25.         BluetoothMultiplayerAndroidManager.onBluetoothConnectToServerFailedEvent += onBluetoothConnectToServerFailed;
  26.         BluetoothMultiplayerAndroidManager.onBluetoothDisconnectedFromServerEvent += onBluetoothDisconnectedFromServer;
  27.         BluetoothMultiplayerAndroidManager.onBluetoothClientConnectedEvent += onBluetoothClientConnected;
  28.         BluetoothMultiplayerAndroidManager.onBluetoothClientDisconnectedEvent += onBluetoothClientDisconnected;
  29.         BluetoothMultiplayerAndroidManager.onBluetoothDevicePickedEvent += onBluetoothDevicePicked;
  30.     }
  31.  
  32.     // Don't forget to unregister the event delegates!
  33.     void OnDestroy() {
  34.         BluetoothMultiplayerAndroidManager.onBluetoothListeningStartedEvent -= onBluetoothListeningStarted;
  35.         BluetoothMultiplayerAndroidManager.onBluetoothListeningCanceledEvent -= onBluetoothListeningCanceled;
  36.         BluetoothMultiplayerAndroidManager.onBluetoothAdapterEnabledEvent -= onBluetoothAdapterEnabled;
  37.         BluetoothMultiplayerAndroidManager.onBluetoothAdapterEnableFailedEvent -= onBluetoothAdapterEnableFailed;
  38.         BluetoothMultiplayerAndroidManager.onBluetoothAdapterDisabledEvent -= onBluetoothAdapterDisabled;
  39.         BluetoothMultiplayerAndroidManager.onBluetoothConnectedToServerEvent -= onBluetoothConnectedToServer;
  40.         BluetoothMultiplayerAndroidManager.onBluetoothConnectToServerFailedEvent -= onBluetoothConnectToServerFailed;
  41.         BluetoothMultiplayerAndroidManager.onBluetoothDisconnectedFromServerEvent -= onBluetoothDisconnectedFromServer;
  42.         BluetoothMultiplayerAndroidManager.onBluetoothClientConnectedEvent -= onBluetoothClientConnected;
  43.         BluetoothMultiplayerAndroidManager.onBluetoothClientDisconnectedEvent -= onBluetoothClientDisconnected;
  44.         BluetoothMultiplayerAndroidManager.onBluetoothDevicePickedEvent -= onBluetoothDevicePicked;
  45.     }
  46.  
  47.     void Update() {
  48.  
  49.         if (Input.GetKeyDown(KeyCode.Escape)) {
  50.             // Gracefully closing all Bluetooth connectivity and loading the menu
  51.             try {
  52.                 BluetoothMultiplayerAndroid.StopDiscovery();
  53.                 BluetoothMultiplayerAndroid.Disconnect();
  54.             } catch {
  55.                 //
  56.             }
  57.             Application.LoadLevel("BluetoothMultiplayerAndroidDemoMenu");
  58.         }
  59.     }
  60.  
  61.     void OnGUI() {
  62.         // If initialization was successfull, showing the buttons
  63.         if (_initResult) {
  64.             // If there is no current Bluetooth connectivity
  65.             if (BluetoothMultiplayerAndroid.CurrentMode() == BluetoothMultiplayerMode.None) {
  66.                 if (GUI.Button(new Rect(10, 10, 150, 50), "Create server")) {
  67.                     // If Bluetooth is enabled, then we can do something right on
  68.                     if (BluetoothMultiplayerAndroid.IsBluetoothEnabled()) {
  69.                         Network.Disconnect(); // Just to be sure
  70.                         BluetoothMultiplayerAndroid.InitializeServer(Port);
  71.                     }
  72.                     // Otherwise we have to enable Bluetooth first and wait for callback
  73.                     else {
  74.                         _desiredMode = BluetoothMultiplayerMode.Server;
  75.                         BluetoothMultiplayerAndroid.RequestBluetoothEnable();
  76.                     }
  77.                 }
  78.  
  79.                 if (GUI.Button(new Rect(170, 10, 150, 50), "Connect to server")) {
  80.                     // If Bluetooth is enabled, then we can do something right on
  81.                     if (BluetoothMultiplayerAndroid.IsBluetoothEnabled()) {
  82.                         Network.Disconnect(); // Just to be sure
  83.                         BluetoothMultiplayerAndroid.ShowDeviceList(); // Open device picker dialog
  84.                     }
  85.                     // Otherwise we have to enable Bluetooth first and wait for callback
  86.                     else {
  87.                         _desiredMode = BluetoothMultiplayerMode.Client;
  88.                         BluetoothMultiplayerAndroid.RequestBluetoothEnable();
  89.                     }
  90.                 }
  91.             } else {
  92.                 // Stop all networking
  93.                 if (GUI.Button(new Rect(10, 10, 150, 50), "Disconnect")) {
  94.                     if (Network.peerType != NetworkPeerType.Disconnected)
  95.                         Network.Disconnect();
  96.  
  97.                 }
  98.             }
  99.         // Showing message if initialization failed for some reason
  100.         } else {
  101.             GUI.Label(new Rect(10, 10, Screen.width, 100), "Bluetooth not available. Are you running this on Bluetooth-capable Android device and AndroidManifest.xml is set up correctly?");
  102.         }
  103.  
  104.         if (GUI.Button(new Rect(Screen.width - 100f - 15f, Screen.height - 40f - 15f, 100f, 40f), "Back")) {
  105.             // Gracefully closing all Bluetooth connectivity and loading the menu
  106.             try {
  107.                 BluetoothMultiplayerAndroid.StopDiscovery();
  108.                 BluetoothMultiplayerAndroid.Disconnect();
  109.             } catch {
  110.                 //
  111.             }
  112.             Application.LoadLevel("BluetoothMultiplayerAndroidDemoMenu");
  113.         }
  114.     }
  115.  
  116.     void OnPlayerDisconnected(NetworkPlayer player) {
  117.         Debug.Log("Player disconnected: " + player.GetHashCode());
  118.         Network.RemoveRPCs(player);
  119.         Network.DestroyPlayerObjects(player);
  120.     }
  121.  
  122.     void OnFailedToConnect(NetworkConnectionError error) {
  123.         Debug.Log("Can't connect to the networking server");
  124.  
  125.         BluetoothMultiplayerAndroid.Disconnect();
  126.     }  
  127.  
  128.     void OnDisconnectedFromServer() {
  129.         Debug.Log("Disconnected from server");
  130.  
  131.         // Stopping all Bluetooth connectivity on Unity networking disconnect event
  132.         BluetoothMultiplayerAndroid.Disconnect();
  133.  
  134.         TestActor[] objects = FindObjectsOfType(typeof(TestActor)) as TestActor[];
  135.  
  136.         if (objects != null)
  137.             foreach (TestActor obj in objects) {
  138.                 Destroy(obj.gameObject);
  139.             }
  140.     }
  141.  
  142.     void OnConnectedToServer() {
  143.         // Instantiating a simple test actor
  144.         Network.Instantiate(ActorPrefab, Vector3.zero, Quaternion.identity, 0);
  145.     }
  146.  
  147.     void OnServerInitialized() {
  148.         Debug.Log("OnServerInitialized");
  149.         // Instantiating a simple test actor
  150.         if (Network.isServer) {
  151.             Network.Instantiate(ActorPrefab, Vector3.zero, Quaternion.identity, 0);
  152.         }
  153.     }
  154.  
  155.     void onBluetoothListeningStarted() {
  156.         Debug.Log("onBluetoothListeningStarted()");
  157.  
  158.         // Starting Unity networking server if Bluetooth listening started successfully
  159.         Network.InitializeServer(4, Port, false);
  160.     }
  161.  
  162.     private void onBluetoothListeningCanceled() {
  163.         Debug.Log("onBluetoothListeningCanceled()");
  164.  
  165.         // For demo simplicity, stop server if listening was canceled
  166.         BluetoothMultiplayerAndroid.Disconnect();
  167.     }
  168.  
  169.     private void onBluetoothDevicePicked(BluetoothDevice device) {
  170.         Debug.Log("onBluetoothDevicePicked(): " + device.name + " [" + device.address + "]");
  171.  
  172.         // Trying to connect to a device user had picked
  173.         BluetoothMultiplayerAndroid.Connect(device.address, Port);
  174.     }
  175.  
  176.     private void onBluetoothClientDisconnected(BluetoothDevice device) {
  177.         Debug.Log("onBluetoothClientDisconnected(): " + device.name + " [" + device.address + "]");
  178.     }
  179.  
  180.     private void onBluetoothClientConnected(BluetoothDevice device) {
  181.         Debug.Log("onBluetoothClientConnected(): " + device.name + " [" + device.address + "]");
  182.     }
  183.  
  184.     private void onBluetoothDisconnectedFromServer(BluetoothDevice device) {
  185.         Debug.Log("onBluetoothDisconnectedFromServer(): " + device.name + " [" + device.address + "]");
  186.  
  187.         // Stopping Unity networking on Bluetooth failure
  188.         Network.Disconnect();
  189.     }
  190.  
  191.     private void onBluetoothConnectToServerFailed(BluetoothDevice device) {
  192.         Debug.Log("onBluetoothConnectToServerFailed(): " + device.name + " [" + device.address + "]");
  193.     }
  194.  
  195.     private void onBluetoothConnectedToServer(BluetoothDevice device) {
  196.         Debug.Log("onBluetoothConnectedToServer(): " + device.name + " [" + device.address + "]");
  197.  
  198.         // Trying to negotiate a Unity networking connection,
  199.         // when Bluetooth client connected successfully
  200.         Network.Connect(LocalIp, Port);
  201.     }
  202.  
  203.     private void onBluetoothAdapterDisabled() {
  204.         Debug.Log("onBluetoothAdapterDisabled()");
  205.     }
  206.  
  207.     private void onBluetoothAdapterEnableFailed() {
  208.         Debug.Log("onBluetoothAdapterEnableFailed()");
  209.     }
  210.  
  211.     private void onBluetoothAdapterEnabled() {
  212.         Debug.Log("onBluetoothAdapterEnabled()");
  213.  
  214.         // Resuming desired action after enabling the adapter
  215.         switch (_desiredMode) {
  216.             case BluetoothMultiplayerMode.Server:
  217.                 Network.Disconnect();
  218.                 BluetoothMultiplayerAndroid.InitializeServer(Port);
  219.                 break;
  220.             case BluetoothMultiplayerMode.Client:
  221.                 Network.Disconnect();
  222.                 Debug.Log("BluetoothMultiplayerAndroid.ShowDeviceList()");
  223.                 BluetoothMultiplayerAndroid.ShowDeviceList();
  224.                 break;
  225.         }
  226.  
  227.         _desiredMode = BluetoothMultiplayerMode.None;
  228.     }
  229.  
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement