}//Start // Update is called once per frame void Update () { string listen; //Handle Joysticks removed. if (Input.GetJoystickNames().Length < IPInstance.NumControllers) { //Controller disconnected if (On_EVENT_Disconnect != null) On_EVENT_Disconnect(); } //DONE Handle Joysticks removed. UpdateControllers(); //handle controller mode switch(ControllerMode) { case ControllerModeEnum.DISPLAY : break; case ControllerModeEnum.DISPLAY2 : break; case ControllerModeEnum.SET : CurrentlyProgramming = true; switch(SetMode) { case SetModeEnum.ENTER: SetMode = SetModeEnum.WAIT; //("enter mode"); break; case SetModeEnum.WAIT: //check to see if key has been released. if (!ContinueWait(ic)) { ScanForLocked(); SetMode = SetModeEnum.LISTEN; } //Debug.Log("Wait mode"); break; case SetModeEnum.WAIT_DPAD: //check to see if key has been released. if (!ContinueWait_dPad(ic)) { SetMode = SetModeEnum.LISTEN; } //Debug.Log("Wait dPad mode"); break; case SetModeEnum.LISTEN: switch(ListenMode) { case ControllerVarEnum.ThumbLeft_x: //Debug.Log("Thumbx listen"); listen = SetModeGetString(ic); //Debug.Log("ThumbLeft_x: " + listen); if(listen != "") { ControllerArray[ic].set_sThumbLeft_x(listen); ListenMode = ControllerVarEnum.ThumbLeft_y; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ThumbLeft_y: listen = SetModeGetString(ic); //Debug.Log("ThumbLeft_y"); if(listen != "") { ControllerArray[ic].set_sThumbLeft_y(listen); ListenMode = ControllerVarEnum.ThumbLeft; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ThumbLeft: listen = SetModeGetString(ic); //Debug.Log("ThumbLeft"); if(listen != "") { ControllerArray[ic].set_sThumbLeft(listen); ListenMode = ControllerVarEnum.ThumbRight_x; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ThumbRight_x: listen = SetModeGetString(ic); //Debug.Log("ThumbRight_x"); if(listen != "") { ControllerArray[ic].set_sThumbRight_x(listen); ListenMode = ControllerVarEnum.ThumbRight_y; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ThumbRight_y: listen = SetModeGetString(ic); //Debug.Log("ThumbRight_y"); if(listen != "") { ControllerArray[ic].set_sThumbRight_y(listen); ListenMode = ControllerVarEnum.ThumbRight; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ThumbRight: listen = SetModeGetString(ic); //Debug.Log("ThumbRight"); if(listen != "") { ControllerArray[ic].set_sThumbRight(listen); ListenMode = ControllerVarEnum.ShoulderTop_left; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ShoulderTop_left: listen = SetModeGetString(ic); //Debug.Log("ShoulderTop_left"); if(listen != "") { ControllerArray[ic].set_sShoulderTop_left(listen); ListenMode = ControllerVarEnum.ShoulderTop_right; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ShoulderTop_right: listen = SetModeGetString(ic); //Debug.Log("ShoulderTop_right"); if(listen != "") { ControllerArray[ic].set_sShoulderTop_right(listen); ListenMode = ControllerVarEnum.ShoulderBottom_left; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ShoulderBottom_left: //CheckNegFlags(ic); listen = SetModeGetStringTrigger(ic); //Debug.Log("ShoulderBottom_left"); if(listen != "") { ControllerArray[ic].set_sShoulderBottom_left(listen); ListenMode = ControllerVarEnum.ShoulderBottom_right; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.ShoulderBottom_right: //CheckNegFlags(ic); listen = SetModeGetStringTrigger(ic); //Debug.Log("ShoulderBottom_right"); if(listen != "") { ControllerArray[ic].set_sShoulderBottom_right(listen); ListenMode = ControllerVarEnum.Interface_left; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.Interface_left: listen = SetModeGetString(ic); //Debug.Log("Interface_left"); if(listen != "") { ControllerArray[ic].set_sInterface_left(listen); ListenMode = ControllerVarEnum.Interface_right; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.Interface_right: listen = SetModeGetString(ic); //Debug.Log("Interface_right"); if(listen != "") { ControllerArray[ic].set_sInterface_right(listen); ListenMode = ControllerVarEnum.dpad_up; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.dpad_up: listen = SetModeGetString(ic); //Debug.Log("dpad_up"); if(listen == "") { listen = SetModeGetStringDPadAxis(ic); //because down can produce negative values if(listen != "") { //Check for a negative axis, if it's negative, the dPad is inverted. ControllerArray[ic].dPadInverted = true; } } if(listen != "") { if( listen[3] == 'A') { ControllerArray[ic].dPadIsAxis = true; //Need to flag that the dPad is using axis control } else { ControllerArray[ic].dPadIsAxis = false; //revert back, in case user made a mistake } ControllerArray[ic].set_sdpad_up(listen); ListenMode = ControllerVarEnum.dpad_down; SetMode = SetModeEnum.WAIT_DPAD; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.dpad_down: listen = SetModeGetString(ic); if(listen == "") { listen = SetModeGetStringDPadAxis(ic); //because down can produce negative values } //Debug.Log("dpad_down"); if(listen != "") { if( listen[3] == 'A') { ControllerArray[ic].dPadIsAxis = true; //Need to flag that the dPad is using axis control } else { ControllerArray[ic].dPadIsAxis = false; //revert back, in case user made a mistake } ControllerArray[ic].set_sdpad_down(listen); ListenMode = ControllerVarEnum.dpad_left; SetMode = SetModeEnum.WAIT_DPAD; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.dpad_left: listen = SetModeGetString(ic); if(listen == "") { listen = SetModeGetStringDPadAxis(ic); //because left can produce negative values } //Debug.Log("dpad_left"); if(listen != "") { if( listen[3] == 'A') { ControllerArray[ic].dPadIsAxis = true; //Need to flag that the dPad is using axis control } else { ControllerArray[ic].dPadIsAxis = false; //revert back, in case user made a mistake } ControllerArray[ic].set_sdpad_left(listen); ListenMode = ControllerVarEnum.dpad_right; SetMode = SetModeEnum.WAIT_DPAD; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.dpad_right: listen = SetModeGetString(ic); //Debug.Log("dpad_right"); if(listen != "") { if( listen[3] == 'A') { ControllerArray[ic].dPadIsAxis = true; //Need to flag that the dPad is using axis control } else { ControllerArray[ic].dPadIsAxis = false; //revert back, in case user made a mistake } ControllerArray[ic].set_sdpad_right(listen); ListenMode = ControllerVarEnum.FP_top; SetMode = SetModeEnum.WAIT_DPAD; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.FP_top: listen = SetModeGetString(ic); //Debug.Log("FP_top"); if(listen != "") { ControllerArray[ic].set_sFP_top(listen); ListenMode = ControllerVarEnum.FP_bottom; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.FP_bottom: listen = SetModeGetString(ic); //Debug.Log("FP_bottom"); if(listen != "") { ControllerArray[ic].set_sFP_bottom(listen); ListenMode = ControllerVarEnum.FP_left; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.FP_left: listen = SetModeGetString(ic); //Debug.Log("FP_left"); if(listen != "") { ControllerArray[ic].set_sFP_left(listen); ListenMode = ControllerVarEnum.FP_right; SetMode = SetModeEnum.WAIT; if (SingleSetMode) EndProgramming(); } break; case ControllerVarEnum.FP_right: listen = SetModeGetString(ic); //Debug.Log("FP_right"); if(listen != "") { ControllerArray[ic].set_sFP_right(listen); //ListenMode = ControllerVarEnum.Interface_left; SetMode = SetModeEnum.WAIT; EndProgramming(); } break; }//switch(ListenMode) break; case SetModeEnum.EXIT: break; }//switch(SetMode) break; }//switch(ControllerMode) }//Update
}//Update private void EndProgramming() { //Finish the controller programming cycle ControllerMode = ControllerModeEnum.OFF; SetMode = SetModeEnum.ENTER; ListenMode = ControllerVarEnum.ThumbLeft_x; //check for full range triggers if(ControllerArray[ic].get_ShoulderBottom_left() < -0.99f) { ControllerArray[ic].FullRangeTriggers = true; } SaveController(ic); //LoadController(ic); CurrentlyProgramming = false; SingleSetMode = false; ic = 0; }//EndProgramming