void orxFASTCALL orxMouse_GLFW_Exit() { /* Was initialized? */ if(sstMouse.u32Flags & orxMOUSE_KU32_STATIC_FLAG_READY) { orxCLOCK *pstClock; /* Gets core clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Unregisters update function */ orxClock_Unregister(pstClock, orxMouse_GLFW_Update); /* Unregisters clean function */ orxClock_Unregister(pstClock, orxMouse_GLFW_Clean); /* Removes event handler */ orxEvent_RemoveHandler(orxEVENT_TYPE_DISPLAY, orxMouse_GLFW_EventHandler); /* Cleans static controller */ orxMemory_Zero(&sstMouse, sizeof(orxMOUSE_STATIC)); } return; }
void orxFASTCALL orxJoystick_GLFW_Exit() { /* Was initialized? */ if(sstJoystick.u32Flags & orxJOYSTICK_KU32_STATIC_FLAG_READY) { /* Unregisters update function */ orxClock_Unregister(orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE), orxJoystick_GLFW_Update); /* Cleans static controller */ orxMemory_Zero(&sstJoystick, sizeof(orxJOYSTICK_STATIC)); } return; }
orxSTATUS orxFASTCALL orxJoystick_GLFW_Init() { orxSTATUS eResult = orxSTATUS_FAILURE; /* Was already initialized. */ if(!(sstJoystick.u32Flags & orxJOYSTICK_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstJoystick, sizeof(orxJOYSTICK_STATIC)); /* Is GLFW window opened? */ if(glfwGetWindowParam(GLFW_OPENED) != GL_FALSE) { orxCLOCK *pstClock; /* Gets core clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Gets its info */ sstJoystick.pstClockInfo = orxClock_GetInfo(pstClock); /* Success? */ if(sstJoystick.pstClockInfo != orxNULL) { /* Registers event update function */ eResult = orxClock_Register(pstClock, orxJoystick_GLFW_Update, orxNULL, orxMODULE_ID_JOYSTICK, orxCLOCK_PRIORITY_HIGHER); /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Updates first joystick */ orxJoystick_GLFW_UpdateInfo(0); /* Updates status */ sstJoystick.u32Flags |= orxJOYSTICK_KU32_STATIC_FLAG_READY; /* Updates result */ eResult = orxSTATUS_SUCCESS; } } } } /* Done! */ return eResult; }
/** Removes a global timer function (ie. from the main core clock) * @param[in] _pfnCallback Concerned timer callback to remove * @param[in] _fDelay Delay between 2 calls of the timer to remove, -1.0f for removing all occurrences regardless of their respective delay * @param[in] _pContext Context of the timer to remove, orxNULL for removing all occurrences regardless of their context * @return orxSTATUS_SUCCESS / orxSTATUS_FAILURE */ orxSTATUS orxFASTCALL orxClock_RemoveGlobalTimer(const orxCLOCK_FUNCTION _pfnCallback, orxFLOAT _fDelay, void *_pContext) { orxCLOCK *pstClock; orxSTATUS eResult = orxSTATUS_FAILURE; /* Checks */ orxASSERT(sstClock.u32Flags & orxCLOCK_KU32_STATIC_FLAG_READY); orxASSERT(_pfnCallback != orxNULL); /* Gets core clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Found? */ if(pstClock != orxNULL) { /* Removes timer from it */ eResult = orxClock_RemoveTimer(pstClock, _pfnCallback, _fDelay, _pContext); } /* Done! */ return eResult; }
/** Inits the tutorial */ orxSTATUS orxFASTCALL Init() { orxCLOCK *pstClock; orxINPUT_TYPE eType; orxENUM eID; orxINPUT_MODE eMode; const orxSTRING zInputCameraLeft; const orxSTRING zInputCameraRight; const orxSTRING zInputCameraUp; const orxSTRING zInputCameraDown; const orxSTRING zInputCameraRotateLeft; const orxSTRING zInputCameraRotateRight; const orxSTRING zInputCameraZoomIn; const orxSTRING zInputCameraZoomOut; const orxSTRING zInputViewportLeft; const orxSTRING zInputViewportRight; const orxSTRING zInputViewportUp; const orxSTRING zInputViewportDown; const orxSTRING zInputViewportScaleUp; const orxSTRING zInputViewportScaleDown; /* Gets input binding names */ orxInput_GetBinding("CameraLeft", 0, &eType, &eID, &eMode); zInputCameraLeft = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraRight", 0, &eType, &eID, &eMode); zInputCameraRight = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraUp", 0, &eType, &eID, &eMode); zInputCameraUp = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraDown", 0, &eType, &eID, &eMode); zInputCameraDown = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraRotateLeft", 0, &eType, &eID, &eMode); zInputCameraRotateLeft = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraRotateRight", 0, &eType, &eID, &eMode); zInputCameraRotateRight = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraZoomIn", 0, &eType, &eID, &eMode); zInputCameraZoomIn = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("CameraZoomOut", 0, &eType, &eID, &eMode); zInputCameraZoomOut = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("ViewportLeft", 0, &eType, &eID, &eMode); zInputViewportLeft = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("ViewportRight", 0, &eType, &eID, &eMode); zInputViewportRight = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("ViewportUp", 0, &eType, &eID, &eMode); zInputViewportUp = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("ViewportDown", 0, &eType, &eID, &eMode); zInputViewportDown = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("ViewportScaleUp", 0, &eType, &eID, &eMode); zInputViewportScaleUp = orxInput_GetBindingName(eType, eID, eMode); orxInput_GetBinding("ViewportScaleDown", 0, &eType, &eID, &eMode); zInputViewportScaleDown = orxInput_GetBindingName(eType, eID, eMode); /* Displays a small hint in console */ orxLOG("\n* Worskpaces 1 & 4 display camera 1 content" "\n* Workspace 2 displays camera 2 (by default it's twice as close as the other cameras)" "\n* Workspace 3 displays camera 3" "\n- Soldier will be positioned (in the world) so as to be always displayed under the mouse" "\n- '%s', '%s', '%s' & '%s' control camera 1 positioning" "\n- '%s' & '%s' control camera 1 rotation" "\n- '%s' & '%s' control camera 1 zoom" "\n- '%s', '%s', '%s' & '%s' control viewport 1 positioning" "\n- '%s' & '%s' control viewport 1 size", zInputCameraUp, zInputCameraLeft, zInputCameraDown, zInputCameraRight, zInputCameraRotateLeft, zInputCameraRotateRight, zInputCameraZoomIn, zInputCameraZoomOut, zInputViewportUp, zInputViewportLeft, zInputViewportDown, zInputViewportRight, zInputViewportScaleUp, zInputViewportScaleDown); /* Creates all viewports */ orxViewport_CreateFromConfig("Viewport4"); orxViewport_CreateFromConfig("Viewport3"); orxViewport_CreateFromConfig("Viewport2"); pstViewport = orxViewport_CreateFromConfig("Viewport1"); /* Creates objects */ orxObject_CreateFromConfig("Box"); pstSoldier = orxObject_CreateFromConfig("Soldier"); /* Gets the main clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Registers our update callback */ orxClock_Register(pstClock, Update, orxNULL, orxMODULE_ID_MAIN, orxCLOCK_PRIORITY_NORMAL); /* Done! */ return orxSTATUS_SUCCESS; }
orxSTATUS orxFASTCALL orxMouse_GLFW_Init() { orxSTATUS eResult = orxSTATUS_FAILURE; /* Was already initialized. */ if(!(sstMouse.u32Flags & orxMOUSE_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstMouse, sizeof(orxMOUSE_STATIC)); /* Is GLFW window opened? */ if(glfwGetWindowParam(GLFW_OPENED) != GL_FALSE) { orxCLOCK *pstClock; /* Gets core clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Valid? */ if(pstClock != orxNULL) { /* Registers update function */ eResult = orxClock_Register(pstClock, orxMouse_GLFW_Update, orxNULL, orxMODULE_ID_MOUSE, orxCLOCK_PRIORITY_HIGHER); /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Registers clean function */ eResult = orxClock_Register(pstClock, orxMouse_GLFW_Clean, orxNULL, orxMODULE_ID_MOUSE, orxCLOCK_PRIORITY_LOWER); } else { /* Unregisters update function */ orxClock_Unregister(pstClock, orxMouse_GLFW_Update); } } /* Success? */ if(eResult != orxSTATUS_FAILURE) { /* Updates status */ sstMouse.u32Flags |= orxMOUSE_KU32_STATIC_FLAG_READY; /* Adds event handler */ orxEvent_AddHandler(orxEVENT_TYPE_DISPLAY, orxMouse_GLFW_EventHandler); /* Registers mouse position callback */ glfwSetMousePosCallback(orxMouse_GLFW_MousePositionCallback); /* Registers mouse wheel callback */ glfwSetMouseWheelCallback(orxMouse_GLFW_MouseWheelCallback); /* Pushes config section */ orxConfig_PushSection(orxMOUSE_KZ_CONFIG_SECTION); /* Has show cursor value? */ if(orxConfig_HasValue(orxMOUSE_KZ_CONFIG_SHOW_CURSOR) != orxFALSE) { /* Updates cursor status */ orxMouse_GLFW_ShowCursor(orxConfig_GetBool(orxMOUSE_KZ_CONFIG_SHOW_CURSOR)); } /* Pops config section */ orxConfig_PopSection(); } } } /* Done! */ return eResult; }
/** Inits the bounce demo */ static orxSTATUS orxBounce_Init() { orxU32 i; orxSTATUS eResult; /* Loads config file and selects its section */ orxConfig_Load("Bounce.ini"); orxConfig_SelectSection("Bounce"); /* Loads input */ orxInput_Load(orxNULL); /* Creates ball spawner */ spoBallSpawner = orxSpawner_CreateFromConfig("BallSpawner"); /* Valid? */ if(spoBallSpawner != orxNULL) { orxOBJECT *pstParticleSource; orxCLOCK *pstClock; /* Creates particle source */ pstParticleSource = orxObject_CreateFromConfig("ParticleSource"); /* Valid? */ if(pstParticleSource != orxNULL) { /* Sets its parent */ orxObject_SetParent(pstParticleSource, spoBallSpawner); } /* Updates cursor */ orxMouse_ShowCursor(orxConfig_GetBool("ShowCursor")); /* Creates walls */ spstWalls = orxObject_CreateFromConfig("Walls"); /* Inits trail */ for(i = 0; i < TRAIL_POINT_NUMBER; i++) { orxMouse_GetPosition(&savTrailPointList[i]); } /* Creates all viewports */ for(i = 0; i < (orxU32)orxConfig_GetListCounter("ViewportList"); i++) { orxViewport_CreateFromConfig(orxConfig_GetListString("ViewportList", i)); } /* Gets rendering clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Registers callback */ eResult = orxClock_Register(pstClock, &orxBounce_Update, orxNULL, orxMODULE_ID_MAIN, orxCLOCK_PRIORITY_NORMAL); /* Registers update trail timer */ eResult = ((eResult != orxSTATUS_FAILURE) && (orxClock_Register(pstClock, &orxBounce_UpdateTrail, orxNULL, orxMODULE_ID_MAIN, orxCLOCK_PRIORITY_LOW) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; /* Registers event handler */ eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_PHYSICS, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_INPUT, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_SHADER, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_SOUND, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_DISPLAY, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_TIMELINE, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; eResult = ((eResult != orxSTATUS_FAILURE) && (orxEvent_AddHandler(orxEVENT_TYPE_RENDER, orxBounce_EventHandler) != orxSTATUS_FAILURE)) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; } else { /* Failure */ eResult = orxSTATUS_FAILURE; } /* Done! */ return eResult; }
orxSTATUS orxFASTCALL orxDisplay_SDL_Init() { orxSTATUS eResult; /* Was not already initialized? */ if(!(sstDisplay.u32Flags & orxDISPLAY_KU32_STATIC_FLAG_READY)) { /* Cleans static controller */ orxMemory_Zero(&sstDisplay, sizeof(orxDISPLAY_STATIC)); /* Is SDL partly initialized? */ if(SDL_WasInit(SDL_INIT_EVERYTHING) != 0) { /* Inits the video subsystem */ eResult = (SDL_InitSubSystem(SDL_INIT_VIDEO) == 0) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; } else { /* Inits SDL with video */ eResult = (SDL_Init(SDL_INIT_VIDEO) == 0) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; } /* Valid? */ if(eResult != orxSTATUS_FAILURE) { #ifdef __orxGP2X__ /* Inits display using config values? */ sstDisplay.pstScreen = SDL_SetVideoMode(orxDISPLAY_KU32_SCREEN_WIDTH, orxDISPLAY_KU32_SCREEN_HEIGHT, orxDISPLAY_KU32_SCREEN_DEPTH, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT); /* Stores values */ sstDisplay.fScreenWidth = orxU2F(orxDISPLAY_KU32_SCREEN_WIDTH); sstDisplay.fScreenHeight = orxU2F(orxDISPLAY_KU32_SCREEN_HEIGHT); #else /* __orxGP2X__ */ { orxU32 u32ConfigWidth, u32ConfigHeight, u32ConfigDepth, u32Flags; /* Gets resolution from config */ orxConfig_PushSection(orxDISPLAY_KZ_CONFIG_SECTION); u32ConfigWidth = orxConfig_GetU32(orxDISPLAY_KZ_CONFIG_WIDTH); u32ConfigHeight = orxConfig_GetU32(orxDISPLAY_KZ_CONFIG_HEIGHT); u32ConfigDepth = orxConfig_GetU32(orxDISPLAY_KZ_CONFIG_DEPTH); /* Full screen? */ if(orxConfig_GetBool(orxDISPLAY_KZ_CONFIG_FULLSCREEN) != orxFALSE) { /* Updates flags */ u32Flags = SDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT; } else { /* Updates flags */ u32Flags = SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT; } /* Inits display using config values? */ if((sstDisplay.pstScreen = SDL_SetVideoMode(u32ConfigWidth, u32ConfigHeight, u32ConfigDepth, u32Flags)) == orxNULL) { /* Inits display using default parameters */ sstDisplay.pstScreen = SDL_SetVideoMode(orxDISPLAY_KU32_SCREEN_WIDTH, orxDISPLAY_KU32_SCREEN_HEIGHT, orxDISPLAY_KU32_SCREEN_DEPTH, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT); /* Stores values */ sstDisplay.fScreenWidth = orxU2F(orxDISPLAY_KU32_SCREEN_WIDTH); sstDisplay.fScreenHeight = orxU2F(orxDISPLAY_KU32_SCREEN_HEIGHT); } else { /* Stores values */ sstDisplay.fScreenWidth = orxU2F(u32ConfigWidth); sstDisplay.fScreenHeight = orxU2F(u32ConfigHeight); } /* Pops config section */ orxConfig_PopSection(); } #endif /* __orxGP2X__ */ /* Updates result ? */ eResult = (sstDisplay.pstScreen != NULL) ? orxSTATUS_SUCCESS : orxSTATUS_FAILURE; /* Valid? */ if(eResult != orxSTATUS_FAILURE) { orxCLOCK *pstClock; /* Gets clock */ pstClock = orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE); /* Valid? */ if(pstClock != orxNULL) { /* Registers event update function */ eResult = orxClock_Register(pstClock, orxDisplay_SDL_EventUpdate, orxNULL, orxMODULE_ID_DISPLAY, orxCLOCK_PRIORITY_HIGHEST); } /* Decoration? */ if((orxConfig_HasValue(orxDISPLAY_KZ_CONFIG_DECORATION) == orxFALSE) || (orxConfig_GetBool(orxDISPLAY_KZ_CONFIG_DECORATION) != orxFALSE)) { /* Logs message */ orxLOG("This plugin can't remove window decorations."); } /* Has VSync value? */ if(orxConfig_HasValue(orxDISPLAY_KZ_CONFIG_VSYNC) != orxFALSE) { /* Logs message */ orxLOG("This plugin can't handle vsync."); } /* Updates its title */ SDL_WM_SetCaption(orxConfig_GetString(orxDISPLAY_KZ_CONFIG_TITLE), orxNULL); /* Sets module as ready */ sstDisplay.u32Flags = orxDISPLAY_KU32_STATIC_FLAG_READY; } } } /* Done! */ return eResult; }