亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? r_defs.h

?? 游戲類程序源代碼---WinDoom 3D源程序.zip
?? H
字號:
// Emacs style mode select   -*- C++ -*- 
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
//      Refresh/rendering module, shared data struct definitions.
//
//-----------------------------------------------------------------------------


#ifndef __R_DEFS__
#define __R_DEFS__


// Screenwidth.
#include "doomdef.h"

// Some more or less basic data types
// we depend on.
#include "m_fixed.h"

// We rely on the thinker data struct
// to handle sound origins in sectors.
#include "d_think.h"
// SECTORS do store MObjs anyway.
#include "p_mobj.h"



#ifdef __GNUG__
#pragma interface
#endif



// Silhouette, needed for clipping Segs (mainly)
// and sprites representing things.
#define SIL_NONE		0
#define SIL_BOTTOM		1
#define SIL_TOP			2
#define SIL_BOTH		3

#define MAXDRAWSEGS		256





//
// INTERNAL MAP TYPES
//  used by play and refresh
//

//
// Your plain vanilla vertex.
// Note: transformed values not buffered locally,
//  like some DOOM-alikes ("wt", "WebView") did.
//
typedef struct
{
    fixed_t	x;
    fixed_t	y;
    
} vertex_t;


// Forward of LineDefs, for Sectors.
struct line_s;

// Each sector has a degenmobj_t in its center
//  for sound origin purposes.
// I suppose this does not handle sound from
//  moving objects (doppler), because
//  position is prolly just buffered, not
//  updated.
typedef struct
{
    thinker_t		thinker;	// not used for anything
    fixed_t		x;
    fixed_t		y;
    fixed_t		z;

} degenmobj_t;

//
// The SECTORS record, at runtime.
// Stores things/mobjs.
//
typedef	struct
{
    fixed_t	floorheight;
    fixed_t	ceilingheight;
    short	floorpic;
    short	ceilingpic;
    short	lightlevel;
    short	special;
    short	tag;

    // 0 = untraversed, 1,2 = sndlines -1
    int		soundtraversed;

    // thing that made a sound (or null)
    mobj_t*	soundtarget;

    // mapblock bounding box for height changes
    int		blockbox[4];

    // origin for any sounds played by the sector
    degenmobj_t	soundorg;

    // if == validcount, already checked
    int		validcount;

    // list of mobjs in sector
    mobj_t*	thinglist;

    // thinker_t for reversable actions
    void*	specialdata;

    int			linecount;
    struct line_s**	lines;	// [linecount] size
    
} sector_t;




//
// The SideDef.
//

typedef struct
{
    // add this to the calculated texture column
    fixed_t	textureoffset;
    
    // add this to the calculated texture top
    fixed_t	rowoffset;

    // Texture indices.
    // We do not maintain names here. 
    short	toptexture;
    short	bottomtexture;
    short	midtexture;

    // Sector the SideDef is facing.
    sector_t*	sector;
    
} side_t;



//
// Move clipping aid for LineDefs.
//
typedef enum
{
    ST_HORIZONTAL,
    ST_VERTICAL,
    ST_POSITIVE,
    ST_NEGATIVE

} slopetype_t;



typedef struct line_s
{
    // Vertices, from v1 to v2.
    vertex_t*	v1;
    vertex_t*	v2;

    // Precalculated v2 - v1 for side checking.
    fixed_t	dx;
    fixed_t	dy;

    // Animation related.
    short	flags;
    short	special;
    short	tag;

    // Visual appearance: SideDefs.
    //  sidenum[1] will be -1 if one sided
    short	sidenum[2];			

    // Neat. Another bounding box, for the extent
    //  of the LineDef.
    fixed_t	bbox[4];

    // To aid move clipping.
    slopetype_t	slopetype;

    // Front and back sector.
    // Note: redundant? Can be retrieved from SideDefs.
    sector_t*	frontsector;
    sector_t*	backsector;

    // if == validcount, already checked
    int		validcount;

    // thinker_t for reversable actions
    void*	specialdata;		
} line_t;




//
// A SubSector.
// References a Sector.
// Basically, this is a list of LineSegs,
//  indicating the visible walls that define
//  (all or some) sides of a convex BSP leaf.
//
typedef struct subsector_s
{
    sector_t*	sector;
    short	numlines;
    short	firstline;
    
} subsector_t;



//
// The LineSeg.
//
typedef struct
{
    vertex_t*	v1;
    vertex_t*	v2;
    
    fixed_t	offset;

    angle_t	angle;

    side_t*	sidedef;
    line_t*	linedef;

    // Sector references.
    // Could be retrieved from linedef, too.
    // backsector is NULL for one sided lines
    sector_t*	frontsector;
    sector_t*	backsector;
    
} seg_t;



//
// BSP node.
//
typedef struct
{
    // Partition line.
    fixed_t	x;
    fixed_t	y;
    fixed_t	dx;
    fixed_t	dy;

    // Bounding box for each child.
    fixed_t	bbox[2][4];

    // If NF_SUBSECTOR its a subsector.
    unsigned short children[2];
    
} node_t;




// posts are runs of non masked source pixels
typedef struct
{
    byte		topdelta;	// -1 is the last post in a column
    byte		length; 	// length data bytes follows
} post_t;

// column_t is a list of 0 or more post_t, (byte)-1 terminated
typedef post_t	column_t;



// PC direct to screen pointers
//B UNUSED - keep till detailshift in r_draw.c resolved
//extern byte*	destview;
//extern byte*	destscreen;





//
// OTHER TYPES
//

// This could be wider for >8 bit display.
// Indeed, true color support is posibble
//  precalculating 24bpp lightmap/colormap LUT.
//  from darkening PLAYPAL to all black.
// Could even us emore than 32 levels.
typedef byte	lighttable_t;	




//
// ?
//
typedef struct drawseg_s
{
    seg_t*		curline;
    int			x1;
    int			x2;

    fixed_t		scale1;
    fixed_t		scale2;
    fixed_t		scalestep;

    // 0=none, 1=bottom, 2=top, 3=both
    int			silhouette;

    // do not clip sprites above this
    fixed_t		bsilheight;

    // do not clip sprites below this
    fixed_t		tsilheight;
    
    // Pointers to lists for sprite clipping,
    //  all three adjusted so [x1] is first value.
    short*		sprtopclip;		
    short*		sprbottomclip;	
    short*		maskedtexturecol;
    
} drawseg_t;



// Patches.
// A patch holds one or more columns.
// Patches are used for sprites and all masked pictures,
// and we compose textures from the TEXTURE1/2 lists
// of patches.
typedef struct 
{ 
    short		width;		// bounding box size 
    short		height; 
    short		leftoffset;	// pixels to the left of origin 
    short		topoffset;	// pixels below the origin 
    int			columnofs[8];	// only [width] used
    // the [0] is &columnofs[width] 
} patch_t;







// A vissprite_t is a thing
//  that will be drawn during a refresh.
// I.e. a sprite object that is partly visible.
typedef struct vissprite_s
{
    // Doubly linked list.
    struct vissprite_s*	prev;
    struct vissprite_s*	next;
    
    int			x1;
    int			x2;

    // for line side calculation
    fixed_t		gx;
    fixed_t		gy;		

    // global bottom / top for silhouette clipping
    fixed_t		gz;
    fixed_t		gzt;

    // horizontal position of x1
    fixed_t		startfrac;
    
    fixed_t		scale;
    
    // negative if flipped
    fixed_t		xiscale;	

    fixed_t		texturemid;
    int			patch;

    // for color translation and shadow draw,
    //  maxbright frames as well
    lighttable_t*	colormap;
   
    int			mobjflags;
    
} vissprite_t;


//	
// Sprites are patches with a special naming convention
//  so they can be recognized by R_InitSprites.
// The base name is NNNNFx or NNNNFxFx, with
//  x indicating the rotation, x = 0, 1-7.
// The sprite and frame specified by a thing_t
//  is range checked at run time.
// A sprite is a patch_t that is assumed to represent
//  a three dimensional object and may have multiple
//  rotations pre drawn.
// Horizontal flipping is used to save space,
//  thus NNNNF2F5 defines a mirrored patch.
// Some sprites will only have one picture used
// for all views: NNNNF0
//
typedef struct
{
    // If false use 0 for any position.
    // Note: as eight entries are available,
    //  we might as well insert the same name eight times.
    boolean	rotate;

    // Lump to use for view angles 0-7.
    short	lump[8];

    // Flip bit (1 = flip) to use for view angles 0-7.
    byte	flip[8];
    
} spriteframe_t;



//
// A sprite definition:
//  a number of animation frames.
//
typedef struct
{
    int			numframes;
    spriteframe_t*	spriteframes;

} spritedef_t;



//
// Now what is a visplane, anyway?
// 
typedef struct
{
  fixed_t		height;
  int			picnum;
  int			lightlevel;
  int			minx;
  int			maxx;

  unsigned short        *topbase;
  unsigned short        *top;
  unsigned short        *bottombase;
  unsigned short        *bottom;
/*
  unsigned short         pad1;
  unsigned short         top[SCREENWIDTH];
  unsigned short         pad2;
  unsigned short         pad3;
  unsigned short         bottom[SCREENWIDTH];
  unsigned short         pad4;
*/
  // leave pads for [minx-1]/[maxx+1]
/*  
  byte		pad1;
  // Here lies the rub for all
  //  dynamic resize/change of resolution.
  byte		top[SCREENWIDTH];
  byte		pad2;
  byte		pad3;
  // See above.
  byte		bottom[SCREENWIDTH];
  byte		pad4;
*/
} visplane_t;




#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品免费视频| 日韩伦理免费电影| 亚洲免费电影在线| 国产专区欧美精品| 欧美色偷偷大香| 国产精品无人区| 九九精品视频在线看| 欧美视频一区二区三区| 中文字幕在线观看一区二区| 六月丁香综合在线视频| 欧美日韩国产美女| 亚洲日本va午夜在线影院| 日本久久电影网| 久久久久青草大香线综合精品| 视频一区二区欧美| 欧美午夜一区二区三区| 亚洲欧美色综合| 国产不卡一区视频| 日韩欧美一级特黄在线播放| 丝袜美腿亚洲色图| 欧美巨大另类极品videosbest| 国产精品毛片无遮挡高清| 极品少妇xxxx精品少妇| 日韩午夜在线观看| 免费人成精品欧美精品| 91精品国产手机| 人妖欧美一区二区| 日韩视频不卡中文| 精品一区二区日韩| 久久免费的精品国产v∧| 韩日精品视频一区| 2023国产精品自拍| 国产麻豆成人精品| 国产欧美一区二区精品仙草咪| 国产一区二区三区在线观看免费视频| 欧美成人aa大片| 麻豆免费看一区二区三区| 欧美日韩成人综合天天影院| 日本视频在线一区| 精品国产91乱码一区二区三区 | 成人h精品动漫一区二区三区| 久久女同互慰一区二区三区| 国产在线视视频有精品| 国产亚洲精品aa| 99精品国产视频| 亚洲影院久久精品| 91精品国产综合久久婷婷香蕉| 日韩精品电影在线观看| 日韩欧美国产麻豆| 国产精品一区2区| 国产精品福利影院| 91国偷自产一区二区开放时间 | 在线精品视频免费播放| 亚洲高清免费在线| 欧美r级在线观看| 粉嫩嫩av羞羞动漫久久久| 亚洲青青青在线视频| 欧美卡1卡2卡| 国产精选一区二区三区| 亚洲视频香蕉人妖| 久久视频一区二区| 97久久精品人人澡人人爽| 亚洲国产精品久久人人爱蜜臀| 欧美一区三区二区| 成人在线一区二区三区| 香蕉成人啪国产精品视频综合网| 精品国产一区二区精华| 99久久精品免费看国产免费软件| 亚洲成人先锋电影| 久久天天做天天爱综合色| 91视频一区二区三区| 美女mm1313爽爽久久久蜜臀| 国产精品久久久久久久第一福利| 欧美日韩视频专区在线播放| 国产精品1区2区3区在线观看| 亚洲欧美欧美一区二区三区| 欧美成人伊人久久综合网| 色偷偷久久一区二区三区| 黄页网站大全一区二区| 亚洲一区二区三区美女| 国产精品你懂的| 日韩视频一区在线观看| 欧美性受xxxx| 成人精品鲁一区一区二区| 免费在线看成人av| 亚洲mv在线观看| 亚洲欧洲日韩综合一区二区| 欧美精品一区在线观看| 亚洲精品美国一| 一区二区三区加勒比av| 香蕉影视欧美成人| 日韩一二三区视频| 欧美日韩一区二区不卡| 99麻豆久久久国产精品免费| 国产剧情av麻豆香蕉精品| 国内精品国产三级国产a久久| 一区二区三区在线视频观看58 | 国产日本亚洲高清| 日韩视频在线观看一区二区| 欧美天天综合网| 91麻豆精品在线观看| 国产精品一二三在| 久久99精品一区二区三区| 婷婷综合久久一区二区三区| 一区二区免费看| 亚洲男同1069视频| 亚洲少妇30p| 国产精品久久久久久久久免费相片 | 99精品欧美一区| 成人永久aaa| 成人在线视频一区| 不卡电影一区二区三区| 成人在线视频一区二区| 丁香婷婷深情五月亚洲| 国v精品久久久网| 成人自拍视频在线| 成人av网站大全| 色综合久久综合中文综合网| 99精品国产99久久久久久白柏| 成人福利视频在线| 91在线你懂得| 欧美视频你懂的| 欧美日韩国产中文| 日韩欧美电影一区| 精品国产乱码91久久久久久网站| 精品美女一区二区三区| 精品国产乱码久久久久久1区2区| 久久天堂av综合合色蜜桃网| 国产亚洲欧美激情| 亚洲欧美一区二区三区国产精品| 亚洲女爱视频在线| 午夜精品久久久久久久99樱桃| 日本强好片久久久久久aaa| 久久精品国产亚洲aⅴ| 国产二区国产一区在线观看| 99热99精品| 在线播放中文字幕一区| 精品粉嫩超白一线天av| 国产精品色在线| 亚洲一区二区三区在线看| 蜜乳av一区二区| 成人免费视频视频在线观看免费 | 成人欧美一区二区三区白人| 一区二区三区免费| 蜜臀a∨国产成人精品| 成人白浆超碰人人人人| 欧美丰满美乳xxx高潮www| 亚洲精品在线一区二区| 亚洲欧洲美洲综合色网| 日韩成人av影视| eeuss影院一区二区三区| 欧美精品乱码久久久久久按摩 | 国产福利一区二区| 欧美精品123区| 中文字幕精品在线不卡| 同产精品九九九| 成人激情黄色小说| 日韩一二三区不卡| 夜夜精品视频一区二区 | 久久色视频免费观看| 亚洲乱码国产乱码精品精小说| 日产国产欧美视频一区精品 | 国产精品成人免费| 日韩 欧美一区二区三区| 97精品国产露脸对白| 2022国产精品视频| 亚洲va国产天堂va久久en| 国产成人三级在线观看| 91麻豆精品国产自产在线观看一区| 国产欧美日韩不卡免费| 久久国产精品区| 欧美日韩在线一区二区| 中文字幕制服丝袜一区二区三区 | 精品国一区二区三区| 亚洲视频小说图片| 国产大陆亚洲精品国产| 日韩三级.com| 首页国产丝袜综合| 欧美自拍丝袜亚洲| 18涩涩午夜精品.www| 国产91在线看| 欧美精品一区二区三区很污很色的 | 一区二区三区四区在线播放| 国产999精品久久久久久绿帽| 日韩欧美一级在线播放| 偷窥少妇高潮呻吟av久久免费| 色老头久久综合| 亚洲激情六月丁香| 99国产精品久久久久| 国产精品进线69影院| 国产suv一区二区三区88区| 久久久久久久久久美女| 国内外成人在线| 久久综合精品国产一区二区三区| 麻豆精品在线视频| 日韩你懂的在线播放| 美女视频一区二区| 欧美成人乱码一区二区三区| 麻豆精品精品国产自在97香蕉| 欧美大片在线观看一区二区|