X-Git-Url: https://adrianiainlam.tk/git/?p=mouse-tracker-for-cubism.git;a=blobdiff_plain;f=include%2Fmouse_cursor_tracker.h;h=6cd91c42412f98e83e8d69da8e7a3894aab7440b;hp=a53713f517e202d9f254ba469f3764b6f86b4ef1;hb=eba2eb3a02959e9c1262b1b238b95f25e64f7a00;hpb=0acfe9b5931d7fe2a25e53602236720ab5099355 diff --git a/include/mouse_cursor_tracker.h b/include/mouse_cursor_tracker.h index a53713f..6cd91c4 100644 --- a/include/mouse_cursor_tracker.h +++ b/include/mouse_cursor_tracker.h @@ -26,8 +26,11 @@ SOFTWARE. ****/ #include -#include #include +#include +#include +#include +#include extern "C" { #include @@ -37,28 +40,38 @@ extern "C" class MouseCursorTracker { public: - MouseCursorTracker(std::string cfgPath); + MouseCursorTracker(std::string cfgPath, + std::vector > motions = {}, + std::vector expressions = {}); ~MouseCursorTracker(); + enum class MotionPriority + { + // See LAppDefine.cpp in Demo + none, + idle, + normal, + force + }; + struct Params { - double leftEyeOpenness; - double rightEyeOpenness; - double leftEyeSmile; - double rightEyeSmile; - double mouthOpenness; - double mouthForm; - double faceXAngle; - double faceYAngle; - double faceZAngle; + std::map live2d; + bool autoBlink; bool autoBreath; - bool randomMotion; + bool randomIdleMotion; bool useLipSync; double lipSyncParam; + + MotionPriority motionPriority; + std::string motionGroup; + int motionNumber; + + std::string expression; }; - Params getParams(void) const; + Params getParams(void); void stop(void); @@ -76,7 +89,7 @@ private: int sleepMs; bool autoBlink; bool autoBreath; - bool randomMotion; + bool randomIdleMotion; bool useLipSync; double lipSyncGain; double lipSyncCutOff; @@ -87,9 +100,11 @@ private: int left; int right; int screen; - Coord middle; + Coord origin; } m_cfg; + std::map m_overrideMap; + bool m_stop; Coord m_curPos; @@ -97,10 +112,19 @@ private: xdo_t *m_xdo; std::thread m_getVolumeThread; + std::thread m_parseCommandThread; void audioLoop(void); + void cliLoop(void); + void processCommand(std::string); double m_currentVol; pa_simple *m_pulse; + MotionPriority m_motionPriority; + std::string m_motionGroup; + int m_motionNumber; + std::mutex m_motionMutex; + std::string m_expression; + void populateDefaultConfig(void); void parseConfig(std::string cfgPath); };