void scene_init() { GLfloat light_ambient[] = {1.0, 1.0, 0.8, 1.0}; GLfloat light_diffuse[] = {1.0, 1.0, 0.8, 1.0}; GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0}; GLfloat light_position[] = {0.0, 1000.0, 0.0, 0.0}; /* Set the clear color and initialize shading */ glEnable(GL_DEPTH_TEST); /* draw things in front only */ glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_SMOOTH); glEnable(GL_SMOOTH); glEnable(GL_POLYGON_SMOOTH); /* Create a light source */ glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); /* Enable lighting, and enable the light source */ glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); /* Initialize the object drawing module */ objInit(); init_ground_list(); }
int16 Op_AutoCell() { cellStruct *pObject; int signal = popVar(); int loop = popVar(); int wait = popVar(); int animStep = popVar(); int end = popVar(); int start = popVar(); int type = popVar(); int change = popVar(); int obj = popVar(); int overlay = popVar(); if (!overlay) overlay = currentScriptPtr->overlayNumber; pObject = addCell(&cellHead, overlay, obj, 4, masterScreen, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, currentScriptPtr->type); if (!pObject) return 0; pObject->animSignal = signal; pObject->animLoop = loop; pObject->animWait = wait; pObject->animStep = animStep; pObject->animEnd = end; pObject->animStart = start; pObject->animType = type; pObject->animChange = change; if (type) { if (currentScriptPtr->type == scriptType_PROC) { changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &procHead, -1, 9996); } else if (currentScriptPtr->type == scriptType_REL) { changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &relHead, -1, 9996); } } if (change == 5) { objInit(pObject->overlay, pObject->idx, start); } else { setObjectPosition(pObject->overlay, pObject->idx, pObject->animChange, start); } if (wait < 0) { objectParamsQuery params; getMultipleObjectParam(overlay, obj, ¶ms); pObject->animCounter = params.state2 - 1; } return 0; }
int16 Op_InitializeState() { int param1 = popVar(); int objIdx = popVar(); int ovlIdx = popVar(); if (!ovlIdx) ovlIdx = currentScriptPtr->overlayNumber; #ifdef FUNCTION_DEBUG debug(1, "Init %s state to %d", getObjectName(objIdx, overlayTable[ovlIdx].ovlData->arrayNameObj), param1); #endif objInit(ovlIdx, objIdx, param1); return (0); }
void TableProtoScene::ScoreBoard::Render() { #ifndef _WIN32 if (!initialized) { objInit(); initialized = true; } #endif /*_WIN32*/ RECT rect = {0, 0, PanelWidth, PanelHeight}; SpriteRenderer::instantiate(myDevice)->ShowSprite(texture, (int)xpos, (int)ypos, PanelWidth, PanelHeight, 0xffffffff, &rect, 0, 0, &myMatrix); if ((playerID() >= 0) && (playerID() < (GameStatus::gameStat()->chkGameType(SanmaT) ? 3 : 4))) { renderWind(); renderRank(); renderScore(); renderName(); } }
void init(struct hypnomix *hyp) { int nbobj = 0; int id; float tmp; char *path; int i; char *objname; transformProjection(&hyp->tr, hyp->pmatrix); hyp->var.nbbands = 3; do { } while(objs[++nbobj] != NULL); // id = rand() % nbobj; //id = 2; /* FIXME: use only triangles .obj */ presetGetStr(&hyp->pr, "objname", &objname); /* path = malloc(strlen(hyp->home) + strlen(objs[id]) + 1); strcpy(path, hyp->home); strcat(path, objs[id]); */ path = malloc(strlen(hyp->home) + strlen(objname) + 1); strcpy(path, hyp->home); strcat(path, objname); objInit(&obj, path); (*hyp->log)(HYP_INFO, "load meshes: %s\n", objname); free(path); transformComputeAverageNormals(obj.idx, obj.nbidx, obj.vtx, obj.nbvtx, obj.nrm, 3); clr = malloc(sizeof(float)*4*obj.nbvtx); for(i = 0; i < obj.nbvtx; i++) { clr[i*4] = 1.0; clr[i*4+1] = 1.0; clr[i*4+2] = 1.0; clr[i*4+3] = 1.0; } }
Object* newObject(Polygon* P, unsigned int T, List CT) { Object* Obj = (Object*) malloc(sizeof(Object)); objInit(Obj, P, T, CT); return Obj; }
void callRelation(menuElementSubStruct *pMenuElement, int nObj2) { if (pMenuElement == NULL) return; menuElementSubStruct* pCurrent = pMenuElement; while (pCurrent != NULL) { int ovlIdx = pCurrent->ovlIdx; int header = pCurrent->header; linkDataStruct* pHeader = &overlayTable[ovlIdx].ovlData->arrayMsgRelHeader[header]; if (pHeader->obj2Number == nObj2) { // REL if (pHeader->type == RT_REL) { if (currentScriptPtr) { attacheNewScriptToTail(&relHead, ovlIdx, pHeader->id, 30, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, scriptType_REL); } else { attacheNewScriptToTail(&relHead, ovlIdx, pHeader->id, 30, 0, 0, scriptType_REL); } if ((narratorOvl > 0) && (pHeader->trackX != -1) && (pHeader->trackY != -1)) { actorStruct* pTrack = findActor(&actorHead, narratorOvl, narratorIdx, 0); if (pTrack) { animationStart = false; if (pHeader->trackDirection == 9999) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = direction(naratorParams.X, naratorParams.Y, pTrack->x_dest, pTrack->y_dest, 0, 0); } else if ((pHeader->trackX == 9999) && (pHeader->trackY == 9999)) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = pHeader->trackDirection; } else { pTrack->x_dest = pHeader->trackX; pTrack->y_dest = pHeader->trackY; pTrack->endDirection = pHeader->trackDirection; } pTrack->flag = 1; autoTrack = true; userEnabled = 0; changeScriptParamInList(ovlIdx, pHeader->id, &relHead, 0, 9998); } } } else if (pHeader->type == RT_MSG) { // MSG int obj1Ovl = pHeader->obj1Overlay; if (!obj1Ovl) obj1Ovl = ovlIdx; int x = 60; int y = 40; if (pHeader->obj1Number >= 0) { objectParamsQuery params; getMultipleObjectParam(obj1Ovl, pHeader->obj1Number, ¶ms); if (narratorOvl > 0) { if ((pHeader->trackX != -1) && (pHeader->trackY != -1) && (pHeader->trackX != 9999) && (pHeader->trackY != 9999)) { x = pHeader->trackX - 100; y = pHeader->trackY - 150; } else { getMultipleObjectParam(narratorOvl, narratorIdx, ¶ms); x = params.X - 100; y = params.Y - 150; } } else if (params.scale >= 0) { x = params.X - 100; y = params.Y - 40; } if (pHeader->obj1NewState != -1) { objInit(obj1Ovl, pHeader->obj1Number, pHeader->obj1NewState); } } if (currentScriptPtr) { createTextObject(&cellHead, ovlIdx, pHeader->id, x, y, 200, findHighColor(), masterScreen, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber); } else { createTextObject(&cellHead, ovlIdx, pHeader->id, x, y, 200, findHighColor(), masterScreen, 0, 0); } userWait = 1; autoOvl = ovlIdx; autoMsg = pHeader->id; if ((narratorOvl > 0) && (pHeader->trackX != -1) && (pHeader->trackY != -1)) { actorStruct* pTrack = findActor(&actorHead, narratorOvl, narratorIdx, 0); if (pTrack) { animationStart = false; if (pHeader->trackDirection == 9999) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = direction(naratorParams.X, naratorParams.Y, pTrack->x_dest, pTrack->y_dest, 0, 0); } else if ((pHeader->trackX == 9999) && (pHeader->trackY == 9999)) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = pHeader->trackDirection; } else { pTrack->x_dest = pHeader->trackX; pTrack->y_dest = pHeader->trackY; pTrack->endDirection = pHeader->trackDirection; } pTrack->flag = 1; autoTrack = true; userWait = 0; userEnabled = 0; freezeCell(&cellHead, ovlIdx, pHeader->id, 5, -1, 0, 9998); } } } } else { linkedRelation = pMenuElement; } pCurrent = pCurrent->pNext; } }
listItem* eoLoadScene( const char* fileName, engObjInitFunc objInit ) { char line[2048]; char set[1024]; char val[1024]; listItem* objs = NULL; engObj_s* obj = NULL; int i=0; char **vec; FILE* fp = fopen( fileName, "r" ); //Open file if( fp ) { objs = initList(); eoPrint("Loading %s ...", fileName); while( fgets(line, 1023, fp) ) { stripNewLine(line); if( strlen(line) > 2 ) { if( strcmp(line,"[model]") == 0 ) { obj = eoObjCreate( ENGOBJ_MODEL ); } else if( strcmp(line,"[sprite]" ) == 0 ) { eoPrint("Created Sprite entity."); obj = eoObjCreate( ENGOBJ_SPRITE ); } else if( strcmp(line,"[emitter]") == 0 ) { eoPrint("Created Emitter entity."); obj = eoObjCreate( ENGOBJ_PAREMIT ); } else if( strcmp(line, "[sound]" ) == 0 ) { eoPrint("Created Sound entity."); obj = eoObjCreate( ENGOBJ_SOUND ); } else if( strcmp(line,"[end]") == 0 ) { if( objInit ) { objInit(obj); } listAddData( objs, (void*)obj ); } else { if( splitVals( '=', line, set, val ) ) { if( strcmp(set,"class") == 0 ) { obj->className = malloc(strlen(val)+1); strcpy(obj->className,val); } else if( strcmp(set,"rot") == 0 ) { vec = explode(',', val, 3); obj->rot.x=atof(vec[0]); obj->rot.y=atof(vec[1]); obj->rot.z=atof(vec[2]); free(vec[0]); free(vec[1]); free(vec[2]); free(vec); } else if( strcmp(set,"pos") == 0 ) { vec = explode(',', val, 3); obj->pos.x=atof(vec[0]); obj->pos.y=atof(vec[1]); obj->pos.z=atof(vec[2]); free(vec[0]); free(vec[1]); free(vec[2]); free(vec); } else if( strcmp(set,"file") == 0 ) { //Todo: Cache models i=charrpos(val,'/')+1; strcpy(set, val+i); val[i]=0; obj->model = eoModelLoad( val, set ); } else { eoPrint("Unknown data: %s ('%s' and '%s')",line,set,val); } } else eoPrint("Invalid text: %s",line); } } // free(objName); } } else { eoPrint("Error, could not open file %s for reading...", fileName); } return(objs); }