Add : evmc 스크립트 추가 및 스트리밍 시스템 구조 변경
This commit is contained in:
parent
afd5a84057
commit
7814cb3305
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 8458a1e47a62f6f4187d89d44f564117
|
guid: f265d3b79baedc046a3ff59ee213ef75
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
BIN
Assets/External/EVMC4U/3rdpartylicenses(ExternalReceiverPack).txt
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/3rdpartylicenses(ExternalReceiverPack).txt
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 7d2617171adc40b41ac50228f101e178
|
guid: 9402b207048258649b4b1c0580e1b73b
|
||||||
TextScriptImporter:
|
TextScriptImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
193
Assets/External/EVMC4U/CameraReceiver.cs
vendored
Normal file
193
Assets/External/EVMC4U/CameraReceiver.cs
vendored
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
/*
|
||||||
|
* 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];
|
||||||
|
//受信と更新のタイミングは切り離した
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 04fa1873cf1c0374aab1670a24d741b5
|
guid: eddf837c1e0f4a04697b1b68adb4a39f
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
256
Assets/External/EVMC4U/CommunicationValidator.cs
vendored
Normal file
256
Assets/External/EVMC4U/CommunicationValidator.cs
vendored
Normal file
@ -0,0 +1,256 @@
|
|||||||
|
/*
|
||||||
|
* 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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: da24ccbbed21eb94d902d42337df3699
|
guid: 8a8590b55e73bba4aa42b08101a7cc84
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
333
Assets/External/EVMC4U/DeviceReceiver.cs
vendored
Normal file
333
Assets/External/EVMC4U/DeviceReceiver.cs
vendored
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
/*
|
||||||
|
* 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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 829a678062065f04582189619babae79
|
guid: 11e5ccb252b6916458ec049fa79a967e
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
158
Assets/External/EVMC4U/DirectionalLightReceiver.cs
vendored
Normal file
158
Assets/External/EVMC4U/DirectionalLightReceiver.cs
vendored
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
/*
|
||||||
|
* 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,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 86cbd6470ebef2f4c976410efaf45638
|
guid: 13f0517c7c0be404f8b9374d915fedb1
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 36a5a07493511bd49b1ad9dbad2683d2
|
guid: 3186d82257ef78346a44ce5a543fda47
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
53
Assets/External/EVMC4U/Editor/ExternalReceiverEditor.cs
vendored
Normal file
53
Assets/External/EVMC4U/Editor/ExternalReceiverEditor.cs
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/Editor/ExternalReceiverEditor.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/Editor/ExternalReceiverEditor.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8377d1e33297dac458dca9e5f91a8cc4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: d9c97ad7f5bbcac489a47a2f34dfff00
|
guid: a374e0d063f66c049968ffeb3df4a3ee
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 1595b81f792ed7b469e4391dcc7d335f
|
guid: bee88dde7402d2d40b3d9200c336f466
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/caution_bg.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/caution_bg.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
@ -1,12 +1,12 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: c5d5d944a6503a348af34f68dfa868d4
|
guid: 09fe3fc8a3f76cd489976f4245781880
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 11
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -34,10 +34,10 @@ TextureImporter:
|
|||||||
filterMode: 1
|
filterMode: 1
|
||||||
aniso: 1
|
aniso: 1
|
||||||
mipBias: 0
|
mipBias: 0
|
||||||
wrapU: 0
|
wrapU: 1
|
||||||
wrapV: 0
|
wrapV: 1
|
||||||
wrapW: 0
|
wrapW: 0
|
||||||
nPOTScale: 1
|
nPOTScale: 0
|
||||||
lightmap: 0
|
lightmap: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
spriteMode: 0
|
spriteMode: 0
|
||||||
@ -49,9 +49,9 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 2
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
singleChannelComponent: 0
|
singleChannelComponent: 0
|
||||||
maxTextureSizeSet: 0
|
maxTextureSizeSet: 0
|
||||||
@ -71,6 +71,18 @@ TextureImporter:
|
|||||||
overridden: 0
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 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:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/define.txt
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/define.txt
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
7
Assets/External/EVMC4U/Editor/Resources/tutorial/define.txt.meta
vendored
Normal file
7
Assets/External/EVMC4U/Editor/Resources/tutorial/define.txt.meta
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 72e1f7be484f4a049a6925bd9ab160d3
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ignore.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ignore.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
@ -1,12 +1,12 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 6e9a09d0d9f0a894ab333e0ea709810e
|
guid: 50dac6eee108fcc40a7aa2708460ad83
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 11
|
serializedVersion: 11
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 0
|
||||||
sRGBTexture: 1
|
sRGBTexture: 1
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
@ -34,10 +34,10 @@ TextureImporter:
|
|||||||
filterMode: 1
|
filterMode: 1
|
||||||
aniso: 1
|
aniso: 1
|
||||||
mipBias: 0
|
mipBias: 0
|
||||||
wrapU: 0
|
wrapU: 1
|
||||||
wrapV: 0
|
wrapV: 1
|
||||||
wrapW: 0
|
wrapW: 0
|
||||||
nPOTScale: 1
|
nPOTScale: 0
|
||||||
lightmap: 0
|
lightmap: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
spriteMode: 0
|
spriteMode: 0
|
||||||
@ -49,9 +49,9 @@ TextureImporter:
|
|||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 2
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
singleChannelComponent: 0
|
singleChannelComponent: 0
|
||||||
maxTextureSizeSet: 0
|
maxTextureSizeSet: 0
|
||||||
@ -71,6 +71,18 @@ TextureImporter:
|
|||||||
overridden: 0
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
androidETC2FallbackOverride: 0
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 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:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ok_button.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/ok_button.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/ok_button.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/ok_button.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6e3835e9948ccbf4ba54209dc672ca7f
|
||||||
|
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:
|
||||||
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start.meta
vendored
Normal file
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_bg.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_bg.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_bg.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d4c7fbbf3c8947642b9cbc4ba15f0df1
|
||||||
|
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_english.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_english.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_english.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_english.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_japanese.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_japanese.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start/start_japanese.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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:
|
||||||
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en.meta
vendored
Normal file
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/discord.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/discord.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/discord.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/howtouse.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/howtouse.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/howtouse.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/vmcprotocol.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/vmcprotocol.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_en/vmcprotocol.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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:
|
||||||
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first.meta
vendored
Normal file
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/en.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/en.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/en.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/ja.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/ja.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_first/ja.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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:
|
||||||
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja.meta
vendored
Normal file
8
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/discord.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/discord.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/discord.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/howtouse.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/howtouse.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/howtouse.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/vmcprotocol.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/vmcprotocol.png.meta
vendored
Normal file
104
Assets/External/EVMC4U/Editor/Resources/tutorial/start_ja/vmcprotocol.png.meta
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
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
Normal file
377
Assets/External/EVMC4U/Editor/Tutorial.cs
vendored
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
/*
|
||||||
|
* 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
Normal file
11
Assets/External/EVMC4U/Editor/Tutorial.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3239c5d6ed07cd84a95fd80d1659dcce
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
199
Assets/External/EVMC4U/ExternalController.cs
vendored
Normal file
199
Assets/External/EVMC4U/ExternalController.cs
vendored
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
/*
|
||||||
|
* 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/ExternalController.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/ExternalController.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e3c76998320436b479e734d3703c3abc
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1446
Assets/External/EVMC4U/ExternalReceiver.cs
vendored
Normal file
1446
Assets/External/EVMC4U/ExternalReceiver.cs
vendored
Normal file
File diff suppressed because it is too large
Load Diff
11
Assets/External/EVMC4U/ExternalReceiver.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/ExternalReceiver.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
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
Normal file
BIN
Assets/External/EVMC4U/ExternalReceiver.prefab
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
7
Assets/External/EVMC4U/ExternalReceiver.prefab.meta
vendored
Normal file
7
Assets/External/EVMC4U/ExternalReceiver.prefab.meta
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 86b1e8192cb57cd47890882526664df1
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/External/EVMC4U/ExternalReceiver.unity
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/EVMC4U/ExternalReceiver.unity
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 810bf20df2b55ed4584c6ca1b8469907
|
guid: a8cb6a0ea0acf0e4399570a0194b57a1
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
268
Assets/External/EVMC4U/InputReceiver.cs
vendored
Normal file
268
Assets/External/EVMC4U/InputReceiver.cs
vendored
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
/*
|
||||||
|
* 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
Normal file
11
Assets/External/EVMC4U/InputReceiver.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b7b6344b39082f64e8111bc0fd99f9c2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
21
Assets/External/EVMC4U/LICENSE
vendored
Normal file
21
Assets/External/EVMC4U/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 99665560be9c32e4d9f7813b076c92ee
|
guid: d4d62af2deec5eb48896ec651fa9571b
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
8
Assets/External/EVMC4U/SampleScripts.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fe826b9d334c93e4ca357d6af02179cc
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/CCCameraControl.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/CCCameraControl.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d554b7baaffa0cf4c907cd10362bf827
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
44
Assets/External/EVMC4U/SampleScripts/CCCameraControl/CCCameraControl.cs
vendored
Normal file
44
Assets/External/EVMC4U/SampleScripts/CCCameraControl/CCCameraControl.cs
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/CCCameraControl/CCCameraControl.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/CCCameraControl/CCCameraControl.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 38cb49d414319034c9a457279ea5133f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/CalibrationByController.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/CalibrationByController.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7af78563b203db9458af57d24f50e7b0
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
123
Assets/External/EVMC4U/SampleScripts/CalibrationByController/CalibrationByController.cs
vendored
Normal file
123
Assets/External/EVMC4U/SampleScripts/CalibrationByController/CalibrationByController.cs
vendored
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/CalibrationByController/CalibrationByController.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/CalibrationByController/CalibrationByController.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a57104fd6abed25418f0b912791d8f6d
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/CapsuleRigidbodyMover.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/CapsuleRigidbodyMover.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 46a4a79844c54ef45967f469e02791ed
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
117
Assets/External/EVMC4U/SampleScripts/CapsuleRigidbodyMover/CapsuleRigidbodyMover.cs
vendored
Normal file
117
Assets/External/EVMC4U/SampleScripts/CapsuleRigidbodyMover/CapsuleRigidbodyMover.cs
vendored
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/CapsuleRigidbodyMover/CapsuleRigidbodyMover.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/CapsuleRigidbodyMover/CapsuleRigidbodyMover.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1fc480ff691e345af16e7fa651417e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/DeviceAttacher.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/DeviceAttacher.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 86b6989340add9447bb256f0c003b57f
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
43
Assets/External/EVMC4U/SampleScripts/DeviceAttacher/DeviceAttacher.cs
vendored
Normal file
43
Assets/External/EVMC4U/SampleScripts/DeviceAttacher/DeviceAttacher.cs
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/DeviceAttacher/DeviceAttacher.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/DeviceAttacher/DeviceAttacher.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6adc09d226c320b47931ccca7db11d22
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/FreezeSwitch.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/FreezeSwitch.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e3ab1687368e7234191bef23b011eda6
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
64
Assets/External/EVMC4U/SampleScripts/FreezeSwitch/FreezeSwitch.cs
vendored
Normal file
64
Assets/External/EVMC4U/SampleScripts/FreezeSwitch/FreezeSwitch.cs
vendored
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/FreezeSwitch/FreezeSwitch.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/FreezeSwitch/FreezeSwitch.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 97fd16077045a25459ca9b9ad21be3e3
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/HandCatch.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/HandCatch.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1ba7b15a3117ea446a06b3d34fa9b5e1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
412
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch.cs
vendored
Normal file
412
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch.cs
vendored
Normal file
@ -0,0 +1,412 @@
|
|||||||
|
/*
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7d956bc80add4844891ac394eb195161
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
54
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_Helper.cs
vendored
Normal file
54
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_Helper.cs
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_Helper.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_Helper.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 32a6e766ebdc4c140b2e2324eae9915c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
110
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_WeaponHelper.cs
vendored
Normal file
110
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_WeaponHelper.cs
vendored
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_WeaponHelper.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/HandCatch/HandCatch_WeaponHelper.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0b722cb0621aaad4f9585f5d17bf89e1
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/ObjectSwitch.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/ObjectSwitch.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7ac5b962b075c1f4e913c49ad9c50680
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
57
Assets/External/EVMC4U/SampleScripts/ObjectSwitch/ObjectSwitch.cs
vendored
Normal file
57
Assets/External/EVMC4U/SampleScripts/ObjectSwitch/ObjectSwitch.cs
vendored
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/ObjectSwitch/ObjectSwitch.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/ObjectSwitch/ObjectSwitch.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ca3e3053b95a4864cb49cc75a25c816f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/TeleportKit.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/TeleportKit.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ae2642b6e10fda49985acfd80a2bcda
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
73
Assets/External/EVMC4U/SampleScripts/TeleportKit/TeleportManager.cs
vendored
Normal file
73
Assets/External/EVMC4U/SampleScripts/TeleportKit/TeleportManager.cs
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/TeleportKit/TeleportManager.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/TeleportKit/TeleportManager.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6ca42dd9317a6194d82d5ab6c382cd59
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/SampleScripts/misc.meta
vendored
Normal file
8
Assets/External/EVMC4U/SampleScripts/misc.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9cc666ef35f0a954280a2dc6a3c01c04
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
86
Assets/External/EVMC4U/SampleScripts/misc/HiResolutionPhotoCamera.cs
vendored
Normal file
86
Assets/External/EVMC4U/SampleScripts/misc/HiResolutionPhotoCamera.cs
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/SampleScripts/misc/HiResolutionPhotoCamera.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/SampleScripts/misc/HiResolutionPhotoCamera.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a163057f77fd4964d930cb2b19e510c5
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/External/EVMC4U/Test.meta
vendored
Normal file
8
Assets/External/EVMC4U/Test.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7e3d414de8589044f8af782fc6e85db6
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
51
Assets/External/EVMC4U/Test/AddComponentTest.cs
vendored
Normal file
51
Assets/External/EVMC4U/Test/AddComponentTest.cs
vendored
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* 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()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/External/EVMC4U/Test/AddComponentTest.cs.meta
vendored
Normal file
11
Assets/External/EVMC4U/Test/AddComponentTest.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
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
Normal file
55
Assets/External/EVMC4U/Test/DaisyChainTesting.cs
vendored
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
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