84 lines
1.9 KiB
C#
84 lines
1.9 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.UI;
|
|
using UniHumanoid;
|
|
using System.IO;
|
|
using System;
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
#endif
|
|
|
|
|
|
namespace UniHumanoid
|
|
{
|
|
public class RuntimeBvhLoader : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
Button m_openButton;
|
|
|
|
[SerializeField]
|
|
HumanPoseTransfer m_dst;
|
|
|
|
UnityAction m_onClick;
|
|
|
|
private void Awake()
|
|
{
|
|
m_onClick = new UnityEngine.Events.UnityAction(OnClick);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
m_openButton.onClick.AddListener(m_onClick);
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
m_openButton.onClick.RemoveListener(m_onClick);
|
|
}
|
|
|
|
static string m_lastDir;
|
|
|
|
public void OnClick()
|
|
{
|
|
#if UNITY_EDITOR
|
|
var path = EditorUtility.OpenFilePanel("open bvh", m_lastDir, "bvh");
|
|
if (String.IsNullOrEmpty(path))
|
|
{
|
|
return;
|
|
}
|
|
m_lastDir = Path.GetDirectoryName(path);
|
|
#else
|
|
string path=null;
|
|
throw new NotImplementedException();
|
|
#endif
|
|
|
|
#pragma warning disable 4014
|
|
Open(path);
|
|
#pragma warning restore 4014
|
|
}
|
|
|
|
BvhImporterContext m_context;
|
|
|
|
void Open(string path)
|
|
{
|
|
Debug.LogFormat("Open: {0}", path);
|
|
if (m_context != null)
|
|
{
|
|
m_context.Destroy(true);
|
|
m_context = null;
|
|
}
|
|
|
|
m_context = new BvhImporterContext();
|
|
m_context.Parse(path);
|
|
m_context.Load();
|
|
|
|
var src = m_context.Root.AddComponent<HumanPoseTransfer>();
|
|
|
|
if (m_dst != null)
|
|
{
|
|
m_dst.SourceType = HumanPoseTransfer.HumanPoseTransferSourceType.HumanPoseTransfer;
|
|
m_dst.Source = src;
|
|
}
|
|
}
|
|
}
|
|
}
|