Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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, &params);
		pObject->animCounter = params.state2 - 1;
	}

	return 0;
}
Ejemplo n.º 3
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);
}
Ejemplo n.º 4
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();
	}
}
Ejemplo n.º 5
0
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;
	}
}
Ejemplo n.º 6
0
Object* newObject(Polygon* P, unsigned int T, List CT)
{
	Object* Obj = (Object*) malloc(sizeof(Object));
	objInit(Obj, P, T, CT);
	return Obj;
}
Ejemplo n.º 7
0
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, &params);

					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, &params);
							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;
	}
}
Ejemplo n.º 8
0
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);
}