Add tests
Modify syntax to be clearer
Add Query function
This commit is contained in:
Marc Di Luzio 2018-12-03 10:40:40 +00:00
parent a0e23300a5
commit e68b1a5214
23 changed files with 222 additions and 48 deletions

6
.gitignore vendored
View file

@ -38,3 +38,9 @@ sysinfo.txt
# Crashlytics generated file
Assets/StreamingAssets/crashlytics-build.properties
# IDEA files
.idea
# vim tmp files
*.swp

View file

@ -192,7 +192,7 @@ GameObject:
- component: {fileID: 1143534761}
- component: {fileID: 1143534760}
- component: {fileID: 1143534759}
- component: {fileID: 1143534758}
- component: {fileID: 1143534762}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
@ -200,18 +200,6 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1143534758
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1143534757}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a119dc90f88e78893b575c2c6fe4c866, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!81 &1143534759
AudioListener:
m_ObjectHideFlags: 0
@ -276,3 +264,15 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1143534762
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1143534757}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37e3f85ce68c6c2f186d5cf8cc78661a, type: 3}
m_Name:
m_EditorClassIdentifier:

View file

@ -1,28 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class LinuxGameMode : MonoBehaviour
{
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
[DllImport("UnityGameMode")]
private static extern int UnityEnterGameMode();
[DllImport("UnityGameMode")]
private static extern int UnityExitGameMode();
#endif
private void Start()
{
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
UnityEnterGameMode();
#endif
}
private void End()
{
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
UnityExitGameMode();
#endif
}
}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: da6cb113744887d629850cb8dce05b10
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8fe847eedc5778747a5be0ecd8904676
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: 7d84d2d22a9787157af526ae74b0d0da
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,42 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class LinuxGameMode : MonoBehaviour
{
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
// Import functions from native lib
[DllImport("UnityGameMode")]
public static extern int GameModeRequestStart();
[DllImport("UnityGameMode")]
public static extern int GameModeRequestEnd();
[DllImport("UnityGameMode")]
public static extern int GameModeQueryStatus();
private void Start()
{
Debug.Log("Requesting Linux GameMode Start");
var ret = GameModeRequestStart();
if (ret != 0)
{
Debug.Log($"Linux GameMode Start Failed: #{ret}");
}
}
private void OnApplicationQuit()
{
Debug.Log("Requesting Linux GameMode End");
var ret = GameModeRequestEnd();
if (ret != 0)
{
Debug.Log($"Linux GameMode End failed: #{ret}");
}
}
#else
public static int GameModeRequestStart() { return 0; }
public static int GameModeRequestEnd() { return 0; }
public static int GameModeQueryStatus() { return 0; }
#endif // UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
}

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a119dc90f88e78893b575c2c6fe4c866
guid: 37e3f85ce68c6c2f186d5cf8cc78661a
MonoImporter:
externalObjects: {}
serializedVersion: 2

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 861cc3c09d2156d259770af563e138ee
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,42 @@
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
#if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX
namespace Tests
{
public class LinuxGameModeTests
{
[Test]
public void GameModeRequestStartWorks()
{
var ret = LinuxGameMode.GameModeRequestStart();
Assert.IsTrue( ret == 0 );
}
[Test]
public void GameModeRequestEndWorks()
{
var ret = LinuxGameMode.GameModeRequestStart();
Assert.IsTrue( ret == 0 );
ret = LinuxGameMode.GameModeRequestEnd();
Assert.IsTrue( ret == 0 );
}
[Test]
public void GameModeGameModeQueryStatusWorks()
{
var ret = LinuxGameMode.GameModeRequestStart();
Assert.IsTrue( ret == 0 );
ret = LinuxGameMode.GameModeQueryStatus();
Assert.IsTrue( ret == 2 );
ret = LinuxGameMode.GameModeRequestEnd();
Assert.IsTrue( ret == 0 );
}
}
}
#endif

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 10924db4abe9770f4afcae590ef633b4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,16 @@
{
"name": "Tests",
"references": [
"UnityGameMode"
],
"optionalUnityReferences": [
"TestAssemblies"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": []
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 988460cbe66440da5957c2009cf1716c
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,3 @@
{
"name": "UnityGameMode"
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b64a5e540ca9753878ce248d3c605b90
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,2 +1,3 @@
#!/bin/bash
g++ unitygamemode.c -shared -ldl -o libUnityGameMode.so
nm -C libUnityGameMode.so | grep GameMode

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 034bb0da8726741ad84b3f98590ac9b9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,9 +1,13 @@
#include "gamemode_client.h"
extern "C" int UnityEnterGameMode() {
gamemode_request_start();
extern "C" int GameModeRequestStart() {
return gamemode_request_start();
}
extern "C" int UnityExitGameMode() {
gamemode_request_end();
extern "C" int GameModeRequestEnd() {
return gamemode_request_end();
}
extern "C" int GameModeQueryStatus() {
return gamemode_query_status();
}

View file

@ -6,6 +6,6 @@ EditorBuildSettings:
serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/BaseScene.unity
path: Assets/ExampleScene.unity
guid: 507495ce39e9816769b71a30e39d443e
m_configObjects: {}

View file

@ -68,7 +68,7 @@ PlayerSettings:
androidBlitType: 0
defaultIsNativeResolution: 1
macRetinaSupport: 1
runInBackground: 0
runInBackground: 1
captureSingleScreen: 0
muteOtherAudioSources: 0
Prepare IOS For Recording: 0