/* ============= UI_DrawMainCursor3D Draws a rotating quad damage model. ============= */ void UI_DrawMainCursor3D (int32_t x, int32_t y) { refdef_t refdef; entity_t quadEnt, *ent; float rx, ry, rw, rh; int32_t yaw; yaw = anglemod(cls.realtime/10); memset(&refdef, 0, sizeof(refdef)); memset (&quadEnt, 0, sizeof(quadEnt)); // size 24x34 rx = x; ry = y; rw = 24; rh = 34; SCR_AdjustFrom640 (&rx, &ry, &rw, &rh, ALIGN_CENTER); refdef.x = rx; refdef.y = ry; refdef.width = rw; refdef.height = rh; refdef.fov_x = 40; refdef.fov_y = CalcFov (refdef.fov_x, refdef.width, refdef.height); refdef.time = cls.realtime*0.001; refdef.areabits = 0; refdef.lightstyles = 0; refdef.rdflags = RDF_NOWORLDMODEL; refdef.num_entities = 0; refdef.entities = &quadEnt; ent = &quadEnt; ent->model = R_RegisterModel(QUAD_CURSOR_MODEL); ent->flags = RF_FULLBRIGHT|RF_NOSHADOW|RF_DEPTHHACK; VectorSet (ent->origin, 40, 0, -18); VectorCopy( ent->origin, ent->oldorigin ); ent->frame = 0; ent->oldframe = 0; ent->backlerp = 0.0; ent->angles[1] = yaw; refdef.num_entities++; R_RenderFrame( &refdef ); }
/** * @sa CL_Sequence2D * @sa CL_ViewRender * @sa CL_SequenceEnd_f * @sa UI_PopWindow * @sa CL_SequenceFindEnt */ static void SEQ_Render3D (sequenceContext_t *context) { entity_t ent; seqEnt_t *se; int i; if (context->numEnts == 0) return; /* set camera */ SEQ_SetCamera(context); refdef.numEntities = 0; refdef.mapTiles = cl.mapTiles; /* render sequence */ for (i = 0, se = context->ents; i < context->numEnts; i++, se++) { if (!se->inuse) continue; /* advance in time */ VectorMA(se->origin, cls.frametime, se->speed, se->origin); VectorMA(se->angles, cls.frametime, se->omega, se->angles); R_AnimRun(&se->as, se->model, context->animspeed * cls.frametime); /* add to scene */ OBJZERO(ent); ent.model = se->model; ent.skinnum = se->skin; ent.as = se->as; ent.alpha = se->alpha; R_EntitySetOrigin(&ent, se->origin); VectorCopy(se->origin, ent.oldorigin); VectorCopy(se->angles, ent.angles); if (se->parent && se->tag) { seqEnt_t *parent; parent = SEQ_FindEnt(context, se->parent); if (parent) ent.tagent = parent->ep; ent.tagname = se->tag; } /* add to render list */ se->ep = R_GetFreeEntity(); R_AddEntity(&ent); } refdef.rendererFlags |= RDF_NOWORLDMODEL; /* use a relative fixed size */ viddef.x = context->pos[0]; viddef.y = context->pos[1]; viddef.viewWidth = context->size[0]; viddef.viewHeight = context->size[1]; /* update refdef */ CL_ViewUpdateRenderData(); /** @todo Models are not at the right position (relative to the node position). Maybe R_SetupFrustum erase matrix. Not a trivialous task. */ /* render the world */ R_PushMatrix(); R_RenderFrame(); R_PopMatrix(); }
void PlayerConfig_MenuDraw (void) { refdef_t refdef; float rx, ry, rw, rh; Menu_DrawBanner ("m_banner_plauer_setup"); // typo for image name is id's fault memset(&refdef, 0, sizeof(refdef)); rx = 0; ry = 0; rw = SCREEN_WIDTH; rh = SCREEN_HEIGHT; SCR_AdjustFrom640 (&rx, &ry, &rw, &rh, ALIGN_CENTER); refdef.x = rx; refdef.y = ry; refdef.width = rw; refdef.height = rh; refdef.fov_x = 50; refdef.fov_y = CalcFov (refdef.fov_x, refdef.width, refdef.height); refdef.time = cls.realtime*0.001; if ( s_pmi[s_player_model_box.curvalue].skindisplaynames ) { int yaw; int maxframe = 29; vec3_t modelOrg; // Psychopspaz's support for showing weapon model entity_t entity[2], *ent; refdef.num_entities = 0; refdef.entities = entity; yaw = anglemod(cl.time/10); VectorSet (modelOrg, 150, (hand->value==1)?25:-25, 0); // was 80, 0, 0 // Setup player model ent = &entity[0]; memset (&entity[0], 0, sizeof(entity[0])); // moved registration code to init and change only ent->model = playermodel; ent->skin = playerskin; ent->flags = RF_FULLBRIGHT|RF_NOSHADOW|RF_DEPTHHACK; if (hand->value == 1) ent->flags |= RF_MIRRORMODEL; ent->origin[0] = modelOrg[0]; ent->origin[1] = modelOrg[1]; ent->origin[2] = modelOrg[2]; VectorCopy( ent->origin, ent->oldorigin ); ent->frame = 0; ent->oldframe = 0; ent->backlerp = 0.0; ent->angles[1] = yaw; //if ( ++yaw > 360 ) // yaw -= 360; if (hand->value == 1) ent->angles[1] = 360 - ent->angles[1]; refdef.num_entities++; // Setup weapon model ent = &entity[1]; memset (&entity[1], 0, sizeof(entity[1])); // moved registration code to init and change only ent->model = weaponmodel; if (ent->model) { ent->skinnum = 0; ent->flags = RF_FULLBRIGHT|RF_NOSHADOW|RF_DEPTHHACK; if (hand->value == 1) ent->flags |= RF_MIRRORMODEL; ent->origin[0] = modelOrg[0]; ent->origin[1] = modelOrg[1]; ent->origin[2] = modelOrg[2]; VectorCopy( ent->origin, ent->oldorigin ); ent->frame = 0; ent->oldframe = 0; ent->backlerp = 0.0; ent->angles[1] = yaw; if (hand->value == 1) ent->angles[1] = 360 - ent->angles[1]; refdef.num_entities++; } refdef.areabits = 0; refdef.lightstyles = 0; refdef.rdflags = RDF_NOWORLDMODEL; Menu_Draw( &s_player_config_menu ); // skin selection preview PlayerConfig_DrawSkinSelection (); R_RenderFrame( &refdef ); } }