Forum

Quake Video Code Rant

Discuss programming topics for the various GPL'd game engine sources.

Moderator: InsideQC Admins

Postby mankrip » Thu Mar 10, 2011 2:50 am

Dual screens can also be set up vertically, there's always funny modes such as 320x480 (or 640x240, on the Dreamcast), and there's also the possibility of the user creating custom video modes with weird resolutions (I do this all the time), so simply using a (CenterX > CenterY*2) to guess whether the engine is running in a dual screen setup is flawed, and risky at best.

There must be better ways to find it out.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
User avatar
mankrip
 
Posts: 915
Joined: Fri Jul 04, 2008 3:02 am

Postby leileilol » Thu Mar 10, 2011 3:11 am

mk wrote:there's always funny modes such as 320x480 (or 640x240, on the Dreamcast)


am i doing this rite?
Image

wow the particles look stupid in weird modes like these

I tried to do dynamic aspect before and it always ended up looking too fat. :/
Last edited by leileilol on Thu Mar 10, 2011 3:15 am, edited 1 time in total.
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Postby r00k » Thu Mar 10, 2011 3:14 am

the shadow under his feet looks cool!
r00k
 
Posts: 1110
Joined: Sat Nov 13, 2004 10:39 pm

Postby mankrip » Sun Apr 24, 2011 11:18 pm

Take a look at these:
Code: Select all
typedef struct
{
   vec3_t      origin;
   int         firstbrush;
   int         numbrushes;
   epair_t      *epairs;
} entity_t;

Code: Select all
typedef struct entity_s
{
   qboolean            forcelink;      // model changed

   int                  update_type;

   entity_state_t         baseline;      // to fill in defaults in updates

   double               msgtime;      // time of last update
   vec3_t               msg_origins[2];   // last two updates (0 is newest)
   vec3_t               origin;
   vec3_t               msg_angles[2];   // last two updates (0 is newest)
   vec3_t               angles;
   struct model_s         *model;         // NULL = no model
   struct efrag_s         *efrag;         // linked list of efrags
   int                  frame;
   float               syncbase;      // for client-side animations
   byte               *colormap;
   int                  effects;      // light, particals, etc
   int                  skinnum;      // for Alias models
   int                  visframe;      // last frame this entity was
                                 //  found in an active leaf

   int                  dlightframe;   // dynamic lighting
   int                  dlightbits;

// FIXME: could turn these into a union
   int                  trivial_accept;
   struct mnode_s         *topnode;      // for bmodels, first world node
                                 //  that splits bmodel, or NULL if
                                 //  not split
   // mankrip - model interpolation - begin
   struct model_s
      * lastmodel
      ;
   qboolean
      reset_frame_interpolation // mankrip
      ;
   float
      frame_start_time
   ,   frame_interval // mankrip - QC frame_interval
      ;
   struct maliasgroup_s
      * framegroup1 // mankrip
      ;
   int
      pose1
      ;
   struct maliasgroup_s
      * framegroup2 // mankrip - renamed
      ;
   int
      pose2
      ;
   float
      translate_start_time
      ;
   vec3_t
      origin1
   ,   origin2
      ;
   float
      rotate_start_time
      ;
   vec3_t
      angles1
   ,   angles2
      ;
   // mankrip - model interpolation - end
   // Tomaz - QC Alpha Scale Glow Begin
   float
      alpha
   ,   scale_start_time
//   ,   scale1
   ,   scale2
      ;
   vec3_t
      scalev
      ;
   float
      glow_size
//   ,   glow_red
//   ,   glow_green
//   ,   glow_blue
   // Tomaz - QC Alpha Scale Glow End
   ,   distance // mankrip - depth sorting
      ;
   void
      // MDL
      (* D_PolysetDrawSpans)   (void)
   ,   (* R_Outline)         (void)
      // SPR
   ,   (* D_SpriteDrawSpans)   (void)
      // BSP
   ,   (* D_DrawSpans)         (void)
   ,   (* D_DrawTurbulent)      (void)
      ;
   byte
      * colorblendingmap
//   ,   * colorshadingmap // *colormap
      ;
} entity_t;

The second struct is used by the engine, but the first one is only used by the BSP tools, and the fact that both structs have the same name makes the code prone to confusion.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
User avatar
mankrip
 
Posts: 915
Joined: Fri Jul 04, 2008 3:02 am

Previous

Return to Engine Programming

Who is online

Users browsing this forum: No registered users and 1 guest