}//OnGUI Texture ControllerVarEnum_to_Texture(ControllerVarEnum cve) { //Return related texture for each respective ControllerVarEnum Texture image = new Texture(); switch(cve) { case ControllerVarEnum.ThumbLeft_x: image = texThumbLeft_x; break; case ControllerVarEnum.ThumbLeft_y: image = texThumbLeft_y; break; case ControllerVarEnum.ThumbLeft: image = texThumbLeft; break; case ControllerVarEnum.ThumbRight_x: image = texThumbRight_x; break; case ControllerVarEnum.ThumbRight_y: image = texThumbRight_y; break; case ControllerVarEnum.ThumbRight: image = texThumbRight; break; case ControllerVarEnum.dpad_up: image = texdpad_up; break; case ControllerVarEnum.dpad_down: image = texdpad_down; break; case ControllerVarEnum.dpad_left: image = texdpad_left; break; case ControllerVarEnum.dpad_right: image = texdpad_right; break; case ControllerVarEnum.FP_top: image = texFP_top; break; case ControllerVarEnum.FP_bottom: image = texFP_bottom; break; case ControllerVarEnum.FP_left: image = texFP_left; break; case ControllerVarEnum.FP_right: image = texFP_right; break; case ControllerVarEnum.Interface_left: image = texInterface_left; break; case ControllerVarEnum.Interface_right: image = texInterface_right; break; case ControllerVarEnum.ShoulderTop_left: image = texShoulderTop_left; break; case ControllerVarEnum.ShoulderTop_right: image = texShoulderTop_right; break; case ControllerVarEnum.ShoulderBottom_left: image = texShoulderBottom_left; break; case ControllerVarEnum.ShoulderBottom_right: image = texShoulderBottom_right; break; } return image; }//ControllerVarEnum_to_Texture
} //OnGUI Texture ControllerVarEnum_to_Texture(ControllerVarEnum cve) { //Return related texture for each respective ControllerVarEnum Texture image = new Texture(); switch (cve) { case ControllerVarEnum.ThumbLeft_x: image = texThumbLeft_x; break; case ControllerVarEnum.ThumbLeft_y: image = texThumbLeft_y; break; case ControllerVarEnum.ThumbLeft: image = texThumbLeft; break; case ControllerVarEnum.ThumbRight_x: image = texThumbRight_x; break; case ControllerVarEnum.ThumbRight_y: image = texThumbRight_y; break; case ControllerVarEnum.ThumbRight: image = texThumbRight; break; case ControllerVarEnum.dpad_up: image = texdpad_up; break; case ControllerVarEnum.dpad_down: image = texdpad_down; break; case ControllerVarEnum.dpad_left: image = texdpad_left; break; case ControllerVarEnum.dpad_right: image = texdpad_right; break; case ControllerVarEnum.FP_top: image = texFP_top; break; case ControllerVarEnum.FP_bottom: image = texFP_bottom; break; case ControllerVarEnum.FP_left: image = texFP_left; break; case ControllerVarEnum.FP_right: image = texFP_right; break; case ControllerVarEnum.Interface_left: image = texInterface_left; break; case ControllerVarEnum.Interface_right: image = texInterface_right; break; case ControllerVarEnum.ShoulderTop_left: image = texShoulderTop_left; break; case ControllerVarEnum.ShoulderTop_right: image = texShoulderTop_right; break; case ControllerVarEnum.ShoulderBottom_left: image = texShoulderBottom_left; break; case ControllerVarEnum.ShoulderBottom_right: image = texShoulderBottom_right; break; } return(image); } //ControllerVarEnum_to_Texture
}//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
}//LearnController static public void LearnControllerSingle(int num, ControllerVarEnum ctrl) { //learn a single control. ex. dpad_down if (num <= IPInstance.NumControllers) { IPInstance.SingleSetMode = true; IPInstance.ControllerMode = ControllerModeEnum.SET; IPInstance.SetMode = SetModeEnum.ENTER; IPInstance.ListenMode = ctrl; IPInstance.ic = num - 1; if(IPInstance.ListenMode == ControllerVarEnum.ShoulderBottom_left || IPInstance.ListenMode == ControllerVarEnum.ShoulderBottom_right) { //need to reset FullRangeTriggers, will be set again when learning IPInstance.ControllerArray[IPInstance.ic].FullRangeTriggers = false; } } }//LearnControllerSignle
public static float GetData(int ctrlnum, ControllerVarEnum control) { if ((ctrlnum < 1) || (ctrlnum > Constants.MAX_CTRL_SIZE)) { if (IPInstance.DebugText) Debug.Log("cntrlnum in InputPlus.GetData must be between 1 - " + Constants.MAX_CTRL_SIZE.ToString() + ", using 1 as default"); ctrlnum = 1; } switch (control) { case ControllerVarEnum.dpad_up : return IPInstance.ControllerArray[ctrlnum - 1].get_dpad_up(); case ControllerVarEnum.dpad_down: return IPInstance.ControllerArray[ctrlnum - 1].get_dpad_down(); case ControllerVarEnum.dpad_left : return IPInstance.ControllerArray[ctrlnum - 1].get_dpad_left(); case ControllerVarEnum.dpad_right : return IPInstance.ControllerArray[ctrlnum - 1].get_dpad_right(); case ControllerVarEnum.FP_top : return IPInstance.ControllerArray[ctrlnum - 1].get_FP_top(); case ControllerVarEnum.FP_bottom : return IPInstance.ControllerArray[ctrlnum - 1].get_FP_bottom(); case ControllerVarEnum.FP_left : return IPInstance.ControllerArray[ctrlnum - 1].get_FP_left(); case ControllerVarEnum.FP_right : return IPInstance.ControllerArray[ctrlnum - 1].get_FP_right(); case ControllerVarEnum.Interface_right : return IPInstance.ControllerArray[ctrlnum - 1].get_Interface_right(); case ControllerVarEnum.Interface_left : return IPInstance.ControllerArray[ctrlnum - 1].get_Interface_left(); case ControllerVarEnum.ShoulderTop_right : return IPInstance.ControllerArray[ctrlnum - 1].get_ShoulderTop_right(); case ControllerVarEnum.ShoulderTop_left : return IPInstance.ControllerArray[ctrlnum - 1].get_ShoulderTop_left(); case ControllerVarEnum.ShoulderBottom_right : return IPInstance.ControllerArray[ctrlnum - 1].get_ShoulderBottom_right(); case ControllerVarEnum.ShoulderBottom_left : return IPInstance.ControllerArray[ctrlnum - 1].get_ShoulderBottom_left(); case ControllerVarEnum.ThumbRight_x : return IPInstance.ControllerArray[ctrlnum - 1].get_ThumbRight_x(); case ControllerVarEnum.ThumbRight_y : return IPInstance.ControllerArray[ctrlnum - 1].get_ThumbRight_y(); case ControllerVarEnum.ThumbRight : return IPInstance.ControllerArray[ctrlnum - 1].get_ThumbRight(); case ControllerVarEnum.ThumbLeft_x : return IPInstance.ControllerArray[ctrlnum - 1].get_ThumbLeft_x(); case ControllerVarEnum.ThumbLeft_y : return IPInstance.ControllerArray[ctrlnum - 1].get_ThumbLeft_y(); case ControllerVarEnum.ThumbLeft : return IPInstance.ControllerArray[ctrlnum - 1].get_ThumbLeft(); }//switch (control) if (IPInstance.DebugText) Debug.Log("InputPlus.GetData failed to get any data, returning 0"); return 0; }//GetData