예제 #1
0
    public Game()
    {
        currentGame = this;

        Log.Init();

        server = new EzServer(portTCP, portUDP);

        server.OnConnect         += OnConnect;
        server.OnDisconnect      += OnDisconnect;
        server.OnStart           += OnStart;
        server.OnMessage         += OnMessage;
        server.OnMessageExternal += OnMessageExternal;

        if (hostIP == null)
        {
            server.StartUp();
        }
        else
        {
            server.StartUp(hostIP);
        }

        server.OnDebug     += OnDebug;
        server.OnException += OnException;

        trackerHandler = new TrackerHandler(this);

        LoadMap("factory_sy");
    }
 public void StartMoCap()
 {
     gameObject.AddComponent <ConfigLoader>();
     KinectDevice               = gameObject.AddComponent <TrackerHandler>();
     KinectDevice.isKinect2     = isKinect2;
     KinectDevice.drawSkeletons = DrawSkeleton;
     dp = gameObject.AddComponent <DataProvider>();
     if (isRealTime)
     {
         dp.StartAfterConfig();
     }
 }
    public void StartAfterConfig()
    {
        m_tracker = GetComponent <TrackerHandler>();
        const int TRACKER_ID = 0;

        if (m_tracker.isKinect2)
        {
            SkeletalTrackingProviderKinect2 m_skeletalTrackingProvider2 = new SkeletalTrackingProviderKinect2();
            m_skeletalTrackingProvider2.StartClientThread(TRACKER_ID);
            m_backgroundDataProvider = m_skeletalTrackingProvider2;
        }
        else
        {
            SkeletalTrackingProvider m_skeletalTrackingProvider = new SkeletalTrackingProvider();
            m_skeletalTrackingProvider.StartClientThread(TRACKER_ID);
            m_backgroundDataProvider = m_skeletalTrackingProvider;
        }
        //tracker ids needed for when there are two trackers

        started = true;
    }
예제 #4
0
        /// <summary>
        /// 全トラッカー情報を更新
        /// </summary>
        /// <returns></returns>
        void _UpdateTrackers()
        {
            TrackerHandler realTrackerHandler = _refs.handler;

            Debug.Assert(realTrackerHandler != null);

            // トラッカーの追加
            IEnumerable <GameObject> realTrackers = realTrackerHandler.Trackers.Concat(realTrackerHandler.Controllers).Concat(new GameObject[] { realTrackerHandler.HMDObject });

            foreach (var tracker in realTrackers)
            {
                if (!trackers.Any(t => t.serial == tracker.name))
                {
                    trackers.Add(new TrackerState(tracker.name, TrackingPoint.Unassinged));
                }
            }

            // トラッカーのトランスフォーム情報を更新
            foreach (var tracker in trackers)
            {
                tracker.Update(this);
            }
        }
예제 #5
0
    void Start()
    {
        uClient         = GetComponent <uOSC.uOscClient>();
        window          = GameObject.Find("ControlWPFWindow").GetComponent <ControlWPFWindow>();
        handTrackerRoot = GameObject.Find("HandTrackerRoot");

        trackerHandler = handTrackerRoot.GetComponent <TrackerHandler>();

        window.ModelLoadedAction += (GameObject CurrentModel) =>
        {
            if (CurrentModel != null)
            {
                this.CurrentModel = CurrentModel;
                animator          = CurrentModel.GetComponent <Animator>();
                vrik            = CurrentModel.GetComponent <VRIK>();
                blendShapeProxy = CurrentModel.GetComponent <VRMBlendShapeProxy>();
            }
        };

        window.CameraChangedAction += (Camera currentCamera) =>
        {
            this.currentCamera = currentCamera;
        };

        steamVR2Input.KeyDownEvent += (object sender, OVRKeyEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: ConDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Con", 1, e.Name, e.IsLeft ? 1 : 0, e.IsTouch ? 1 : 0, e.IsAxis ? 1 : 0, e.Axis.x, e.Axis.y, e.Axis.z);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        steamVR2Input.KeyUpEvent += (object sender, OVRKeyEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: ConUp");
                try
                {
                    uClient?.Send("/VMC/Ext/Con", 0, e.Name, e.IsLeft ? 1 : 0, e.IsTouch ? 1 : 0, e.IsAxis ? 1 : 0, e.Axis.x, e.Axis.y, e.Axis.z);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        steamVR2Input.AxisChangedEvent += (object sender, OVRKeyEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: ConAxis");
                try
                {
                    if (e.IsAxis)
                    {
                        uClient?.Send("/VMC/Ext/Con", 2, e.Name, e.IsLeft ? 1 : 0, e.IsTouch ? 1 : 0, e.IsAxis ? 1 : 0, e.Axis.x, e.Axis.y, e.Axis.z);
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        KeyboardAction.KeyDownEvent += (object sender, KeyboardEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Key", 1, e.KeyName, e.KeyCode);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        KeyboardAction.KeyUpEvent += (object sender, KeyboardEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyUp");
                try
                {
                    uClient?.Send("/VMC/Ext/Key", 0, e.KeyName, e.KeyCode);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        midiCCWrapper.noteOnDelegateProxy += (MidiJack.MidiChannel channel, int note, float velocity) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/Note", 1, (int)channel, note, velocity);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        midiCCWrapper.noteOffDelegateProxy += (MidiJack.MidiChannel channel, int note) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/Note", 0, (int)channel, note, (float)0f);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        midiCCWrapper.knobUpdateFloatDelegate += (int knobNo, float value) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/CC/Val", knobNo, value);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        midiCCWrapper.knobUpdateBoolDelegate += (int knobNo, bool value) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/CC/Bit", knobNo, (int)(value?1:0));
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
    }
예제 #6
0
    void Start()
    {
        uClient         = GetComponent <uOSC.uOscClient>();
        window          = GameObject.Find("ControlWPFWindow").GetComponent <ControlWPFWindow>();
        handTrackerRoot = GameObject.Find("HandTrackerRoot");

        trackerHandler = handTrackerRoot.GetComponent <TrackerHandler>();

        window.ModelLoadedAction += (GameObject CurrentModel) =>
        {
            if (CurrentModel != null)
            {
                this.CurrentModel = CurrentModel;
                animator          = CurrentModel.GetComponent <Animator>();
                vrik            = CurrentModel.GetComponent <VRIK>();
                blendShapeProxy = CurrentModel.GetComponent <VRMBlendShapeProxy>();
            }
        };

        window.CameraChangedAction += (Camera currentCamera) =>
        {
            this.currentCamera = currentCamera;
        };

        window.VRMmetaLodedAction += (VRMData vrmdata) =>
        {
            this.vrmdata    = vrmdata;
            this.remoteName = null;
            this.remoteJson = null;
            SendPerLowRate(); //即時送信
        };
        window.VRMRemoteLoadedAction += (string path) =>
        {
            this.vrmdata = null;
            if (path.StartsWith("dmmvrconnect://"))
            {
                var parsed = path.Substring("dmmvrconnect://".Length).Split('/');
                remoteName = "dmmvrconnect";
                remoteJson = Json.Serializer.Serialize(new DMMVRConnectRemote {
                    user_id = parsed[0], avatar_id = parsed[1]
                });
            }
            else if (path.StartsWith("vroidhub://"))
            {
                var characterModelId = path.Substring("vroidhub://".Length);
                remoteName = "vroidhub";
                remoteJson = Json.Serializer.Serialize(new VRoidHubRemote {
                    characterModelId = characterModelId
                });
            }
            SendPerLowRate(); //即時送信
        };

        window.LightChangedAction += () =>
        {
            SendPerLowRate(); //即時送信
        };

        window.LoadedConfigPathChangedAction += () =>
        {
            SendPerLowRate(); //即時送信
        };

        steamVR2Input.KeyDownEvent += (object sender, OVRKeyEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: ConDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Con", 1, e.Name, e.IsLeft ? 1 : 0, e.IsTouch ? 1 : 0, e.IsAxis ? 1 : 0, e.Axis.x, e.Axis.y, e.Axis.z);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        steamVR2Input.KeyUpEvent += (object sender, OVRKeyEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: ConUp");
                try
                {
                    uClient?.Send("/VMC/Ext/Con", 0, e.Name, e.IsLeft ? 1 : 0, e.IsTouch ? 1 : 0, e.IsAxis ? 1 : 0, e.Axis.x, e.Axis.y, e.Axis.z);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        steamVR2Input.AxisChangedEvent += (object sender, OVRKeyEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: ConAxis");
                try
                {
                    if (e.IsAxis)
                    {
                        uClient?.Send("/VMC/Ext/Con", 2, e.Name, e.IsLeft ? 1 : 0, e.IsTouch ? 1 : 0, e.IsAxis ? 1 : 0, e.Axis.x, e.Axis.y, e.Axis.z);
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        KeyboardAction.KeyDownEvent += (object sender, KeyboardEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Key", 1, e.KeyName, e.KeyCode);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        KeyboardAction.KeyUpEvent += (object sender, KeyboardEventArgs e) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyUp");
                try
                {
                    uClient?.Send("/VMC/Ext/Key", 0, e.KeyName, e.KeyCode);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        midiCCWrapper.noteOnDelegateProxy += (MidiJack.MidiChannel channel, int note, float velocity) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/Note", 1, (int)channel, note, velocity);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        midiCCWrapper.noteOffDelegateProxy += (MidiJack.MidiChannel channel, int note) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/Note", 0, (int)channel, note, (float)0f);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        midiCCWrapper.knobUpdateFloatDelegate += (int knobNo, float value) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/CC/Val", knobNo, value);
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };
        midiCCWrapper.knobUpdateBoolDelegate += (int knobNo, bool value) =>
        {
            if (this.isActiveAndEnabled)
            {
                //Debug.Log("Ext: KeyDown");
                try
                {
                    uClient?.Send("/VMC/Ext/Midi/CC/Bit", knobNo, (int)(value?1:0));
                }
                catch (Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
        };

        this.gameObject.SetActive(false);
        uClient.enabled = true;
    }