void main() /* Thread One */ { /* Get display screen information & clear the screen.*/ hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); WriteTitle(); /* Create the mutexes and reset thread count. */ hScreenMutex = CreateMutex(NULL, FALSE, NULL); /* Cleared */ hQueryMutex = CreateMutex(NULL, FALSE, NULL); /* Cleared */ try { // connect g_Conn.Connect(DATABASE, USER, PASSWORD, CLIENT); /* Start waiting for keyboard input to dispatch threads or exit. */ KbdFunc(); } catch(SAException &x) { std::cout << (const char*)x.ErrText() << std::endl; try { g_Conn.Rollback(); } catch(SAException &) { } } /* All threads done. Clean up handles. */ CloseHandle(hScreenMutex); CloseHandle(hQueryMutex); CloseHandle(hConsoleOut); }
bool iqFormat::ExportLight(const LightDescriptor& light) { WriteTitle("Luz",&mLights); ExportBasicInfo(&light, &mLights,false); /* if (light.mLightType==FLX_LTYPE_OMNI) mLights.Store((unsigned char)U3D_LTYPE_OMNI); // Omni (la única soportada por el fantasy) else if (light.mLightType==FLX_LTYPE_TSPOT) mLights.Store((unsigned char)U3D_LTYPE_TSPOT); // targeted spot light else if (light.mLightType==FLX_LTYPE_DIR) mLights.Store((unsigned char)U3D_LTYPE_DIR); // directional light else if (light.mLightType==FLX_LTYPE_FSPOT) mLights.Store((unsigned char)U3D_LTYPE_FSPOT); // free spot light else if (light.mLightType==FLX_LTYPE_TDIR) mLights.Store((unsigned char)U3D_LTYPE_TDIR); // targeted directional light mLights.Store(light.mColor.x); // Color mLights.Store(light.mColor.y); // Color mLights.Store(light.mColor.z); // Color mLights.Store(light.mAttenStart); // atten start mLights.Store(light.mAttenEnd); // atten end mLights.Store(light.mUseAtten); // Use atten mLights.Store(light.mIntensity); // Intensity (multiplier) */ mLights.StoreASCII("color %f %f %f\n",light.mColor.x,light.mColor.y,light.mColor.z); mLights.StoreASCII("atenuacion %d %f %f\n", light.mUseAtten,light.mAttenStart,light.mAttenEnd); mLights.StoreASCII("intensidad %f\n",light.mIntensity); return true; }
bool iqFormat::SetSceneInfo(const MainDescriptor& maininfo) { int firstframe,lastframe; // Save time info for later CopyMemory(&mTimeInfo, &maininfo.mTime, sizeof(MAXTimeInfo)); WriteTitle("Paradise exporter by utopian/rgba",&mGeneral); firstframe=mTimeInfo.mStartTime / mTimeInfo.mDeltaTime; lastframe=mTimeInfo.mEndTime / mTimeInfo.mDeltaTime; mGeneral .StoreASCII("numframes ") .StoreASCII(lastframe-firstframe+1) .StoreASCII("\nticksperframe ") .StoreASCII((long)mTimeInfo.mDeltaTime) .StoreASCII("\n"); /* // Export time info mGeneral.Store((long)(mTimeInfo.mStartTime / mTimeInfo.mDeltaTime)); // First frame mGeneral.Store((long)(mTimeInfo.mEndTime / mTimeInfo.mDeltaTime)); // Last frame mGeneral.Store(mTimeInfo.mFrameRate); // Framerate mGeneral.Store((long)mTimeInfo.mDeltaTime); // Para calcular cosas luego mGeneral.Store((float)maininfo.mGlobalScale); // Global scale (sirve de algo?) */ return true; }
void CreateDispThd(void) // Dispatch threads. { void Display(void *argv); WriteTitle(); ClearScreen(); void *ArgList = NULL; _beginthread(Display, 2048, ArgList); ThreadNr++; }
bool iqFormat::ExportController(const ControllerDescriptor& controller) { // Controller data ControllerData* cdata = controller.mData; // Primero vemos qué tipo de controller es, y lo almacenamos if(!strcmp(controller.mField,"POSITION")) { WriteTitle("Spline posicion",&mControllers); mControllers.StoreASCII("tipospline posicion\n"); } else if (!strcmp(controller.mField,"ROTATION")) { if(cdata->mType==FLX_CTRL_FLOAT) { WriteTitle("Spline roll",&mControllers); mControllers.StoreASCII("tipospline roll\n"); } else { WriteTitle("Spline rotacion - quaternios",&mControllers); mControllers.StoreASCII("tipospline rotacion\n"); } } else return false; mControllers.StoreASCII("propietario %d\n",controller.mOwnerID); // Nodo al que pertenece el controlador if(cdata->mMode!=CTRL_KEYFRAMES) // No válido, debemos usar keyframes { printf("Error: MUST use keyframes, no samples allowed"); return false; } // Keyframing path KeyframeData* kdata = (KeyframeData*)cdata; mControllers.StoreASCII("nkeyframes %d\n",kdata->mNbKeyframes); // Número de keyframes switch(kdata->mScheme) { case FLX_SCHEME_LINEAR: // Interpolación lineal, no se usa de momento... return false; break; case FLX_SCHEME_TCB: // Interpolación por splines, esta es la que se usa... { if(!strcmp(controller.mField,"POSITION")) { // TCB Point keyframes TCBPointKey* Keys = (TCBPointKey*)kdata->mKeyframes; mControllers.StoreASCII("; keys [tiempo x y z]\n"); for(udword i=0;i<kdata->mNbKeyframes;i++) { const TCBPointKey& CurKey = Keys[i]; mControllers.StoreASCII("%d %f %f %f\n",CurKey.mTime, CurKey.mVal.x, CurKey.mVal.y, CurKey.mVal.z); } } else if(!strcmp(controller.mField,"ROTATION")) { if(cdata->mType==FLX_CTRL_FLOAT) { // TCB float keyframes TCBFloatKey* Keys = (TCBFloatKey*)kdata->mKeyframes; for(udword i=0;i<kdata->mNbKeyframes;i++) { const TCBFloatKey& CurKey = Keys[i]; mControllers.StoreASCII("%d %f\n",CurKey.mTime, CurKey.mVal); } } else { // TCB Rot keyframes TCBRotKey* Keys = (TCBRotKey*)kdata->mKeyframes; mControllers.StoreASCII("; keys [tiempo x y z w]\n"); for(udword i=0;i<kdata->mNbKeyframes;i++) { const TCBRotKey& CurKey = Keys[i]; mControllers.StoreASCII("%d %f %f %f %f\n",CurKey.mTime, CurKey.mVal.x, CurKey.mVal.y, CurKey.mVal.z, CurKey.mVal.w); } } } } break; case FLX_SCHEME_BEZIER: { printf("Bezier schema not supported yet\n"); return false; } break; } numsplines++; return true; }