diff options
Diffstat (limited to 'demos/3rdparty/doom/p_mobj.h')
-rw-r--r-- | demos/3rdparty/doom/p_mobj.h | 295 |
1 files changed, 0 insertions, 295 deletions
diff --git a/demos/3rdparty/doom/p_mobj.h b/demos/3rdparty/doom/p_mobj.h deleted file mode 100644 index 75d368a7..00000000 --- a/demos/3rdparty/doom/p_mobj.h +++ /dev/null @@ -1,295 +0,0 @@ -// 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: -// Map Objects, MObj, definition and handling. -// -//----------------------------------------------------------------------------- - - -#ifndef __P_MOBJ__ -#define __P_MOBJ__ - -// Basics. -#include "tables.h" -#include "m_fixed.h" - -// We need the thinker_t stuff. -#include "d_think.h" - -// We need the WAD data structure for Map things, -// from the THINGS lump. -#include "doomdata.h" - -// States are tied to finite states are -// tied to animation frames. -// Needs precompiled tables/data structures. -#include "info.h" - - - -#ifdef __GNUG__ -#pragma interface -#endif - - - -// -// NOTES: mobj_t -// -// mobj_ts are used to tell the refresh where to draw an image, -// tell the world simulation when objects are contacted, -// and tell the sound driver how to position a sound. -// -// The refresh uses the next and prev links to follow -// lists of things in sectors as they are being drawn. -// The sprite, frame, and angle elements determine which patch_t -// is used to draw the sprite if it is visible. -// The sprite and frame values are allmost allways set -// from state_t structures. -// The statescr.exe utility generates the states.h and states.c -// files that contain the sprite/frame numbers from the -// statescr.txt source file. -// The xyz origin point represents a point at the bottom middle -// of the sprite (between the feet of a biped). -// This is the default origin position for patch_ts grabbed -// with lumpy.exe. -// A walking creature will have its z equal to the floor -// it is standing on. -// -// The sound code uses the x,y, and subsector fields -// to do stereo positioning of any sound effited by the mobj_t. -// -// The play simulation uses the blocklinks, x,y,z, radius, height -// to determine when mobj_ts are touching each other, -// touching lines in the map, or hit by trace lines (gunshots, -// lines of sight, etc). -// The mobj_t->flags element has various bit flags -// used by the simulation. -// -// Every mobj_t is linked into a single sector -// based on its origin coordinates. -// The subsector_t is found with R_PointInSubsector(x,y), -// and the sector_t can be found with subsector->sector. -// The sector links are only used by the rendering code, -// the play simulation does not care about them at all. -// -// Any mobj_t that needs to be acted upon by something else -// in the play world (block movement, be shot, etc) will also -// need to be linked into the blockmap. -// If the thing has the MF_NOBLOCK flag set, it will not use -// the block links. It can still interact with other things, -// but only as the instigator (missiles will run into other -// things, but nothing can run into a missile). -// Each block in the grid is 128*128 units, and knows about -// every line_t that it contains a piece of, and every -// interactable mobj_t that has its origin contained. -// -// A valid mobj_t is a mobj_t that has the proper subsector_t -// filled in for its xy coordinates and is linked into the -// sector from which the subsector was made, or has the -// MF_NOSECTOR flag set (the subsector_t needs to be valid -// even if MF_NOSECTOR is set), and is linked into a blockmap -// block or has the MF_NOBLOCKMAP flag set. -// Links should only be modified by the P_[Un]SetThingPosition() -// functions. -// Do not change the MF_NO? flags while a thing is valid. -// -// Any questions? -// - -// -// Misc. mobj flags -// -typedef enum -{ - // Call P_SpecialThing when touched. - MF_SPECIAL = 1, - // Blocks. - MF_SOLID = 2, - // Can be hit. - MF_SHOOTABLE = 4, - // Don't use the sector links (invisible but touchable). - MF_NOSECTOR = 8, - // Don't use the blocklinks (inert but displayable) - MF_NOBLOCKMAP = 16, - - // Not to be activated by sound, deaf monster. - MF_AMBUSH = 32, - // Will try to attack right back. - MF_JUSTHIT = 64, - // Will take at least one step before attacking. - MF_JUSTATTACKED = 128, - // On level spawning (initial position), - // hang from ceiling instead of stand on floor. - MF_SPAWNCEILING = 256, - // Don't apply gravity (every tic), - // that is, object will float, keeping current height - // or changing it actively. - MF_NOGRAVITY = 512, - - // Movement flags. - // This allows jumps from high places. - MF_DROPOFF = 0x400, - // For players, will pick up items. - MF_PICKUP = 0x800, - // Player cheat. ??? - MF_NOCLIP = 0x1000, - // Player: keep info about sliding along walls. - MF_SLIDE = 0x2000, - // Allow moves to any height, no gravity. - // For active floaters, e.g. cacodemons, pain elementals. - MF_FLOAT = 0x4000, - // Don't cross lines - // ??? or look at heights on teleport. - MF_TELEPORT = 0x8000, - // Don't hit same species, explode on block. - // Player missiles as well as fireballs of various kinds. - MF_MISSILE = 0x10000, - // Dropped by a demon, not level spawned. - // E.g. ammo clips dropped by dying former humans. - MF_DROPPED = 0x20000, - // Use fuzzy draw (shadow demons or spectres), - // temporary player invisibility powerup. - MF_SHADOW = 0x40000, - // Flag: don't bleed when shot (use puff), - // barrels and shootable furniture shall not bleed. - MF_NOBLOOD = 0x80000, - // Don't stop moving halfway off a step, - // that is, have dead bodies slide down all the way. - MF_CORPSE = 0x100000, - // Floating to a height for a move, ??? - // don't auto float to target's height. - MF_INFLOAT = 0x200000, - - // On kill, count this enemy object - // towards intermission kill total. - // Happy gathering. - MF_COUNTKILL = 0x400000, - - // On picking up, count this item object - // towards intermission item total. - MF_COUNTITEM = 0x800000, - - // Special handling: skull in flight. - // Neither a cacodemon nor a missile. - MF_SKULLFLY = 0x1000000, - - // Don't spawn this object - // in death match mode (e.g. key cards). - MF_NOTDMATCH = 0x2000000, - - // Player sprites in multiplayer modes are modified - // using an internal color lookup table for re-indexing. - // If 0x4 0x8 or 0xc, - // use a translation table for player colormaps - MF_TRANSLATION = 0xc000000, - // Hmm ???. - MF_TRANSSHIFT = 26 - -} mobjflag_t; - - -// Map Object definition. -typedef struct mobj_s -{ - // List: thinker links. - thinker_t thinker; - - // Info for drawing: position. - fixed_t x; - fixed_t y; - fixed_t z; - - // More list: links in sector (if needed) - struct mobj_s* snext; - struct mobj_s* sprev; - - //More drawing info: to determine current sprite. - angle_t angle; // orientation - spritenum_t sprite; // used to find patch_t and flip value - int frame; // might be ORed with FF_FULLBRIGHT - - // Interaction info, by BLOCKMAP. - // Links in blocks (if needed). - struct mobj_s* bnext; - struct mobj_s* bprev; - - struct subsector_s* subsector; - - // The closest interval over all contacted Sectors. - fixed_t floorz; - fixed_t ceilingz; - - // For movement checking. - fixed_t radius; - fixed_t height; - - // Momentums, used to update position. - fixed_t momx; - fixed_t momy; - fixed_t momz; - - // If == validcount, already checked. - int validcount; - - mobjtype_t type; - mobjinfo_t* info; // &mobjinfo[mobj->type] - - int tics; // state tic counter - state_t* state; - int flags; - int health; - - // Movement direction, movement generation (zig-zagging). - int movedir; // 0-7 - int movecount; // when 0, select a new dir - - // Thing being chased/attacked (or NULL), - // also the originator for missiles. - struct mobj_s* target; - - // Reaction time: if non 0, don't attack yet. - // Used by player to freeze a bit after teleporting. - int reactiontime; - - // If >0, the target will be chased - // no matter what (even if shot) - int threshold; - - // Additional info record for player avatars only. - // Only valid if type == MT_PLAYER - struct player_s* player; - - // Player number last looked for. - int lastlook; - - // For nightmare respawn. - mapthing_t spawnpoint; - - // Thing being chased/attacked for tracers. - struct mobj_s* tracer; - -} mobj_t; - - - -#endif -//----------------------------------------------------------------------------- -// -// $Log:$ -// -//----------------------------------------------------------------------------- |