added a json configuration file and uWindowCapture configuration
This commit is contained in:
parent
287248c0b8
commit
05f52c38a2
6
.gitignore
vendored
6
.gitignore
vendored
@ -60,3 +60,9 @@ crashlytics-build.properties
|
|||||||
|
|
||||||
# WACVR-specific
|
# WACVR-specific
|
||||||
uWindowCapture.log
|
uWindowCapture.log
|
||||||
|
|
||||||
|
# Visual Studio Code cache directory
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# Game configuration file
|
||||||
|
config.json
|
@ -19642,6 +19642,7 @@ GameObject:
|
|||||||
- component: {fileID: 4876933052092147598}
|
- component: {fileID: 4876933052092147598}
|
||||||
- component: {fileID: 1305037035229797219}
|
- component: {fileID: 1305037035229797219}
|
||||||
- component: {fileID: 1908947391}
|
- component: {fileID: 1908947391}
|
||||||
|
- component: {fileID: 4931218028133408142}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Plane
|
m_Name: Plane
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -26242,6 +26243,18 @@ Transform:
|
|||||||
m_Father: {fileID: 543450651832966738}
|
m_Father: {fileID: 543450651832966738}
|
||||||
m_RootOrder: 240
|
m_RootOrder: 240
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4931218028133408142
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2193423312523191491}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0ca064e37a912ac49a2b617a99d67189, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
--- !u!23 &4939662662149421075
|
--- !u!23 &4939662662149421075
|
||||||
MeshRenderer:
|
MeshRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
8
Assets/Script/Configuration.meta
Normal file
8
Assets/Script/Configuration.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0de9bd717f0719141be868c495dcf805
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
107
Assets/Script/Configuration/JsonConfiguration.cs
Normal file
107
Assets/Script/Configuration/JsonConfiguration.cs
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
public static class JsonConfiguration {
|
||||||
|
private static bool hasInitialized = false;
|
||||||
|
private static JObject config;
|
||||||
|
|
||||||
|
private static void ensureInitialization() {
|
||||||
|
if (hasInitialized) return;
|
||||||
|
|
||||||
|
loadFile();
|
||||||
|
|
||||||
|
hasInitialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string getFileName() {
|
||||||
|
return Application.dataPath + "/../config.json";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void saveFile() {
|
||||||
|
File.WriteAllText(getFileName(), config.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void loadFile() {
|
||||||
|
if (File.Exists(getFileName()))
|
||||||
|
config = JObject.Parse(File.ReadAllText(getFileName()));
|
||||||
|
else {
|
||||||
|
config = new JObject();
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DeleteAll() {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
config.RemoveAll();
|
||||||
|
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
public static void DeleteKey(string key) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
config.Remove(key);
|
||||||
|
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool HasKey(string key) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
return config.ContainsKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetBoolean(string key, bool boolean) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
config[key] = boolean;
|
||||||
|
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
public static void SetString(string key, string text) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
config[key] = text;
|
||||||
|
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
public static void SetInt(string key, int number) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
config[key] = number;
|
||||||
|
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
public static void SetDouble(string key, double number) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
config[key] = number;
|
||||||
|
|
||||||
|
saveFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GetBoolean(string key) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
return config.Value<bool>(key);
|
||||||
|
}
|
||||||
|
public static string GetString(string key) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
return config.Value<string>(key);
|
||||||
|
}
|
||||||
|
public static int GetInt(string key) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
return config.Value<int>(key);
|
||||||
|
}
|
||||||
|
public static double GetDouble(string key) {
|
||||||
|
ensureInitialization();
|
||||||
|
|
||||||
|
return config.Value<double>(key);
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Script/Configuration/JsonConfiguration.cs.meta
Normal file
11
Assets/Script/Configuration/JsonConfiguration.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1ac3a0e2569fb414f987646d98807ef9
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -37,7 +37,7 @@ public class HeightAdjuster : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
if (PlayerPrefs.HasKey("Height")) height = PlayerPrefs.GetFloat("Height");
|
if (JsonConfiguration.HasKey("Height")) height = JsonConfiguration.GetDouble("Height");
|
||||||
else SaveHeight();
|
else SaveHeight();
|
||||||
|
|
||||||
incrementButton.ButtonPressed += StartIncrementing;
|
incrementButton.ButtonPressed += StartIncrementing;
|
||||||
@ -82,6 +82,6 @@ public class HeightAdjuster : MonoBehaviour
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void SaveHeight() {
|
private void SaveHeight() {
|
||||||
PlayerPrefs.SetFloat("Height", (float) height);
|
JsonConfiguration.SetDouble("Height", height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,10 @@ public class PanelThirdPersonButton : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
|
||||||
cr = GetComponent<Renderer>();
|
cr = GetComponent<Renderer>();
|
||||||
|
|
||||||
SetTP(isTP);
|
if (JsonConfiguration.HasKey("ThirdPerson")) SetTP(JsonConfiguration.GetBoolean("ThirdPerson"));
|
||||||
|
else SetTP(isTP);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
private void OnTriggerEnter(Collider other)
|
||||||
@ -31,5 +31,7 @@ public class PanelThirdPersonButton : MonoBehaviour
|
|||||||
isTP = state;
|
isTP = state;
|
||||||
cr.material.color = state ? Color.green : Color.red;
|
cr.material.color = state ? Color.green : Color.red;
|
||||||
tpCamera?.SetActive(state);
|
tpCamera?.SetActive(state);
|
||||||
|
|
||||||
|
JsonConfiguration.SetBoolean("ThirdPerson", state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ public class SkyboxSwitcher : MonoBehaviour
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private List<Material> skyboxes;
|
private List<Material> skyboxes;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private int currentSkyboxIndex; // should start at 0
|
private int currentSkyboxIndex = 0;
|
||||||
|
|
||||||
[Header("Components")]
|
[Header("Components")]
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
@ -28,6 +28,9 @@ public class SkyboxSwitcher : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
if (JsonConfiguration.HasKey("Skybox")) currentSkyboxIndex = JsonConfiguration.GetInt("Skybox");
|
||||||
|
else SaveSkyboxIndex();
|
||||||
|
|
||||||
incrementBtn.ButtonPressed += IncrementEvent;
|
incrementBtn.ButtonPressed += IncrementEvent;
|
||||||
decrementBtn.ButtonPressed += DecrementEvent;
|
decrementBtn.ButtonPressed += DecrementEvent;
|
||||||
|
|
||||||
@ -71,6 +74,8 @@ public class SkyboxSwitcher : MonoBehaviour
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetSkybox();
|
||||||
//foreach (var file in hdrFiles) // HDR files -- no way to use by scripting?
|
//foreach (var file in hdrFiles) // HDR files -- no way to use by scripting?
|
||||||
//{
|
//{
|
||||||
// var uwr = UnityWebRequest.Get(file.ToString());
|
// var uwr = UnityWebRequest.Get(file.ToString());
|
||||||
@ -119,7 +124,13 @@ public class SkyboxSwitcher : MonoBehaviour
|
|||||||
private void SetSkybox()
|
private void SetSkybox()
|
||||||
{
|
{
|
||||||
counterTxt.text = (currentSkyboxIndex + 1).ToString();
|
counterTxt.text = (currentSkyboxIndex + 1).ToString();
|
||||||
if (skyboxes[currentSkyboxIndex] != null)
|
if (currentSkyboxIndex < skyboxes.Count && skyboxes[currentSkyboxIndex] != null)
|
||||||
RenderSettings.skybox = skyboxes[currentSkyboxIndex];
|
RenderSettings.skybox = skyboxes[currentSkyboxIndex];
|
||||||
|
SaveSkyboxIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveSkyboxIndex()
|
||||||
|
{
|
||||||
|
JsonConfiguration.SetInt("Skybox", currentSkyboxIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
30
Assets/Script/UwcConfigurator.cs
Normal file
30
Assets/Script/UwcConfigurator.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System;
|
||||||
|
using uWindowCapture;
|
||||||
|
|
||||||
|
public class UwcConfigurator : MonoBehaviour {
|
||||||
|
private UwcWindowTexture uwcWindowTexture;
|
||||||
|
|
||||||
|
void Start() {
|
||||||
|
uwcWindowTexture = GetComponent<UwcWindowTexture>();
|
||||||
|
|
||||||
|
if (JsonConfiguration.HasKey("CaptureMode")) {
|
||||||
|
int rawCaptureMode = JsonConfiguration.GetInt("CaptureMode");
|
||||||
|
|
||||||
|
if (rawCaptureMode > 3 || rawCaptureMode < 0) {
|
||||||
|
JsonConfiguration.SetInt("CaptureMode", (int) uwcWindowTexture.captureMode);
|
||||||
|
} else
|
||||||
|
uwcWindowTexture.captureMode = (CaptureMode) JsonConfiguration.GetInt("CaptureMode");
|
||||||
|
} else
|
||||||
|
JsonConfiguration.SetInt("CaptureMode", (int) uwcWindowTexture.captureMode);
|
||||||
|
|
||||||
|
if (JsonConfiguration.HasKey("CaptureFramerate"))
|
||||||
|
uwcWindowTexture.captureFrameRate = JsonConfiguration.GetInt("CaptureFramerate");
|
||||||
|
else
|
||||||
|
JsonConfiguration.SetInt("CaptureFramerate", uwcWindowTexture.captureFrameRate);
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Script/UwcConfigurator.cs.meta
Normal file
11
Assets/Script/UwcConfigurator.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ca064e37a912ac49a2b617a99d67189
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -137,6 +137,8 @@ PlayerSettings:
|
|||||||
bundleVersion: 0.1.1
|
bundleVersion: 0.1.1
|
||||||
preloadedAssets:
|
preloadedAssets:
|
||||||
- {fileID: 11400000, guid: 74eeb7429f216ca45a7093c586513e98, type: 2}
|
- {fileID: 11400000, guid: 74eeb7429f216ca45a7093c586513e98, type: 2}
|
||||||
|
- {fileID: -6265376527240436808, guid: 5e2dc0db42cc5b3459a781fecb0b76f9, type: 2}
|
||||||
|
- {fileID: -6348321304186183749, guid: 6460523340b221f4ea5611d2c011a26c, type: 2}
|
||||||
metroInputSource: 0
|
metroInputSource: 0
|
||||||
wsaTransparentSwapchain: 0
|
wsaTransparentSwapchain: 0
|
||||||
m_HolographicPauseOnTrackingLoss: 1
|
m_HolographicPauseOnTrackingLoss: 1
|
||||||
|
19
README.md
19
README.md
@ -1,18 +1,37 @@
|
|||||||
# WACVR
|
# WACVR
|
||||||
|
|
||||||
A VR arcade emulator
|
A VR arcade emulator
|
||||||
|
|
||||||
## Current stage
|
## Current stage
|
||||||
|
|
||||||
- Successfully started the game itself
|
- Successfully started the game itself
|
||||||
- Successfully initialized touch
|
- Successfully initialized touch
|
||||||
- Successfully send touch signal
|
- Successfully send touch signal
|
||||||
- Successfully enabled Freeplay and tested the touch signal in game
|
- Successfully enabled Freeplay and tested the touch signal in game
|
||||||
|
|
||||||
## Current issue
|
## Current issue
|
||||||
|
|
||||||
- None!
|
- None!
|
||||||
|
|
||||||
## Quick guide
|
## Quick guide
|
||||||
|
|
||||||
- Port binding is same as my other repo MaiDXR
|
- Port binding is same as my other repo MaiDXR
|
||||||
- add "[touch] enable=0" to ini file
|
- add "[touch] enable=0" to ini file
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
A ``config.json`` is automatically created in the WACVR root on startup
|
||||||
|
|
||||||
|
- ``Skybox``: the current skybox selected for use (Default: 0)
|
||||||
|
- ``Height``: the offset from default height that the player is moved (Default: 0.0)
|
||||||
|
- ``ThirdPerson``: whether or not the camera is in third person (Default: true)
|
||||||
|
- ``CaptureMode``: the method uWindowCapture will use for window capture
|
||||||
|
- ``0``: PrintScreen
|
||||||
|
- ``1``: BitBlt
|
||||||
|
- ``2``: Windows Graphics Capture
|
||||||
|
- ``3``: Automatic (Recommended, Default)
|
||||||
|
- ``CaptureFramerate``: the framerate to capture the game at (Default: 60)
|
||||||
|
|
||||||
## Why this repo now?
|
## Why this repo now?
|
||||||
|
|
||||||
I don't have much time and enough skills to make this project by myself. I'm not familiar with Unreal Engine etc. So I want this project to be a community project.
|
I don't have much time and enough skills to make this project by myself. I'm not familiar with Unreal Engine etc. So I want this project to be a community project.
|
||||||
|
Loading…
Reference in New Issue
Block a user