Add : 치요 촬영용 배경 파일 업데이트 Vrm 파일 다운그레이드
This commit is contained in:
parent
8c1c0376cd
commit
770fc70fd9
BIN
Assets/External/EVMC4U/3rdpartylicenses(ExternalReceiverPack).txt
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/3rdpartylicenses(ExternalReceiverPack).txt
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9402b207048258649b4b1c0580e1b73b
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
193
Assets/External/EVMC4U/CameraReceiver.cs
vendored
193
Assets/External/EVMC4U/CameraReceiver.cs
vendored
@ -1,193 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable 0414,0219
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class CameraReceiver : MonoBehaviour, IExternalReceiver
|
||||
{
|
||||
[Header("CameraReceiver v1.1")]
|
||||
[SerializeField, Label("VMCカメラ制御同期Camera")]
|
||||
public Camera VMCControlledCamera = null; //VMCカメラ制御同期
|
||||
[SerializeField, Label("動作状況")]
|
||||
private string StatusMessage = ""; //Inspector表示用
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("カメラ手ブレ補正フィルタ")]
|
||||
#else
|
||||
[Header("Lowpass Filter Option")]
|
||||
#endif
|
||||
[SerializeField, Label("カメラ位置フィルタ(手ブレ補正)")]
|
||||
public bool CameraPositionFilterEnable = false; //カメラ位置フィルタ(手ブレ補正)
|
||||
[SerializeField, Label("カメラ回転フィルタ(手ブレ補正)")]
|
||||
public bool CameraRotationFilterEnable = false; //カメラ回転フィルタ(手ブレ補正)
|
||||
[SerializeField, Label("カメラフィルタ係数")]
|
||||
public float CameraFilter = 0.95f; //カメラフィルタ係数
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("デイジーチェーン")]
|
||||
#else
|
||||
[Header("Daisy Chain")]
|
||||
#endif
|
||||
public GameObject[] NextReceivers = new GameObject[1];
|
||||
|
||||
private ExternalReceiverManager externalReceiverManager = null;
|
||||
bool shutdown = false;
|
||||
|
||||
private Vector3 cameraPosFilter = Vector3.zero;
|
||||
private Quaternion cameraRotFilter = Quaternion.identity;
|
||||
|
||||
//メッセージ処理一時変数struct(負荷対策)
|
||||
//Vector3 pos;
|
||||
//Quaternion rot;
|
||||
|
||||
//カメラ情報のキャッシュ
|
||||
Vector3 cameraPos = Vector3.zero;
|
||||
Quaternion cameraRot = Quaternion.identity;
|
||||
float fov = 0;
|
||||
|
||||
void Start()
|
||||
{
|
||||
externalReceiverManager = new ExternalReceiverManager(NextReceivers);
|
||||
StatusMessage = "Waiting for Master...";
|
||||
}
|
||||
|
||||
//デイジーチェーンを更新
|
||||
public void UpdateDaisyChain()
|
||||
{
|
||||
externalReceiverManager.GetIExternalReceiver(NextReceivers);
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
//カメラがセットされているならば
|
||||
if (VMCControlledCamera != null && VMCControlledCamera.transform != null && fov != 0)
|
||||
{
|
||||
CameraFilter = Mathf.Clamp(CameraFilter, 0f, 1f);
|
||||
|
||||
//カメラ移動フィルタ
|
||||
if (CameraPositionFilterEnable)
|
||||
{
|
||||
cameraPosFilter = (cameraPosFilter * CameraFilter) + cameraPos * (1.0f - CameraFilter);
|
||||
VMCControlledCamera.transform.localPosition = cameraPosFilter;
|
||||
}
|
||||
else
|
||||
{
|
||||
VMCControlledCamera.transform.localPosition = cameraPos;
|
||||
}
|
||||
//カメラ回転フィルタ
|
||||
if (CameraRotationFilterEnable)
|
||||
{
|
||||
cameraRotFilter = Quaternion.Slerp(cameraRotFilter, cameraRot, 1.0f - CameraFilter);
|
||||
VMCControlledCamera.transform.localRotation = cameraRotFilter;
|
||||
}
|
||||
else
|
||||
{
|
||||
VMCControlledCamera.transform.localRotation = cameraRot;
|
||||
}
|
||||
//FOV同期
|
||||
VMCControlledCamera.fieldOfView = fov;
|
||||
}
|
||||
}
|
||||
|
||||
public void MessageDaisyChain(ref uOSC.Message message, int callCount)
|
||||
{
|
||||
//Startされていない場合無視
|
||||
if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (shutdown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StatusMessage = "OK";
|
||||
|
||||
//異常を検出して動作停止
|
||||
try
|
||||
{
|
||||
ProcessMessage(ref message);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
StatusMessage = "Error: Exception";
|
||||
Debug.LogError(" --- Communication Error ---");
|
||||
Debug.LogError(e.ToString());
|
||||
shutdown = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!externalReceiverManager.SendNextReceivers(message, callCount))
|
||||
{
|
||||
StatusMessage = "Infinite loop detected!";
|
||||
shutdown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessMessage(ref uOSC.Message message)
|
||||
{
|
||||
//メッセージアドレスがない、あるいはメッセージがない不正な形式の場合は処理しない
|
||||
if (message.address == null || message.values == null)
|
||||
{
|
||||
StatusMessage = "Bad message.";
|
||||
return;
|
||||
}
|
||||
|
||||
//カメラ姿勢FOV同期 v2.1
|
||||
if (message.address == "/VMC/Ext/Cam"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
&& (message.values[8] is float)
|
||||
)
|
||||
{
|
||||
cameraPos.x = (float)message.values[1];
|
||||
cameraPos.y = (float)message.values[2];
|
||||
cameraPos.z = (float)message.values[3];
|
||||
cameraRot.x = (float)message.values[4];
|
||||
cameraRot.y = (float)message.values[5];
|
||||
cameraRot.z = (float)message.values[6];
|
||||
cameraRot.w = (float)message.values[7];
|
||||
fov = (float)message.values[8];
|
||||
//受信と更新のタイミングは切り離した
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
256
Assets/External/EVMC4U/CommunicationValidator.cs
vendored
256
Assets/External/EVMC4U/CommunicationValidator.cs
vendored
@ -1,256 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable 0414,0219
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class CommunicationValidator : MonoBehaviour, IExternalReceiver
|
||||
{
|
||||
[Header("CommunicationValidator v1.2")]
|
||||
[SerializeField, Label("動作状況")]
|
||||
private string StatusMessage = ""; //Inspector表示用
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("UI オプション")]
|
||||
#else
|
||||
[Header("UI Option")]
|
||||
#endif
|
||||
[SerializeField, Label("画面上に表示する")]
|
||||
public bool ShowInformation = false;
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("状態モニタ(表示用)")]
|
||||
#else
|
||||
[Header("Status Monitor(Read only)")]
|
||||
#endif
|
||||
[SerializeField, Label("受信処理再帰呼出し回数")]
|
||||
private int CallCountMonitor = 0; //Inspector表示用
|
||||
|
||||
[SerializeField, Label("利用可能")]
|
||||
public int Available = 0;
|
||||
[SerializeField, Label("送信側Time")]
|
||||
public float time = 0;
|
||||
|
||||
[SerializeField, Label("キャリブレーション状態")]
|
||||
public CalibrationState calibrationState = 0;
|
||||
[SerializeField, Label("キャリブレーションモード")]
|
||||
public CalibrationMode calibrationMode = 0;
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("送信側受信状態(表示用)")]
|
||||
#else
|
||||
[Header("Receive Status(Read only)")]
|
||||
#endif
|
||||
[SerializeField, Label("受信許可")]
|
||||
public bool ReceiveEnable = false;
|
||||
[SerializeField, Label("受信ポート")]
|
||||
public int ReceivePort = 0;
|
||||
[SerializeField, Label("読み込み済み設定ファイルパス")]
|
||||
public string LoadedConfigPath = "";
|
||||
[SerializeField, Label("背景色")]
|
||||
public Color backgroundColor = Color.clear;
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("送信側ウィンドウ属性情報")]
|
||||
#else
|
||||
[Header("Window Attribute Info(Read only)")]
|
||||
#endif
|
||||
[SerializeField, Label("最前面")]
|
||||
public bool IsTopMost = false;
|
||||
[SerializeField, Label("透過")]
|
||||
public bool IsTransparent = false;
|
||||
[SerializeField, Label("クリックスルー")]
|
||||
public bool WindowClickThrough = false;
|
||||
[SerializeField, Label("枠なし")]
|
||||
public bool HideBorder = false;
|
||||
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("デイジーチェーン")]
|
||||
#else
|
||||
[Header("Daisy Chain")]
|
||||
#endif
|
||||
public GameObject[] NextReceivers = new GameObject[1];
|
||||
|
||||
private ExternalReceiverManager externalReceiverManager = null;
|
||||
bool shutdown = false;
|
||||
|
||||
readonly Rect rect1 = new Rect(0, 0, 120, 70);
|
||||
readonly Rect rect2 = new Rect(10, 20, 100, 30);
|
||||
readonly Rect rect3 = new Rect(10, 40, 100, 300);
|
||||
|
||||
void Start()
|
||||
{
|
||||
externalReceiverManager = new ExternalReceiverManager(NextReceivers);
|
||||
StatusMessage = "Waiting for Master...";
|
||||
}
|
||||
|
||||
//デイジーチェーンを更新
|
||||
public void UpdateDaisyChain()
|
||||
{
|
||||
externalReceiverManager.GetIExternalReceiver(NextReceivers);
|
||||
}
|
||||
|
||||
int GetAvailable()
|
||||
{
|
||||
return Available;
|
||||
}
|
||||
|
||||
float GetRemoteTime()
|
||||
{
|
||||
return time;
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
if (ShowInformation)
|
||||
{
|
||||
GUI.TextField(rect1, "ExternalReceiver");
|
||||
GUI.Label(rect2, "Available: " + GetAvailable());
|
||||
GUI.Label(rect3, "Time: " + GetRemoteTime());
|
||||
}
|
||||
}
|
||||
|
||||
public void MessageDaisyChain(ref uOSC.Message message, int callCount)
|
||||
{
|
||||
//Startされていない場合無視
|
||||
if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (shutdown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CallCountMonitor = callCount;
|
||||
StatusMessage = "OK";
|
||||
|
||||
//異常を検出して動作停止
|
||||
try
|
||||
{
|
||||
ProcessMessage(ref message);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
StatusMessage = "Error: Exception";
|
||||
Debug.LogError(" --- Communication Error ---");
|
||||
Debug.LogError(e.ToString());
|
||||
shutdown = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!externalReceiverManager.SendNextReceivers(message, callCount))
|
||||
{
|
||||
StatusMessage = "Infinite loop detected!";
|
||||
shutdown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessMessage(ref uOSC.Message message)
|
||||
{
|
||||
//メッセージアドレスがない、あるいはメッセージがない不正な形式の場合は処理しない
|
||||
if (message.address == null || message.values == null)
|
||||
{
|
||||
StatusMessage = "Bad message.";
|
||||
return;
|
||||
}
|
||||
|
||||
if (message.address == "/VMC/Ext/OK"
|
||||
&& (message.values[0] is int))
|
||||
{
|
||||
Available = (int)message.values[0];
|
||||
if (Available == 0)
|
||||
{
|
||||
StatusMessage = "Waiting for [Load VRM]";
|
||||
}
|
||||
else {
|
||||
StatusMessage = "OK";
|
||||
}
|
||||
|
||||
//V2.5 キャリブレーション状態(長さ3以上)
|
||||
if (message.values.Length >= 3)
|
||||
{
|
||||
if ((message.values[1] is int) && (message.values[2] is int))
|
||||
{
|
||||
calibrationState = (CalibrationState)message.values[1];
|
||||
calibrationMode = (CalibrationMode)message.values[2];
|
||||
}
|
||||
}
|
||||
}
|
||||
//データ送信時刻
|
||||
else if (message.address == "/VMC/Ext/T"
|
||||
&& (message.values[0] is float))
|
||||
{
|
||||
time = (float)message.values[0];
|
||||
}
|
||||
//V2.4 受信情報
|
||||
else if (message.address == "/VMC/Ext/Rcv"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is int))
|
||||
{
|
||||
ReceiveEnable = (int)message.values[0] != 0;
|
||||
ReceivePort = (int)message.values[1];
|
||||
}
|
||||
//V2.4 背景色情報
|
||||
else if (message.address == "/VMC/Ext/Setting/Color"
|
||||
&& (message.values[0] is float)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float))
|
||||
{
|
||||
backgroundColor = new Color((float)message.values[0], (float)message.values[1], (float)message.values[2], (float)message.values[3]);
|
||||
}
|
||||
//V2.4 ウィンドウ情報
|
||||
else if (message.address == "/VMC/Ext/Setting/Win"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is int)
|
||||
&& (message.values[2] is int)
|
||||
&& (message.values[3] is int))
|
||||
{
|
||||
IsTopMost = (int)message.values[0] != 0;
|
||||
IsTransparent = (int)message.values[1] != 0;
|
||||
WindowClickThrough = (int)message.values[2] != 0;
|
||||
HideBorder = (int)message.values[3] != 0;
|
||||
}
|
||||
//V2.5 読み込み済み設定ファイルパス情報
|
||||
else if (message.address == "/VMC/Ext/Config"
|
||||
&& (message.values[0] is string))
|
||||
{
|
||||
LoadedConfigPath = (string)message.values[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
333
Assets/External/EVMC4U/DeviceReceiver.cs
vendored
333
Assets/External/EVMC4U/DeviceReceiver.cs
vendored
@ -1,333 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable 0414,0219
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class DeviceReceiver : MonoBehaviour, IExternalReceiver
|
||||
{
|
||||
const int arrayMax = 16;
|
||||
|
||||
[Header("DeviceReceiver v1.1")]
|
||||
[SerializeField, Label("動作状況")]
|
||||
private string StatusMessage = ""; //Inspector表示用
|
||||
[SerializeField, Label("現実のトラッキング位置を反映")]
|
||||
public bool RealPosition = false;
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("トラッキング設定")]
|
||||
#else
|
||||
[Header("Tracking Config")]
|
||||
#endif
|
||||
public string[] Serials = new string[arrayMax];
|
||||
public Transform[] Transforms = new Transform[arrayMax];
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("トラッキングデバイス情報モニタ(表示用)")]
|
||||
#else
|
||||
[Header("Tracking Device Monitor")]
|
||||
#endif
|
||||
public string[] Types = new string[arrayMax];
|
||||
public Vector3[] Vector3s = new Vector3[arrayMax];
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("デイジーチェーン")]
|
||||
#else
|
||||
[Header("Daisy Chain")]
|
||||
#endif
|
||||
public GameObject[] NextReceivers = new GameObject[1];
|
||||
|
||||
private ExternalReceiverManager externalReceiverManager = null;
|
||||
bool shutdown = false;
|
||||
|
||||
Dictionary<string, int> SerialIndexes = new Dictionary<string, int>();
|
||||
int ListIndex = 0;
|
||||
|
||||
//メッセージ処理一時変数struct(負荷対策)
|
||||
Vector3 pos;
|
||||
Quaternion rot;
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
externalReceiverManager = new ExternalReceiverManager(NextReceivers);
|
||||
StatusMessage = "Waiting for Master...";
|
||||
|
||||
//モニタ強制
|
||||
Types = new string[Serials.Length];
|
||||
Vector3s = new Vector3[Serials.Length];
|
||||
|
||||
//登録処理
|
||||
ListIndex = 0;
|
||||
for (int i = 0; i < Serials.Length; i++)
|
||||
{
|
||||
//nullでも空白でもない場合(対象がある場合)
|
||||
if (Serials[i] != null && Serials[i] != "")
|
||||
{
|
||||
//辞書に登録
|
||||
SerialIndexes.Add(Serials[i], ListIndex);
|
||||
//インデックスを更新
|
||||
ListIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//デイジーチェーンを更新
|
||||
public void UpdateDaisyChain()
|
||||
{
|
||||
externalReceiverManager.GetIExternalReceiver(NextReceivers);
|
||||
}
|
||||
|
||||
public void MessageDaisyChain(ref uOSC.Message message, int callCount)
|
||||
{
|
||||
//Startされていない場合無視
|
||||
if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (shutdown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StatusMessage = "OK";
|
||||
|
||||
//異常を検出して動作停止
|
||||
try
|
||||
{
|
||||
ProcessMessage(ref message);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
StatusMessage = "Error: Exception";
|
||||
Debug.LogError(" --- Communication Error ---");
|
||||
Debug.LogError(e.ToString());
|
||||
shutdown = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!externalReceiverManager.SendNextReceivers(message, callCount))
|
||||
{
|
||||
StatusMessage = "Infinite loop detected!";
|
||||
shutdown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessMessage(ref uOSC.Message message)
|
||||
{
|
||||
//メッセージアドレスがない、あるいはメッセージがない不正な形式の場合は処理しない
|
||||
if (message.address == null || message.values == null)
|
||||
{
|
||||
StatusMessage = "Bad message.";
|
||||
return;
|
||||
}
|
||||
|
||||
if (!RealPosition)
|
||||
{
|
||||
if (message.address == "/VMC/Ext/Hmd/Pos"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
|
||||
devideUpdate("HMD", (string)message.values[0], pos, rot);
|
||||
//Debug.Log("HMD pos " + (string)message.values[0] + " : " + pos + "/" + rot);
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Con/Pos"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
|
||||
devideUpdate("Controller", (string)message.values[0], pos, rot);
|
||||
//Debug.Log("Con pos " + (string)message.values[0] + " : " + pos + "/" + rot);
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Tra/Pos"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
|
||||
devideUpdate("Tracker", (string)message.values[0], pos, rot);
|
||||
//Debug.Log("Tra pos " + (string)message.values[0] + " : " + pos + "/" + rot);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (message.address == "/VMC/Ext/Hmd/Pos/Local"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
|
||||
devideUpdate("HMD", (string)message.values[0], pos, rot);
|
||||
//Debug.Log("HMD pos " + (string)message.values[0] + " : " + pos + "/" + rot);
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Con/Pos/Local"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
|
||||
devideUpdate("Controller", (string)message.values[0], pos, rot);
|
||||
//Debug.Log("Con pos " + (string)message.values[0] + " : " + pos + "/" + rot);
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Tra/Pos/Local"
|
||||
&& (message.values[0] is string)
|
||||
&& (message.values[1] is float)
|
||||
&& (message.values[2] is float)
|
||||
&& (message.values[3] is float)
|
||||
&& (message.values[4] is float)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
|
||||
devideUpdate("Tracker", (string)message.values[0], pos, rot);
|
||||
//Debug.Log("Tra pos " + (string)message.values[0] + " : " + pos + "/" + rot);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void devideUpdate(string type, string serial, Vector3 pos, Quaternion rot)
|
||||
{
|
||||
//辞書に登録済み
|
||||
if (SerialIndexes.ContainsKey(serial))
|
||||
{
|
||||
int i = SerialIndexes[serial];
|
||||
//配列を更新
|
||||
Types[i] = type;
|
||||
Vector3s[i] = pos;
|
||||
|
||||
if (i < Transforms.Length && Transforms[i] != null)
|
||||
{
|
||||
Transforms[i].localPosition = pos;
|
||||
Transforms[i].localRotation = rot;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//最大を超えたら登録しない
|
||||
if (ListIndex < Serials.Length)
|
||||
{
|
||||
//辞書に未登録
|
||||
|
||||
//辞書に登録
|
||||
Serials[ListIndex] = serial;
|
||||
SerialIndexes.Add(serial, ListIndex);
|
||||
//インデックスを更新
|
||||
ListIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
158
Assets/External/EVMC4U/DirectionalLightReceiver.cs
vendored
158
Assets/External/EVMC4U/DirectionalLightReceiver.cs
vendored
@ -1,158 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable 0414,0219
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class DirectionalLightReceiver : MonoBehaviour, IExternalReceiver
|
||||
{
|
||||
[Header("DirectionalLightReceiver v1.2")]
|
||||
[SerializeField, Label("VMCディレクショナルライト制御同期Light")]
|
||||
public Light VMCControlledLight = null; //VMCディレクショナルライト制御同期
|
||||
[SerializeField, Label("動作状況")]
|
||||
private string StatusMessage = ""; //Inspector表示用
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("デイジーチェーン")]
|
||||
#else
|
||||
[Header("Daisy Chain")]
|
||||
#endif
|
||||
public GameObject[] NextReceivers = new GameObject[1];
|
||||
|
||||
private ExternalReceiverManager externalReceiverManager = null;
|
||||
bool shutdown = false;
|
||||
|
||||
Vector3 pos;
|
||||
Quaternion rot;
|
||||
Color col;
|
||||
|
||||
void Start()
|
||||
{
|
||||
externalReceiverManager = new ExternalReceiverManager(NextReceivers);
|
||||
StatusMessage = "Waiting for Master...";
|
||||
}
|
||||
|
||||
//デイジーチェーンを更新
|
||||
public void UpdateDaisyChain()
|
||||
{
|
||||
externalReceiverManager.GetIExternalReceiver(NextReceivers);
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
}
|
||||
|
||||
public void MessageDaisyChain(ref uOSC.Message message, int callCount)
|
||||
{
|
||||
//Startされていない場合無視
|
||||
if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (shutdown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StatusMessage = "OK";
|
||||
|
||||
//異常を検出して動作停止
|
||||
try
|
||||
{
|
||||
ProcessMessage(ref message);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
StatusMessage = "Error: Exception";
|
||||
Debug.LogError(" --- Communication Error ---");
|
||||
Debug.LogError(e.ToString());
|
||||
shutdown = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!externalReceiverManager.SendNextReceivers(message, callCount))
|
||||
{
|
||||
StatusMessage = "Infinite loop detected!";
|
||||
shutdown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessMessage(ref uOSC.Message message)
|
||||
{
|
||||
//メッセージアドレスがない、あるいはメッセージがない不正な形式の場合は処理しない
|
||||
if (message.address == null || message.values == null)
|
||||
{
|
||||
StatusMessage = "Bad message.";
|
||||
return;
|
||||
}
|
||||
|
||||
//ライト同期 v2.4
|
||||
if (message.address == "/VMC/Ext/Light"
|
||||
&& (message.values[0] is string) //name
|
||||
&& (message.values[1] is float) //pos.x
|
||||
&& (message.values[2] is float) //poy.y
|
||||
&& (message.values[3] is float) //pos.z
|
||||
&& (message.values[4] is float) //q.x
|
||||
&& (message.values[5] is float) //q.y
|
||||
&& (message.values[6] is float) //q.z
|
||||
&& (message.values[7] is float) //q.w
|
||||
&& (message.values[8] is float) //r
|
||||
&& (message.values[9] is float) //g
|
||||
&& (message.values[10] is float) //b
|
||||
&& (message.values[11] is float) //a
|
||||
)
|
||||
{
|
||||
if(VMCControlledLight != null && VMCControlledLight.transform != null)
|
||||
{
|
||||
pos.x = (float)message.values[1];
|
||||
pos.y = (float)message.values[2];
|
||||
pos.z = (float)message.values[3];
|
||||
rot.x = (float)message.values[4];
|
||||
rot.y = (float)message.values[5];
|
||||
rot.z = (float)message.values[6];
|
||||
rot.w = (float)message.values[7];
|
||||
col.r = (float)message.values[8];
|
||||
col.g = (float)message.values[9];
|
||||
col.b = (float)message.values[10];
|
||||
col.a = (float)message.values[11];
|
||||
|
||||
VMCControlledLight.transform.localPosition = pos;
|
||||
VMCControlledLight.transform.localRotation = rot;
|
||||
VMCControlledLight.color = col;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,53 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
[CustomEditor(typeof(ExternalReceiver))]
|
||||
public class ExternalReceiverEditor : Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
#if EVMC4U_JA
|
||||
if (GUILayout.Button("説明書を開く"))
|
||||
{
|
||||
Tutorial.Open();
|
||||
}
|
||||
#else
|
||||
if (GUILayout.Button("Open Manual"))
|
||||
{
|
||||
Tutorial.Open();
|
||||
}
|
||||
#endif
|
||||
base.OnInspectorGUI();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8377d1e33297dac458dca9e5f91a8cc4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/caution_bg.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/caution_bg.png
(Stored with Git LFS)
vendored
Binary file not shown.
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/define.txt
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/define.txt
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 72e1f7be484f4a049a6925bd9ab160d3
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ignore.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ignore.png
(Stored with Git LFS)
vendored
Binary file not shown.
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ok_button.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ok_button.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fc1e38df2f2e3cb4e8790360fa9c40dd
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_bg.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_bg.png
(Stored with Git LFS)
vendored
Binary file not shown.
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_english.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_english.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a9a093e2909a574b8a69a9c0d032158
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_japanese.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_japanese.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1e9c002a5915b0c41bce8813c859270f
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3cf99d0802e7abd41b513dd6ece2b371
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/discord.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/discord.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bd00136add62bd44b0c7692a8abd17d
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/howtouse.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/howtouse.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 481805f552d5a1c42866f2c76e80d9d1
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/vmcprotocol.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/vmcprotocol.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: efbc73509d25aea43aa7e5f70fb49c3b
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a83f9e79c7345284988cabbd2ef406b6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/en.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/en.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f0c4f23b400062b4293d2cdd97b02503
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/ja.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/ja.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b776da16c770c8478ca233bef64f2b1
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4a63eda723d10ef4cac2d457e66fc2ef
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/discord.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/discord.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 436fee3bd2ead154f87f05481d675208
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/howtouse.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/howtouse.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 803fc02753744be4fbfebcd748d5c12a
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/vmcprotocol.png
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/vmcprotocol.png
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,104 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae1ea106244ca354f903f9b7c235398f
|
||||
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: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
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: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
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: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
377
Assets/External/EVMC4U/Editor/Tutorial.cs
vendored
377
Assets/External/EVMC4U/Editor/Tutorial.cs
vendored
@ -1,377 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020-2022 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable CS0162
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEditor.AnimatedValues;
|
||||
using UnityEngine.Events;
|
||||
using System.Linq;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class Tutorial : EditorWindow
|
||||
{
|
||||
const bool check = false; //バージョンチェック条件式があったが、バージョン番号がなくなったので無効化
|
||||
const int window_w = 400;
|
||||
const int window_h = 400;
|
||||
|
||||
//ページ名
|
||||
static string page = "";
|
||||
|
||||
//ボタン押下アニメーション
|
||||
static AnimFloat anim = new AnimFloat(0.001f);
|
||||
static string animTargetName = ""; //1つのボタンだけアニメさせる識別名
|
||||
|
||||
static string jsonError = "";
|
||||
|
||||
static TutorialJson tutorialJson = null;
|
||||
static Dictionary<string, TutorialPage> tutorialPages = new Dictionary<string, TutorialPage>();
|
||||
|
||||
//JSON設定ファイル定義
|
||||
[Serializable]
|
||||
private class TutorialJson
|
||||
{
|
||||
public bool debug;
|
||||
public TutorialPage[] pages;
|
||||
public override string ToString()
|
||||
{
|
||||
return "TutorialJson debug:" + debug + " pages:" + pages.Length;
|
||||
}
|
||||
}
|
||||
|
||||
//JSONページ定義
|
||||
[Serializable]
|
||||
private class TutorialPage
|
||||
{
|
||||
public string name = "";
|
||||
public string text = "";
|
||||
public string image = "";
|
||||
public TutorialButton[] buttons = new TutorialButton[0];
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "TutorialPage name:" + name + " text:" + text + " iamge:" + image + " buttons:" + buttons.Length;
|
||||
}
|
||||
}
|
||||
|
||||
//JSONボタン定義
|
||||
[Serializable]
|
||||
private class TutorialButton
|
||||
{
|
||||
public int x = 0;
|
||||
public int y = 0;
|
||||
public int w = 0;
|
||||
public int h = 0;
|
||||
|
||||
public string text = "";
|
||||
|
||||
public string image = "";
|
||||
public string uri = ""; //"page://" = page, "http://" or "https://" = url
|
||||
public string fire = ""; //event
|
||||
public override string ToString()
|
||||
{
|
||||
return "TutorialButton (" + x + "," + y + "," + w + "," + h + ") text:" + text + " image:" + image + " uri:" + uri;
|
||||
}
|
||||
}
|
||||
|
||||
[InitializeOnLoadMethod]
|
||||
static void InitializeOnLoad()
|
||||
{
|
||||
//一度も開いたことない場合は、ここで開く
|
||||
if (EditorUserSettings.GetConfigValue("Opened") != "1" || (check && EditorUserSettings.GetConfigValue("VRMCheckCaution") != "1"))
|
||||
{
|
||||
Open();
|
||||
}
|
||||
}
|
||||
|
||||
[MenuItem("EVMC4U/Oepn Tutorial")]
|
||||
public static void Open()
|
||||
{
|
||||
//ウィンドウサイズを固定
|
||||
var window = GetWindow<Tutorial>();
|
||||
window.maxSize = new Vector2(window_w, window_h - 6);
|
||||
window.minSize = window.maxSize;
|
||||
|
||||
//アニメーション定義
|
||||
anim.value = 0.001f;
|
||||
anim.speed = 10f;
|
||||
anim.target = 0.001f;
|
||||
anim.valueChanged = null;
|
||||
|
||||
if (Resources.Load<TextAsset>("tutorial/define") == null)
|
||||
{
|
||||
//読み込み準備ができていない
|
||||
return;
|
||||
}
|
||||
|
||||
//ページを初期位置に設定
|
||||
page = "start";
|
||||
if (EditorUserSettings.GetConfigValue("Language") == "ja")
|
||||
{
|
||||
page = "start_ja";
|
||||
}
|
||||
if (EditorUserSettings.GetConfigValue("Language") == "en")
|
||||
{
|
||||
page = "start_en";
|
||||
}
|
||||
|
||||
|
||||
//データを読み込む
|
||||
tutorialPages = new Dictionary<string, TutorialPage>();
|
||||
|
||||
try
|
||||
{
|
||||
jsonError = "";
|
||||
var r = Resources.Load<TextAsset>("tutorial/define");
|
||||
tutorialJson = JsonUtility.FromJson<TutorialJson>(r.text);
|
||||
if (tutorialJson.debug)
|
||||
{
|
||||
Debug.Log(tutorialJson);
|
||||
}
|
||||
|
||||
//各ページのデータを読み込む
|
||||
foreach (var p in tutorialJson.pages)
|
||||
{
|
||||
tutorialPages.Add(p.name, p);
|
||||
if (tutorialJson.debug)
|
||||
{
|
||||
Debug.Log(p);
|
||||
}
|
||||
}
|
||||
|
||||
//一度開いたのを覚えておく
|
||||
EditorUserSettings.SetConfigValue("Opened", "1");
|
||||
}
|
||||
catch (ArgumentException e)
|
||||
{
|
||||
//Debug.LogError(e);
|
||||
jsonError = e.ToString();
|
||||
tutorialJson = null;
|
||||
}
|
||||
|
||||
//バージョンチェック(失敗したら失敗ページに飛ばす)
|
||||
if (check)
|
||||
{
|
||||
EditorUserSettings.SetConfigValue("VRMCheckCaution", "1");
|
||||
page = "versionCheckFailed";
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorUserSettings.SetConfigValue("VRMCheckCaution", "0");
|
||||
}
|
||||
}
|
||||
|
||||
[MenuItem("EVMC4U/Reset Language")]
|
||||
public static void ResetLanguage()
|
||||
{
|
||||
EditorUserSettings.SetConfigValue("Language", "");
|
||||
Open();
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
//ページを開いたまま初期化されたら、初期ロード処理に飛ばす
|
||||
if (page == "")
|
||||
{
|
||||
GUI.Label(new Rect(10, 10, window_w, window_h), "INVALID STATE\n\nチュートリアルの読み込みに失敗しました。Unityを再起動してください。\nそれでもダメな場合は、UnityPackageの導入からやり直してみてください\n\nTutorial load failed.\nPlease restart Unity.\nor Please re-import UnityPackage.");
|
||||
Open();
|
||||
return;
|
||||
}
|
||||
|
||||
//アニメーションを立ち上げる
|
||||
if (anim.valueChanged == null)
|
||||
{
|
||||
var repaintEvent = new UnityEvent();
|
||||
repaintEvent.AddListener(() => Repaint());
|
||||
anim.valueChanged = repaintEvent;
|
||||
}
|
||||
|
||||
//アニメーション折り返し
|
||||
if (anim.value > anim.target - 0.1f)
|
||||
{
|
||||
anim.target = 0.001f;
|
||||
}
|
||||
|
||||
//ページの表示処理を開始
|
||||
TutorialPage tutorialPage;
|
||||
if (!tutorialPages.TryGetValue(page, out tutorialPage))
|
||||
{
|
||||
//JSONが多分バグってるときに表示
|
||||
GUI.Label(new Rect(10, 10, window_w - 20, window_h), "JSON LOAD FAILED\n" + jsonError + "\n\nチュートリアルの読み込みに失敗しました。Unityを再起動してください。\nそれでもダメな場合は、UnityPackageの導入からやり直してみてください\n\nTutorial load failed.\nPlease restart Unity.\nor Please re-import UnityPackage.");
|
||||
if (GUI.Button(new Rect(0, window_h - 30, window_w, 30), "Reload"))
|
||||
{
|
||||
Open();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//デバッグログ
|
||||
if (tutorialJson.debug)
|
||||
{
|
||||
Debug.Log("OnGUI: " + anim.value);
|
||||
Debug.Log(tutorialPage);
|
||||
}
|
||||
|
||||
//背景画像があれば表示
|
||||
if (tutorialPage.image != "")
|
||||
{
|
||||
var bgtexture = Resources.Load<Texture>("tutorial/" + tutorialPage.image);
|
||||
EditorGUI.DrawPreviewTexture(new Rect(0, 0, window_w, window_h), bgtexture);
|
||||
}
|
||||
|
||||
//ページのテキストを表示(代替テキスト)
|
||||
GUI.Label(new Rect(0, 0, window_w, window_h), tutorialPage.text);
|
||||
|
||||
//ボタンを1つずつ表示
|
||||
foreach (var b in tutorialPage.buttons)
|
||||
{
|
||||
if (tutorialJson.debug)
|
||||
{
|
||||
Debug.Log(b);
|
||||
}
|
||||
|
||||
//ボタンに画像があればそれを表示
|
||||
if (b.image != "")
|
||||
{
|
||||
//画像を読み込む
|
||||
var texture = Resources.Load<Texture>("tutorial/" + b.image);
|
||||
|
||||
//位置情報がない場合、下端として扱う
|
||||
if (b.x == 0 && b.y == 0 && b.w == 0 && b.h == 0)
|
||||
{
|
||||
b.y = window_h - window_w * texture.height / texture.width;
|
||||
b.w = window_w;
|
||||
}
|
||||
|
||||
string buttonName = "btn#" + page + "#" + b.x + "-" + b.y + "-" + b.w + "-" + b.h;
|
||||
float height = b.w * texture.height / texture.width;
|
||||
|
||||
Rect r = new Rect(b.x, b.y, b.w, height);
|
||||
|
||||
//アニメ対象の場合だけ動く
|
||||
if (buttonName == animTargetName)
|
||||
{
|
||||
r = new Rect(b.x + anim.value, b.y + anim.value, b.w, height);
|
||||
}
|
||||
|
||||
//ボタンを表示
|
||||
if (GUI.Button(r, texture, new GUIStyle()))
|
||||
{
|
||||
//アニメーション処理と、遷移を実行
|
||||
buttonFireProcess(b.fire);
|
||||
buttonUriProcess(b.uri);
|
||||
animTargetName = buttonName;
|
||||
anim.target = 2f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//テキストボタンを表示
|
||||
if (GUI.Button(new Rect(b.x, b.y, b.w, b.h), b.text))
|
||||
{
|
||||
buttonFireProcess(b.fire);
|
||||
buttonUriProcess(b.uri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//デバッグ再読み込みボタン
|
||||
if (tutorialJson.debug)
|
||||
{
|
||||
if (GUI.Button(new Rect(0, window_h - 30, 30, 30), "#"))
|
||||
{
|
||||
Open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void buttonUriProcess(string uri)
|
||||
{
|
||||
if (tutorialJson.debug)
|
||||
{
|
||||
Debug.LogWarning("buttonProcess: " + uri);
|
||||
}
|
||||
|
||||
if (uri == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (uri.StartsWith("page://"))
|
||||
{
|
||||
page = uri.Replace("page://", "");
|
||||
}
|
||||
if (uri.StartsWith("http://") || uri.StartsWith("https://"))
|
||||
{
|
||||
System.Diagnostics.Process.Start(uri);
|
||||
}
|
||||
}
|
||||
|
||||
void buttonFireProcess(string fire)
|
||||
{
|
||||
switch (fire)
|
||||
{
|
||||
case "SaveLanguageJa":
|
||||
{
|
||||
EditorUserSettings.SetConfigValue("Language", "ja");
|
||||
var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone).Split(';').ToList();
|
||||
if (symbols.Contains("EVMC4U_EN"))
|
||||
{
|
||||
symbols.Remove("EVMC4U_EN");
|
||||
}
|
||||
if (!symbols.Contains("EVMC4U_JA"))
|
||||
{
|
||||
symbols.Add("EVMC4U_JA");
|
||||
}
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, String.Join(";", symbols.ToArray()));
|
||||
|
||||
break;
|
||||
}
|
||||
case "SaveLanguageEn":
|
||||
{
|
||||
EditorUserSettings.SetConfigValue("Language", "en");
|
||||
var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone).Split(';').ToList();
|
||||
if (symbols.Contains("EVMC4U_JA"))
|
||||
{
|
||||
symbols.Remove("EVMC4U_JA");
|
||||
}
|
||||
if (!symbols.Contains("EVMC4U_EN"))
|
||||
{
|
||||
symbols.Add("EVMC4U_EN");
|
||||
}
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, String.Join(";", symbols.ToArray()));
|
||||
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/External/EVMC4U/Editor/Tutorial.cs.meta
vendored
11
Assets/External/EVMC4U/Editor/Tutorial.cs.meta
vendored
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3239c5d6ed07cd84a95fd80d1659dcce
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
199
Assets/External/EVMC4U/ExternalController.cs
vendored
199
Assets/External/EVMC4U/ExternalController.cs
vendored
@ -1,199 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable 0414,0219
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
[RequireComponent(typeof(uOSC.uOscClient))]
|
||||
public class ExternalController : MonoBehaviour
|
||||
{
|
||||
[Header("ExternalController v1.0")]
|
||||
public bool enable = true;
|
||||
[Header("Frame Period")]
|
||||
public int PeriodOfStatus = 1;
|
||||
public int PeriodOfRoot = 1;
|
||||
public int PeriodOfBone = 1;
|
||||
public int PeriodOfBlendShape = 1;
|
||||
public int PeriodOfCamera = 1;
|
||||
public int PeriodOfDevices = 1;
|
||||
public bool PeriodEnable = false;
|
||||
|
||||
[Header("Virtual Device")]
|
||||
public VirtualDevice DeviceMode = VirtualDevice.Tracker;
|
||||
public Transform DeviceTransform = null;
|
||||
public String DeviceSerial = "VIRTUAL_DEVICE";
|
||||
public bool DeviceEnable = false;
|
||||
|
||||
[Header("Virtual MIDI CC")]
|
||||
public int MidiKnob = 0;
|
||||
public float MidiValue = 0f;
|
||||
public bool MidiEnable = false;
|
||||
|
||||
[Header("Camera Control")]
|
||||
public Transform CameraTransform = null;
|
||||
public float CameraFOV = 30f;
|
||||
public bool CameraEnable = false;
|
||||
|
||||
[Header("BlendShapeProxy")]
|
||||
public string BlendShapeName = "";
|
||||
public float BlendShapeValue = 0f;
|
||||
public bool BlendShapeEnable = false;
|
||||
|
||||
[Header("Eye Tracking Target Position")]
|
||||
public Transform EyeTrackingTargetTransform = null;
|
||||
public bool EyeTrackingTargetUse = false;
|
||||
public bool EyeTrackingTargetEnable = false;
|
||||
|
||||
[Header("Response String")]
|
||||
public string ResponseString = "";
|
||||
public bool ResponseStringEnable = false;
|
||||
|
||||
[Header("Calibration")]
|
||||
public bool CalibrationReady = false;
|
||||
public CalibrationMode calibrationMode = 0;
|
||||
public bool CalibrationExecute = false;
|
||||
|
||||
[Header("Config")]
|
||||
public string ConfigPath = "";
|
||||
public bool ConfigLoad = false;
|
||||
|
||||
[Header("Request Information")]
|
||||
public bool RequestInformation = false;
|
||||
|
||||
uOSC.uOscClient client = null;
|
||||
|
||||
void Start()
|
||||
{
|
||||
client = GetComponent<uOSC.uOscClient>();
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
if (client == null) {
|
||||
return;
|
||||
}
|
||||
if (!enable) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PeriodEnable) {
|
||||
client.Send("/VMC/Ext/Set/Period", PeriodOfStatus, PeriodOfRoot, PeriodOfBone, PeriodOfBlendShape, PeriodOfCamera, PeriodOfDevices);
|
||||
}
|
||||
if (DeviceEnable) {
|
||||
string name = null;
|
||||
switch (DeviceMode) {
|
||||
case VirtualDevice.HMD:
|
||||
name = "/VMC/Ext/Hmd/Pos";
|
||||
break;
|
||||
case VirtualDevice.Controller:
|
||||
name = "/VMC/Ext/Con/Pos";
|
||||
break;
|
||||
case VirtualDevice.Tracker:
|
||||
name = "/VMC/Ext/Tra/Pos";
|
||||
break;
|
||||
default:
|
||||
name = null;
|
||||
break;
|
||||
}
|
||||
if (name != null && DeviceTransform != null && DeviceSerial != null) {
|
||||
client.Send(name,
|
||||
(string)DeviceSerial,
|
||||
(float)DeviceTransform.position.x,
|
||||
(float)DeviceTransform.position.y,
|
||||
(float)DeviceTransform.position.z,
|
||||
(float)DeviceTransform.rotation.x,
|
||||
(float)DeviceTransform.rotation.y,
|
||||
(float)DeviceTransform.rotation.z,
|
||||
(float)DeviceTransform.rotation.w);
|
||||
}
|
||||
}
|
||||
if (MidiEnable)
|
||||
{
|
||||
client.Send("/VMC/Ext/Midi/CC/Val", MidiKnob, MidiValue);
|
||||
}
|
||||
if (CameraEnable)
|
||||
{
|
||||
client.Send("/VMC/Ext/Cam",
|
||||
"Camera",
|
||||
(float)CameraTransform.position.x,
|
||||
(float)CameraTransform.position.y,
|
||||
(float)CameraTransform.position.z,
|
||||
(float)CameraTransform.rotation.x,
|
||||
(float)CameraTransform.rotation.y,
|
||||
(float)CameraTransform.rotation.z,
|
||||
(float)CameraTransform.rotation.w,
|
||||
(float)CameraFOV);
|
||||
}
|
||||
if (BlendShapeEnable)
|
||||
{
|
||||
client.Send("/VMC/Ext/Blend/Val", BlendShapeName, BlendShapeValue);
|
||||
client.Send("/VMC/Ext/Blend/Apply");
|
||||
}
|
||||
if (EyeTrackingTargetEnable)
|
||||
{
|
||||
client.Send("/VMC/Ext/Set/Eye",
|
||||
EyeTrackingTargetUse?(int)1: (int)0,
|
||||
(float)EyeTrackingTargetTransform.position.x,
|
||||
(float)EyeTrackingTargetTransform.position.y,
|
||||
(float)EyeTrackingTargetTransform.position.z);
|
||||
}
|
||||
if (ResponseStringEnable)
|
||||
{
|
||||
client.Send("/VMC/Ext/Set/Res", ResponseString);
|
||||
}
|
||||
if (CalibrationReady)
|
||||
{
|
||||
CalibrationReady = false;
|
||||
client.Send("/VMC/Ext/Set/Calib/Ready");
|
||||
}
|
||||
if (CalibrationExecute)
|
||||
{
|
||||
CalibrationExecute = false;
|
||||
client.Send("/VMC/Ext/Set/Calib/Exec", (int)calibrationMode);
|
||||
}
|
||||
if (ConfigLoad)
|
||||
{
|
||||
ConfigLoad = false;
|
||||
client.Send("/VMC/Ext/Set/Config", ConfigPath);
|
||||
}
|
||||
if (RequestInformation)
|
||||
{
|
||||
//毎フレーム送信要求をする
|
||||
client.Send("/VMC/Ext/Set/Req");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e3c76998320436b479e734d3703c3abc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
1446
Assets/External/EVMC4U/ExternalReceiver.cs
vendored
1446
Assets/External/EVMC4U/ExternalReceiver.cs
vendored
File diff suppressed because it is too large
Load Diff
11
Assets/External/EVMC4U/ExternalReceiver.cs.meta
vendored
11
Assets/External/EVMC4U/ExternalReceiver.cs.meta
vendored
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b2b1a1db52b2afb4e9cb87fac5cbf079
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/ExternalReceiver.prefab
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/ExternalReceiver.prefab
(Stored with Git LFS)
vendored
Binary file not shown.
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 86b1e8192cb57cd47890882526664df1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/EVMC4U/ExternalReceiver.unity
(Stored with Git LFS)
vendored
BIN
Assets/External/EVMC4U/ExternalReceiver.unity
(Stored with Git LFS)
vendored
Binary file not shown.
268
Assets/External/EVMC4U/InputReceiver.cs
vendored
268
Assets/External/EVMC4U/InputReceiver.cs
vendored
@ -1,268 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#pragma warning disable 0414,0219
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.Profiling;
|
||||
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class InputReceiver : MonoBehaviour, IExternalReceiver
|
||||
{
|
||||
[Header("InputReceiver v1.1")]
|
||||
[SerializeField, Label("動作状況")]
|
||||
private string StatusMessage = ""; //Inspector表示用
|
||||
[SerializeField, Label("最終入力")]
|
||||
private string LastInput = "";
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("入力イベント")]
|
||||
#else
|
||||
[Header("Event Callback")]
|
||||
#endif
|
||||
public KeyInputEvent KeyInputAction = new KeyInputEvent(); //キーボード入力イベント
|
||||
public ControllerInputEvent ControllerInputAction = new ControllerInputEvent(); //コントローラボタンイベント
|
||||
public MidiNoteInputEvent MidiNoteInputAction = new MidiNoteInputEvent();
|
||||
public MidiCCValueInputEvent MidiCCValueInputAction = new MidiCCValueInputEvent();
|
||||
public MidiCCButtonInputEvent MidiCCButtonInputAction = new MidiCCButtonInputEvent();
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("MIDI CC モニタ(つまみ、ボタン)")]
|
||||
#else
|
||||
[Header("MIDI CC Monitor")]
|
||||
#endif
|
||||
public float[] CCValuesMonitor = new float[128];
|
||||
|
||||
#if EVMC4U_JA
|
||||
[Header("デイジーチェーン")]
|
||||
#else
|
||||
[Header("Daisy Chain")]
|
||||
#endif
|
||||
public GameObject[] NextReceivers = new GameObject[1];
|
||||
|
||||
//---
|
||||
|
||||
//入力辞書(コールバックではなく定値で取得したい場合に使う)
|
||||
public Dictionary<string, bool> InputDictionary = new Dictionary<string, bool>();
|
||||
|
||||
//---
|
||||
|
||||
private ExternalReceiverManager externalReceiverManager = null;
|
||||
bool shutdown = false;
|
||||
|
||||
//メッセージ処理一時変数struct(負荷対策)
|
||||
ControllerInput con;
|
||||
KeyInput key;
|
||||
MidiNote note;
|
||||
MidiCCValue ccvalue;
|
||||
MidiCCButton ccbutton;
|
||||
|
||||
void Start()
|
||||
{
|
||||
externalReceiverManager = new ExternalReceiverManager(NextReceivers);
|
||||
StatusMessage = "Waiting for Master...";
|
||||
|
||||
//強制
|
||||
CCValuesMonitor = new float[128];
|
||||
}
|
||||
|
||||
//デイジーチェーンを更新
|
||||
public void UpdateDaisyChain()
|
||||
{
|
||||
externalReceiverManager.GetIExternalReceiver(NextReceivers);
|
||||
}
|
||||
|
||||
public void MessageDaisyChain(ref uOSC.Message message, int callCount)
|
||||
{
|
||||
//Startされていない場合無視
|
||||
if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (shutdown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StatusMessage = "OK";
|
||||
|
||||
//異常を検出して動作停止
|
||||
try
|
||||
{
|
||||
ProcessMessage(ref message);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
StatusMessage = "Error: Exception";
|
||||
Debug.LogError(" --- Communication Error ---");
|
||||
Debug.LogError(e.ToString());
|
||||
shutdown = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!externalReceiverManager.SendNextReceivers(message, callCount))
|
||||
{
|
||||
StatusMessage = "Infinite loop detected!";
|
||||
shutdown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessMessage(ref uOSC.Message message)
|
||||
{
|
||||
//メッセージアドレスがない、あるいはメッセージがない不正な形式の場合は処理しない
|
||||
if (message.address == null || message.values == null)
|
||||
{
|
||||
StatusMessage = "Bad message.";
|
||||
return;
|
||||
}
|
||||
|
||||
//コントローラ操作情報 v2.1
|
||||
if (message.address == "/VMC/Ext/Con"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is string)
|
||||
&& (message.values[2] is int)
|
||||
&& (message.values[3] is int)
|
||||
&& (message.values[4] is int)
|
||||
&& (message.values[5] is float)
|
||||
&& (message.values[6] is float)
|
||||
&& (message.values[7] is float)
|
||||
)
|
||||
{
|
||||
con.active = (int)message.values[0];
|
||||
con.name = (string)message.values[1];
|
||||
con.IsLeft = (int)message.values[2];
|
||||
con.IsTouch = (int)message.values[3];
|
||||
con.IsAxis = (int)message.values[4];
|
||||
con.Axis.x = (float)message.values[5];
|
||||
con.Axis.y = (float)message.values[6];
|
||||
con.Axis.z = (float)message.values[7];
|
||||
|
||||
//イベントを呼び出す
|
||||
if (ControllerInputAction != null)
|
||||
{
|
||||
ControllerInputAction.Invoke(con);
|
||||
}
|
||||
if (con.IsAxis == 0) {
|
||||
if (con.IsLeft == 1)
|
||||
{
|
||||
LastInput = "Left-" + con.name + " = " + con.active;
|
||||
InputDictionary["Left-" + con.name] = (con.active != 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
LastInput = "Right-" + con.name + " = " + con.active;
|
||||
InputDictionary["Right-" + con.name] = (con.active != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
//キーボード操作情報 v2.1
|
||||
else if (message.address == "/VMC/Ext/Key"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is string)
|
||||
&& (message.values[2] is int)
|
||||
)
|
||||
{
|
||||
key.active = (int)message.values[0];
|
||||
key.name = (string)message.values[1];
|
||||
key.keycode = (int)message.values[2];
|
||||
|
||||
//イベントを呼び出す
|
||||
if (KeyInputAction != null)
|
||||
{
|
||||
KeyInputAction.Invoke(key);
|
||||
}
|
||||
|
||||
LastInput = "Key-" + key.name +" = "+key.active + " (" + key.keycode + ")";
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Midi/Note"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is int)
|
||||
&& (message.values[2] is int)
|
||||
&& (message.values[3] is float)
|
||||
)
|
||||
{
|
||||
note.active = (int)message.values[0];
|
||||
note.channel = (int)message.values[1];
|
||||
note.note = (int)message.values[2];
|
||||
note.velocity = (float)message.values[3];
|
||||
|
||||
//イベントを呼び出す
|
||||
if (MidiNoteInputAction != null)
|
||||
{
|
||||
MidiNoteInputAction.Invoke(note);
|
||||
}
|
||||
|
||||
LastInput = "Note-" + note.note + " = "+note.active + "/" + note.channel + "/" + note.velocity;
|
||||
InputDictionary["Note-" + note.note] = (note.active != 0);
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Midi/CC/Val"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is float)
|
||||
)
|
||||
{
|
||||
ccvalue.knob = (int)message.values[0];
|
||||
ccvalue.value = (float)message.values[1];
|
||||
|
||||
//イベントを呼び出す
|
||||
if (MidiCCValueInputAction != null)
|
||||
{
|
||||
MidiCCValueInputAction.Invoke(ccvalue);
|
||||
}
|
||||
|
||||
LastInput = "CC Val " + ccvalue.knob + " = " + ccvalue.value;
|
||||
|
||||
if (ccvalue.knob >= 0 && ccvalue.knob < 128) {
|
||||
CCValuesMonitor[ccvalue.knob] = ccvalue.value;
|
||||
}
|
||||
}
|
||||
// v2.2
|
||||
else if (message.address == "/VMC/Ext/Midi/CC/Bit"
|
||||
&& (message.values[0] is int)
|
||||
&& (message.values[1] is int)
|
||||
)
|
||||
{
|
||||
ccbutton.knob = (int)message.values[0];
|
||||
ccbutton.active = (int)message.values[1];
|
||||
|
||||
//イベントを呼び出す
|
||||
if (MidiCCButtonInputAction != null)
|
||||
{
|
||||
MidiCCButtonInputAction.Invoke(ccbutton);
|
||||
}
|
||||
LastInput = "CC-" + ccbutton.knob + " = " + ccbutton.active;
|
||||
InputDictionary["CC-" + ccbutton.knob] = (ccbutton.active != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/External/EVMC4U/InputReceiver.cs.meta
vendored
11
Assets/External/EVMC4U/InputReceiver.cs.meta
vendored
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7b6344b39082f64e8111bc0fd99f9c2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
21
Assets/External/EVMC4U/LICENSE
vendored
21
Assets/External/EVMC4U/LICENSE
vendored
@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019-2020 gpsnmeajp
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
8
Assets/External/EVMC4U/SampleScripts.meta
vendored
8
Assets/External/EVMC4U/SampleScripts.meta
vendored
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fe826b9d334c93e4ca357d6af02179cc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d554b7baaffa0cf4c907cd10362bf827
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,44 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class CCCameraControl : MonoBehaviour
|
||||
{
|
||||
public InputReceiver r;
|
||||
public Camera c;
|
||||
private void Update()
|
||||
{
|
||||
c.fieldOfView = r.CCValuesMonitor[16] * 90 + 1;
|
||||
c.transform.position = new Vector3((r.CCValuesMonitor[0] - 0.5f) * 3f, (r.CCValuesMonitor[1] - 0.5f) * 3f, (r.CCValuesMonitor[2]-0.5f)*3f);
|
||||
c.transform.rotation = Quaternion.Euler(r.CCValuesMonitor[3]*360f, r.CCValuesMonitor[4] * 360f, r.CCValuesMonitor[5] * 360f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 38cb49d414319034c9a457279ea5133f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7af78563b203db9458af57d24f50e7b0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,123 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using EVMC4U;
|
||||
|
||||
public class CalibrationByController : MonoBehaviour
|
||||
{
|
||||
public InputReceiver inputReceiver;
|
||||
public CommunicationValidator communicationValidator;
|
||||
public ExternalController externalController;
|
||||
|
||||
[Header("Button Configuration")]
|
||||
public string Key = "ScrollLock";
|
||||
public string Button = "ClickAbutton";
|
||||
|
||||
[Header("Time Configuration")]
|
||||
public float Time = 3f;
|
||||
|
||||
[Header("Button Monitor")]
|
||||
public bool LeftButton = false;
|
||||
public bool RightButton = false;
|
||||
|
||||
readonly Rect rect1 = new Rect(0, 0, 300, 40);
|
||||
|
||||
void Start()
|
||||
{
|
||||
inputReceiver.KeyInputAction.AddListener(OnKey);
|
||||
inputReceiver.ControllerInputAction.AddListener(OnCon);
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
if (communicationValidator.calibrationState == CalibrationState.Uncalibrated)
|
||||
{
|
||||
GUI.TextField(rect1, "★キャリブレーションを待っています\n準備ができたらボタンを押してください");
|
||||
}
|
||||
if (communicationValidator.calibrationState == CalibrationState.WaitingForCalibrating)
|
||||
{
|
||||
GUI.TextField(rect1, "★姿勢を整えてください");
|
||||
}
|
||||
if (communicationValidator.calibrationState == CalibrationState.Calibrating)
|
||||
{
|
||||
GUI.TextField(rect1, "!動かないでください!");
|
||||
}
|
||||
}
|
||||
|
||||
void OnKey(KeyInput key)
|
||||
{
|
||||
if (key.name == Key && key.active == 1)
|
||||
{
|
||||
CalibrationReady();
|
||||
}
|
||||
}
|
||||
void OnCon(ControllerInput con)
|
||||
{
|
||||
if (con.name == Button)
|
||||
{
|
||||
if (con.IsLeft == 1)
|
||||
{
|
||||
LeftButton = (con.active == 1);
|
||||
}
|
||||
else {
|
||||
RightButton = (con.active == 1);
|
||||
}
|
||||
if (LeftButton && RightButton) {
|
||||
//キャリブレーションできていないときのみ実行
|
||||
if (communicationValidator.calibrationState == CalibrationState.Uncalibrated)
|
||||
{
|
||||
CalibrationReady();
|
||||
}
|
||||
|
||||
LeftButton = false;
|
||||
RightButton = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CalibrationReady()
|
||||
{
|
||||
Debug.Log("[CalibrationByController] CalibrationReady");
|
||||
//多重キャリブレーション時の不良動作対処に、2回キャリブレーション要求する
|
||||
externalController.CalibrationReady = true;
|
||||
Invoke("CalibrationReady2", 0.5f);
|
||||
}
|
||||
void CalibrationReady2() {
|
||||
Debug.Log("[CalibrationByController] CalibrationReady");
|
||||
|
||||
externalController.CalibrationReady = true;
|
||||
Invoke("CalibrationExecute", Time);
|
||||
}
|
||||
void CalibrationExecute() {
|
||||
Debug.Log("[CalibrationByController] CalibrationExecute");
|
||||
|
||||
//キャリブレーション実施
|
||||
externalController.CalibrationExecute = true;
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a57104fd6abed25418f0b912791d8f6d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46a4a79844c54ef45967f469e02791ed
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,117 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class CapsuleRigidbodyMover : MonoBehaviour
|
||||
{
|
||||
public Transform MovePos;
|
||||
public Transform MoveRot;
|
||||
public Transform chest;
|
||||
|
||||
EDirection direction = EDirection.STOP;
|
||||
bool click = false;
|
||||
|
||||
enum EDirection {
|
||||
STOP,
|
||||
FORWARD,
|
||||
BACK,
|
||||
LEFT,
|
||||
RIGHT
|
||||
}
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
switch (direction) {
|
||||
case EDirection.FORWARD: MovePos.position += chest.forward * 10f * Time.deltaTime; break;
|
||||
case EDirection.BACK: MovePos.position += chest.forward * -10f * Time.deltaTime; break;
|
||||
case EDirection.LEFT: MoveRot.Rotate(new Vector3(0, -100f * Time.deltaTime, 0)); break;
|
||||
case EDirection.RIGHT: MoveRot.Rotate(new Vector3(0, 100f * Time.deltaTime, 0)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
public void KeyInputEvent(EVMC4U.KeyInput key)
|
||||
{
|
||||
if (key.active == 1)
|
||||
{
|
||||
switch (key.name) {
|
||||
case "W": direction = EDirection.FORWARD; break;
|
||||
case "S": direction = EDirection.BACK; break;
|
||||
case "A": direction = EDirection.LEFT; break;
|
||||
case "D": direction = EDirection.RIGHT; break;
|
||||
}
|
||||
}else{
|
||||
direction = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void ControllerInputEvent(EVMC4U.ControllerInput con)
|
||||
{
|
||||
if (con.name == "PositionTrackpad")
|
||||
{
|
||||
if (con.IsAxis == 1)
|
||||
{
|
||||
var rot = Mathf.Atan2(con.Axis.x, con.Axis.y) * Mathf.Rad2Deg;
|
||||
|
||||
if (-45 <= rot && rot < 45)
|
||||
{
|
||||
direction = EDirection.FORWARD;
|
||||
}
|
||||
else if (45 <= rot && rot < 135)
|
||||
{
|
||||
direction = EDirection.RIGHT;
|
||||
}
|
||||
else if (-135 <= rot && rot < -45)
|
||||
{
|
||||
direction = EDirection.LEFT;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = EDirection.BACK;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(con.name == "ClickTrackpad")
|
||||
{
|
||||
click = con.active == 1;
|
||||
}
|
||||
if (!click)
|
||||
{
|
||||
direction = EDirection.STOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f1fc480ff691e345af16e7fa651417e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 86b6989340add9447bb256f0c003b57f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,43 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using EVMC4U;
|
||||
|
||||
public class DeviceAttacher: MonoBehaviour {
|
||||
public DeviceReceiver deviceReceiver;
|
||||
public string DeviceSerial = null;
|
||||
|
||||
void Update () {
|
||||
for (int i = 0; i < deviceReceiver.Serials.Length; i++) {
|
||||
if (deviceReceiver.Serials[i] == DeviceSerial) {
|
||||
deviceReceiver.Transforms[i] = transform;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6adc09d226c320b47931ccca7db11d22
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e3ab1687368e7234191bef23b011eda6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,64 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class FreezeSwitch : MonoBehaviour
|
||||
{
|
||||
public ExternalReceiver externalReceiver;
|
||||
public InputReceiver inputReceiver;
|
||||
|
||||
public string Key= "スペース";
|
||||
public string Button= "ClickMenu";
|
||||
void Start()
|
||||
{
|
||||
inputReceiver.KeyInputAction.AddListener(OnKey);
|
||||
inputReceiver.ControllerInputAction.AddListener(OnCon);
|
||||
}
|
||||
void OnKey(KeyInput key)
|
||||
{
|
||||
if (key.name == Key) {
|
||||
if (key.active == 1) {
|
||||
externalReceiver.Freeze = !externalReceiver.Freeze;
|
||||
}
|
||||
}
|
||||
}
|
||||
void OnCon(ControllerInput con)
|
||||
{
|
||||
if (con.name == Button)
|
||||
{
|
||||
if (con.active == 1)
|
||||
{
|
||||
externalReceiver.Freeze = !externalReceiver.Freeze;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97fd16077045a25459ca9b9ad21be3e3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ba7b15a3117ea446a06b3d34fa9b5e1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,412 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
[RequireComponent(typeof(ExternalReceiver))]
|
||||
public class HandCatch : MonoBehaviour
|
||||
{
|
||||
//表示オンオフ
|
||||
public bool ShowCollider = true;
|
||||
bool ShowColliderOld = true;
|
||||
|
||||
public float NonHoldFilter = 0f;
|
||||
public float InHoldFilter = 0.90f;
|
||||
|
||||
float offset = 0.06f;
|
||||
float size = 0.15f;
|
||||
|
||||
public string CollisionTag = "";
|
||||
|
||||
public float SpeedMultiplier = 1.0f;
|
||||
|
||||
public string LeftKey = "Z";
|
||||
public string RightKey = "X";
|
||||
public string ControllerButton = "ClickTrigger";
|
||||
|
||||
public bool signaling = true;
|
||||
|
||||
public bool StickyMode = false;
|
||||
|
||||
bool stickyLeft = false;
|
||||
bool stickyRight = false;
|
||||
|
||||
ExternalReceiver exrcv;
|
||||
InputReceiver inputrcv;
|
||||
|
||||
Transform leftHand;
|
||||
Transform rightHand;
|
||||
|
||||
GameObject leftSphere;
|
||||
GameObject rightSphere;
|
||||
|
||||
Rigidbody leftRigidBody;
|
||||
Rigidbody rightRigidBody;
|
||||
|
||||
Vector3 leftLastPos;
|
||||
Vector3 rightLastPos;
|
||||
Vector3 leftLastSpeed;
|
||||
Vector3 rightLastSpeed;
|
||||
|
||||
HandCatch_Helper leftHelper;
|
||||
HandCatch_Helper rightHelper;
|
||||
|
||||
GameObject leftCatchedObject;
|
||||
GameObject rightCatchedObject;
|
||||
|
||||
bool leftCatchedObjectIsKinematic;
|
||||
bool rightCatchedObjectIsKinematic;
|
||||
|
||||
Transform leftCatchedObjectParent;
|
||||
Transform rightCatchedObjectParent;
|
||||
|
||||
void Start()
|
||||
{
|
||||
//ExternalReceiverにキー操作を登録
|
||||
exrcv = GetComponent<EVMC4U.ExternalReceiver>();
|
||||
inputrcv = GetComponentInChildren<EVMC4U.InputReceiver>();
|
||||
|
||||
inputrcv.ControllerInputAction.AddListener(ControllerInputEvent);
|
||||
inputrcv.KeyInputAction.AddListener(KeyInputEvent);
|
||||
|
||||
//ブレ防止用にフィルタを設定
|
||||
exrcv.BonePositionFilterEnable = true;
|
||||
exrcv.BoneRotationFilterEnable = true;
|
||||
exrcv.BoneFilter = NonHoldFilter;
|
||||
|
||||
//手のボーンを取得
|
||||
var anim = exrcv.Model.GetComponent<Animator>();
|
||||
leftHand = anim.GetBoneTransform(HumanBodyBones.LeftHand);
|
||||
rightHand = anim.GetBoneTransform(HumanBodyBones.RightHand);
|
||||
|
||||
//左手当たり判定スフィア生成
|
||||
leftSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
|
||||
leftSphere.transform.parent = leftHand;
|
||||
leftSphere.transform.localPosition = new Vector3(-offset, 0f, 0f);
|
||||
leftSphere.transform.localScale = new Vector3(size, size, size);
|
||||
|
||||
//左手当たり判定スフィアコライダー設定
|
||||
var leftCollider = leftSphere.GetComponent<Collider>();
|
||||
//コライダーは反応のみで衝突しない
|
||||
leftCollider.isTrigger = true;
|
||||
|
||||
//左手当たり判定物理演算追加
|
||||
leftRigidBody = leftSphere.AddComponent<Rigidbody>();
|
||||
//物理は反応のみで演算しない
|
||||
leftRigidBody.isKinematic = true;
|
||||
|
||||
//左手当たり判定ヘルパー追加
|
||||
leftHelper = leftSphere.AddComponent<HandCatch_Helper>();
|
||||
|
||||
//右手当たり判定スフィア生成
|
||||
rightSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
|
||||
rightSphere.transform.parent = rightHand;
|
||||
rightSphere.transform.localPosition = new Vector3(offset, 0f, 0f);
|
||||
rightSphere.transform.localScale = new Vector3(size, size, size);
|
||||
|
||||
//右手当たり判定スフィアコライダー設定
|
||||
var rightCollider = rightSphere.GetComponent<Collider>();
|
||||
//コライダーは反応のみで衝突しない
|
||||
rightCollider.isTrigger = true;
|
||||
|
||||
//右手当たり判定物理演算追加
|
||||
rightRigidBody = rightSphere.AddComponent<Rigidbody>();
|
||||
//物理は反応のみで演算しない
|
||||
rightRigidBody.isKinematic = true;
|
||||
|
||||
//右手当たり判定ヘルパー追加
|
||||
rightHelper = rightSphere.AddComponent<HandCatch_Helper>();
|
||||
}
|
||||
|
||||
//物理演算のためFixedUpdate
|
||||
void FixedUpdate()
|
||||
{
|
||||
//剥がれ防止で親を設定
|
||||
leftSphere.transform.parent = leftHand;
|
||||
leftSphere.transform.localPosition = new Vector3(-offset, 0f, 0f);
|
||||
leftSphere.transform.localScale = new Vector3(size, size, size);
|
||||
rightSphere.transform.parent = rightHand;
|
||||
rightSphere.transform.localPosition = new Vector3(offset, 0f, 0f);
|
||||
rightSphere.transform.localScale = new Vector3(size, size, size);
|
||||
|
||||
//表示非表示を反映
|
||||
if (ShowColliderOld != ShowCollider) {
|
||||
leftSphere.GetComponent<MeshRenderer>().enabled = ShowCollider;
|
||||
rightSphere.GetComponent<MeshRenderer>().enabled = ShowCollider;
|
||||
|
||||
ShowColliderOld = ShowCollider;
|
||||
}
|
||||
|
||||
//投げるとき用にフレーム間速度を求める
|
||||
leftLastSpeed = SpeedMultiplier * (leftHand.transform.position - leftLastPos)/Time.fixedDeltaTime;
|
||||
leftLastPos = leftHand.transform.position;
|
||||
rightLastSpeed = SpeedMultiplier * (rightHand.transform.position - rightLastPos)/Time.fixedDeltaTime;
|
||||
rightLastPos = rightHand.transform.position;
|
||||
}
|
||||
|
||||
//左手掴む処理
|
||||
void CatchLeft(bool s)
|
||||
{
|
||||
if (s)
|
||||
{
|
||||
//つかみ処理
|
||||
if (leftHelper.Trigger && leftHelper.other != null)
|
||||
{
|
||||
//コリジョンタグになにか文字が入っていて、対象と一致しない場合は処理しない
|
||||
if (CollisionTag != "" && CollisionTag != leftHelper.other.tag) {
|
||||
return;
|
||||
}
|
||||
//左手ですでに掴んでいるものは掴まない
|
||||
if (leftHelper.other.gameObject.transform.parent == leftSphere.transform)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//右手ですでに掴んでいるものは掴まない
|
||||
if (leftHelper.other.gameObject.transform.parent == rightSphere.transform)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//解除用に保持
|
||||
leftCatchedObject = leftHelper.other.gameObject;
|
||||
|
||||
//親を保存
|
||||
leftCatchedObjectParent = leftCatchedObject.transform.parent;
|
||||
|
||||
//手を親に上書き
|
||||
leftCatchedObject.transform.parent = leftSphere.transform;
|
||||
|
||||
//掴むために物理演算を切る
|
||||
var rigid = leftCatchedObject.GetComponent<Rigidbody>();
|
||||
if (rigid != null) {
|
||||
//IsKinematicを保存
|
||||
leftCatchedObjectIsKinematic = rigid.isKinematic;
|
||||
//設定に関わらずtrueにする
|
||||
rigid.isKinematic = true;
|
||||
}
|
||||
|
||||
//フィルタ強く
|
||||
exrcv.BoneFilter = InHoldFilter;
|
||||
|
||||
//オブジェクトにメッセージを送る
|
||||
if (signaling)
|
||||
{
|
||||
leftCatchedObject.SendMessage("OnCatchedLeftHand");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (leftCatchedObject != null)
|
||||
{
|
||||
//解除して親に戻す
|
||||
leftCatchedObject.transform.parent = leftCatchedObjectParent;
|
||||
|
||||
//掴むために物理演算を切る
|
||||
var rigid = leftCatchedObject.GetComponent<Rigidbody>();
|
||||
if (rigid != null)
|
||||
{
|
||||
//IsKinematicを保存していた設定にする
|
||||
rigid.isKinematic = leftCatchedObjectIsKinematic;
|
||||
|
||||
//投げるために速度を転送する
|
||||
rigid.linearVelocity = leftLastSpeed;
|
||||
}
|
||||
|
||||
//フィルタ解除
|
||||
exrcv.BoneFilter = NonHoldFilter;
|
||||
|
||||
//オブジェクトにメッセージを送る
|
||||
if (signaling)
|
||||
{
|
||||
leftCatchedObject.SendMessage("OnReleasedLeftHand");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CatchRight(bool s)
|
||||
{
|
||||
if (s)
|
||||
{
|
||||
if (rightHelper.Trigger && rightHelper.other != null)
|
||||
{
|
||||
//コリジョンタグになにか文字が入っていて、対象と一致しない場合は処理しない
|
||||
if (CollisionTag != "" && CollisionTag != rightHelper.other.tag)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//左手ですでに掴んでいるものは掴まない
|
||||
if (rightHelper.other.gameObject.transform.parent == leftSphere.transform)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//右手ですでに掴んでいるものは掴まない
|
||||
if (rightHelper.other.gameObject.transform.parent == rightSphere.transform)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//解除用に保持
|
||||
rightCatchedObject = rightHelper.other.gameObject;
|
||||
|
||||
//親を保存
|
||||
rightCatchedObjectParent = rightCatchedObject.transform.parent;
|
||||
|
||||
//手を親に上書き
|
||||
rightCatchedObject.transform.parent = rightSphere.transform;
|
||||
|
||||
//掴むために物理演算を切る
|
||||
var rigid = rightCatchedObject.GetComponent<Rigidbody>();
|
||||
if (rigid != null)
|
||||
{
|
||||
//IsKinematicを保存
|
||||
rightCatchedObjectIsKinematic = rigid.isKinematic;
|
||||
//設定に関わらずtrueにする
|
||||
rigid.isKinematic = true;
|
||||
}
|
||||
|
||||
//フィルタ強く
|
||||
exrcv.BoneFilter = InHoldFilter;
|
||||
|
||||
//オブジェクトにメッセージを送る
|
||||
if (signaling)
|
||||
{
|
||||
rightCatchedObject.SendMessage("OnCatchedRightHand");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rightCatchedObject != null)
|
||||
{
|
||||
//解除して親に戻す
|
||||
rightCatchedObject.transform.parent = rightCatchedObjectParent;
|
||||
|
||||
//掴むために物理演算を切る
|
||||
var rigid = rightCatchedObject.GetComponent<Rigidbody>();
|
||||
if (rigid != null)
|
||||
{
|
||||
//IsKinematicを保存していた設定にする
|
||||
rigid.isKinematic = rightCatchedObjectIsKinematic;
|
||||
|
||||
Debug.Log(rightRigidBody.linearVelocity);
|
||||
//投げるために速度を転送する
|
||||
rigid.linearVelocity = rightLastSpeed;
|
||||
}
|
||||
|
||||
//フィルタ解除
|
||||
exrcv.BoneFilter = NonHoldFilter;
|
||||
|
||||
//オブジェクトにメッセージを送る
|
||||
if (signaling)
|
||||
{
|
||||
rightCatchedObject.SendMessage("OnReleasedRightHand");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void KeyInputEvent(EVMC4U.KeyInput key)
|
||||
{
|
||||
if (!StickyMode)
|
||||
{
|
||||
//Zキーが押されたか
|
||||
if (key.name == LeftKey)
|
||||
{
|
||||
//つかみ・離し
|
||||
CatchLeft(key.active == 1);
|
||||
}
|
||||
//Xキー押されたか
|
||||
if (key.name == RightKey)
|
||||
{
|
||||
//つかみ・離し
|
||||
CatchRight(key.active == 1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (key.active == 1)
|
||||
{
|
||||
//Zキーが押されたか
|
||||
if (key.name == LeftKey)
|
||||
{
|
||||
//つかみ・離し
|
||||
stickyLeft = !stickyLeft;
|
||||
CatchLeft(stickyLeft);
|
||||
}
|
||||
//Xキー押されたか
|
||||
if (key.name == RightKey)
|
||||
{
|
||||
//つかみ・離し
|
||||
stickyRight = !stickyRight;
|
||||
CatchRight(stickyRight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ControllerInputEvent(EVMC4U.ControllerInput con)
|
||||
{
|
||||
//トリガー引かれたか
|
||||
if (con.name == ControllerButton)
|
||||
{
|
||||
if (!StickyMode)
|
||||
{
|
||||
if (con.IsLeft == 1)
|
||||
{
|
||||
//つかみ・離し
|
||||
CatchLeft(con.active == 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//つかみ・離し
|
||||
CatchRight(con.active == 1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (con.active == 1) {
|
||||
if (con.IsLeft == 1)
|
||||
{
|
||||
//つかみ・離し
|
||||
stickyLeft = !stickyLeft;
|
||||
CatchLeft(stickyLeft);
|
||||
}
|
||||
else
|
||||
{
|
||||
//つかみ・離し
|
||||
stickyRight = !stickyRight;
|
||||
CatchRight(stickyRight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7d956bc80add4844891ac394eb195161
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,54 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class HandCatch_Helper : MonoBehaviour
|
||||
{
|
||||
public bool Trigger = false;
|
||||
public Collider other;
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
this.other = other;
|
||||
Trigger = true;
|
||||
|
||||
GetComponent<MeshRenderer>().material.color = Color.cyan;
|
||||
}
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
this.other = other;
|
||||
Trigger = false;
|
||||
|
||||
GetComponent<MeshRenderer>().material.color = Color.white;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32a6e766ebdc4c140b2e2324eae9915c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,110 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
//掴まれたとき: 手の位置に持つ
|
||||
//離されたとき: 鞘の位置なら、収まるべき場所に戻る
|
||||
// そうでないなら、親なしにしてとどまる
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class HandCatch_WeaponHelper : MonoBehaviour
|
||||
{
|
||||
public Transform CaseParent; //鞘オブジェクト
|
||||
public Transform LeftHoldPosition; //左手保持位置
|
||||
public Transform RightHoldPosition; //右手保持位置
|
||||
|
||||
//鞘に戻らない限界距離
|
||||
public float Threshold = 0.5f;
|
||||
|
||||
//どれだけふわっと動くか
|
||||
public float Filter = 0.8f;
|
||||
|
||||
//初期位置(鞘に収まっている状態)
|
||||
Vector3 CasePosition;
|
||||
Quaternion CaseRotation;
|
||||
|
||||
//初期位置(鞘に収まっている状態)
|
||||
Vector3 TragetPosition;
|
||||
Quaternion TargetRotation;
|
||||
|
||||
void Start()
|
||||
{
|
||||
CasePosition = transform.localPosition;
|
||||
CaseRotation = transform.localRotation;
|
||||
|
||||
TragetPosition = CasePosition;
|
||||
TargetRotation = CaseRotation;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (transform.parent != null) {
|
||||
transform.localPosition = Vector3.Lerp(TragetPosition, transform.localPosition, Filter);
|
||||
transform.localRotation = Quaternion.Lerp(TargetRotation, transform.localRotation, Filter);
|
||||
}
|
||||
}
|
||||
|
||||
void OnCatchedLeftHand()
|
||||
{
|
||||
Debug.Log("C:L");
|
||||
TragetPosition = LeftHoldPosition.localPosition;
|
||||
TargetRotation = LeftHoldPosition.localRotation;
|
||||
}
|
||||
void OnCatchedRightHand()
|
||||
{
|
||||
Debug.Log("C:R");
|
||||
TragetPosition = RightHoldPosition.localPosition;
|
||||
TargetRotation = RightHoldPosition.localRotation;
|
||||
}
|
||||
|
||||
void OnReleasedLeftHand()
|
||||
{
|
||||
Debug.Log("R:L");
|
||||
OnReleasedRightHand();//同じ処理
|
||||
}
|
||||
|
||||
void OnReleasedRightHand()
|
||||
{
|
||||
Debug.Log("R:R");
|
||||
|
||||
//計算用に一時的に親にする
|
||||
transform.parent = CaseParent;
|
||||
float distance = Vector3.Distance(CasePosition, transform.localPosition);
|
||||
if (distance < Threshold)
|
||||
{
|
||||
transform.parent = CaseParent;
|
||||
TragetPosition = CasePosition;
|
||||
TargetRotation = CaseRotation;
|
||||
}
|
||||
else {
|
||||
transform.parent = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b722cb0621aaad4f9585f5d17bf89e1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ac5b962b075c1f4e913c49ad9c50680
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,57 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using EVMC4U;
|
||||
|
||||
public class ObjectSwitch : MonoBehaviour
|
||||
{
|
||||
public InputReceiver inputReceiver;
|
||||
|
||||
public string Key = "スペース";
|
||||
public string Button = "ClickMenu";
|
||||
void Start()
|
||||
{
|
||||
inputReceiver.KeyInputAction.AddListener(OnKey);
|
||||
inputReceiver.ControllerInputAction.AddListener(OnCon);
|
||||
}
|
||||
void OnKey(KeyInput key)
|
||||
{
|
||||
if (key.name == Key && key.active == 1)
|
||||
{
|
||||
gameObject.SetActive(!gameObject.activeSelf);
|
||||
}
|
||||
}
|
||||
void OnCon(ControllerInput con)
|
||||
{
|
||||
if (con.name == Button && con.active == 1)
|
||||
{
|
||||
gameObject.SetActive(!gameObject.activeSelf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca3e3053b95a4864cb49cc75a25c816f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ae2642b6e10fda49985acfd80a2bcda
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,73 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class TeleportManager : MonoBehaviour
|
||||
{
|
||||
public InputReceiver inputReceiver;
|
||||
public GameObject ParentObject;
|
||||
public Animator model;
|
||||
|
||||
public string[] TriggerKey = new string[5];
|
||||
public Transform[] TeleportTarget = new Transform[5];
|
||||
|
||||
private Transform footpos;
|
||||
|
||||
void Start()
|
||||
{
|
||||
inputReceiver.KeyInputAction.AddListener(OnKey);
|
||||
|
||||
footpos = model.GetBoneTransform(HumanBodyBones.LeftFoot);
|
||||
}
|
||||
|
||||
void OnKey(KeyInput key)
|
||||
{
|
||||
//押されたときのみ
|
||||
if (key.active != 1) {
|
||||
return;
|
||||
}
|
||||
//該当するキーを探す
|
||||
for (int i = 0; i < TriggerKey.Length; i++) {
|
||||
if (TriggerKey[i] == key.name) {
|
||||
Debug.Log("Key:" + key.name);
|
||||
//発見したらターゲット有効性をチェックする
|
||||
if (TeleportTarget.Length > i) {
|
||||
if (TeleportTarget[i] != null) {
|
||||
//モデルに反映
|
||||
ParentObject.transform.position -= (footpos.position - TeleportTarget[i].position);
|
||||
ParentObject.transform.rotation = TeleportTarget[i].rotation;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ca42dd9317a6194d82d5ab6c382cd59
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9cc666ef35f0a954280a2dc6a3c01c04
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,86 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class HiResolutionPhotoCamera : MonoBehaviour {
|
||||
//撮影したい解像度
|
||||
public int width = 4096;
|
||||
public int height = 2160;
|
||||
|
||||
//撮影したいカメラ
|
||||
public Camera cam;
|
||||
|
||||
//撮影ボタン
|
||||
public bool shot = false;
|
||||
|
||||
void Update () {
|
||||
//撮影ボタンが押されたら撮影する
|
||||
if (shot) {
|
||||
shot = false;
|
||||
TakePhoto();
|
||||
}
|
||||
}
|
||||
|
||||
void TakePhoto() {
|
||||
width = 8192;
|
||||
height = (int)((float)8192 * (float)Screen.height/ (float)Screen.width);
|
||||
|
||||
//撮影したい解像度のRenderテクスチャを作成
|
||||
var renderTexture = new RenderTexture(width, height, 24);
|
||||
//アクティブなレンダーテクスチャを保存
|
||||
var save = RenderTexture.active;
|
||||
|
||||
//カメラに描画対象を設定
|
||||
cam.targetTexture = renderTexture;
|
||||
//ReadPixelsの取得元(アクティブなレンダーテクスチャ)を設定
|
||||
RenderTexture.active = renderTexture;
|
||||
|
||||
//即座にレンダリングする
|
||||
cam.Render();
|
||||
|
||||
//テクスチャを生成して読み取り
|
||||
Texture2D texture = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false);
|
||||
texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
|
||||
texture.Apply();
|
||||
|
||||
//テクスチャをpngファイルに保存
|
||||
byte[] data = texture.EncodeToPNG();
|
||||
File.WriteAllBytes("output" + DateTime.Now.ToString("yyyy-MM-dd_hh-mm-ss-ff")+ ".png", data);
|
||||
|
||||
//破棄
|
||||
DestroyImmediate(texture);
|
||||
|
||||
//カメラの描画対象を元に戻す
|
||||
cam.targetTexture = null;
|
||||
//アクティブなレンダーテクスチャを復元
|
||||
RenderTexture.active = save;
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a163057f77fd4964d930cb2b19e510c5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/EVMC4U/Test.meta
vendored
8
Assets/External/EVMC4U/Test.meta
vendored
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e3d414de8589044f8af782fc6e85db6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
51
Assets/External/EVMC4U/Test/AddComponentTest.cs
vendored
51
Assets/External/EVMC4U/Test/AddComponentTest.cs
vendored
@ -1,51 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class AddComponentTest : MonoBehaviour
|
||||
{
|
||||
public GameObject Model;
|
||||
|
||||
// Use this for initialization
|
||||
void Start()
|
||||
{
|
||||
var x = gameObject.AddComponent<EVMC4U.ExternalReceiver>();
|
||||
x.Model = Model;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca033debfd5f5e749bf2054d2a0527dc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
55
Assets/External/EVMC4U/Test/DaisyChainTesting.cs
vendored
55
Assets/External/EVMC4U/Test/DaisyChainTesting.cs
vendored
@ -1,55 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using uOSC;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class DaisyChainTesting : MonoBehaviour, IExternalReceiver
|
||||
{
|
||||
//デイジーチェーンテスト
|
||||
public void MessageDaisyChain(ref Message message, int callCount)
|
||||
{
|
||||
if (message.address == "/VMC/Ext/T")
|
||||
{
|
||||
Debug.Log(message.address + "[" + (float)message.values[0] + "]");
|
||||
}
|
||||
|
||||
//メッセージ全部Logに出そうとか考えないこと。Unityが死ぬほど送られてきます。
|
||||
}
|
||||
|
||||
public void UpdateDaisyChain()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 115a682733d799a4c8da6c4e1da18253
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
103
Assets/External/EVMC4U/Test/InputTesting.cs
vendored
103
Assets/External/EVMC4U/Test/InputTesting.cs
vendored
@ -1,103 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EVMC4U
|
||||
{
|
||||
public class InputTesting : MonoBehaviour
|
||||
{
|
||||
public InputReceiver receiver;
|
||||
private void Start()
|
||||
{
|
||||
receiver.ControllerInputAction.AddListener(ControllerInputEvent);
|
||||
receiver.KeyInputAction.AddListener(KeyInputEvent);
|
||||
|
||||
receiver.MidiNoteInputAction.AddListener(MidiNoteEvent);
|
||||
receiver.MidiCCValueInputAction.AddListener(MidiCCValEvent);
|
||||
receiver.MidiCCButtonInputAction.AddListener(MidiCCButtonEvent);
|
||||
}
|
||||
|
||||
public void KeyInputEvent(EVMC4U.KeyInput key)
|
||||
{
|
||||
switch (key.active)
|
||||
{
|
||||
case 1:
|
||||
Debug.Log("" + key.name + "(" + key.keycode + ") pressed.");
|
||||
break;
|
||||
case 0:
|
||||
Debug.Log("" + key.name + "(" + key.keycode + ") released.");
|
||||
break;
|
||||
default:
|
||||
Debug.Log("" + key.name + "(" + key.keycode + ") unknown.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void ControllerInputEvent(EVMC4U.ControllerInput con)
|
||||
{
|
||||
switch (con.active)
|
||||
{
|
||||
case 2:
|
||||
Debug.Log("" + con.name + "(" + ((con.IsAxis == 1) ? "Axis" : "Non Axis") + "/" + ((con.IsLeft == 1) ? "Left" : "Right") + "/" + ((con.IsTouch == 1) ? "Touch" : "Non Touch") + " [" + con.Axis.x + "," + con.Axis.y + "," + con.Axis.z + "]" + ") changed.");
|
||||
break;
|
||||
case 1:
|
||||
Debug.Log("" + con.name + "(" + ((con.IsAxis == 1) ? "Axis" : "Non Axis") + "/" + ((con.IsLeft == 1) ? "Left" : "Right") + "/" + ((con.IsTouch == 1) ? "Touch" : "Non Touch") + " [" + con.Axis.x + "," + con.Axis.y + "," + con.Axis.z + "]" + ") pressed.");
|
||||
break;
|
||||
case 0:
|
||||
Debug.Log("" + con.name + "(" + ((con.IsAxis == 1) ? "Axis" : "Non Axis") + "/" + ((con.IsLeft == 1) ? "Left" : "Right") + "/" + ((con.IsTouch == 1) ? "Touch" : "Non Touch") + " [" + con.Axis.x + "," + con.Axis.y + "," + con.Axis.z + "]" + ") released.");
|
||||
break;
|
||||
default:
|
||||
Debug.Log("" + con.name + "(" + ((con.IsAxis == 1) ? "Axis" : "Non Axis") + "/" + ((con.IsLeft == 1) ? "Left" : "Right") + "/" + ((con.IsTouch == 1) ? "Touch" : "Non Touch") + " [" + con.Axis.x + "," + con.Axis.y + "," + con.Axis.z + "]" + ") unknown.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void MidiNoteEvent(EVMC4U.MidiNote note)
|
||||
{
|
||||
if (note.active == 1)
|
||||
{
|
||||
Debug.Log("MIDI Note ON =" + note.note + " channel=" + note.channel + " velocity=" + note.velocity);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("MIDI note OFF =" + note.note + " channel=" + note.channel + " velocity=" + note.velocity);
|
||||
}
|
||||
}
|
||||
|
||||
public void MidiCCValEvent(EVMC4U.MidiCCValue val)
|
||||
{
|
||||
Debug.Log("MIDI CC Value knob=" + val.knob + " value=" + val.value);
|
||||
}
|
||||
|
||||
public void MidiCCButtonEvent(EVMC4U.MidiCCButton bit)
|
||||
{
|
||||
Debug.Log("MIDI CC Button knob=" + bit.knob + " active=" + bit.active);
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/External/EVMC4U/Test/InputTesting.cs.meta
vendored
11
Assets/External/EVMC4U/Test/InputTesting.cs.meta
vendored
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30c17a2abdf40c749a563c6beb9c4cb3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/EVMC4U/class.meta
vendored
8
Assets/External/EVMC4U/class.meta
vendored
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7618eb7d813fe0348ba985c6aee44247
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
45
Assets/External/EVMC4U/class/EVMC4UeventClass.cs
vendored
45
Assets/External/EVMC4U/class/EVMC4UeventClass.cs
vendored
@ -1,45 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace EVMC4U {
|
||||
//イベント定義
|
||||
[Serializable]
|
||||
public class KeyInputEvent : UnityEvent<KeyInput> { };
|
||||
[Serializable]
|
||||
public class ControllerInputEvent : UnityEvent<ControllerInput> { };
|
||||
[Serializable]
|
||||
public class MidiNoteInputEvent : UnityEvent<MidiNote> { };
|
||||
[Serializable]
|
||||
public class MidiCCValueInputEvent : UnityEvent<MidiCCValue> { };
|
||||
[Serializable]
|
||||
public class MidiCCButtonInputEvent : UnityEvent<MidiCCButton> { };
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c8815bc3a23b2e64d867d5a797c3d66b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
128
Assets/External/EVMC4U/class/EVMC4Ustructs.cs
vendored
128
Assets/External/EVMC4U/class/EVMC4Ustructs.cs
vendored
@ -1,128 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
#endif
|
||||
|
||||
namespace EVMC4U {
|
||||
//キーボード入力情報
|
||||
public struct KeyInput
|
||||
{
|
||||
public int active;
|
||||
public string name;
|
||||
public int keycode;
|
||||
}
|
||||
|
||||
//コントローラ入力情報
|
||||
public struct ControllerInput
|
||||
{
|
||||
public int active;
|
||||
public string name;
|
||||
public int IsLeft;
|
||||
public int IsTouch;
|
||||
public int IsAxis;
|
||||
public Vector3 Axis;
|
||||
}
|
||||
|
||||
//MIDI Note入力情報
|
||||
public struct MidiNote
|
||||
{
|
||||
public int active;
|
||||
public int channel;
|
||||
public int note;
|
||||
public float velocity;
|
||||
}
|
||||
|
||||
//MIDI CC Value入力情報
|
||||
public struct MidiCCValue
|
||||
{
|
||||
public int knob;
|
||||
public float value;
|
||||
}
|
||||
|
||||
//MIDI CC Button入力情報
|
||||
public struct MidiCCButton
|
||||
{
|
||||
public int knob;
|
||||
public float active;
|
||||
}
|
||||
|
||||
public enum CalibrationState
|
||||
{
|
||||
Uncalibrated = 0,
|
||||
WaitingForCalibrating = 1,
|
||||
Calibrating = 2,
|
||||
Calibrated = 3,
|
||||
}
|
||||
public enum CalibrationMode
|
||||
{
|
||||
Normal = 0,
|
||||
MR_Hand = 1,
|
||||
MR_Floor = 2,
|
||||
T_Pose = 3,
|
||||
}
|
||||
public enum VirtualDevice
|
||||
{
|
||||
HMD = 0,
|
||||
Controller = 1,
|
||||
Tracker = 2,
|
||||
}
|
||||
public class LabelAttribute : PropertyAttribute
|
||||
{
|
||||
public readonly string name;
|
||||
public LabelAttribute(string name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[CustomPropertyDrawer(typeof(LabelAttribute))]
|
||||
public class LabelAttributeDrawer : PropertyDrawer
|
||||
{
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
#if EVMC4U_JA
|
||||
var attr = attribute as LabelAttribute;
|
||||
label.text = attr.name;
|
||||
#endif
|
||||
EditorGUI.PropertyField(position, property, label, true);
|
||||
}
|
||||
|
||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||
{
|
||||
return base.GetPropertyHeight(property, label);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c408232ad0549a04885448ccc3c949c5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,88 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace EVMC4U {
|
||||
public class ExternalReceiverManager
|
||||
{
|
||||
List<IExternalReceiver> receivers = new List<IExternalReceiver>();
|
||||
|
||||
//コンストラクタ
|
||||
public ExternalReceiverManager(GameObject[] gameObjects) {
|
||||
GetIExternalReceiver(gameObjects);
|
||||
}
|
||||
|
||||
//ゲームオブジェクトからIExternalReceiverを探す
|
||||
public void GetIExternalReceiver(GameObject[] gameObjects)
|
||||
{
|
||||
//リストをクリア
|
||||
receivers.Clear();
|
||||
if (gameObjects == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
//GameObjectを調べる
|
||||
foreach (var g in gameObjects)
|
||||
{
|
||||
//GameObjectが存在するなら
|
||||
if (g != null) {
|
||||
//IExternalReceiverを探す
|
||||
var f = g.GetComponent(typeof(IExternalReceiver)) as IExternalReceiver;
|
||||
if (f != null) {
|
||||
//リストに突っ込む
|
||||
receivers.Add(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//IExternalReceiverのリストを使って配信する
|
||||
public bool SendNextReceivers(uOSC.Message message, int callCount)
|
||||
{
|
||||
if (callCount > 100)
|
||||
{
|
||||
//無限ループ対策
|
||||
Debug.LogError("[ExternalReceiver] Too many call(maybe infinite loop).");
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (var r in receivers) {
|
||||
//インターフェースがあるか
|
||||
if (r != null)
|
||||
{
|
||||
//Chain数を+1して次へ
|
||||
r.MessageDaisyChain(ref message, callCount + 1);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5bff20909940d4b42906662b389b7cb1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,40 +0,0 @@
|
||||
/*
|
||||
* ExternalReceiver
|
||||
* https://sabowl.sakura.ne.jp/gpsnmeajp/
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2019 gpsnmeajp
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace EVMC4U {
|
||||
//デイジーチェーン受信の最低限のインターフェース
|
||||
public interface IExternalReceiver
|
||||
{
|
||||
void MessageDaisyChain(ref uOSC.Message message, int callCount);
|
||||
void UpdateDaisyChain();
|
||||
}
|
||||
}
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f1804aa17fcc684f856124d233e9672
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -13,19 +13,16 @@ namespace UniGLTF
|
||||
static List<AnimationClip> GetAnimationClips(GameObject Copy)
|
||||
{
|
||||
var clips = new List<AnimationClip>();
|
||||
|
||||
var animator = Copy.GetComponent<Animator>();
|
||||
var animation = Copy.GetComponent<Animation>();
|
||||
if (animator != null)
|
||||
{
|
||||
clips.AddRange(AnimationExporter.GetAnimationClips(animator));
|
||||
clips = AnimationExporter.GetAnimationClips(animator);
|
||||
}
|
||||
|
||||
var animation = Copy.GetComponent<Animation>();
|
||||
if (animation != null)
|
||||
else if (animation != null)
|
||||
{
|
||||
clips.AddRange(AnimationExporter.GetAnimationClips(animation));
|
||||
clips = AnimationExporter.GetAnimationClips(animation);
|
||||
}
|
||||
|
||||
return clips;
|
||||
}
|
||||
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 31e28050bb28edd40a730d8e05ddcde5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user