DESKTOP-B25GA9E\W35
2 years ago
47 changed files with 0 additions and 10460 deletions
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 562ae2df5aa68b641acd8208d36802d4 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1547402850 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
Binary file not shown.
@ -1,32 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: dbd87312a872da045b50fc427851aa45 |
|
||||||
PluginImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
iconMap: {} |
|
||||||
executionOrder: {} |
|
||||||
defineConstraints: [] |
|
||||||
isPreloaded: 0 |
|
||||||
isOverridable: 0 |
|
||||||
isExplicitlyReferenced: 0 |
|
||||||
validateReferences: 1 |
|
||||||
platformData: |
|
||||||
- first: |
|
||||||
Android: Android |
|
||||||
second: |
|
||||||
enabled: 1 |
|
||||||
settings: {} |
|
||||||
- first: |
|
||||||
Any: |
|
||||||
second: |
|
||||||
enabled: 0 |
|
||||||
settings: {} |
|
||||||
- first: |
|
||||||
Editor: Editor |
|
||||||
second: |
|
||||||
enabled: 0 |
|
||||||
settings: |
|
||||||
DefaultValueInitialized: true |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,267 +0,0 @@ |
|||||||
using System; |
|
||||||
using System.Text; |
|
||||||
using UnityEngine; |
|
||||||
|
|
||||||
// ATTENTION !!! |
|
||||||
// This is the service class of the plugin for working with the native code of the android system. |
|
||||||
// No need to change anything here, otherwise the plugin will stop working. |
|
||||||
// To work with plug-in methods, read Documentation.pdf |
|
||||||
|
|
||||||
namespace SVSBluetooth { |
|
||||||
public class BluetoothForAndroid { |
|
||||||
private static BluetoothForAndroid instance; |
|
||||||
public static AndroidJavaClass javaClass; |
|
||||||
public static AndroidJavaObject javaObject; |
|
||||||
|
|
||||||
public static event Action BtAdapterEnabled; |
|
||||||
public static event Action BtAdapterDisabled; |
|
||||||
|
|
||||||
public static event Action ServerStarted; |
|
||||||
public static event Action ServerStopped; |
|
||||||
|
|
||||||
public static event Action AttemptConnectToServer; |
|
||||||
public static event Action FailConnectToServer; |
|
||||||
|
|
||||||
public static event Action DeviceConnected; |
|
||||||
public static event Action DeviceDisconnected; |
|
||||||
|
|
||||||
public static event Action<int> ReceivedIntMessage; |
|
||||||
public static event Action<float> ReceivedFloatMessage; |
|
||||||
public static event Action<string> ReceivedStringMessage; |
|
||||||
public static event Action<byte[]> ReceivedByteMessage; |
|
||||||
|
|
||||||
public static event Action<string> DeviceSelected; |
|
||||||
|
|
||||||
const string BT_CLASS_NAME = "com.SVStar.BtForUnityAndroid.BT_Plugin"; |
|
||||||
public struct BTDevice { |
|
||||||
public string name; |
|
||||||
public string address; |
|
||||||
public BTDevice(string name, string address) { |
|
||||||
this.name = name; |
|
||||||
this.address = address; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
#region static methods |
|
||||||
|
|
||||||
public static void Initialize() { |
|
||||||
if (Application.platform == RuntimePlatform.Android) { |
|
||||||
|
|
||||||
if (instance == null) instance = new BluetoothForAndroid(); |
|
||||||
GameObject emptyObject = new GameObject(); |
|
||||||
emptyObject.AddComponent<BluetoothBridgeForAndroid>(); |
|
||||||
|
|
||||||
javaClass = new AndroidJavaClass(BT_CLASS_NAME); |
|
||||||
javaClass.CallStatic("Initialize"); |
|
||||||
javaObject = javaClass.GetStatic<AndroidJavaObject>("btPlugin"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static bool IsBTEnabled() { |
|
||||||
if (javaObject != null) return javaObject.Call<bool>("IsEnabled"); |
|
||||||
else return false; |
|
||||||
} |
|
||||||
|
|
||||||
public static void EnableBT() { |
|
||||||
if (javaObject != null) javaObject.Call("EnableBT"); |
|
||||||
} |
|
||||||
|
|
||||||
public static void DisableBT() { |
|
||||||
if (javaObject != null) javaObject.Call("DisableBT"); |
|
||||||
} |
|
||||||
|
|
||||||
public static void CreateServer(string UUID) { |
|
||||||
if (javaObject != null) { |
|
||||||
javaObject.Call("CreateServer", UUID); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static void StopServer() { |
|
||||||
if (javaObject != null) { |
|
||||||
javaObject.Call("StopServer"); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static void ConnectToServer(string UUID) { |
|
||||||
if (javaObject != null) { |
|
||||||
javaObject.Call("ConnectToServer", UUID); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static void Disconnect() { |
|
||||||
if (javaObject != null) javaObject.Call("Disconnect"); |
|
||||||
} |
|
||||||
|
|
||||||
public static void WriteMessage(int val) { |
|
||||||
if (javaObject != null) { |
|
||||||
byte[] array = BitConverter.GetBytes(val); |
|
||||||
javaObject.Call("WriteMessage", instance.ModAddArray(array, 0)); |
|
||||||
} |
|
||||||
} |
|
||||||
public static void WriteMessage(float val) { |
|
||||||
if (javaObject != null) { |
|
||||||
byte[] array = BitConverter.GetBytes(val); |
|
||||||
javaObject.Call("WriteMessage", instance.ModAddArray(array, 1)); |
|
||||||
} |
|
||||||
} |
|
||||||
public static void WriteMessage(string val) { |
|
||||||
if (javaObject != null && val.Length > 0) { |
|
||||||
byte[] array = Encoding.UTF8.GetBytes(val); |
|
||||||
javaObject.Call("WriteMessage", instance.ModAddArray(array, 2)); |
|
||||||
} |
|
||||||
} |
|
||||||
public static void WriteMessage(byte[] val) { |
|
||||||
if (javaObject != null && val.Length > 0) { |
|
||||||
javaObject.Call("WriteMessage", instance.ModAddArray(val, 3)); |
|
||||||
} |
|
||||||
} |
|
||||||
public static BTDevice[] GetBondedDevices() { |
|
||||||
if (javaObject != null) { |
|
||||||
return instance.GetBTArray(javaObject.Call<string[]>("GetBondedDevices")); |
|
||||||
} |
|
||||||
else return null; |
|
||||||
} |
|
||||||
public static void ConnectToServerByAddress(string UUID, string address) { |
|
||||||
string[] par = { UUID, address }; |
|
||||||
if (javaObject != null) javaObject.Call("ConnectToServerByAddress", par); |
|
||||||
} |
|
||||||
#endregion |
|
||||||
|
|
||||||
|
|
||||||
#region SERVICE METHODS PLUGIN |
|
||||||
|
|
||||||
public void GetInputData() { |
|
||||||
if (javaObject != null) { |
|
||||||
byte[] array = javaObject.Call<byte[]>("GetInputData"); |
|
||||||
ConvertFromByte(array); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void ConvertFromByte(byte[] array) { |
|
||||||
if (array != null) { |
|
||||||
switch (array[0]) { |
|
||||||
case 0: |
|
||||||
if (ReceivedIntMessage != null) ReceivedIntMessage(BitConverter.ToInt32(array, 1)); |
|
||||||
break; |
|
||||||
case 1: |
|
||||||
if (ReceivedFloatMessage != null) ReceivedFloatMessage(BitConverter.ToSingle(array, 1)); |
|
||||||
break; |
|
||||||
case 2: |
|
||||||
if (ReceivedStringMessage != null) ReceivedStringMessage(Encoding.UTF8.GetString(ModRemoveArray(array))); |
|
||||||
break; |
|
||||||
case 3: |
|
||||||
if (ReceivedByteMessage != null) ReceivedByteMessage(ModRemoveArray(array)); |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
else Debug.Log("blue = ArrayNull"); |
|
||||||
} |
|
||||||
|
|
||||||
private byte[] ModAddArray(byte[] array, int typeData) { |
|
||||||
byte[] lengthArray = BitConverter.GetBytes(array.Length + 1); |
|
||||||
byte[] newArray = new byte[array.Length + 5]; |
|
||||||
newArray[0] = lengthArray[3]; |
|
||||||
newArray[1] = lengthArray[2]; |
|
||||||
newArray[2] = lengthArray[1]; |
|
||||||
newArray[3] = lengthArray[0]; |
|
||||||
newArray[4] = (byte)typeData; |
|
||||||
for (int i = 0; i < array.Length; i++) { |
|
||||||
newArray[i + 5] = array[i]; |
|
||||||
} |
|
||||||
return newArray; |
|
||||||
} |
|
||||||
|
|
||||||
private byte[] ModRemoveArray(byte[] array) { |
|
||||||
byte[] newArray = new byte[array.Length - 1]; |
|
||||||
for (int i = 0; i < array.Length - 1; i++) { |
|
||||||
newArray[i] = array[i + 1]; |
|
||||||
} |
|
||||||
return newArray; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
public void OnBtAdapterEnabled() { |
|
||||||
if (BtAdapterEnabled != null) BtAdapterEnabled(); |
|
||||||
} |
|
||||||
public void OnBtAdapterDisabled() { |
|
||||||
if (BtAdapterDisabled != null) BtAdapterDisabled(); |
|
||||||
} |
|
||||||
public void OnServerStarted() { |
|
||||||
if (ServerStarted != null) ServerStarted(); |
|
||||||
} |
|
||||||
public void OnServerStopped() { |
|
||||||
if (ServerStopped != null) ServerStopped(); |
|
||||||
} |
|
||||||
public void OnAttemptConnectToServer() { |
|
||||||
if (AttemptConnectToServer != null) AttemptConnectToServer(); |
|
||||||
} |
|
||||||
public void OnFailConnectToServer() { |
|
||||||
if (FailConnectToServer != null) FailConnectToServer(); |
|
||||||
} |
|
||||||
public void OnDeviceConnected() { |
|
||||||
if (DeviceConnected != null) DeviceConnected(); |
|
||||||
} |
|
||||||
public void OnDeviceDisconnected() { |
|
||||||
if (DeviceDisconnected != null) DeviceDisconnected(); |
|
||||||
} |
|
||||||
public void OnDeviceSelected(string deviceData) { |
|
||||||
if (DeviceSelected != null) DeviceSelected(deviceData); |
|
||||||
} |
|
||||||
private BTDevice[] GetBTArray(string[] devices) { |
|
||||||
BTDevice[] btDevices = new BTDevice[devices.Length / 2]; |
|
||||||
int j = 0; |
|
||||||
for (int i = 0; i < devices.Length; i = i + 2) { |
|
||||||
btDevices[j].name = devices[i]; |
|
||||||
btDevices[j].address = devices[i + 1]; |
|
||||||
j++; |
|
||||||
} |
|
||||||
return btDevices; |
|
||||||
} |
|
||||||
#endregion |
|
||||||
|
|
||||||
|
|
||||||
public class BluetoothBridgeForAndroid : MonoBehaviour { |
|
||||||
private BluetoothForAndroid btForUnity; |
|
||||||
|
|
||||||
void Start() { |
|
||||||
btForUnity = instance; |
|
||||||
DontDestroyOnLoad(gameObject); |
|
||||||
gameObject.name = "BluetoothForAndroid"; |
|
||||||
} |
|
||||||
|
|
||||||
public void NewInputData(string message) { |
|
||||||
btForUnity.GetInputData(); |
|
||||||
} |
|
||||||
public void BtAdapterEnabled(string message) { |
|
||||||
btForUnity.OnBtAdapterEnabled(); |
|
||||||
} |
|
||||||
public void BtAdapterDisabled(string message) { |
|
||||||
btForUnity.OnBtAdapterDisabled(); |
|
||||||
} |
|
||||||
public void ServerStarted(string message) { |
|
||||||
btForUnity.OnServerStarted(); |
|
||||||
} |
|
||||||
public void ServerStopped(string message) { |
|
||||||
btForUnity.OnServerStopped(); |
|
||||||
} |
|
||||||
public void AttemptConnectToServer(string message) { |
|
||||||
btForUnity.OnAttemptConnectToServer(); |
|
||||||
} |
|
||||||
public void FailConnectToServer(string message) { |
|
||||||
btForUnity.OnFailConnectToServer(); |
|
||||||
} |
|
||||||
public void DeviceConnected(string message) { |
|
||||||
btForUnity.OnDeviceConnected(); |
|
||||||
} |
|
||||||
public void DeviceDisconnected(string message) { |
|
||||||
btForUnity.OnDeviceDisconnected(); |
|
||||||
} |
|
||||||
public void DeviceSelected(string message) { |
|
||||||
btForUnity.OnDeviceSelected(message); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 267e70df40fb892429d297a54b396f1c |
|
||||||
timeCreated: 1550671012 |
|
||||||
licenseType: Store |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,8 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 13d908fcfd3852f4889f2603952c8225 |
|
||||||
folderAsset: yes |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 871d74fd920b4fd41a62f630c2226666 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017142 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 8822f12ccef60ba4b95f9a17177a0ce6 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017206 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 690d80996b29d2d4a9090326560d1007 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,175 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!74 &7400000 |
|
||||||
AnimationClip: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 0} |
|
||||||
m_Name: WaitAnimation |
|
||||||
serializedVersion: 6 |
|
||||||
m_Legacy: 0 |
|
||||||
m_Compressed: 0 |
|
||||||
m_UseHighQualityCurve: 1 |
|
||||||
m_RotationCurves: [] |
|
||||||
m_CompressedRotationCurves: [] |
|
||||||
m_EulerCurves: |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 0 |
|
||||||
value: {x: 0, y: 0, z: 0} |
|
||||||
inSlope: {x: 0, y: 0, z: 0} |
|
||||||
outSlope: {x: 0, y: 0, z: -120} |
|
||||||
tangentMode: 0 |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 3 |
|
||||||
value: {x: 0, y: 0, z: -360} |
|
||||||
inSlope: {x: 0, y: 0, z: -120} |
|
||||||
outSlope: {x: 0, y: 0, z: 0} |
|
||||||
tangentMode: 0 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
path: |
|
||||||
m_PositionCurves: [] |
|
||||||
m_ScaleCurves: [] |
|
||||||
m_FloatCurves: [] |
|
||||||
m_PPtrCurves: [] |
|
||||||
m_SampleRate: 20 |
|
||||||
m_WrapMode: 0 |
|
||||||
m_Bounds: |
|
||||||
m_Center: {x: 0, y: 0, z: 0} |
|
||||||
m_Extent: {x: 0, y: 0, z: 0} |
|
||||||
m_ClipBindingConstant: |
|
||||||
genericBindings: |
|
||||||
- serializedVersion: 2 |
|
||||||
path: 0 |
|
||||||
attribute: 4 |
|
||||||
script: {fileID: 0} |
|
||||||
typeID: 4 |
|
||||||
customType: 14 |
|
||||||
isPPtrCurve: 0 |
|
||||||
pptrCurveMapping: [] |
|
||||||
m_AnimationClipSettings: |
|
||||||
serializedVersion: 2 |
|
||||||
m_AdditiveReferencePoseClip: {fileID: 0} |
|
||||||
m_AdditiveReferencePoseTime: 0 |
|
||||||
m_StartTime: 0 |
|
||||||
m_StopTime: 3 |
|
||||||
m_OrientationOffsetY: 0 |
|
||||||
m_Level: 0 |
|
||||||
m_CycleOffset: 0 |
|
||||||
m_HasAdditiveReferencePose: 0 |
|
||||||
m_LoopTime: 1 |
|
||||||
m_LoopBlend: 0 |
|
||||||
m_LoopBlendOrientation: 0 |
|
||||||
m_LoopBlendPositionY: 0 |
|
||||||
m_LoopBlendPositionXZ: 0 |
|
||||||
m_KeepOriginalOrientation: 0 |
|
||||||
m_KeepOriginalPositionY: 1 |
|
||||||
m_KeepOriginalPositionXZ: 0 |
|
||||||
m_HeightFromFeet: 0 |
|
||||||
m_Mirror: 0 |
|
||||||
m_EditorCurves: |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 0 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 136 |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 3 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 136 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
attribute: localEulerAnglesRaw.x |
|
||||||
path: |
|
||||||
classID: 224 |
|
||||||
script: {fileID: 0} |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 0 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 136 |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 3 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 136 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
attribute: localEulerAnglesRaw.y |
|
||||||
path: |
|
||||||
classID: 224 |
|
||||||
script: {fileID: 0} |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 0 |
|
||||||
value: 0 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: -120 |
|
||||||
tangentMode: 69 |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 3 |
|
||||||
value: -360 |
|
||||||
inSlope: -120 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 69 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
attribute: localEulerAnglesRaw.z |
|
||||||
path: |
|
||||||
classID: 224 |
|
||||||
script: {fileID: 0} |
|
||||||
m_EulerEditorCurves: |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: [] |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
attribute: m_LocalEulerAngles.x |
|
||||||
path: |
|
||||||
classID: 224 |
|
||||||
script: {fileID: 0} |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: [] |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
attribute: m_LocalEulerAngles.y |
|
||||||
path: |
|
||||||
classID: 224 |
|
||||||
script: {fileID: 0} |
|
||||||
- curve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: [] |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
attribute: m_LocalEulerAngles.z |
|
||||||
path: |
|
||||||
classID: 224 |
|
||||||
script: {fileID: 0} |
|
||||||
m_HasGenericRootTransform: 1 |
|
||||||
m_HasMotionFloatCurves: 0 |
|
||||||
m_GenerateMotionCurves: 0 |
|
||||||
m_Events: [] |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: be683776d58553048bd53424077f9efa |
|
||||||
timeCreated: 1550165306 |
|
||||||
licenseType: Store |
|
||||||
NativeFormatImporter: |
|
||||||
externalObjects: {} |
|
||||||
mainObjectFileID: 7400000 |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,69 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!91 &9100000 |
|
||||||
AnimatorController: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 0} |
|
||||||
m_Name: WaitImage |
|
||||||
serializedVersion: 5 |
|
||||||
m_AnimatorParameters: [] |
|
||||||
m_AnimatorLayers: |
|
||||||
- serializedVersion: 5 |
|
||||||
m_Name: Base Layer |
|
||||||
m_StateMachine: {fileID: 1107245597049827450} |
|
||||||
m_Mask: {fileID: 0} |
|
||||||
m_Motions: [] |
|
||||||
m_Behaviours: [] |
|
||||||
m_BlendingMode: 0 |
|
||||||
m_SyncedLayerIndex: -1 |
|
||||||
m_DefaultWeight: 0 |
|
||||||
m_IKPass: 0 |
|
||||||
m_SyncedLayerAffectsTiming: 0 |
|
||||||
m_Controller: {fileID: 9100000} |
|
||||||
--- !u!1102 &1102881616539336170 |
|
||||||
AnimatorState: |
|
||||||
serializedVersion: 5 |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 0} |
|
||||||
m_Name: WaitAnimation |
|
||||||
m_Speed: 1 |
|
||||||
m_CycleOffset: 0 |
|
||||||
m_Transitions: [] |
|
||||||
m_StateMachineBehaviours: [] |
|
||||||
m_Position: {x: 50, y: 50, z: 0} |
|
||||||
m_IKOnFeet: 0 |
|
||||||
m_WriteDefaultValues: 1 |
|
||||||
m_Mirror: 0 |
|
||||||
m_SpeedParameterActive: 0 |
|
||||||
m_MirrorParameterActive: 0 |
|
||||||
m_CycleOffsetParameterActive: 0 |
|
||||||
m_TimeParameterActive: 0 |
|
||||||
m_Motion: {fileID: 7400000, guid: be683776d58553048bd53424077f9efa, type: 2} |
|
||||||
m_Tag: |
|
||||||
m_SpeedParameter: |
|
||||||
m_MirrorParameter: |
|
||||||
m_CycleOffsetParameter: |
|
||||||
m_TimeParameter: |
|
||||||
--- !u!1107 &1107245597049827450 |
|
||||||
AnimatorStateMachine: |
|
||||||
serializedVersion: 5 |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 0} |
|
||||||
m_Name: Base Layer |
|
||||||
m_ChildStates: |
|
||||||
- serializedVersion: 1 |
|
||||||
m_State: {fileID: 1102881616539336170} |
|
||||||
m_Position: {x: 200, y: 0, z: 0} |
|
||||||
m_ChildStateMachines: [] |
|
||||||
m_AnyStateTransitions: [] |
|
||||||
m_EntryTransitions: [] |
|
||||||
m_StateMachineTransitions: {} |
|
||||||
m_StateMachineBehaviours: [] |
|
||||||
m_AnyStatePosition: {x: 50, y: 20, z: 0} |
|
||||||
m_EntryPosition: {x: 50, y: 120, z: 0} |
|
||||||
m_ExitPosition: {x: 800, y: 120, z: 0} |
|
||||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} |
|
||||||
m_DefaultState: {fileID: 1102881616539336170} |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: c76440f0af9f2bc43902dff031718eaa |
|
||||||
timeCreated: 1550165306 |
|
||||||
licenseType: Store |
|
||||||
NativeFormatImporter: |
|
||||||
externalObjects: {} |
|
||||||
mainObjectFileID: 9100000 |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 4433e6c45baa1e3469afe12339858b28 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,223 +0,0 @@ |
|||||||
%YAML 1.1 |
|
||||||
%TAG !u! tag:unity3d.com,2011: |
|
||||||
--- !u!1001 &100100000 |
|
||||||
Prefab: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
serializedVersion: 2 |
|
||||||
m_Modification: |
|
||||||
m_TransformParent: {fileID: 0} |
|
||||||
m_Modifications: [] |
|
||||||
m_RemovedComponents: [] |
|
||||||
m_ParentPrefab: {fileID: 0} |
|
||||||
m_RootGameObject: {fileID: 1739251397563562} |
|
||||||
m_IsPrefabParent: 1 |
|
||||||
--- !u!1 &1739251397563562 |
|
||||||
GameObject: |
|
||||||
m_ObjectHideFlags: 0 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
serializedVersion: 5 |
|
||||||
m_Component: |
|
||||||
- component: {fileID: 4751556619128430} |
|
||||||
- component: {fileID: 212768017619414698} |
|
||||||
- component: {fileID: 96584280816311856} |
|
||||||
- component: {fileID: 58722140026390992} |
|
||||||
- component: {fileID: 50262360424858344} |
|
||||||
- component: {fileID: 114751412628715058} |
|
||||||
m_Layer: 0 |
|
||||||
m_Name: Bullet |
|
||||||
m_TagString: Untagged |
|
||||||
m_Icon: {fileID: 0} |
|
||||||
m_NavMeshLayer: 0 |
|
||||||
m_StaticEditorFlags: 0 |
|
||||||
m_IsActive: 1 |
|
||||||
--- !u!4 &4751556619128430 |
|
||||||
Transform: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 1739251397563562} |
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|
||||||
m_LocalScale: {x: 1, y: 1, z: 0} |
|
||||||
m_Children: [] |
|
||||||
m_Father: {fileID: 0} |
|
||||||
m_RootOrder: 0 |
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|
||||||
--- !u!50 &50262360424858344 |
|
||||||
Rigidbody2D: |
|
||||||
serializedVersion: 4 |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 1739251397563562} |
|
||||||
m_BodyType: 0 |
|
||||||
m_Simulated: 1 |
|
||||||
m_UseFullKinematicContacts: 0 |
|
||||||
m_UseAutoMass: 0 |
|
||||||
m_Mass: 0.1 |
|
||||||
m_LinearDrag: 0 |
|
||||||
m_AngularDrag: 0 |
|
||||||
m_GravityScale: 0 |
|
||||||
m_Material: {fileID: 0} |
|
||||||
m_Interpolate: 0 |
|
||||||
m_SleepingMode: 1 |
|
||||||
m_CollisionDetection: 1 |
|
||||||
m_Constraints: 0 |
|
||||||
--- !u!58 &58722140026390992 |
|
||||||
CircleCollider2D: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 1739251397563562} |
|
||||||
m_Enabled: 1 |
|
||||||
m_Density: 1 |
|
||||||
m_Material: {fileID: 0} |
|
||||||
m_IsTrigger: 0 |
|
||||||
m_UsedByEffector: 0 |
|
||||||
m_UsedByComposite: 0 |
|
||||||
m_Offset: {x: 0, y: 0} |
|
||||||
serializedVersion: 2 |
|
||||||
m_Radius: 0.1 |
|
||||||
--- !u!96 &96584280816311856 |
|
||||||
TrailRenderer: |
|
||||||
serializedVersion: 2 |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 1739251397563562} |
|
||||||
m_Enabled: 1 |
|
||||||
m_CastShadows: 1 |
|
||||||
m_ReceiveShadows: 0 |
|
||||||
m_DynamicOccludee: 0 |
|
||||||
m_MotionVectors: 1 |
|
||||||
m_LightProbeUsage: 0 |
|
||||||
m_ReflectionProbeUsage: 0 |
|
||||||
m_Materials: |
|
||||||
- {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} |
|
||||||
m_StaticBatchInfo: |
|
||||||
firstSubMesh: 0 |
|
||||||
subMeshCount: 0 |
|
||||||
m_StaticBatchRoot: {fileID: 0} |
|
||||||
m_ProbeAnchor: {fileID: 0} |
|
||||||
m_LightProbeVolumeOverride: {fileID: 0} |
|
||||||
m_ScaleInLightmap: 1 |
|
||||||
m_PreserveUVs: 0 |
|
||||||
m_IgnoreNormalsForChartDetection: 0 |
|
||||||
m_ImportantGI: 0 |
|
||||||
m_StitchLightmapSeams: 0 |
|
||||||
m_SelectedEditorRenderState: 3 |
|
||||||
m_MinimumChartSize: 4 |
|
||||||
m_AutoUVMaxDistance: 0.5 |
|
||||||
m_AutoUVMaxAngle: 89 |
|
||||||
m_LightmapParameters: {fileID: 0} |
|
||||||
m_SortingLayerID: 0 |
|
||||||
m_SortingLayer: 0 |
|
||||||
m_SortingOrder: 0 |
|
||||||
m_Time: 0.2 |
|
||||||
m_Parameters: |
|
||||||
serializedVersion: 2 |
|
||||||
widthMultiplier: 0.2 |
|
||||||
widthCurve: |
|
||||||
serializedVersion: 2 |
|
||||||
m_Curve: |
|
||||||
- serializedVersion: 2 |
|
||||||
time: 0 |
|
||||||
value: 1 |
|
||||||
inSlope: 0 |
|
||||||
outSlope: 0 |
|
||||||
tangentMode: 0 |
|
||||||
m_PreInfinity: 2 |
|
||||||
m_PostInfinity: 2 |
|
||||||
m_RotationOrder: 4 |
|
||||||
colorGradient: |
|
||||||
serializedVersion: 2 |
|
||||||
key0: {r: 1, g: 0.6827586, b: 0, a: 1} |
|
||||||
key1: {r: 1, g: 1, b: 1, a: 1} |
|
||||||
key2: {r: 0, g: 0, b: 0, a: 0} |
|
||||||
key3: {r: 0, g: 0, b: 0, a: 0} |
|
||||||
key4: {r: 0, g: 0, b: 0, a: 0} |
|
||||||
key5: {r: 0, g: 0, b: 0, a: 0} |
|
||||||
key6: {r: 0, g: 0, b: 0, a: 0} |
|
||||||
key7: {r: 0, g: 0, b: 0, a: 0} |
|
||||||
ctime0: 0 |
|
||||||
ctime1: 65535 |
|
||||||
ctime2: 0 |
|
||||||
ctime3: 0 |
|
||||||
ctime4: 0 |
|
||||||
ctime5: 0 |
|
||||||
ctime6: 0 |
|
||||||
ctime7: 0 |
|
||||||
atime0: 0 |
|
||||||
atime1: 65535 |
|
||||||
atime2: 0 |
|
||||||
atime3: 0 |
|
||||||
atime4: 0 |
|
||||||
atime5: 0 |
|
||||||
atime6: 0 |
|
||||||
atime7: 0 |
|
||||||
m_Mode: 0 |
|
||||||
m_NumColorKeys: 2 |
|
||||||
m_NumAlphaKeys: 2 |
|
||||||
numCornerVertices: 0 |
|
||||||
numCapVertices: 0 |
|
||||||
alignment: 0 |
|
||||||
textureMode: 0 |
|
||||||
generateLightingData: 0 |
|
||||||
m_MinVertexDistance: 0.1 |
|
||||||
m_Autodestruct: 0 |
|
||||||
--- !u!114 &114751412628715058 |
|
||||||
MonoBehaviour: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 1739251397563562} |
|
||||||
m_Enabled: 1 |
|
||||||
m_EditorHideFlags: 0 |
|
||||||
m_Script: {fileID: 11500000, guid: 6d70cde032d2b5347a2a1beab4c8c06d, type: 3} |
|
||||||
m_Name: |
|
||||||
m_EditorClassIdentifier: |
|
||||||
--- !u!212 &212768017619414698 |
|
||||||
SpriteRenderer: |
|
||||||
m_ObjectHideFlags: 1 |
|
||||||
m_PrefabParentObject: {fileID: 0} |
|
||||||
m_PrefabInternal: {fileID: 100100000} |
|
||||||
m_GameObject: {fileID: 1739251397563562} |
|
||||||
m_Enabled: 1 |
|
||||||
m_CastShadows: 0 |
|
||||||
m_ReceiveShadows: 0 |
|
||||||
m_DynamicOccludee: 1 |
|
||||||
m_MotionVectors: 1 |
|
||||||
m_LightProbeUsage: 1 |
|
||||||
m_ReflectionProbeUsage: 1 |
|
||||||
m_Materials: |
|
||||||
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} |
|
||||||
m_StaticBatchInfo: |
|
||||||
firstSubMesh: 0 |
|
||||||
subMeshCount: 0 |
|
||||||
m_StaticBatchRoot: {fileID: 0} |
|
||||||
m_ProbeAnchor: {fileID: 0} |
|
||||||
m_LightProbeVolumeOverride: {fileID: 0} |
|
||||||
m_ScaleInLightmap: 1 |
|
||||||
m_PreserveUVs: 0 |
|
||||||
m_IgnoreNormalsForChartDetection: 0 |
|
||||||
m_ImportantGI: 0 |
|
||||||
m_StitchLightmapSeams: 0 |
|
||||||
m_SelectedEditorRenderState: 0 |
|
||||||
m_MinimumChartSize: 4 |
|
||||||
m_AutoUVMaxDistance: 0.5 |
|
||||||
m_AutoUVMaxAngle: 89 |
|
||||||
m_LightmapParameters: {fileID: 0} |
|
||||||
m_SortingLayerID: 0 |
|
||||||
m_SortingLayer: 0 |
|
||||||
m_SortingOrder: 10 |
|
||||||
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} |
|
||||||
m_Color: {r: 1, g: 0.6827586, b: 0, a: 1} |
|
||||||
m_FlipX: 0 |
|
||||||
m_FlipY: 0 |
|
||||||
m_DrawMode: 0 |
|
||||||
m_Size: {x: 0.2, y: 0.2} |
|
||||||
m_AdaptiveModeThreshold: 0.5 |
|
||||||
m_SpriteTileMode: 0 |
|
||||||
m_WasSpriteAssigned: 1 |
|
||||||
m_MaskInteraction: 0 |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: c128f36eda4396344bea624e4fe3d50f |
|
||||||
timeCreated: 1550235053 |
|
||||||
licenseType: Store |
|
||||||
NativeFormatImporter: |
|
||||||
externalObjects: {} |
|
||||||
mainObjectFileID: 100100000 |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 23763c8109c2b8e438cf124f9c908cd2 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: da92ce338e5af734190a1fda4eb1e420 |
|
||||||
timeCreated: 1550234839 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: ccbfacc2b8e94c14993b4b8ee3bd42dd |
|
||||||
timeCreated: 1547393127 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: a7cda8670d0ccd145abf293fb28296fc |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,16 +0,0 @@ |
|||||||
using UnityEngine; |
|
||||||
|
|
||||||
public class BulletScript : MonoBehaviour { |
|
||||||
|
|
||||||
// collision check. If the projectile collides with a wall or with its own tank, then it is simply destroyed. |
|
||||||
// If the projectile collides with an enemy tank, then it is destroyed and calls the method of reducing HP in the GameScene script. |
|
||||||
private void OnCollisionEnter2D(Collision2D collision) { |
|
||||||
if (collision.gameObject.name == "LeftBorder" || collision.gameObject.name == "RightBorder" || collision.gameObject.name == "PlayerTank") { |
|
||||||
Destroy(gameObject); |
|
||||||
} |
|
||||||
else { |
|
||||||
GameScene.instance.HitByEnemy(); |
|
||||||
Destroy(gameObject); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 6d70cde032d2b5347a2a1beab4c8c06d |
|
||||||
timeCreated: 1550409650 |
|
||||||
licenseType: Store |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 400 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,212 +0,0 @@ |
|||||||
using System.Collections; |
|
||||||
using System.Collections.Generic; |
|
||||||
using UnityEngine; |
|
||||||
using UnityEngine.UI; |
|
||||||
|
|
||||||
public class GameScene : MonoBehaviour { |
|
||||||
public static GameScene instance; |
|
||||||
// Objects |
|
||||||
public GameObject tankPlayer; |
|
||||||
public GameObject tankEnemy; |
|
||||||
public GameObject bullet; |
|
||||||
// Text fields |
|
||||||
public Text playerHealthText; |
|
||||||
public Text enemyHealthText; |
|
||||||
public Text scoreText; |
|
||||||
// Game variables |
|
||||||
int playerHealth = 100; |
|
||||||
int enemyHealth = 100; |
|
||||||
int playerDeath; |
|
||||||
int enemyDeath; |
|
||||||
// Input |
|
||||||
bool goUp; |
|
||||||
bool goDown; |
|
||||||
// Fields for interpolating the movement of an enemy |
|
||||||
Queue<Vector2> posEnemyBuffer = new Queue<Vector2>(); |
|
||||||
bool bufferReady; |
|
||||||
int frame; |
|
||||||
int stepToNewPoint; |
|
||||||
Vector2 step; |
|
||||||
|
|
||||||
void Start() { |
|
||||||
Application.targetFrameRate = 30; |
|
||||||
if (instance == null) instance = this; // creating singleton |
|
||||||
UpdateVievHealth(); |
|
||||||
UpdateScore(); |
|
||||||
float timeRepeat = 1f / 30f; |
|
||||||
InvokeRepeating("MovePlayer", 0f, timeRepeat); |
|
||||||
InvokeRepeating("MoveEnemy", timeRepeat, timeRepeat); |
|
||||||
InvokeRepeating("SendPosition", timeRepeat, timeRepeat); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
//////////////////////// |
|
||||||
// Methods for the tank of this device |
|
||||||
//////////////////////// |
|
||||||
|
|
||||||
// player tank movement when pushing buttons |
|
||||||
void MovePlayer() { |
|
||||||
if (playerHealth > 0) { |
|
||||||
if (goUp || goDown) { |
|
||||||
int direction = goUp ? 1 : -1; |
|
||||||
Vector2 vector = tankPlayer.transform.position; |
|
||||||
vector.y = Mathf.Clamp(vector.y + 10 * Time.deltaTime * direction, -2.8f, 2.8f); |
|
||||||
tankPlayer.transform.position = vector; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// wrapping a player’s tank position into an array of bytes and transferring this array to an enemy device |
|
||||||
void SendPosition() { |
|
||||||
byte[] position = new byte[9]; |
|
||||||
byte[] posX = new byte[4]; |
|
||||||
byte[] posY = new byte[4]; |
|
||||||
posX = NetworkManager.instance.FloatToBytes(tankPlayer.transform.position.x); |
|
||||||
posY = NetworkManager.instance.FloatToBytes(tankPlayer.transform.position.y); |
|
||||||
position[0] = 0; |
|
||||||
position[1] = posX[0]; |
|
||||||
position[2] = posX[1]; |
|
||||||
position[3] = posX[2]; |
|
||||||
position[4] = posX[3]; |
|
||||||
position[5] = posY[0]; |
|
||||||
position[6] = posY[1]; |
|
||||||
position[7] = posY[2]; |
|
||||||
position[8] = posY[3]; |
|
||||||
NetworkManager.instance.WriteMessage(position); // message transfer |
|
||||||
} |
|
||||||
|
|
||||||
// delay between shots |
|
||||||
IEnumerator ShotPlayer() { |
|
||||||
while (true) { |
|
||||||
if (playerHealth > 0) { |
|
||||||
Vector2 vector = tankPlayer.transform.position; |
|
||||||
vector.x += 1; |
|
||||||
GameObject newBullet = Instantiate(bullet, vector, Quaternion.identity); |
|
||||||
newBullet.GetComponent<Rigidbody2D>().AddForce(Vector2.right * 100); |
|
||||||
NetworkManager.instance.WriteMessage(new byte[1] { (byte)1 }); // message transfer |
|
||||||
} |
|
||||||
yield return new WaitForSeconds(0.3f); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// the reduction of the HP of the enemy tank and the destruction of the tank when the HP is equal to zero |
|
||||||
public void HitByEnemy() { |
|
||||||
if (enemyHealth > 20) { |
|
||||||
enemyHealth -= 20; |
|
||||||
NetworkManager.instance.WriteMessage(new byte[2] { (byte)2, (byte)enemyHealth }); // message transfer |
|
||||||
UpdateVievHealth(); |
|
||||||
} |
|
||||||
else if (enemyHealth == 20) { |
|
||||||
enemyHealth = 0; |
|
||||||
NetworkManager.instance.WriteMessage(new byte[1] { (byte)3 }); // message transfer |
|
||||||
UpdateVievHealth(); |
|
||||||
tankEnemy.transform.position = new Vector2(3.256f, 20); |
|
||||||
Invoke("ReturnEnemyToStartingPosion", 1f); |
|
||||||
enemyDeath++; |
|
||||||
UpdateScore(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// the return of the enemy’s tank to the starting position a second after its destruction |
|
||||||
void ReturnEnemyToStartingPosion() { |
|
||||||
tankEnemy.transform.position = new Vector2(3.256f, 0); |
|
||||||
enemyHealth = 100; |
|
||||||
NetworkManager.instance.WriteMessage(new byte[1] { (byte)4 }); // message transfer |
|
||||||
posEnemyBuffer.Clear(); |
|
||||||
UpdateVievHealth(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////// |
|
||||||
// Commands from another device |
|
||||||
///////////////////////////// |
|
||||||
|
|
||||||
// If the buffer is not empty, then the movement of the enemy tank begins. |
|
||||||
// tank movement |
|
||||||
void MoveEnemy() { |
|
||||||
if (enemyHealth > 0) { |
|
||||||
if (posEnemyBuffer.Count > 0) tankEnemy.transform.position = posEnemyBuffer.Dequeue(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// The resulting positions are converted from an array of bytes to coordinates of type Vector2 and added to the buffer. |
|
||||||
public void PutInBufferPosition(byte[] position) { |
|
||||||
Vector2 currentPosition; |
|
||||||
byte[] posX = new byte[4]; |
|
||||||
byte[] posY = new byte[4]; |
|
||||||
posX[0] = position[1]; |
|
||||||
posX[1] = position[2]; |
|
||||||
posX[2] = position[3]; |
|
||||||
posX[3] = position[4]; |
|
||||||
posY[0] = position[5]; |
|
||||||
posY[1] = position[6]; |
|
||||||
posY[2] = position[7]; |
|
||||||
posY[3] = position[8]; |
|
||||||
currentPosition.x = -NetworkManager.instance.BytesToFloat(posX); |
|
||||||
currentPosition.y = NetworkManager.instance.BytesToFloat(posY); |
|
||||||
posEnemyBuffer.Enqueue(currentPosition); |
|
||||||
} |
|
||||||
|
|
||||||
// shot of an enemy tank |
|
||||||
public void ShotEnemy() { |
|
||||||
Vector2 vector = tankEnemy.transform.position; |
|
||||||
vector.x -= 1; |
|
||||||
GameObject newBullet = Instantiate(bullet, vector, Quaternion.identity); |
|
||||||
newBullet.GetComponent<Rigidbody2D>().AddForce(-Vector2.right * 100); |
|
||||||
} |
|
||||||
|
|
||||||
// hitting the player's tank |
|
||||||
public void HitByPlayer(byte health) { |
|
||||||
playerHealth = (int)health; |
|
||||||
UpdateVievHealth(); |
|
||||||
} |
|
||||||
|
|
||||||
// player tank destruction |
|
||||||
public void DestroyTankPlayer() { |
|
||||||
tankPlayer.transform.position = new Vector2(-3.256f, 20); |
|
||||||
playerHealth = 0; |
|
||||||
playerDeath++; |
|
||||||
UpdateVievHealth(); |
|
||||||
UpdateScore(); |
|
||||||
} |
|
||||||
|
|
||||||
// the return of the player’s tank to the starting position |
|
||||||
public void ReturnPlayerToStartingPosion() { |
|
||||||
tankPlayer.transform.position = new Vector2(-3.256f, 0); |
|
||||||
frame = 0; |
|
||||||
playerHealth = 100; |
|
||||||
UpdateVievHealth(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
// View |
|
||||||
void UpdateVievHealth() { |
|
||||||
playerHealthText.text = playerHealth + "%"; |
|
||||||
enemyHealthText.text = enemyHealth + "%"; |
|
||||||
} |
|
||||||
void UpdateScore() { |
|
||||||
scoreText.text = playerDeath + ":" + enemyDeath; |
|
||||||
} |
|
||||||
// Input |
|
||||||
public void UpButtonPointerDown() { |
|
||||||
goUp = true; |
|
||||||
} |
|
||||||
public void UpButtonPointerUp() { |
|
||||||
goUp = false; |
|
||||||
} |
|
||||||
public void DownButtonPointerDown() { |
|
||||||
goDown = true; |
|
||||||
} |
|
||||||
public void DownButtonPointerUp() { |
|
||||||
goDown = false; |
|
||||||
} |
|
||||||
public void ShotButtonPointerDown() { |
|
||||||
StartCoroutine("ShotPlayer"); |
|
||||||
} |
|
||||||
public void ShotButtonPointerUp() { |
|
||||||
StopCoroutine("ShotPlayer"); |
|
||||||
} |
|
||||||
public void ExitScene() { |
|
||||||
NetworkManager.instance.ExitGameScene(); |
|
||||||
} |
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 7555efb48b9f1cf45948201f900bcfed |
|
||||||
timeCreated: 1550409650 |
|
||||||
licenseType: Store |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 390 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,89 +0,0 @@ |
|||||||
using UnityEngine; |
|
||||||
using UnityEngine.SceneManagement; |
|
||||||
using SVSBluetooth; |
|
||||||
|
|
||||||
public class MenuInterface : MonoBehaviour { |
|
||||||
|
|
||||||
public string MY_UUID; // UUID string that is set through the inspector |
|
||||||
string role; |
|
||||||
public GameObject MultiplayerPanel; |
|
||||||
public GameObject WaitPanel; |
|
||||||
public GameObject turnOnBluetoothText; |
|
||||||
public GameObject failConnectionText; |
|
||||||
public GameObject waitConnectionImage; |
|
||||||
public GameObject waitConnectionCancelButton; |
|
||||||
|
|
||||||
// comments for operations of the same type will not be repeated |
|
||||||
// event subscription |
|
||||||
// for information on the appointment of events, see the Documentation.pdf |
|
||||||
private void OnEnable() { |
|
||||||
BluetoothForAndroid.BtAdapterEnabled += HideTurnOnBluetoothText; |
|
||||||
BluetoothForAndroid.DeviceConnected += LoadGameScene; |
|
||||||
BluetoothForAndroid.ServerStarted += OpenWaitConnectionWindow; |
|
||||||
BluetoothForAndroid.AttemptConnectToServer += OpenWaitConnectionWindow; |
|
||||||
BluetoothForAndroid.FailConnectToServer += FailConnect; |
|
||||||
} |
|
||||||
// unsubscribe from events |
|
||||||
private void OnDisable() { |
|
||||||
BluetoothForAndroid.BtAdapterEnabled -= HideTurnOnBluetoothText; |
|
||||||
BluetoothForAndroid.DeviceConnected -= LoadGameScene; |
|
||||||
BluetoothForAndroid.ServerStarted -= OpenWaitConnectionWindow; |
|
||||||
BluetoothForAndroid.AttemptConnectToServer -= OpenWaitConnectionWindow; |
|
||||||
BluetoothForAndroid.FailConnectToServer -= FailConnect; |
|
||||||
} |
|
||||||
|
|
||||||
private void Start() { |
|
||||||
Screen.sleepTimeout = SleepTimeout.NeverSleep; // so that the screen does not go out |
|
||||||
BluetoothForAndroid.Initialize(); // plugin initialization |
|
||||||
} |
|
||||||
|
|
||||||
public void ExitGame() { |
|
||||||
Application.Quit(); // close application |
|
||||||
} |
|
||||||
public void OpenMultiplayerWindow() { |
|
||||||
if (!BluetoothForAndroid.IsBTEnabled()) BluetoothForAndroid.EnableBT(); // command to turn on the bluetooth if the bluetooth adapter is not activated |
|
||||||
MultiplayerPanel.SetActive(true); // opening the connection window |
|
||||||
} |
|
||||||
public void CloseMultiplayerWindow() { |
|
||||||
MultiplayerPanel.SetActive(false);// close the connection window |
|
||||||
} |
|
||||||
public void StarServer() { |
|
||||||
role = "server"; // a flag that activates or deactivates the cancel button on the connection standby screen |
|
||||||
if (BluetoothForAndroid.IsBTEnabled()) { |
|
||||||
turnOnBluetoothText.SetActive(false); |
|
||||||
BluetoothForAndroid.CreateServer(MY_UUID); // create a server with the specified UUID |
|
||||||
} |
|
||||||
else turnOnBluetoothText.SetActive(true); // if bluetooth is off, a message is displayed asking you to turn on bluetooth |
|
||||||
} |
|
||||||
public void ConnectToServer() { |
|
||||||
role = "client"; |
|
||||||
if (BluetoothForAndroid.IsBTEnabled()) { |
|
||||||
turnOnBluetoothText.SetActive(false); |
|
||||||
BluetoothForAndroid.ConnectToServer(MY_UUID); // connect to server with specified UUID |
|
||||||
} |
|
||||||
else turnOnBluetoothText.SetActive(true); |
|
||||||
} |
|
||||||
private void HideTurnOnBluetoothText() { |
|
||||||
turnOnBluetoothText.SetActive(false); |
|
||||||
} |
|
||||||
private void OpenWaitConnectionWindow() { |
|
||||||
waitConnectionImage.SetActive(true); // turning on animation |
|
||||||
WaitPanel.SetActive(true); |
|
||||||
failConnectionText.SetActive(false); |
|
||||||
if (role == "server") waitConnectionCancelButton.SetActive(true); |
|
||||||
else waitConnectionCancelButton.SetActive(false); |
|
||||||
} |
|
||||||
private void FailConnect() { |
|
||||||
waitConnectionImage.SetActive(false); |
|
||||||
waitConnectionCancelButton.SetActive(true); |
|
||||||
failConnectionText.SetActive(true); |
|
||||||
} |
|
||||||
public void CloseWaitConnectionWindow() { |
|
||||||
if (role == "server") BluetoothForAndroid.StopServer(); // server shutdown |
|
||||||
WaitPanel.SetActive(false); |
|
||||||
} |
|
||||||
|
|
||||||
void LoadGameScene() { |
|
||||||
SceneManager.LoadScene(1); // loading the game scene |
|
||||||
} |
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 46e8fbd6d835f98428d28f4819475bfa |
|
||||||
timeCreated: 1550409650 |
|
||||||
licenseType: Store |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 350 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,74 +0,0 @@ |
|||||||
using System; |
|
||||||
using UnityEngine; |
|
||||||
using UnityEngine.SceneManagement; |
|
||||||
using SVSBluetooth; |
|
||||||
|
|
||||||
// this script serves as a bridge between the game script and the bluetooth plugin |
|
||||||
|
|
||||||
public class NetworkManager : MonoBehaviour { |
|
||||||
public static NetworkManager instance; // singleton |
|
||||||
|
|
||||||
// subscription and unsubscribe to events |
|
||||||
private void OnEnable() { |
|
||||||
BluetoothForAndroid.DeviceDisconnected += ExitGameScene; |
|
||||||
BluetoothForAndroid.ReceivedByteMessage += GetMessage; |
|
||||||
} |
|
||||||
private void OnDisable() { |
|
||||||
BluetoothForAndroid.DeviceDisconnected -= ExitGameScene; |
|
||||||
BluetoothForAndroid.ReceivedByteMessage -= GetMessage; |
|
||||||
} |
|
||||||
|
|
||||||
void Start() { |
|
||||||
if (instance == null) instance = this; // creating singleton |
|
||||||
} |
|
||||||
|
|
||||||
// data transfer protocol |
|
||||||
// you can come up with any protocol |
|
||||||
|
|
||||||
// message[0] == 0 - change position |
|
||||||
// message[0] == 1 - shot |
|
||||||
// message[0] == 2 - hit |
|
||||||
// message[0] == 3 - destroy tank |
|
||||||
// message[0] == 4 - return to starting posion |
|
||||||
// when a message is received, methods from the GameScene script are called |
|
||||||
// Information about which method to call is contained in the first byte of the array |
|
||||||
void GetMessage(byte[] message) { |
|
||||||
switch ((int)message[0]) { |
|
||||||
case 0: |
|
||||||
GameScene.instance.PutInBufferPosition(message); |
|
||||||
break; |
|
||||||
case 1: |
|
||||||
GameScene.instance.ShotEnemy(); |
|
||||||
break; |
|
||||||
case 2: |
|
||||||
GameScene.instance.HitByPlayer(message[1]); |
|
||||||
break; |
|
||||||
case 3: |
|
||||||
GameScene.instance.DestroyTankPlayer(); |
|
||||||
break; |
|
||||||
case 4: |
|
||||||
GameScene.instance.ReturnPlayerToStartingPosion(); |
|
||||||
break; |
|
||||||
default: |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
// message transfer |
|
||||||
public void WriteMessage(byte[] message) { |
|
||||||
BluetoothForAndroid.WriteMessage(message); |
|
||||||
} |
|
||||||
// go to menu and disconnect |
|
||||||
public void ExitGameScene() { |
|
||||||
BluetoothForAndroid.Disconnect(); |
|
||||||
SceneManager.LoadScene(0); |
|
||||||
} |
|
||||||
// converting float to byte array and back from byte array to float |
|
||||||
public byte[] FloatToBytes(float f) { |
|
||||||
byte[] bytes = BitConverter.GetBytes(f); |
|
||||||
return bytes; |
|
||||||
} |
|
||||||
public float BytesToFloat(byte[] bytes) { |
|
||||||
float f = BitConverter.ToSingle(bytes, 0); |
|
||||||
return f; |
|
||||||
} |
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 7cc3a4cce05ad5c459f3424cb3d519ee |
|
||||||
timeCreated: 1550409650 |
|
||||||
licenseType: Store |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 380 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: b5f03b7cbd0d5e04b88ee736cbf45ab8 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
Before Width: | Height: | Size: 320 B |
@ -1,92 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: be512834820d5374daee427f5415a41f |
|
||||||
TextureImporter: |
|
||||||
internalIDToNameTable: [] |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 11 |
|
||||||
mipmaps: |
|
||||||
mipMapMode: 0 |
|
||||||
enableMipMap: 0 |
|
||||||
sRGBTexture: 1 |
|
||||||
linearTexture: 0 |
|
||||||
fadeOut: 0 |
|
||||||
borderMipMap: 0 |
|
||||||
mipMapsPreserveCoverage: 0 |
|
||||||
alphaTestReferenceValue: 0.5 |
|
||||||
mipMapFadeDistanceStart: 1 |
|
||||||
mipMapFadeDistanceEnd: 3 |
|
||||||
bumpmap: |
|
||||||
convertToNormalMap: 0 |
|
||||||
externalNormalMap: 0 |
|
||||||
heightScale: 0.25 |
|
||||||
normalMapFilter: 0 |
|
||||||
isReadable: 0 |
|
||||||
streamingMipmaps: 0 |
|
||||||
streamingMipmapsPriority: 0 |
|
||||||
grayScaleToAlpha: 0 |
|
||||||
generateCubemap: 6 |
|
||||||
cubemapConvolution: 0 |
|
||||||
seamlessCubemap: 0 |
|
||||||
textureFormat: 1 |
|
||||||
maxTextureSize: 2048 |
|
||||||
textureSettings: |
|
||||||
serializedVersion: 2 |
|
||||||
filterMode: 1 |
|
||||||
aniso: 1 |
|
||||||
mipBias: 0 |
|
||||||
wrapU: 1 |
|
||||||
wrapV: 1 |
|
||||||
wrapW: 1 |
|
||||||
nPOTScale: 0 |
|
||||||
lightmap: 0 |
|
||||||
compressionQuality: 50 |
|
||||||
spriteMode: 1 |
|
||||||
spriteExtrude: 1 |
|
||||||
spriteMeshType: 1 |
|
||||||
alignment: 0 |
|
||||||
spritePivot: {x: 0.5, y: 0.5} |
|
||||||
spritePixelsToUnits: 100 |
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|
||||||
spriteGenerateFallbackPhysicsShape: 1 |
|
||||||
alphaUsage: 1 |
|
||||||
alphaIsTransparency: 1 |
|
||||||
spriteTessellationDetail: -1 |
|
||||||
textureType: 8 |
|
||||||
textureShape: 1 |
|
||||||
singleChannelComponent: 0 |
|
||||||
maxTextureSizeSet: 0 |
|
||||||
compressionQualitySet: 0 |
|
||||||
textureFormatSet: 0 |
|
||||||
applyGammaDecoding: 1 |
|
||||||
platformSettings: |
|
||||||
- serializedVersion: 3 |
|
||||||
buildTarget: DefaultTexturePlatform |
|
||||||
maxTextureSize: 2048 |
|
||||||
resizeAlgorithm: 0 |
|
||||||
textureFormat: -1 |
|
||||||
textureCompression: 1 |
|
||||||
compressionQuality: 50 |
|
||||||
crunchedCompression: 0 |
|
||||||
allowsAlphaSplitting: 0 |
|
||||||
overridden: 0 |
|
||||||
androidETC2FallbackOverride: 0 |
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 1 |
|
||||||
spriteSheet: |
|
||||||
serializedVersion: 2 |
|
||||||
sprites: [] |
|
||||||
outline: [] |
|
||||||
physicsShape: [] |
|
||||||
bones: [] |
|
||||||
spriteID: 5e97eb03825dee720800000000000000 |
|
||||||
internalID: 0 |
|
||||||
vertices: [] |
|
||||||
indices: |
|
||||||
edges: [] |
|
||||||
weights: [] |
|
||||||
secondaryTextures: [] |
|
||||||
spritePackingTag: |
|
||||||
pSDRemoveMatte: 0 |
|
||||||
pSDShowRemoveMatteOption: 0 |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
Before Width: | Height: | Size: 1.9 KiB |
@ -1,92 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 3efaee611ea0d004e8234e749d01f1ce |
|
||||||
TextureImporter: |
|
||||||
internalIDToNameTable: [] |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 11 |
|
||||||
mipmaps: |
|
||||||
mipMapMode: 0 |
|
||||||
enableMipMap: 0 |
|
||||||
sRGBTexture: 1 |
|
||||||
linearTexture: 0 |
|
||||||
fadeOut: 0 |
|
||||||
borderMipMap: 0 |
|
||||||
mipMapsPreserveCoverage: 0 |
|
||||||
alphaTestReferenceValue: 0.5 |
|
||||||
mipMapFadeDistanceStart: 1 |
|
||||||
mipMapFadeDistanceEnd: 3 |
|
||||||
bumpmap: |
|
||||||
convertToNormalMap: 0 |
|
||||||
externalNormalMap: 0 |
|
||||||
heightScale: 0.25 |
|
||||||
normalMapFilter: 0 |
|
||||||
isReadable: 0 |
|
||||||
streamingMipmaps: 0 |
|
||||||
streamingMipmapsPriority: 0 |
|
||||||
grayScaleToAlpha: 0 |
|
||||||
generateCubemap: 6 |
|
||||||
cubemapConvolution: 0 |
|
||||||
seamlessCubemap: 0 |
|
||||||
textureFormat: 1 |
|
||||||
maxTextureSize: 2048 |
|
||||||
textureSettings: |
|
||||||
serializedVersion: 2 |
|
||||||
filterMode: 1 |
|
||||||
aniso: 1 |
|
||||||
mipBias: 0 |
|
||||||
wrapU: 1 |
|
||||||
wrapV: 1 |
|
||||||
wrapW: 1 |
|
||||||
nPOTScale: 0 |
|
||||||
lightmap: 0 |
|
||||||
compressionQuality: 50 |
|
||||||
spriteMode: 1 |
|
||||||
spriteExtrude: 1 |
|
||||||
spriteMeshType: 1 |
|
||||||
alignment: 0 |
|
||||||
spritePivot: {x: 0.5, y: 0.5} |
|
||||||
spritePixelsToUnits: 100 |
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|
||||||
spriteGenerateFallbackPhysicsShape: 1 |
|
||||||
alphaUsage: 1 |
|
||||||
alphaIsTransparency: 1 |
|
||||||
spriteTessellationDetail: -1 |
|
||||||
textureType: 8 |
|
||||||
textureShape: 1 |
|
||||||
singleChannelComponent: 0 |
|
||||||
maxTextureSizeSet: 0 |
|
||||||
compressionQualitySet: 0 |
|
||||||
textureFormatSet: 0 |
|
||||||
applyGammaDecoding: 1 |
|
||||||
platformSettings: |
|
||||||
- serializedVersion: 3 |
|
||||||
buildTarget: DefaultTexturePlatform |
|
||||||
maxTextureSize: 2048 |
|
||||||
resizeAlgorithm: 0 |
|
||||||
textureFormat: -1 |
|
||||||
textureCompression: 1 |
|
||||||
compressionQuality: 50 |
|
||||||
crunchedCompression: 0 |
|
||||||
allowsAlphaSplitting: 0 |
|
||||||
overridden: 0 |
|
||||||
androidETC2FallbackOverride: 0 |
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 1 |
|
||||||
spriteSheet: |
|
||||||
serializedVersion: 2 |
|
||||||
sprites: [] |
|
||||||
outline: [] |
|
||||||
physicsShape: [] |
|
||||||
bones: [] |
|
||||||
spriteID: 5e97eb03825dee720800000000000000 |
|
||||||
internalID: 0 |
|
||||||
vertices: [] |
|
||||||
indices: |
|
||||||
edges: [] |
|
||||||
weights: [] |
|
||||||
secondaryTextures: [] |
|
||||||
spritePackingTag: |
|
||||||
pSDRemoveMatte: 0 |
|
||||||
pSDShowRemoveMatteOption: 0 |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: ec221ccc78c4b2b42b2ee64cef1fdc0c |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017188 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: b69edb1f310e31f4bacc80c9dc0f975a |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 5ee912e5d6c228c4da0b2ca1d53a001e |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 9a4a6df4565d3d84bb65ea370579254f |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,168 +0,0 @@ |
|||||||
using UnityEngine; |
|
||||||
using UnityEngine.UI; |
|
||||||
using SVSBluetooth; |
|
||||||
using System.Text; |
|
||||||
|
|
||||||
public class Interface : MonoBehaviour { |
|
||||||
public Image image; // a picture that displays the status of the bluetooth adapter upon request |
|
||||||
public Text textField; // field for displaying messages and events |
|
||||||
const string MY_UUID = "0b7062bc-67cb-492b-9879-09bf2c7012b2"; // UUID constant which is set via script |
|
||||||
//00001101-0000-1000-8000-00805F9B34FB for arduino |
|
||||||
|
|
||||||
BluetoothForAndroid.BTDevice[] devices; |
|
||||||
string lastConnectedDeviceAddress; |
|
||||||
|
|
||||||
// subscription and unsubscribe from events. You can read more about events in Documentation.pdf |
|
||||||
private void OnEnable() { |
|
||||||
Screen.sleepTimeout = SleepTimeout.NeverSleep; |
|
||||||
BluetoothForAndroid.ReceivedIntMessage += PrintVal1; |
|
||||||
BluetoothForAndroid.ReceivedFloatMessage += PrintVal2; |
|
||||||
BluetoothForAndroid.ReceivedStringMessage += PrintVal3; |
|
||||||
BluetoothForAndroid.ReceivedByteMessage += PrintVal4; |
|
||||||
|
|
||||||
BluetoothForAndroid.BtAdapterEnabled += PrintEvent1; |
|
||||||
BluetoothForAndroid.BtAdapterDisabled += PrintEvent2; |
|
||||||
BluetoothForAndroid.DeviceConnected += PrintEvent3; |
|
||||||
BluetoothForAndroid.DeviceDisconnected += PrintEvent4; |
|
||||||
BluetoothForAndroid.ServerStarted += PrintEvent5; |
|
||||||
BluetoothForAndroid.ServerStopped += PrintEvent6; |
|
||||||
BluetoothForAndroid.AttemptConnectToServer += PrintEvent7; |
|
||||||
BluetoothForAndroid.FailConnectToServer += PrintEvent8; |
|
||||||
|
|
||||||
BluetoothForAndroid.DeviceSelected += PrintDeviceData; |
|
||||||
} |
|
||||||
private void OnDisable() { |
|
||||||
BluetoothForAndroid.ReceivedIntMessage -= PrintVal1; |
|
||||||
BluetoothForAndroid.ReceivedFloatMessage -= PrintVal2; |
|
||||||
BluetoothForAndroid.ReceivedStringMessage -= PrintVal3; |
|
||||||
BluetoothForAndroid.ReceivedByteMessage -= PrintVal4; |
|
||||||
|
|
||||||
BluetoothForAndroid.BtAdapterEnabled -= PrintEvent1; |
|
||||||
BluetoothForAndroid.BtAdapterDisabled -= PrintEvent2; |
|
||||||
BluetoothForAndroid.DeviceConnected -= PrintEvent3; |
|
||||||
BluetoothForAndroid.DeviceDisconnected -= PrintEvent4; |
|
||||||
BluetoothForAndroid.ServerStarted -= PrintEvent5; |
|
||||||
BluetoothForAndroid.ServerStopped -= PrintEvent6; |
|
||||||
BluetoothForAndroid.AttemptConnectToServer -= PrintEvent7; |
|
||||||
BluetoothForAndroid.FailConnectToServer -= PrintEvent8; |
|
||||||
|
|
||||||
BluetoothForAndroid.DeviceSelected -= PrintDeviceData; |
|
||||||
} |
|
||||||
|
|
||||||
// Initially, always initialize the plugin. |
|
||||||
public void Initialize() { |
|
||||||
BluetoothForAndroid.Initialize(); |
|
||||||
} |
|
||||||
|
|
||||||
// methods for controlling the bluetooth and getting its state |
|
||||||
public void GetBluetoothStatus() { |
|
||||||
if (BluetoothForAndroid.IsBTEnabled()) image.color = Color.green; |
|
||||||
else image.color = Color.red; |
|
||||||
} |
|
||||||
public void EnableBT() { |
|
||||||
BluetoothForAndroid.EnableBT(); |
|
||||||
} |
|
||||||
public void DisableBT() { |
|
||||||
BluetoothForAndroid.DisableBT(); |
|
||||||
} |
|
||||||
|
|
||||||
// methods for creating and stopping the server, connecting to the server and disconnecting |
|
||||||
public void CreateServer() { |
|
||||||
BluetoothForAndroid.CreateServer(MY_UUID); |
|
||||||
} |
|
||||||
public void StopServer() { |
|
||||||
BluetoothForAndroid.StopServer(); |
|
||||||
} |
|
||||||
public void ConnectToServer() { |
|
||||||
BluetoothForAndroid.ConnectToServer(MY_UUID); |
|
||||||
} |
|
||||||
public void Disconnect() { |
|
||||||
BluetoothForAndroid.Disconnect(); |
|
||||||
} |
|
||||||
public void ConnectToServerByAddress() { |
|
||||||
if (devices != null) { |
|
||||||
if (devices[0].address != "none") BluetoothForAndroid.ConnectToServerByAddress(MY_UUID, devices[0].address); |
|
||||||
} |
|
||||||
} |
|
||||||
public void ConnectToLastServer() { |
|
||||||
if (lastConnectedDeviceAddress != null) BluetoothForAndroid.ConnectToServerByAddress(MY_UUID, lastConnectedDeviceAddress); |
|
||||||
} |
|
||||||
|
|
||||||
// methods for sending messages of various types |
|
||||||
public void WriteMessage1() { |
|
||||||
BluetoothForAndroid.WriteMessage(15); |
|
||||||
} |
|
||||||
public void WriteMessage2() { |
|
||||||
BluetoothForAndroid.WriteMessage(100.69f); |
|
||||||
} |
|
||||||
public void WriteMessage3() { |
|
||||||
BluetoothForAndroid.WriteMessage("Hi !!!"); |
|
||||||
} |
|
||||||
public void WriteMessage4() { |
|
||||||
BluetoothForAndroid.WriteMessage(new byte[] { 0, 1, 2, 3, 4, 5 }); |
|
||||||
} |
|
||||||
|
|
||||||
// methods for displaying received messages on the screen |
|
||||||
void PrintVal1(int val) { |
|
||||||
textField.text += val.ToString() + "\n"; |
|
||||||
} |
|
||||||
void PrintVal2(float val) { |
|
||||||
textField.text += val.ToString() + "\n"; |
|
||||||
} |
|
||||||
void PrintVal3(string val) { |
|
||||||
textField.text += val + "\n"; |
|
||||||
} |
|
||||||
void PrintVal4(byte[] val) { |
|
||||||
foreach (var item in val) { |
|
||||||
textField.text += item; |
|
||||||
} |
|
||||||
textField.text += "\n"; |
|
||||||
} |
|
||||||
public void GetBondedDevices() { |
|
||||||
devices = BluetoothForAndroid.GetBondedDevices(); |
|
||||||
if (devices != null) { |
|
||||||
for (int i = 0; i < devices.Length; i++) { |
|
||||||
textField.text += devices[i].name + " "; |
|
||||||
textField.text += devices[i].address; |
|
||||||
textField.text += "\n"; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// methods for displaying events on the screen |
|
||||||
void PrintEvent1() { |
|
||||||
textField.text += "Adapter enabled" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent2() { |
|
||||||
textField.text += "Adapter disabled" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent3() { |
|
||||||
textField.text += "The device is connected" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent4() { |
|
||||||
textField.text += "Device lost connection" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent5() { |
|
||||||
textField.text += "Server is running" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent6() { |
|
||||||
textField.text += "Server stopped" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent7() { |
|
||||||
textField.text += "Attempt to connect to server" + "\n"; |
|
||||||
} |
|
||||||
void PrintEvent8() { |
|
||||||
textField.text += "Connection to the server failed" + "\n"; |
|
||||||
} |
|
||||||
void PrintDeviceData(string deviceData) { |
|
||||||
string[] btDevice = deviceData.Split(new char[] { ',' }); |
|
||||||
textField.text += btDevice[0] + " "; |
|
||||||
textField.text += btDevice[1] + "\n"; |
|
||||||
lastConnectedDeviceAddress = btDevice[1]; |
|
||||||
} |
|
||||||
|
|
||||||
// method for cleaning the log |
|
||||||
public void ClearLog() { |
|
||||||
textField.text = ""; |
|
||||||
} |
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 581b18b84bb3f024884100f13109f8a5 |
|
||||||
timeCreated: 1551017322 |
|
||||||
licenseType: Store |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
@ -1,10 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: acc77dbf5e6c54f45a2554804df77e61 |
|
||||||
folderAsset: yes |
|
||||||
timeCreated: 1551018793 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
Binary file not shown.
@ -1,9 +0,0 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: dad1a25031f10da43b6b42866927247b |
|
||||||
timeCreated: 1551018793 |
|
||||||
licenseType: Store |
|
||||||
DefaultImporter: |
|
||||||
externalObjects: {} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
Binary file not shown.
Loading…
Reference in new issue