// Handling developer defined gesture match callback - This is invoked when the Mode is set to Mode.DeveloperDefined and a gesture is recorded. // gestureId - a serial number // gesture - gesture matched or null if no match. Only guesture in SetDeveloperDefinedTarget range will be verified against // score - the confidence level of this identification. Above 1 is generally considered a match void HandleOnDeveloperDefinedMatch(long gestureId, string gesture, float score) { if (AirSigManager.Mode.DeveloperDefined == availableMode[currentModeIndex]) { textToUpdate = string.Format("<color=cyan>Gesture Match: {0} Score: {1}</color>", gesture.Trim(), score); } else if (AirSigManager.Mode.SmartTrainDeveloperDefined == availableMode[currentModeIndex]) { // Handle SmartTrain's progress result here if (currentSmartTrainDeveloperDefinedStep == gesture) { smartTrainCount++; string extraText = "Continue to add more samples"; if (smartTrainCount >= MAX_TRAIN_COUNT) { smartTrainCount = 0; if ("HEART" == currentSmartTrainDeveloperDefinedStep) { currentSmartTrainDeveloperDefinedStep = "C"; airsigManager.SetDeveloperDefinedTarget(new List <string> { "C" }); nextUiAction = () => { textResult.text = defaultResultText = "Please write 'C' gesture 5 times\nPress trigger to start\nRelease trigger when finish"; }; } else if ("C" == currentSmartTrainDeveloperDefinedStep) { currentSmartTrainDeveloperDefinedStep = "DOWN"; airsigManager.SetDeveloperDefinedTarget(new List <string> { "DOWN" }); nextUiAction = () => { textResult.text = defaultResultText = "Please write 'DOWN' gesture 5 times\nPress trigger to start\nRelease trigger when finish"; }; } else { nextUiAction = () => NextMode(); } } textToUpdate = string.Format( "<color=cyan>Smart Train passed criteria ({0}/{1})\n" + "{2}</color>", smartTrainCount, MAX_TRAIN_COUNT, extraText); } else { textToUpdate = string.Format( "<color=red>Smart Train failed criteria\n" + "Continue to add more samples</color>"); } } }
// Use this for initialization void Start() { airsigManager = GameObject.Find("AirSigManager").GetComponent <AirSigManager> (); Application.SetStackTraceLogType(LogType.Log, StackTraceLogType.None); // Configure AirSig by specifying target airsigManager.SetMode(AirSigManager.Mode.DeveloperDefined); airsigManager.SetClassifier("AtDefThrow", ""); airsigManager.SetDeveloperDefinedTarget(new List <string> { "C", "AttackPunchSimple", "DefenseShieldCross" }); // Just in case the order here matters, list them in the order they were added to the pack on the AirSig website. developerDefined = new AirSigManager.OnDeveloperDefinedMatch(HandleOnDeveloperDefinedMatch); airsigManager.onDeveloperDefinedMatch += developerDefined; checkDbExist(); // Set each controller as an AirSig gesture trigger, and which button activates the recording airsigManager.SetTriggerStartKeys( AirSigManager.Controller.RIGHT_HAND, SteamVR_Controller.ButtonMask.Trigger, AirSigManager.PressOrTouch.PRESS); airsigManager.SetTriggerStartKeys( AirSigManager.Controller.LEFT_HAND, SteamVR_Controller.ButtonMask.Trigger, // NOTE: Potential gesture bar fix by putting this line in with case 2 below vvvvvv AirSigManager.PressOrTouch.PRESS); // NOTE: May also break AirSig, who knows? if (SceneManager.GetActiveScene().name == "VRPUNScene") { UnlockNext(0); } }
void OnEnable() { if (!rightGrab) { rightGrab = GameObject.Find("Controller (right)").GetComponent <ViveController>(); } //if (!airsigManager) // { airsigManager = GameObject.Find("AirSigManager").GetComponent <AirSigManager>(); // } airsigManager.SetMode(AirSigManager.Mode.DeveloperDefined); //airsigManager.SetDeveloperDefinedTarget(List<string> "Pickaxe"); airsigManager.SetClassifier( "Pickaxe", ""); airsigManager.SetTriggerStartKeys( AirSigManager.Controller.RIGHT_HAND, SteamVR_Controller.ButtonMask.Trigger, AirSigManager.PressOrTouch.PRESS); airsigManager.SetDeveloperDefinedTarget( new List <string> { "Pickaxe", "DOWN" } ); developerGesture = new AirSigManager.OnDeveloperDefinedMatch( HandleOnDeveloperDefinedMatch); airsigManager.onDeveloperDefinedMatch += developerGesture; }
void Awake() { // Get PAD Manager padManager = GetComponent <PADManager>(); // 1. Use SetMode to configure AirSig function airsigManager.SetMode( AirSigManager.Mode.DeveloperDefined); // 2. Set classifier and sub classifier airsigManager.SetClassifier( "Project_Gestures", ""); // 3. Use SetDeveloperDefinedTarget to configure // targets for identification function airsigManager.SetDeveloperDefinedTarget( new List <string> { "WAVE", "Thrust", "Shake", "Spooky" } ); // 4. Register callback for identification // result developerGesture = new AirSigManager.OnDeveloperDefinedMatch( HandleOnDeveloperDefinedMatch); airsigManager.onDeveloperDefinedMatch += developerGesture; }
// Use this for initialization void Awake() { Application.SetStackTraceLogType(LogType.Log, StackTraceLogType.None); spellEngine = gameObject.GetComponent <SpellEngine>(); airsigManager = gameObject.GetComponent <AirSigManager>(); masterGameManager = GameObject.FindWithTag("GameController").GetComponent <MasterGameManager>(); // Update the display text //textMode.text = string.Format("Mode: {0}", AirSigManager.Mode.DeveloperDefined.ToString()); //textResult.text = defaultResultText = "Pressing trigger and write symbol in the air\nReleasing trigger when finish"; //textResult.alignment = TextAnchor.UpperCenter; //instruction.SetActive(false); //ToggleGestureImage("All"); // Configure AirSig by specifying target developerDefined = new AirSigManager.OnDeveloperDefinedMatch(HandleOnDeveloperDefinedMatch); airsigManager.onDeveloperDefinedMatch += developerDefined; airsigManager.SetMode(AirSigManager.Mode.DeveloperDefined); List <string> temp = new List <string>(); temp.Add("Dot"); temp.Add("Line"); temp.Add("Circle"); //temp.Add("Square"); temp.Add("Triangle"); airsigManager.SetDeveloperDefinedTarget(temp); airsigManager.SetClassifier("FinalGestureProfile", ""); //airsigManager.SetDeveloperDefinedTarget(spellEngine.getCompleteSpellPartsNameList()); //airsigManager.SetClassifier("GestureProfile1", ""); //airsigManager.SetClassifier("SpellCoresV1", ""); /*developerDefinedCore = new AirSigManager.OnDeveloperDefinedMatch(HandleOnDeveloperDefinedMatchCore); * airsigManager.onDeveloperDefinedMatch += developerDefinedCore; * airsigManager.SetMode(AirSigManager.Mode.DeveloperDefined); * airsigManager.SetDeveloperDefinedTarget(spellEngine.getCompleteSpellPartsNameList()); * airsigManager.SetClassifier("GestureProfile1", "");*/ //checkDbExist(); airsigManager.SetTriggerStartKeys( AirSigManager.Controller.RIGHT_HAND, SteamVR_Controller.ButtonMask.Trigger, AirSigManager.PressOrTouch.PRESS); airsigManager.SetTriggerStartKeys( AirSigManager.Controller.LEFT_HAND, SteamVR_Controller.ButtonMask.Touchpad, AirSigManager.PressOrTouch.PRESS); }
private void OnEnable() { controllerManager = rightHandControl.GetComponent <ControllerManager>(); developerDefined = new AirSigManager.OnDeveloperDefinedMatch(HandleOnDeveloperDefinedMatch); airsigManager.onDeveloperDefinedMatch += developerDefined; airsigManager.SetDeveloperDefinedTarget(new List <string> { "BOTRN", "DOWN" }); airsigManager.SetClassifier("FrostGestureProfile", ""); airsigManager.SetTriggerStartKeys( AirSigManager.Controller.RIGHT_HAND, SteamVR_Controller.ButtonMask.Trigger, AirSigManager.PressOrTouch.PRESS); trackedObj = GetComponent <SteamVR_TrackedObject>(); }