bot: refactor and clean up old code
fix: crash when saving old format pwf on hlds bot: moved sdk headers to separate submodule nav: improved unstuck and avoidance (thanks @commandcobra7) code bot: use correct path slashes depending on platform for all data cfg: removed simplified chines' translation, as it's too outdated
This commit is contained in:
parent
48e157c7b4
commit
7b58d51973
42 changed files with 365 additions and 3805 deletions
|
|
@ -1 +1 @@
|
|||
Subproject commit 95405e93fcdad85586103c843a20f8cb5985ae94
|
||||
Subproject commit aee96574220a0e8e6fe5e84431cc184be4e05130
|
||||
|
|
@ -1,881 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 1999-2005, Valve Corporation. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This source code contains proprietary and confidential information of
|
||||
* Valve LLC and its suppliers. Access to this code is restricted to
|
||||
* persons who have executed a written SDK license with Valve. Any access,
|
||||
* use or distribution of this code by or to any unlicensed person is illegal.
|
||||
*
|
||||
****/
|
||||
|
||||
#ifndef CONST_H
|
||||
#define CONST_H
|
||||
//
|
||||
// Constants shared by the engine and dlls
|
||||
// This header file included by engine files and DLL files.
|
||||
// Most came from server.h
|
||||
|
||||
#define INTERFACE_VERSION 140
|
||||
|
||||
// Dot products for view cone checking
|
||||
#define VIEW_FIELD_FULL (float)-1.0 // +-180 degrees
|
||||
#define VIEW_FIELD_WIDE (float)-0.7 // +-135 degrees 0.1 // +-85 degrees, used for full FOV checks
|
||||
#define VIEW_FIELD_NARROW (float)0.7 // +-45 degrees, more narrow check used to set up ranged attacks
|
||||
#define VIEW_FIELD_ULTRA_NARROW (float)0.9 // +-25 degrees, more narrow check used to set up ranged attacks
|
||||
|
||||
#define FCVAR_ARCHIVE (1 << 0) // set to cause it to be saved to vars.rc
|
||||
#define FCVAR_USERINFO (1 << 1) // changes the client's info string
|
||||
#define FCVAR_SERVER (1 << 2) // notifies players when changed
|
||||
#define FCVAR_EXTDLL (1 << 3) // defined by external DLL
|
||||
#define FCVAR_CLIENTDLL (1 << 4) // defined by the client dll
|
||||
#define FCVAR_PROTECTED (1 << 5) // It's a server cvar, but we don't send the data since it's a password, etc. Sends 1 if it's not bland/zero, 0 otherwise as value
|
||||
#define FCVAR_SPONLY (1 << 6) // This cvar cannot be changed by clients connected to a multiplayer server.
|
||||
#define FCVAR_PRINTABLEONLY (1 << 7) // This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ).
|
||||
#define FCVAR_UNLOGGED (1 << 8) // If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log
|
||||
|
||||
// edict->flags
|
||||
#define FL_FLY (1 << 0) // Changes the SV_Movestep() behavior to not need to be on ground
|
||||
#define FL_SWIM (1 << 1) // Changes the SV_Movestep() behavior to not need to be on ground (but stay in water)
|
||||
#define FL_CONVEYOR (1 << 2)
|
||||
#define FL_CLIENT (1 << 3)
|
||||
#define FL_INWATER (1 << 4)
|
||||
#define FL_MONSTER (1 << 5)
|
||||
#define FL_GODMODE (1 << 6)
|
||||
#define FL_NOTARGET (1 << 7)
|
||||
#define FL_SKIPLOCALHOST (1 << 8) // Don't send entity to local host, it's predicting this entity itself
|
||||
#define FL_ONGROUND (1 << 9) // At rest / on the ground
|
||||
#define FL_PARTIALGROUND (1 << 10) // not all corners are valid
|
||||
#define FL_WATERJUMP (1 << 11) // player jumping out of water
|
||||
#define FL_FROZEN (1 << 12) // Player is frozen for 3rd person camera
|
||||
#define FL_FAKECLIENT (1 << 13) // JAC: fake client, simulated server side; don't send network messages to them
|
||||
#define FL_DUCKING (1 << 14) // Player flag -- Player is fully crouched
|
||||
#define FL_FLOAT (1 << 15) // Apply floating force to this entity when in water
|
||||
#define FL_GRAPHED (1 << 16) // worldgraph has this ent listed as something that blocks a connection
|
||||
|
||||
// UNDONE: Do we need these?
|
||||
#define FL_IMMUNE_WATER (1 << 17)
|
||||
#define FL_IMMUNE_SLIME (1 << 18)
|
||||
#define FL_IMMUNE_LAVA (1 << 19)
|
||||
|
||||
#define FL_PROXY (1 << 20) // This is a spectator proxy
|
||||
#define FL_ALWAYSTHINK (1 << 21) // Brush model flag -- call think every frame regardless of nextthink - ltime (for constantly changing velocity/path)
|
||||
#define FL_BASEVELOCITY (1 << 22) // Base velocity has been applied this frame (used to convert base velocity into momentum)
|
||||
#define FL_MONSTERCLIP (1 << 23) // Only collide in with monsters who have FL_MONSTERCLIP set
|
||||
#define FL_ONTRAIN (1 << 24) // Player is _controlling_ a train, so movement commands should be ignored on client during prediction.
|
||||
#define FL_WORLDBRUSH (1 << 25) // Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something)
|
||||
#define FL_SPECTATOR (1 << 26) // This client is a spectator, don't run touch functions, etc.
|
||||
#define FL_CUSTOMENTITY (1 << 29) // This is a custom entity
|
||||
#define FL_KILLME (1 << 30) // This entity is marked for death -- This allows the engine to kill ents at the appropriate time
|
||||
#define FL_DORMANT (1 << 31) // Entity is dormant, no updates to client
|
||||
|
||||
// Goes into globalvars_t.trace_flags
|
||||
#define FTRACE_SIMPLEBOX (1 << 0) // Traceline with a simple box
|
||||
|
||||
// walkmove modes
|
||||
#define WALKMOVE_NORMAL 0 // normal walkmove
|
||||
#define WALKMOVE_WORLDONLY 1 // doesn't hit ANY entities, no matter what the solid type
|
||||
#define WALKMOVE_CHECKONLY 2 // move, but don't touch triggers
|
||||
|
||||
// edict->movetype values
|
||||
#define MOVETYPE_NONE 0 // never moves
|
||||
#define MOVETYPE_WALK 3 // Player only - moving on the ground
|
||||
#define MOVETYPE_STEP 4 // gravity, special edge handling -- monsters use this
|
||||
#define MOVETYPE_FLY 5 // No gravity, but still collides with stuff
|
||||
#define MOVETYPE_TOSS 6 // gravity/collisions
|
||||
#define MOVETYPE_PUSH 7 // no clip to world, push and crush
|
||||
#define MOVETYPE_NOCLIP 8 // No gravity, no collisions, still do velocity/avelocity
|
||||
#define MOVETYPE_FLYMISSILE 9 // extra size to monsters
|
||||
#define MOVETYPE_BOUNCE 10 // Just like Toss, but reflect velocity when contacting surfaces
|
||||
#define MOVETYPE_BOUNCEMISSILE 11 // bounce w/o gravity
|
||||
#define MOVETYPE_FOLLOW 12 // track movement of aiment
|
||||
#define MOVETYPE_PUSHSTEP 13 // BSP model that needs physics/world collisions (uses nearest hull for world collision)
|
||||
|
||||
// edict->solid values
|
||||
// NOTE: Some movetypes will cause collisions independent of SOLID_NOT/SOLID_TRIGGER when the entity moves
|
||||
// SOLID only effects OTHER entities colliding with this one when they move - UGH!
|
||||
#define SOLID_NOT 0 // no interaction with other objects
|
||||
#define SOLID_TRIGGER 1 // touch on edge, but not blocking
|
||||
#define SOLID_BBOX 2 // touch on edge, block
|
||||
#define SOLID_SLIDEBOX 3 // touch on edge, but not an onground
|
||||
#define SOLID_BSP 4 // bsp clip, touch on edge, block
|
||||
|
||||
// edict->deadflag values
|
||||
#define DEAD_NO 0 // alive
|
||||
#define DEAD_DYING 1 // playing death animation or still falling off of a ledge waiting to hit ground
|
||||
#define DEAD_DEAD 2 // dead. lying still.
|
||||
#define DEAD_RESPAWNABLE 3
|
||||
#define DEAD_DISCARDBODY 4
|
||||
|
||||
#define DAMAGE_NO 0
|
||||
#define DAMAGE_YES 1
|
||||
#define DAMAGE_AIM 2
|
||||
|
||||
// entity effects
|
||||
#define EF_BRIGHTFIELD 1 // swirling cloud of particles
|
||||
#define EF_MUZZLEFLASH 2 // single frame ELIGHT on entity attachment 0
|
||||
#define EF_BRIGHTLIGHT 4 // DLIGHT centered at entity origin
|
||||
#define EF_DIMLIGHT 8 // player flashlight
|
||||
#define EF_INVLIGHT 16 // get lighting from ceiling
|
||||
#define EF_NOINTERP 32 // don't interpolate the next frame
|
||||
#define EF_LIGHT 64 // rocket flare glow sprite
|
||||
#define EF_NODRAW 128 // don't draw entity
|
||||
|
||||
// entity flags
|
||||
#define EFLAG_SLERP 1 // do studio interpolation of this entity
|
||||
|
||||
//
|
||||
// temp entity events
|
||||
//
|
||||
#define TE_BEAMPOINTS 0 // beam effect between two points
|
||||
// coord coord coord (start position)
|
||||
// coord coord coord (end position)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_BEAMENTPOINT 1 // beam effect between point and entity
|
||||
// short (start entity)
|
||||
// coord coord coord (end position)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_GUNSHOT 2 // particle effect plus ricochet sound
|
||||
// coord coord coord (position)
|
||||
|
||||
#define TE_EXPLOSION 3 // additive sprite, 2 dynamic lights, flickering particles, explosion sound, move vertically 8 pps
|
||||
// coord coord coord (position)
|
||||
// short (sprite index)
|
||||
// byte (scale in 0.1's)
|
||||
// byte (framerate)
|
||||
// byte (flags)
|
||||
//
|
||||
// The Explosion effect has some flags to control performance/aesthetic features:
|
||||
#define TE_EXPLFLAG_NONE 0 // all flags clear makes default Half-Life explosion
|
||||
#define TE_EXPLFLAG_NOADDITIVE 1 // sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite)
|
||||
#define TE_EXPLFLAG_NODLIGHTS 2 // do not render dynamic lights
|
||||
#define TE_EXPLFLAG_NOSOUND 4 // do not play client explosion sound
|
||||
#define TE_EXPLFLAG_NOPARTICLES 8 // do not draw particles
|
||||
|
||||
#define TE_TAREXPLOSION 4 // Quake1 "tarbaby" explosion with sound
|
||||
// coord coord coord (position)
|
||||
|
||||
#define TE_SMOKE 5 // alphablend sprite, move vertically 30 pps
|
||||
// coord coord coord (position)
|
||||
// short (sprite index)
|
||||
// byte (scale in 0.1's)
|
||||
// byte (framerate)
|
||||
|
||||
#define TE_TRACER 6 // tracer effect from point to point
|
||||
// coord, coord, coord (start)
|
||||
// coord, coord, coord (end)
|
||||
|
||||
#define TE_LIGHTNING 7 // TE_BEAMPOINTS with simplified parameters
|
||||
// coord, coord, coord (start)
|
||||
// coord, coord, coord (end)
|
||||
// byte (life in 0.1's)
|
||||
// byte (width in 0.1's)
|
||||
// byte (amplitude in 0.01's)
|
||||
// short (sprite model index)
|
||||
|
||||
#define TE_BEAMENTS 8
|
||||
// short (start entity)
|
||||
// short (end entity)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_SPARKS 9 // 8 random tracers with gravity, ricochet sprite
|
||||
// coord coord coord (position)
|
||||
|
||||
#define TE_LAVASPLASH 10 // Quake1 lava splash
|
||||
// coord coord coord (position)
|
||||
|
||||
#define TE_TELEPORT 11 // Quake1 teleport splash
|
||||
// coord coord coord (position)
|
||||
|
||||
#define TE_EXPLOSION2 12 // Quake1 colormaped (base palette) particle explosion with sound
|
||||
// coord coord coord (position)
|
||||
// byte (starting color)
|
||||
// byte (num colors)
|
||||
|
||||
#define TE_BSPDECAL 13 // Decal from the .BSP file
|
||||
// coord, coord, coord (x,y,z), decal position (center of texture in world)
|
||||
// short (texture index of precached decal texture name)
|
||||
// short (entity index)
|
||||
// [optional - only included if previous short is non-zero (not the world)] short (index of model of above entity)
|
||||
|
||||
#define TE_IMPLOSION 14 // tracers moving toward a point
|
||||
// coord, coord, coord (position)
|
||||
// byte (radius)
|
||||
// byte (count)
|
||||
// byte (life in 0.1's)
|
||||
|
||||
#define TE_SPRITETRAIL 15 // line of moving glow sprites with gravity, fadeout, and collisions
|
||||
// coord, coord, coord (start)
|
||||
// coord, coord, coord (end)
|
||||
// short (sprite index)
|
||||
// byte (count)
|
||||
// byte (life in 0.1's)
|
||||
// byte (scale in 0.1's)
|
||||
// byte (velocity along Vector in 10's)
|
||||
// byte (randomness of velocity in 10's)
|
||||
|
||||
#define TE_BEAM 16 // obsolete
|
||||
|
||||
#define TE_SPRITE 17 // additive sprite, plays 1 cycle
|
||||
// coord, coord, coord (position)
|
||||
// short (sprite index)
|
||||
// byte (scale in 0.1's)
|
||||
// byte (brightness)
|
||||
|
||||
#define TE_BEAMSPRITE 18 // A beam with a sprite at the end
|
||||
// coord, coord, coord (start position)
|
||||
// coord, coord, coord (end position)
|
||||
// short (beam sprite index)
|
||||
// short (end sprite index)
|
||||
|
||||
#define TE_BEAMTORUS 19 // screen aligned beam ring, expands to max radius over lifetime
|
||||
// coord coord coord (center position)
|
||||
// coord coord coord (axis and radius)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_BEAMDISK 20 // disk that expands to max radius over lifetime
|
||||
// coord coord coord (center position)
|
||||
// coord coord coord (axis and radius)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_BEAMCYLINDER 21 // cylinder that expands to max radius over lifetime
|
||||
// coord coord coord (center position)
|
||||
// coord coord coord (axis and radius)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_BEAMFOLLOW 22 // create a line of decaying beam segments until entity stops moving
|
||||
// short (entity:attachment to follow)
|
||||
// short (sprite index)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
|
||||
#define TE_GLOWSPRITE 23
|
||||
// coord, coord, coord (pos) short (model index) byte (scale / 10)
|
||||
|
||||
#define TE_BEAMRING 24 // connect a beam ring to two entities
|
||||
// short (start entity)
|
||||
// short (end entity)
|
||||
// short (sprite index)
|
||||
// byte (starting frame)
|
||||
// byte (frame rate in 0.1's)
|
||||
// byte (life in 0.1's)
|
||||
// byte (line width in 0.1's)
|
||||
// byte (noise amplitude in 0.01's)
|
||||
// byte,byte,byte (color)
|
||||
// byte (brightness)
|
||||
// byte (scroll speed in 0.1's)
|
||||
|
||||
#define TE_STREAK_SPLASH 25 // oriented shower of tracers
|
||||
// coord coord coord (start position)
|
||||
// coord coord coord (direction Vector)
|
||||
// byte (color)
|
||||
// short (count)
|
||||
// short (base speed)
|
||||
// short (ramdon velocity)
|
||||
|
||||
#define TE_BEAMHOSE 26 // obsolete
|
||||
|
||||
#define TE_DLIGHT 27 // dynamic light, effect world, minor entity effect
|
||||
// coord, coord, coord (pos)
|
||||
// byte (radius in 10's)
|
||||
// byte byte byte (color)
|
||||
// byte (brightness)
|
||||
// byte (life in 10's)
|
||||
// byte (decay rate in 10's)
|
||||
|
||||
#define TE_ELIGHT 28 // point entity light, no world effect
|
||||
// short (entity:attachment to follow)
|
||||
// coord coord coord (initial position)
|
||||
// coord (radius)
|
||||
// byte byte byte (color)
|
||||
// byte (life in 0.1's)
|
||||
// coord (decay rate)
|
||||
|
||||
#define TE_TEXTMESSAGE 29
|
||||
// short 1.2.13 x (-1 = center)
|
||||
// short 1.2.13 y (-1 = center)
|
||||
// byte Effect 0 = fade in/fade out
|
||||
// 1 is flickery credits
|
||||
// 2 is write out (training room)
|
||||
|
||||
// 4 bytes r,g,b,a color1 (text color)
|
||||
// 4 bytes r,g,b,a color2 (effect color)
|
||||
// ushort 8.8 fadein time
|
||||
// ushort 8.8 fadeout time
|
||||
// ushort 8.8 hold time
|
||||
// optional ushort 8.8 fxtime (time the highlight lags behing the leading text in effect 2)
|
||||
// string text message (512 chars max sz string)
|
||||
#define TE_LINE 30
|
||||
// coord, coord, coord startpos
|
||||
// coord, coord, coord endpos
|
||||
// short life in 0.1 s
|
||||
// 3 bytes r, g, b
|
||||
|
||||
#define TE_BOX 31
|
||||
// coord, coord, coord boxmins
|
||||
// coord, coord, coord boxmaxs
|
||||
// short life in 0.1 s
|
||||
// 3 bytes r, g, b
|
||||
|
||||
#define TE_KILLBEAM 99 // kill all beams attached to entity
|
||||
// short (entity)
|
||||
|
||||
#define TE_LARGEFUNNEL 100
|
||||
// coord coord coord (funnel position)
|
||||
// short (sprite index)
|
||||
// short (flags)
|
||||
|
||||
#define TE_BLOODSTREAM 101 // particle spray
|
||||
// coord coord coord (start position)
|
||||
// coord coord coord (spray Vector)
|
||||
// byte (color)
|
||||
// byte (speed)
|
||||
|
||||
#define TE_SHOWLINE 102 // line of particles every 5 units, dies in 30 seconds
|
||||
// coord coord coord (start position)
|
||||
// coord coord coord (end position)
|
||||
|
||||
#define TE_BLOOD 103 // particle spray
|
||||
// coord coord coord (start position)
|
||||
// coord coord coord (spray Vector)
|
||||
// byte (color)
|
||||
// byte (speed)
|
||||
|
||||
#define TE_DECAL 104 // Decal applied to a brush entity (not the world)
|
||||
// coord, coord, coord (x,y,z), decal position (center of texture in world)
|
||||
// byte (texture index of precached decal texture name)
|
||||
// short (entity index)
|
||||
|
||||
#define TE_FIZZ 105 // create alpha sprites inside of entity, float upwards
|
||||
// short (entity)
|
||||
// short (sprite index)
|
||||
// byte (density)
|
||||
|
||||
#define TE_MODEL 106 // create a moving model that bounces and makes a sound when it hits
|
||||
// coord, coord, coord (position)
|
||||
// coord, coord, coord (velocity)
|
||||
// angle (initial yaw)
|
||||
// short (model index)
|
||||
// byte (bounce sound type)
|
||||
// byte (life in 0.1's)
|
||||
|
||||
#define TE_EXPLODEMODEL 107 // spherical shower of models, picks from set
|
||||
// coord, coord, coord (origin)
|
||||
// coord (velocity)
|
||||
// short (model index)
|
||||
// short (count)
|
||||
// byte (life in 0.1's)
|
||||
|
||||
#define TE_BREAKMODEL 108 // box of models or sprites
|
||||
// coord, coord, coord (position)
|
||||
// coord, coord, coord (size)
|
||||
// coord, coord, coord (velocity)
|
||||
// byte (random velocity in 10's)
|
||||
// short (sprite or model index)
|
||||
// byte (count)
|
||||
// byte (life in 0.1 secs)
|
||||
// byte (flags)
|
||||
|
||||
#define TE_GUNSHOTDECAL 109 // decal and ricochet sound
|
||||
// coord, coord, coord (position)
|
||||
// short (entity index???)
|
||||
// byte (decal???)
|
||||
|
||||
#define TE_SPRITE_SPRAY 110 // spay of alpha sprites
|
||||
// coord, coord, coord (position)
|
||||
// coord, coord, coord (velocity)
|
||||
// short (sprite index)
|
||||
// byte (count)
|
||||
// byte (speed)
|
||||
// byte (noise)
|
||||
|
||||
#define TE_ARMOR_RICOCHET 111 // quick spark sprite, client ricochet sound.
|
||||
// coord, coord, coord (position)
|
||||
// byte (scale in 0.1's)
|
||||
|
||||
#define TE_PLAYERDECAL 112 // ???
|
||||
// byte (playerindex)
|
||||
// coord, coord, coord (position)
|
||||
// short (entity???)
|
||||
// byte (decal number???)
|
||||
// [optional] short (model index???)
|
||||
|
||||
#define TE_BUBBLES 113 // create alpha sprites inside of box, float upwards
|
||||
// coord, coord, coord (min start position)
|
||||
// coord, coord, coord (max start position)
|
||||
// coord (float height)
|
||||
// short (model index)
|
||||
// byte (count)
|
||||
// coord (speed)
|
||||
|
||||
#define TE_BUBBLETRAIL 114 // create alpha sprites along a line, float upwards
|
||||
// coord, coord, coord (min start position)
|
||||
// coord, coord, coord (max start position)
|
||||
// coord (float height)
|
||||
// short (model index)
|
||||
// byte (count)
|
||||
// coord (speed)
|
||||
|
||||
#define TE_BLOODSPRITE 115 // spray of opaque sprite1's that fall, single sprite2 for 1..2 secs (this is a high-priority tent)
|
||||
// coord, coord, coord (position)
|
||||
// short (sprite1 index)
|
||||
// short (sprite2 index)
|
||||
// byte (color)
|
||||
// byte (scale)
|
||||
|
||||
#define TE_WORLDDECAL 116 // Decal applied to the world brush
|
||||
// coord, coord, coord (x,y,z), decal position (center of texture in world)
|
||||
// byte (texture index of precached decal texture name)
|
||||
|
||||
#define TE_WORLDDECALHIGH 117 // Decal (with texture index > 256) applied to world brush
|
||||
// coord, coord, coord (x,y,z), decal position (center of texture in world)
|
||||
// byte (texture index of precached decal texture name - 256)
|
||||
|
||||
#define TE_DECALHIGH 118 // Same as TE_DECAL, but the texture index was greater than 256
|
||||
// coord, coord, coord (x,y,z), decal position (center of texture in world)
|
||||
// byte (texture index of precached decal texture name - 256)
|
||||
// short (entity index)
|
||||
|
||||
#define TE_PROJECTILE 119 // Makes a projectile (like a nail) (this is a high-priority tent)
|
||||
// coord, coord, coord (position)
|
||||
// coord, coord, coord (velocity)
|
||||
// short (modelindex)
|
||||
// byte (life)
|
||||
// byte (owner) projectile won't collide with owner (if owner == 0, projectile will hit any client).
|
||||
|
||||
#define TE_SPRAY 120 // Throws a shower of sprites or models
|
||||
// coord, coord, coord (position)
|
||||
// coord, coord, coord (direction)
|
||||
// short (modelindex)
|
||||
// byte (count)
|
||||
// byte (speed)
|
||||
// byte (noise)
|
||||
// byte (rendermode)
|
||||
|
||||
#define TE_PLAYERSPRITES 121 // sprites emit from a player's bounding box (ONLY use for players!)
|
||||
// byte (playernum)
|
||||
// short (sprite modelindex)
|
||||
// byte (count)
|
||||
// byte (variance) (0 = no variance in size) (10 = 10% variance in size)
|
||||
|
||||
#define TE_PARTICLEBURST 122 // very similar to lavasplash.
|
||||
// coord (origin)
|
||||
// short (radius)
|
||||
// byte (particle color)
|
||||
// byte (duration * 10) (will be randomized a bit)
|
||||
|
||||
#define TE_FIREFIELD 123 // makes a field of fire.
|
||||
// coord (origin)
|
||||
// short (radius) (fire is made in a square around origin. -radius, -radius to radius, radius)
|
||||
// short (modelindex)
|
||||
// byte (count)
|
||||
// byte (flags)
|
||||
// byte (duration (in seconds) * 10) (will be randomized a bit)
|
||||
//
|
||||
// to keep network traffic low, this message has associated flags that fit into a byte:
|
||||
#define TEFIRE_FLAG_ALLFLOAT 1 // all sprites will drift upwards as they animate
|
||||
#define TEFIRE_FLAG_SOMEFLOAT 2 // some of the sprites will drift upwards. (50% chance)
|
||||
#define TEFIRE_FLAG_LOOP 4 // if set, sprite plays at 15 fps, otherwise plays at whatever rate stretches the animation over the sprite's duration.
|
||||
#define TEFIRE_FLAG_ALPHA 8 // if set, sprite is rendered alpha blended at 50% else, opaque
|
||||
#define TEFIRE_FLAG_PLANAR 16 // if set, all fire sprites have same initial Z instead of randomly filling a cube.
|
||||
|
||||
#define TE_PLAYERATTACHMENT 124 // attaches a TENT to a player (this is a high-priority tent)
|
||||
// byte (entity index of player)
|
||||
// coord (vertical offset) ( attachment origin.z = player origin.z + vertical offset )
|
||||
// short (model index)
|
||||
// short (life * 10 );
|
||||
|
||||
#define TE_KILLPLAYERATTACHMENTS 125 // will expire all TENTS attached to a player.
|
||||
// byte (entity index of player)
|
||||
|
||||
#define TE_MULTIGUNSHOT 126 // much more compact shotgun message
|
||||
// This message is used to make a client approximate a 'spray' of gunfire.
|
||||
// Any weapon that fires more than one bullet per frame and fires in a bit of a spread is
|
||||
// a good candidate for MULTIGUNSHOT use. (shotguns)
|
||||
//
|
||||
// NOTE: This effect makes the client do traces for each bullet, these client traces ignore
|
||||
// entities that have studio models.Traces are 4096 long.
|
||||
//
|
||||
// coord (origin)
|
||||
// coord (origin)
|
||||
// coord (origin)
|
||||
// coord (direction)
|
||||
// coord (direction)
|
||||
// coord (direction)
|
||||
// coord (x noise * 100)
|
||||
// coord (y noise * 100)
|
||||
// byte (count)
|
||||
// byte (bullethole decal texture index)
|
||||
|
||||
#define TE_USERTRACER 127 // larger message than the standard tracer, but allows some customization.
|
||||
// coord (origin)
|
||||
// coord (origin)
|
||||
// coord (origin)
|
||||
// coord (velocity)
|
||||
// coord (velocity)
|
||||
// coord (velocity)
|
||||
// byte ( life * 10 )
|
||||
// byte ( color ) this is an index into an array of color vectors in the engine. (0 - )
|
||||
// byte ( length * 10 )
|
||||
|
||||
#define MSG_BROADCAST 0 // unreliable to all
|
||||
#define MSG_ONE 1 // reliable to one (msg_entity)
|
||||
#define MSG_ALL 2 // reliable to all
|
||||
#define MSG_INIT 3 // write to the init string
|
||||
#define MSG_PVS 4 // Ents in PVS of org
|
||||
#define MSG_PAS 5 // Ents in PAS of org
|
||||
#define MSG_PVS_R 6 // Reliable to PVS
|
||||
#define MSG_PAS_R 7 // Reliable to PAS
|
||||
#define MSG_ONE_UNRELIABLE 8 // Send to one client, but don't put in reliable stream, put in unreliable datagram ( could be dropped )
|
||||
#define MSG_SPEC 9 // Sends to all spectator proxies
|
||||
|
||||
// contents of a spot in the world
|
||||
#define CONTENTS_EMPTY -1
|
||||
#define CONTENTS_SOLID -2
|
||||
#define CONTENTS_WATER -3
|
||||
#define CONTENTS_SLIME -4
|
||||
#define CONTENTS_LAVA -5
|
||||
#define CONTENTS_SKY -6
|
||||
|
||||
#define CONTENTS_LADDER -16
|
||||
|
||||
#define CONTENT_FLYFIELD -17
|
||||
#define CONTENT_GRAVITY_FLYFIELD -18
|
||||
#define CONTENT_FOG -19
|
||||
|
||||
#define CONTENT_EMPTY -1
|
||||
#define CONTENT_SOLID -2
|
||||
#define CONTENT_WATER -3
|
||||
#define CONTENT_SLIME -4
|
||||
#define CONTENT_LAVA -5
|
||||
#define CONTENT_SKY -6
|
||||
|
||||
// channels
|
||||
#define CHAN_AUTO 0
|
||||
#define CHAN_WEAPON 1
|
||||
#define CHAN_VOICE 2
|
||||
#define CHAN_ITEM 3
|
||||
#define CHAN_BODY 4
|
||||
#define CHAN_STREAM 5 // allocate stream channel from the static or dynamic area
|
||||
#define CHAN_STATIC 6 // allocate channel from the static area
|
||||
#define CHAN_NETWORKVOICE_BASE 7 // voice data coming across the network
|
||||
#define CHAN_NETWORKVOICE_END 500 // network voice data reserves slots (CHAN_NETWORKVOICE_BASE through CHAN_NETWORKVOICE_END).
|
||||
|
||||
// attenuation values
|
||||
#define ATTN_NONE 0.0f
|
||||
#define ATTN_NORM 0.8f
|
||||
#define ATTN_IDLE 2f
|
||||
#define ATTN_STATIC 1.25f
|
||||
|
||||
// pitch values
|
||||
#define PITCH_NORM 100 // non-pitch shifted
|
||||
#define PITCH_LOW 95 // other values are possible - 0-255, where 255 is very high
|
||||
#define PITCH_HIGH 120
|
||||
|
||||
// volume values
|
||||
#define VOL_NORM 1.0
|
||||
|
||||
// plats
|
||||
#define PLAT_LOW_TRIGGER 1
|
||||
|
||||
// Trains
|
||||
#define SF_TRAIN_WAIT_RETRIGGER 1
|
||||
#define SF_TRAIN_START_ON 4 // Train is initially moving
|
||||
#define SF_TRAIN_PASSABLE 8 // Train is not solid -- used to make water trains
|
||||
|
||||
// buttons
|
||||
#define IN_ATTACK (1 << 0)
|
||||
#define IN_JUMP (1 << 1)
|
||||
#define IN_DUCK (1 << 2)
|
||||
#define IN_FORWARD (1 << 3)
|
||||
#define IN_BACK (1 << 4)
|
||||
#define IN_USE (1 << 5)
|
||||
#define IN_CANCEL (1 << 6)
|
||||
#define IN_LEFT (1 << 7)
|
||||
#define IN_RIGHT (1 << 8)
|
||||
#define IN_MOVELEFT (1 << 9)
|
||||
#define IN_MOVERIGHT (1 << 10)
|
||||
#define IN_ATTACK2 (1 << 11)
|
||||
#define IN_RUN (1 << 12)
|
||||
#define IN_RELOAD (1 << 13)
|
||||
#define IN_ALT1 (1 << 14)
|
||||
#define IN_SCORE (1 << 15)
|
||||
|
||||
// Break Model Defines
|
||||
|
||||
#define BREAK_TYPEMASK 0x4F
|
||||
#define BREAK_GLASS 0x01
|
||||
#define BREAK_METAL 0x02
|
||||
#define BREAK_FLESH 0x04
|
||||
#define BREAK_WOOD 0x08
|
||||
|
||||
#define BREAK_SMOKE 0x10
|
||||
#define BREAK_TRANS 0x20
|
||||
#define BREAK_CONCRETE 0x40
|
||||
#define BREAK_2 0x80
|
||||
|
||||
// Colliding temp entity sounds
|
||||
|
||||
#define BOUNCE_GLASS BREAK_GLASS
|
||||
#define BOUNCE_METAL BREAK_METAL
|
||||
#define BOUNCE_FLESH BREAK_FLESH
|
||||
#define BOUNCE_WOOD BREAK_WOOD
|
||||
#define BOUNCE_SHRAP 0x10
|
||||
#define BOUNCE_SHELL 0x20
|
||||
#define BOUNCE_CONCRETE BREAK_CONCRETE
|
||||
#define BOUNCE_SHOTSHELL 0x80
|
||||
|
||||
// Temp entity bounce sound types
|
||||
#define TE_BOUNCE_NULL 0
|
||||
#define TE_BOUNCE_SHELL 1
|
||||
#define TE_BOUNCE_SHOTSHELL 2
|
||||
|
||||
#define MAX_ENT_LEAFS 48
|
||||
|
||||
#define MAX_WEAPON_SLOTS 5 // hud item selection slots
|
||||
#define MAX_ITEM_TYPES 6 // hud item selection slots
|
||||
|
||||
#define MAX_ITEMS 5 // hard coded item types
|
||||
|
||||
#define HIDEHUD_WEAPONS (1 << 0)
|
||||
#define HIDEHUD_FLASHLIGHT (1 << 1)
|
||||
#define HIDEHUD_ALL (1 << 2)
|
||||
#define HIDEHUD_HEALTH (1 << 3)
|
||||
|
||||
#define MAX_AMMO_TYPES 32 // ???
|
||||
#define MAX_AMMO_SLOTS 32 // not really slots
|
||||
|
||||
#define HUD_PRINTNOTIFY 1
|
||||
#define HUD_PRINTCONSOLE 2
|
||||
#define HUD_PRINTTALK 3
|
||||
#define HUD_PRINTCENTER 4
|
||||
|
||||
#define WEAPON_SUIT 31
|
||||
|
||||
#define VERTEXSIZE 7
|
||||
#define MAXLIGHTMAPS 4
|
||||
#define NUM_AMBIENTS 4
|
||||
#define MAX_MAP_HULLS 4
|
||||
#define MAX_PHYSINFO_STRING 256
|
||||
#define MAX_PHYSENTS 600
|
||||
#define MAX_MOVEENTS 64
|
||||
#define MAX_LIGHTSTYLES 64
|
||||
#define MAX_LIGHTSTYLEVALUE 256
|
||||
#define SURF_DRAWTILED 0x20
|
||||
|
||||
|
||||
#define AMBIENT_SOUND_STATIC 0 // medium radius attenuation
|
||||
#define AMBIENT_SOUND_EVERYWHERE 1
|
||||
#define AMBIENT_SOUND_SMALLRADIUS 2
|
||||
#define AMBIENT_SOUND_MEDIUMRADIUS 4
|
||||
#define AMBIENT_SOUND_LARGERADIUS 8
|
||||
#define AMBIENT_SOUND_START_SILENT 16
|
||||
#define AMBIENT_SOUND_NOT_LOOPING 32
|
||||
|
||||
#define SPEAKER_START_SILENT 1 // wait for trigger 'on' to start announcements
|
||||
|
||||
#define SND_SPAWNING (1 << 8) // duplicated in protocol.h we're spawing, used in some cases for ambients
|
||||
#define SND_STOP (1 << 5) // duplicated in protocol.h stop sound
|
||||
#define SND_CHANGE_VOL (1 << 6) // duplicated in protocol.h change sound vol
|
||||
#define SND_CHANGE_PITCH (1 << 7) // duplicated in protocol.h change sound pitch
|
||||
|
||||
#define LFO_SQUARE 1
|
||||
#define LFO_TRIANGLE 2
|
||||
#define LFO_RANDOM 3
|
||||
|
||||
// func_rotating
|
||||
#define SF_BRUSH_ROTATE_Y_AXIS 0
|
||||
#define SF_BRUSH_ROTATE_INSTANT 1
|
||||
#define SF_BRUSH_ROTATE_BACKWARDS 2
|
||||
#define SF_BRUSH_ROTATE_Z_AXIS 4
|
||||
#define SF_BRUSH_ROTATE_X_AXIS 8
|
||||
#define SF_PENDULUM_AUTO_RETURN 16
|
||||
#define SF_PENDULUM_PASSABLE 32
|
||||
|
||||
#define SF_BRUSH_ROTATE_SMALLRADIUS 128
|
||||
#define SF_BRUSH_ROTATE_MEDIUMRADIUS 256
|
||||
#define SF_BRUSH_ROTATE_LARGERADIUS 512
|
||||
|
||||
#define PUSH_BLOCK_ONLY_X 1
|
||||
#define PUSH_BLOCK_ONLY_Y 2
|
||||
|
||||
#define VEC_HULL_MIN Vector(-16, -16, -36)
|
||||
#define VEC_HULL_MAX Vector(16, 16, 36)
|
||||
#define VEC_HUMAN_HULL_MIN Vector(-16, -16, 0)
|
||||
#define VEC_HUMAN_HULL_MAX Vector(16, 16, 72)
|
||||
#define VEC_HUMAN_HULL_DUCK Vector(16, 16, 36)
|
||||
|
||||
#define VEC_VIEW Vector(0, 0, 28)
|
||||
|
||||
#define VEC_DUCK_HULL_MIN Vector(-16, -16, -18)
|
||||
#define VEC_DUCK_HULL_MAX Vector(16, 16, 18)
|
||||
#define VEC_DUCK_VIEW Vector(0, 0, 12)
|
||||
|
||||
#define SVC_TEMPENTITY 23
|
||||
#define SVC_CENTERPRINT 26
|
||||
#define SVC_INTERMISSION 30
|
||||
#define SVC_CDTRACK 32
|
||||
#define SVC_WEAPONANIM 35
|
||||
#define SVC_ROOMTYPE 37
|
||||
#define SVC_DIRECTOR 51
|
||||
|
||||
// triggers
|
||||
#define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger
|
||||
#define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger
|
||||
#define SF_TRIGGER_PUSHABLES 4 // only pushables can fire this trigger
|
||||
|
||||
// func breakable
|
||||
#define SF_BREAK_TRIGGER_ONLY 1 // may only be broken by trigger
|
||||
#define SF_BREAK_TOUCH 2 // can be 'crashed through' by running player (plate glass)
|
||||
#define SF_BREAK_PRESSURE 4 // can be broken by a player standing on it
|
||||
#define SF_BREAK_CROWBAR 256 // instant break if hit with crowbar
|
||||
|
||||
// func_pushable (it's also func_breakable, so don't collide with those flags)
|
||||
#define SF_PUSH_BREAKABLE 128
|
||||
|
||||
#define SF_LIGHT_START_OFF 1
|
||||
|
||||
#define SPAWNFLAG_NOMESSAGE 1
|
||||
#define SPAWNFLAG_NOTOUCH 1
|
||||
#define SPAWNFLAG_DROIDONLY 4
|
||||
|
||||
#define SPAWNFLAG_USEONLY 1 // can't be touched, must be used (buttons)
|
||||
|
||||
#define TELE_PLAYER_ONLY 1
|
||||
#define TELE_SILENT 2
|
||||
|
||||
#define SF_TRIG_PUSH_ONCE 1
|
||||
|
||||
// Rendering constants
|
||||
enum {
|
||||
kRenderNormal, // src
|
||||
kRenderTransColor, // c*a+dest*(1-a)
|
||||
kRenderTransTexture, // src*a+dest*(1-a)
|
||||
kRenderGlow, // src*a+dest -- No Z buffer checks
|
||||
kRenderTransAlpha, // src*srca+dest*(1-srca)
|
||||
kRenderTransAdd // src*a+dest
|
||||
};
|
||||
|
||||
enum {
|
||||
kRenderFxNone = 0,
|
||||
kRenderFxPulseSlow,
|
||||
kRenderFxPulseFast,
|
||||
kRenderFxPulseSlowWide,
|
||||
kRenderFxPulseFastWide,
|
||||
kRenderFxFadeSlow,
|
||||
kRenderFxFadeFast,
|
||||
kRenderFxSolidSlow,
|
||||
kRenderFxSolidFast,
|
||||
kRenderFxStrobeSlow,
|
||||
kRenderFxStrobeFast,
|
||||
kRenderFxStrobeFaster,
|
||||
kRenderFxFlickerSlow,
|
||||
kRenderFxFlickerFast,
|
||||
kRenderFxNoDissipation,
|
||||
kRenderFxDistort, // Distort/scale/translate flicker
|
||||
kRenderFxHologram, // kRenderFxDistort + distance fade
|
||||
kRenderFxDeadPlayer, // kRenderAmt is the player index
|
||||
kRenderFxExplode, // Scale up really big!
|
||||
kRenderFxGlowShell, // Glowing Shell
|
||||
kRenderFxClampMinScale // Keep this sprite from getting very small (SPRITES only!)
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
ignore_monsters = 1,
|
||||
dont_ignore_monsters = 0,
|
||||
missile = 2
|
||||
} IGNORE_MONSTERS;
|
||||
|
||||
typedef enum {
|
||||
ignore_glass = 1,
|
||||
dont_ignore_glass = 0
|
||||
} IGNORE_GLASS;
|
||||
|
||||
typedef enum {
|
||||
point_hull = 0,
|
||||
human_hull = 1,
|
||||
large_hull = 2,
|
||||
head_hull = 3
|
||||
} HULL;
|
||||
|
||||
typedef enum {
|
||||
at_notice,
|
||||
at_console, // same as at_notice, but forces a ConPrintf, not a message box
|
||||
at_aiconsole, // same as at_console, but only shown if developer level is 2!
|
||||
at_warning,
|
||||
at_error,
|
||||
at_logged // Server print to console ( only in multiplayer games ).
|
||||
} ALERT_TYPE;
|
||||
|
||||
// 4-22-98 JOHN: added for use in pfnClientPrintf
|
||||
typedef enum {
|
||||
print_console,
|
||||
print_center,
|
||||
print_chat
|
||||
} PRINT_TYPE;
|
||||
|
||||
// For integrity checking of content on clients
|
||||
typedef enum {
|
||||
force_exactfile, // File on client must exactly match server's file
|
||||
force_model_samebounds, // For model files only, the geometry must fit in the same bbox
|
||||
force_model_specifybounds // For model files only, the geometry must fit in the specified bbox
|
||||
} FORCE_TYPE;
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,349 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 1999-2005, Valve Corporation. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This source code contains proprietary and confidential information of
|
||||
* Valve LLC and its suppliers. Access to this code is restricted to
|
||||
* persons who have executed a written SDK license with Valve. Any access,
|
||||
* use or distribution of this code by or to any unlicensed person is illegal.
|
||||
*
|
||||
****/
|
||||
#pragma once
|
||||
|
||||
struct cvar_t {
|
||||
char *name;
|
||||
char *string;
|
||||
int flags;
|
||||
float value;
|
||||
cvar_t *next;
|
||||
};
|
||||
|
||||
typedef struct hudtextparms_s {
|
||||
float x;
|
||||
float y;
|
||||
int effect;
|
||||
uint8_t r1, g1, b1, a1;
|
||||
uint8_t r2, g2, b2, a2;
|
||||
float fadeinTime;
|
||||
float fadeoutTime;
|
||||
float holdTime;
|
||||
float fxTime;
|
||||
int channel;
|
||||
} hudtextparms_t;
|
||||
|
||||
// Returned by TraceLine
|
||||
typedef struct {
|
||||
int fAllSolid; // if true, plane is not valid
|
||||
int fStartSolid; // if true, the initial point was in a solid area
|
||||
int fInOpen;
|
||||
int fInWater;
|
||||
float flFraction; // time completed, 1.0 = didn't hit anything
|
||||
vec3_t vecEndPos; // final position
|
||||
float flPlaneDist;
|
||||
vec3_t vecPlaneNormal; // surface normal at impact
|
||||
edict_t *pHit; // entity the surface is on
|
||||
int iHitgroup; // 0 == generic, non zero is specific body part
|
||||
} TraceResult;
|
||||
|
||||
typedef struct usercmd_s {
|
||||
short lerp_msec; // Interpolation time on client
|
||||
byte msec; // Duration in ms of command
|
||||
vec3_t viewangles; // Command view angles.
|
||||
|
||||
// intended velocities
|
||||
float forwardmove; // Forward velocity.
|
||||
float sidemove; // Sideways velocity.
|
||||
float upmove; // Upward velocity.
|
||||
byte lightlevel; // Light level at spot where we are standing.
|
||||
unsigned short buttons; // Attack buttons
|
||||
byte impulse; // Impulse command issued.
|
||||
byte weaponselect; // Current weapon id
|
||||
|
||||
// Experimental player impact stuff.
|
||||
int impact_index;
|
||||
vec3_t impact_position;
|
||||
} usercmd_t;
|
||||
|
||||
typedef uint32_t CRC32_t;
|
||||
|
||||
// Engine hands this to DLLs for functionality callbacks
|
||||
|
||||
typedef struct enginefuncs_s {
|
||||
int (*pfnPrecacheModel) (const char *s);
|
||||
int (*pfnPrecacheSound) (const char *s);
|
||||
void (*pfnSetModel) (edict_t *e, const char *m);
|
||||
int (*pfnModelIndex) (const char *m);
|
||||
int (*pfnModelFrames) (int modelIndex);
|
||||
void (*pfnSetSize) (edict_t *e, const float *rgflMin, const float *rgflMax);
|
||||
void (*pfnChangeLevel) (char *s1, char *s2);
|
||||
void (*pfnGetSpawnParms) (edict_t *ent);
|
||||
void (*pfnSaveSpawnParms) (edict_t *ent);
|
||||
float (*pfnVecToYaw) (const float *rgflVector);
|
||||
void (*pfnVecToAngles) (const float *rgflVectorIn, float *rgflVectorOut);
|
||||
void (*pfnMoveToOrigin) (edict_t *ent, const float *pflGoal, float dist, int iMoveType);
|
||||
void (*pfnChangeYaw) (edict_t *ent);
|
||||
void (*pfnChangePitch) (edict_t *ent);
|
||||
edict_t *(*pfnFindEntityByString) (edict_t *pentEdictStartSearchAfter, const char *pszField, const char *pszValue);
|
||||
int (*pfnGetEntityIllum) (edict_t *pEnt);
|
||||
edict_t *(*pfnFindEntityInSphere) (edict_t *pentEdictStartSearchAfter, const float *org, float rad);
|
||||
edict_t *(*pfnFindClientInPVS) (edict_t *ent);
|
||||
edict_t *(*pfnEntitiesInPVS) (edict_t *pplayer);
|
||||
void (*pfnMakeVectors) (const float *rgflVector);
|
||||
void (*pfnAngleVectors) (const float *rgflVector, float *forward, float *right, float *up);
|
||||
edict_t *(*pfnCreateEntity) ();
|
||||
void (*pfnRemoveEntity) (edict_t *e);
|
||||
edict_t *(*pfnCreateNamedEntity) (int className);
|
||||
void (*pfnMakeStatic) (edict_t *ent);
|
||||
int (*pfnEntIsOnFloor) (edict_t *e);
|
||||
int (*pfnDropToFloor) (edict_t *e);
|
||||
int (*pfnWalkMove) (edict_t *ent, float yaw, float dist, int mode);
|
||||
void (*pfnSetOrigin) (edict_t *e, const float *rgflOrigin);
|
||||
void (*pfnEmitSound) (edict_t *entity, int channel, const char *sample, float volume, float attenuation, int fFlags, int pitch);
|
||||
void (*pfnEmitAmbientSound) (edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch);
|
||||
void (*pfnTraceLine) (const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
|
||||
void (*pfnTraceToss) (edict_t *pent, edict_t *pentToIgnore, TraceResult *ptr);
|
||||
int (*pfnTraceMonsterHull) (edict_t *ent, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
|
||||
void (*pfnTraceHull) (const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr);
|
||||
void (*pfnTraceModel) (const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr);
|
||||
const char *(*pfnTraceTexture) (edict_t *pTextureEntity, const float *v1, const float *v2);
|
||||
void (*pfnTraceSphere) (const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr);
|
||||
void (*pfnGetAimVector) (edict_t *ent, float speed, float *rgflReturn);
|
||||
void (*pfnServerCommand) (char *str);
|
||||
void (*pfnServerExecute) ();
|
||||
void (*pfnClientCommand) (edict_t *ent, char const *szFmt, ...);
|
||||
void (*pfnParticleEffect) (const float *org, const float *dir, float color, float count);
|
||||
void (*pfnLightStyle) (int style, char *val);
|
||||
int (*pfnDecalIndex) (const char *name);
|
||||
int (*pfnPointContents) (const float *rgflVector);
|
||||
void (*pfnMessageBegin) (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
|
||||
void (*pfnMessageEnd) ();
|
||||
void (*pfnWriteByte) (int value);
|
||||
void (*pfnWriteChar) (int value);
|
||||
void (*pfnWriteShort) (int value);
|
||||
void (*pfnWriteLong) (int value);
|
||||
void (*pfnWriteAngle) (float flValue);
|
||||
void (*pfnWriteCoord) (float flValue);
|
||||
void (*pfnWriteString) (const char *sz);
|
||||
void (*pfnWriteEntity) (int value);
|
||||
void (*pfnCVarRegister) (cvar_t *pCvar);
|
||||
float (*pfnCVarGetFloat) (const char *szVarName);
|
||||
const char *(*pfnCVarGetString) (const char *szVarName);
|
||||
void (*pfnCVarSetFloat) (const char *szVarName, float flValue);
|
||||
void (*pfnCVarSetString) (const char *szVarName, const char *szValue);
|
||||
void (*pfnAlertMessage) (ALERT_TYPE atype, const char *szFmt, ...);
|
||||
void (*pfnEngineFprintf) (void *pfile, char *szFmt, ...);
|
||||
void *(*pfnPvAllocEntPrivateData) (edict_t *ent, int32_t cb);
|
||||
void *(*pfnPvEntPrivateData) (edict_t *ent);
|
||||
void (*pfnFreeEntPrivateData) (edict_t *ent);
|
||||
const char *(*pfnSzFromIndex) (int stingPtr);
|
||||
int (*pfnAllocString) (const char *szValue);
|
||||
struct entvars_s *(*pfnGetVarsOfEnt) (edict_t *ent);
|
||||
edict_t *(*pfnPEntityOfEntOffset) (int iEntOffset);
|
||||
int (*pfnEntOffsetOfPEntity) (const edict_t *ent);
|
||||
int (*pfnIndexOfEdict) (const edict_t *ent);
|
||||
edict_t *(*pfnPEntityOfEntIndex) (int entIndex);
|
||||
edict_t *(*pfnFindEntityByVars) (struct entvars_s *pvars);
|
||||
void *(*pfnGetModelPtr) (edict_t *ent);
|
||||
int (*pfnRegUserMsg) (const char *pszName, int iSize);
|
||||
void (*pfnAnimationAutomove) (const edict_t *ent, float flTime);
|
||||
void (*pfnGetBonePosition) (const edict_t *ent, int iBone, float *rgflOrigin, float *rgflAngles);
|
||||
uint32_t (*pfnFunctionFromName) (const char *pName);
|
||||
const char *(*pfnNameForFunction) (uint32_t function);
|
||||
void (*pfnClientPrintf) (edict_t *ent, PRINT_TYPE ptype, const char *szMsg); // JOHN: engine callbacks so game DLL can print messages to individual clients
|
||||
void (*pfnServerPrint) (const char *szMsg);
|
||||
const char *(*pfnCmd_Args) (); // these 3 added
|
||||
const char *(*pfnCmd_Argv) (int argc); // so game DLL can easily
|
||||
int (*pfnCmd_Argc) (); // access client 'cmd' strings
|
||||
void (*pfnGetAttachment) (const edict_t *ent, int iAttachment, float *rgflOrigin, float *rgflAngles);
|
||||
void (*pfnCRC32_Init) (CRC32_t *pulCRC);
|
||||
void (*pfnCRC32_ProcessBuffer) (CRC32_t *pulCRC, void *p, int len);
|
||||
void (*pfnCRC32_ProcessByte) (CRC32_t *pulCRC, uint8_t ch);
|
||||
CRC32_t (*pfnCRC32_Final) (CRC32_t pulCRC);
|
||||
int32_t (*pfnRandomLong) (int32_t lLow, int32_t lHigh);
|
||||
float (*pfnRandomFloat) (float flLow, float flHigh);
|
||||
void (*pfnSetView) (const edict_t *client, const edict_t *pViewent);
|
||||
float (*pfnTime) ();
|
||||
void (*pfnCrosshairAngle) (const edict_t *client, float pitch, float yaw);
|
||||
uint8_t *(*pfnLoadFileForMe) (char const *szFilename, int *pLength);
|
||||
void (*pfnFreeFile) (void *buffer);
|
||||
void (*pfnEndSection) (const char *pszSectionName); // trigger_endsection
|
||||
int (*pfnCompareFileTime) (char *filename1, char *filename2, int *compare);
|
||||
void (*pfnGetGameDir) (char *szGetGameDir);
|
||||
void (*pfnCvar_RegisterVariable) (cvar_t *variable);
|
||||
void (*pfnFadeClientVolume) (const edict_t *ent, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds);
|
||||
void (*pfnSetClientMaxspeed) (const edict_t *ent, float fNewMaxspeed);
|
||||
edict_t *(*pfnCreateFakeClient) (const char *netname); // returns nullptr if fake client can't be created
|
||||
void (*pfnRunPlayerMove) (edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, uint16_t buttons, uint8_t impulse, uint8_t msec);
|
||||
int (*pfnNumberOfEntities) ();
|
||||
char *(*pfnGetInfoKeyBuffer) (edict_t *e); // passing in nullptr gets the serverinfo
|
||||
char *(*pfnInfoKeyValue) (char *infobuffer, char const *key);
|
||||
void (*pfnSetKeyValue) (char *infobuffer, char *key, char *value);
|
||||
void (*pfnSetClientKeyValue) (int clientIndex, char *infobuffer, char const *key, char const *value);
|
||||
int (*pfnIsMapValid) (char *szFilename);
|
||||
void (*pfnStaticDecal) (const float *origin, int decalIndex, int entityIndex, int modelIndex);
|
||||
int (*pfnPrecacheGeneric) (char *s);
|
||||
int (*pfnGetPlayerUserId) (edict_t *e); // returns the server assigned userid for this player. useful for logging frags, etc. returns -1 if the edict couldn't be found in the list of clients
|
||||
void (*pfnBuildSoundMsg) (edict_t *entity, int channel, const char *sample, float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
|
||||
int (*pfnIsDedicatedServer) (); // is this a dedicated server?
|
||||
cvar_t *(*pfnCVarGetPointer) (const char *szVarName);
|
||||
unsigned int (*pfnGetPlayerWONId) (edict_t *e); // returns the server assigned WONid for this player. useful for logging frags, etc. returns -1 if the edict couldn't be found in the list of clients
|
||||
|
||||
void (*pfnInfo_RemoveKey) (char *s, const char *key);
|
||||
const char *(*pfnGetPhysicsKeyValue) (const edict_t *client, const char *key);
|
||||
void (*pfnSetPhysicsKeyValue) (const edict_t *client, const char *key, const char *value);
|
||||
const char *(*pfnGetPhysicsInfoString) (const edict_t *client);
|
||||
uint16_t (*pfnPrecacheEvent) (int type, const char *psz);
|
||||
void (*pfnPlaybackEvent) (int flags, const edict_t *pInvoker, uint16_t evIndexOfEntity, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2);
|
||||
uint8_t *(*pfnSetFatPVS) (float *org);
|
||||
uint8_t *(*pfnSetFatPAS) (float *org);
|
||||
int (*pfnCheckVisibility) (const edict_t *entity, uint8_t *pset);
|
||||
void (*pfnDeltaSetField) (struct delta_s *pFields, const char *fieldname);
|
||||
void (*pfnDeltaUnsetField) (struct delta_s *pFields, const char *fieldname);
|
||||
void (*pfnDeltaAddEncoder) (char *name, void (*conditionalencode) (struct delta_s *pFields, const uint8_t *from, const uint8_t *to));
|
||||
int (*pfnGetCurrentPlayer) ();
|
||||
int (*pfnCanSkipPlayer) (const edict_t *player);
|
||||
int (*pfnDeltaFindField) (struct delta_s *pFields, const char *fieldname);
|
||||
void (*pfnDeltaSetFieldByIndex) (struct delta_s *pFields, int fieldNumber);
|
||||
void (*pfnDeltaUnsetFieldByIndex) (struct delta_s *pFields, int fieldNumber);
|
||||
void (*pfnSetGroupMask) (int mask, int op);
|
||||
int (*pfnCreateInstancedBaseline) (int classname, struct entity_state_s *baseline);
|
||||
void (*pfnCvar_DirectSet) (struct cvar_t *var, const char *value);
|
||||
void (*pfnForceUnmodified) (FORCE_TYPE type, float *mins, float *maxs, const char *szFilename);
|
||||
void (*pfnGetPlayerStats) (const edict_t *client, int *ping, int *packet_loss);
|
||||
void (*pfnAddServerCommand) (const char *cmd_name, void (*function) ());
|
||||
|
||||
int (*pfnVoice_GetClientListening) (int iReceiver, int iSender);
|
||||
int (*pfnVoice_SetClientListening) (int iReceiver, int iSender, int bListen);
|
||||
|
||||
const char *(*pfnGetPlayerAuthId) (edict_t *e);
|
||||
|
||||
struct sequenceEntry_s *(*pfnSequenceGet) (const char *fileName, const char *entryName);
|
||||
struct sentenceEntry_s *(*pfnSequencePickSentence) (const char *groupName, int pickMethod, int *picked);
|
||||
|
||||
int (*pfnGetFileSize) (char *szFilename);
|
||||
unsigned int (*pfnGetApproxWavePlayLen) (const char *filepath);
|
||||
|
||||
int (*pfnIsCareerMatch) ();
|
||||
int (*pfnGetLocalizedStringLength) (const char *label);
|
||||
void (*pfnRegisterTutorMessageShown) (int mid);
|
||||
int (*pfnGetTimesTutorMessageShown) (int mid);
|
||||
void (*pfnProcessTutorMessageDecayBuffer) (int *buffer, int bufferLength);
|
||||
void (*pfnConstructTutorMessageDecayBuffer) (int *buffer, int bufferLength);
|
||||
void (*pfnResetTutorMessageDecayData) ();
|
||||
|
||||
void (*pfnQueryClientCVarValue) (const edict_t *player, const char *cvarName);
|
||||
void (*pfnQueryClientCVarValue2) (const edict_t *player, const char *cvarName, int requestID);
|
||||
int (*pfnCheckParm) (const char *pchCmdLineToken, char **ppnext);
|
||||
// edict_t *(*pfnPEntityOfEntIndexAllEntities) (int iEntIndex);
|
||||
} enginefuncs_t;
|
||||
|
||||
// Passed to pfnKeyValue
|
||||
typedef struct KeyValueData_s {
|
||||
char *szClassName; // in: entity classname
|
||||
char const *szKeyName; // in: name of key
|
||||
char *szValue; // in: value of key
|
||||
int32_t fHandled; // out: DLL sets to true if key-value pair was understood
|
||||
} KeyValueData;
|
||||
|
||||
typedef struct customization_s customization_t;
|
||||
|
||||
typedef struct {
|
||||
// Initialize/shutdown the game (one-time call after loading of game .dll )
|
||||
void (*pfnGameInit) ();
|
||||
int (*pfnSpawn) (edict_t *pent);
|
||||
void (*pfnThink) (edict_t *pent);
|
||||
void (*pfnUse) (edict_t *pentUsed, edict_t *pentOther);
|
||||
void (*pfnTouch) (edict_t *pentTouched, edict_t *pentOther);
|
||||
void (*pfnBlocked) (edict_t *pentBlocked, edict_t *pentOther);
|
||||
void (*pfnKeyValue) (edict_t *pentKeyvalue, KeyValueData *pkvd);
|
||||
void (*pfnSave) (edict_t *pent, struct SAVERESTOREDATA *pSaveData);
|
||||
int (*pfnRestore) (edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity);
|
||||
void (*pfnSetAbsBox) (edict_t *pent);
|
||||
|
||||
void (*pfnSaveWriteFields) (SAVERESTOREDATA *, const char *, void *, struct TYPEDESCRIPTION *, int);
|
||||
void (*pfnSaveReadFields) (SAVERESTOREDATA *, const char *, void *, TYPEDESCRIPTION *, int);
|
||||
|
||||
void (*pfnSaveGlobalState) (SAVERESTOREDATA *);
|
||||
void (*pfnRestoreGlobalState) (SAVERESTOREDATA *);
|
||||
void (*pfnResetGlobalState) ();
|
||||
|
||||
int (*pfnClientConnect) (edict_t *ent, const char *pszName, const char *pszAddress, char szRejectReason[128]);
|
||||
|
||||
void (*pfnClientDisconnect) (edict_t *ent);
|
||||
void (*pfnClientKill) (edict_t *ent);
|
||||
void (*pfnClientPutInServer) (edict_t *ent);
|
||||
void (*pfnClientCommand) (edict_t *ent);
|
||||
void (*pfnClientUserInfoChanged) (edict_t *ent, char *infobuffer);
|
||||
|
||||
void (*pfnServerActivate) (edict_t *edictList, int edictCount, int clientMax);
|
||||
void (*pfnServerDeactivate) ();
|
||||
|
||||
void (*pfnPlayerPreThink) (edict_t *ent);
|
||||
void (*pfnPlayerPostThink) (edict_t *ent);
|
||||
|
||||
void (*pfnStartFrame) ();
|
||||
void (*pfnParmsNewLevel) ();
|
||||
void (*pfnParmsChangeLevel) ();
|
||||
|
||||
// Returns string describing current .dll. E.g., TeamFotrress 2, Half-Life
|
||||
const char *(*pfnGetGameDescription) ();
|
||||
|
||||
// Notify dll about a player customization.
|
||||
void (*pfnPlayerCustomization) (edict_t *ent, struct customization_s *pCustom);
|
||||
|
||||
// Spectator funcs
|
||||
void (*pfnSpectatorConnect) (edict_t *ent);
|
||||
void (*pfnSpectatorDisconnect) (edict_t *ent);
|
||||
void (*pfnSpectatorThink) (edict_t *ent);
|
||||
|
||||
// Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint.
|
||||
void (*pfnSys_Error) (const char *error_string);
|
||||
|
||||
void (*pfnPM_Move) (struct playermove_s *ppmove, int server);
|
||||
void (*pfnPM_Init) (struct playermove_s *ppmove);
|
||||
char (*pfnPM_FindTextureType) (char *name);
|
||||
void (*pfnSetupVisibility) (struct edict_s *pViewEntity, struct edict_s *client, uint8_t **pvs, uint8_t **pas);
|
||||
void (*pfnUpdateClientData) (const struct edict_s *ent, int sendweapons, struct clientdata_s *cd);
|
||||
int (*pfnAddToFullPack) (struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, uint8_t *pSet);
|
||||
void (*pfnCreateBaseline) (int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, float *player_mins, float *player_maxs);
|
||||
void (*pfnRegisterEncoders) ();
|
||||
int (*pfnGetWeaponData) (struct edict_s *player, struct weapon_data_s *info);
|
||||
|
||||
void (*pfnCmdStart) (const edict_t *player, usercmd_t *cmd, unsigned int random_seed);
|
||||
void (*pfnCmdEnd) (const edict_t *player);
|
||||
|
||||
// Return 1 if the packet is valid. Set response_buffer_size if you want to send a response packet. Incoming, it holds the max
|
||||
// size of the response_buffer, so you must zero it out if you choose not to respond.
|
||||
int (*pfnConnectionlessPacket) (const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size);
|
||||
|
||||
// Enumerates player hulls. Returns 0 if the hull number doesn't exist, 1 otherwise
|
||||
int (*pfnGetHullBounds) (int hullnumber, float *mins, float *maxs);
|
||||
|
||||
// Create baselines for certain "unplaced" items.
|
||||
void (*pfnCreateInstancedBaselines) ();
|
||||
|
||||
// One of the pfnForceUnmodified files failed the consistency check for the specified player
|
||||
// Return 0 to allow the client to continue, 1 to force immediate disconnection ( with an optional disconnect message of up to 256 characters )
|
||||
int (*pfnInconsistentFile) (const struct edict_s *player, const char *szFilename, char *disconnect_message);
|
||||
|
||||
// The game .dll should return 1 if lag compensation should be allowed ( could also just set
|
||||
// the sv_unlag cvar.
|
||||
// Most games right now should return 0, until client-side weapon prediction code is written
|
||||
// and tested for them.
|
||||
int (*pfnAllowLagCompensation) ();
|
||||
} gamefuncs_t;
|
||||
|
||||
typedef struct {
|
||||
// Called right before the object's memory is freed.
|
||||
// Calls its destructor.
|
||||
void (*pfnOnFreeEntPrivateData) (edict_t *pEnt);
|
||||
void (*pfnGameShutdown) ();
|
||||
int (*pfnShouldCollide) (edict_t *pentTouched, edict_t *pentOther);
|
||||
|
||||
void (*pfnCvarValue) (const edict_t *pEnt, const char *value);
|
||||
void (*pfnCvarValue2) (const edict_t *pEnt, int requestID, const char *cvarName, const char *value);
|
||||
} newgamefuncs_t;
|
||||
|
|
@ -1,126 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 1999-2005, Valve Corporation. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This source code contains proprietary and confidential information of
|
||||
* Valve LLC and its suppliers. Access to this code is restricted to
|
||||
* persons who have executed a written SDK license with Valve. Any access,
|
||||
* use or distribution of this code by or to any unlicensed person is illegal.
|
||||
*
|
||||
****/
|
||||
|
||||
#ifndef EXTDLL_H
|
||||
#define EXTDLL_H
|
||||
|
||||
|
||||
typedef int func_t; //
|
||||
typedef float vec_t; // needed before including progdefs.h
|
||||
typedef vec_t vec2_t[2];
|
||||
typedef vec_t vec4_t[4];
|
||||
typedef int qboolean;
|
||||
typedef unsigned char byte;
|
||||
|
||||
#include <crlib/vector.h>
|
||||
#include <crlib/string.h>
|
||||
|
||||
#if defined (CR_ARCH_X64)
|
||||
using estring_t = int32_t;
|
||||
#else
|
||||
using estring_t = uint32_t;
|
||||
#endif
|
||||
|
||||
// idea from regamedll
|
||||
class string_t final : public cr::DenyCopying {
|
||||
private:
|
||||
estring_t offset;
|
||||
|
||||
public:
|
||||
explicit string_t () : offset (0) {}
|
||||
|
||||
string_t (int offset) : offset (offset) {}
|
||||
|
||||
~string_t () = default;
|
||||
|
||||
public:
|
||||
const char *chars (estring_t shift = 0) const;
|
||||
|
||||
public:
|
||||
operator estring_t () const {
|
||||
return offset;
|
||||
}
|
||||
|
||||
string_t &operator = (const string_t &rhs) {
|
||||
offset = rhs.offset;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
typedef cr::Vector vec3_t;
|
||||
typedef struct edict_s edict_t;
|
||||
|
||||
#include "const.h"
|
||||
#include "progdefs.h"
|
||||
#include "model.h"
|
||||
|
||||
typedef struct link_s {
|
||||
struct link_s *prev, *next;
|
||||
} link_t;
|
||||
|
||||
typedef struct {
|
||||
vec3_t normal;
|
||||
float dist;
|
||||
} plane_t;
|
||||
|
||||
struct edict_s {
|
||||
int free;
|
||||
int serialnumber;
|
||||
link_t area; // linked to a division node or leaf
|
||||
int headnode; // -1 to use normal leaf check
|
||||
int num_leafs;
|
||||
short leafnums[MAX_ENT_LEAFS];
|
||||
float freetime; // sv.time when the object was freed
|
||||
void *pvPrivateData; // Alloced and freed by engine, used by DLLs
|
||||
entvars_t v; // C exported fields from progs
|
||||
};
|
||||
|
||||
#include "eiface.h"
|
||||
|
||||
extern globalvars_t *globals;
|
||||
extern enginefuncs_t engfuncs;
|
||||
extern gamefuncs_t dllapi;
|
||||
|
||||
// Use this instead of ALLOC_STRING on constant strings
|
||||
static inline const char *STRING (estring_t offset) {
|
||||
return globals->pStringBase + offset;
|
||||
}
|
||||
|
||||
// form fwgs-hlsdk
|
||||
#if defined (CR_ARCH_X64)
|
||||
static inline int MAKE_STRING (const char *val) {
|
||||
long long ptrdiff = val - STRING (0);
|
||||
|
||||
if (ptrdiff > INT_MAX || ptrdiff < INT_MIN) {
|
||||
return engfuncs.pfnAllocString (val);
|
||||
}
|
||||
return static_cast <int> (ptrdiff);
|
||||
}
|
||||
#else
|
||||
static inline estring_t MAKE_STRING (const char *str) {
|
||||
return static_cast <estring_t> (reinterpret_cast <uint64_t> (str) - reinterpret_cast <uint64_t> (globals->pStringBase));
|
||||
}
|
||||
#endif
|
||||
|
||||
inline const char *string_t::chars (estring_t shift) const {
|
||||
auto result = STRING (offset);
|
||||
return cr::strings.isEmpty (result) ? &cr::kNullChar : (result + shift);
|
||||
}
|
||||
|
||||
enum HLBool : int32_t {
|
||||
HLFalse, HLTrue
|
||||
};
|
||||
|
||||
#endif // EXTDLL_H
|
||||
|
|
@ -1,224 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2006 Will Day <willday@hpgx.net>
|
||||
*
|
||||
* This file is part of Metamod.
|
||||
*
|
||||
* Metamod is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* Metamod is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Metamod; if not, write to the Free Software Foundation,
|
||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* In addition, as a special exception, the author gives permission to
|
||||
* link the code of this program with the Half-Life Game Engine ("HL
|
||||
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
|
||||
* L.L.C ("Valve"). You must obey the GNU General Public License in all
|
||||
* respects for all of the code used other than the HL Engine and MODs
|
||||
* from Valve. If you modify this file, you may extend this exception
|
||||
* to your version of the file, but you are not obligated to do so. If
|
||||
* you do not wish to do so, delete this exception statement from your
|
||||
* version.
|
||||
*
|
||||
*/
|
||||
|
||||
// Simplified version by Wei Mingzhi
|
||||
|
||||
#ifndef META_API_H
|
||||
#define META_API_H
|
||||
|
||||
typedef int (*GETENTITYAPI_FN) (gamefuncs_t *pFunctionTable, int interfaceVersion);
|
||||
typedef int (*GETENTITYAPI2_FN) (gamefuncs_t *pFunctionTable, int *interfaceVersion);
|
||||
typedef int (*GETNEWDLLFUNCTIONS_FN) (newgamefuncs_t *pFunctionTable, int *interfaceVersion);
|
||||
typedef int (*GET_ENGINE_FUNCTIONS_FN) (enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion);
|
||||
|
||||
#define META_INTERFACE_VERSION "5:13"
|
||||
|
||||
typedef enum { PT_NEVER = 0, PT_STARTUP, PT_CHANGELEVEL, PT_ANYTIME, PT_ANYPAUSE } PLUG_LOADTIME;
|
||||
|
||||
typedef struct {
|
||||
char const *ifvers;
|
||||
char const *name;
|
||||
char const *version;
|
||||
char const *date;
|
||||
char const *author;
|
||||
char const *url;
|
||||
char const *logtag;
|
||||
PLUG_LOADTIME loadable;
|
||||
PLUG_LOADTIME unloadable;
|
||||
} plugin_info_t;
|
||||
extern plugin_info_t Plugin_info;
|
||||
|
||||
typedef plugin_info_t *plid_t;
|
||||
|
||||
#define PLID &Plugin_info
|
||||
|
||||
typedef enum { PNL_NULL = 0, PNL_INI_DELETED, PNL_FILE_NEWER, PNL_COMMAND, PNL_CMD_FORCED, PNL_DELAYED, PNL_PLUGIN, PNL_PLG_FORCED, PNL_RELOAD } PL_UNLOAD_REASON;
|
||||
|
||||
typedef enum { MRES_UNSET = 0, MRES_IGNORED, MRES_HANDLED, MRES_OVERRIDE, MRES_SUPERCEDE } META_RES;
|
||||
|
||||
typedef struct meta_globals_s {
|
||||
META_RES mres;
|
||||
META_RES prev_mres;
|
||||
META_RES status;
|
||||
void *orig_ret;
|
||||
void *override_ret;
|
||||
} meta_globals_t;
|
||||
|
||||
extern meta_globals_t *gpMetaGlobals;
|
||||
|
||||
#define SET_META_RESULT(result) gpMetaGlobals->mres = result
|
||||
#define RETURN_META(result) \
|
||||
{ \
|
||||
gpMetaGlobals->mres = result; \
|
||||
return; \
|
||||
}
|
||||
#define RETURN_META_VALUE(result, value) \
|
||||
{ \
|
||||
gpMetaGlobals->mres = result; \
|
||||
return (value); \
|
||||
}
|
||||
#define META_RESULT_STATUS gpMetaGlobals->status
|
||||
#define META_RESULT_PREVIOUS gpMetaGlobals->prev_mres
|
||||
#define META_RESULT_ORIG_RET(type) *(type *)gpMetaGlobals->orig_ret
|
||||
#define META_RESULT_OVERRIDE_RET(type) *(type *)gpMetaGlobals->override_ret
|
||||
|
||||
typedef struct {
|
||||
GETENTITYAPI_FN pfnGetEntityAPI;
|
||||
GETENTITYAPI_FN pfnGetEntityAPI_Post;
|
||||
GETENTITYAPI2_FN pfnGetEntityAPI2;
|
||||
GETENTITYAPI2_FN pfnGetEntityAPI2_Post;
|
||||
GETNEWDLLFUNCTIONS_FN pfnGetNewDLLFunctions;
|
||||
GETNEWDLLFUNCTIONS_FN pfnGetNewDLLFunctions_Post;
|
||||
GET_ENGINE_FUNCTIONS_FN pfnGetEngineFunctions;
|
||||
GET_ENGINE_FUNCTIONS_FN pfnGetEngineFunctions_Post;
|
||||
} metamod_funcs_t;
|
||||
|
||||
#include "util.h"
|
||||
|
||||
// max buffer size for printed messages
|
||||
#define MAX_LOGMSG_LEN 1024
|
||||
|
||||
// for getgameinfo:
|
||||
typedef enum { GINFO_NAME = 0, GINFO_DESC, GINFO_GAMEDIR, GINFO_DLL_FULLPATH, GINFO_DLL_FILENAME, GINFO_REALDLL_FULLPATH } ginfo_t;
|
||||
|
||||
// Meta Utility Function table type.
|
||||
typedef struct meta_util_funcs_s {
|
||||
void (*pfnLogConsole) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnLogMessage) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnLogError) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnLogDeveloper) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnCenterSay) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnCenterSayParms) (plid_t plid, hudtextparms_t tparms, const char *szFormat, ...);
|
||||
void (*pfnCenterSayVarargs) (plid_t plid, hudtextparms_t tparms, const char *szFormat, va_list ap);
|
||||
int (*pfnCallGameEntity) (plid_t plid, const char *entStr, entvars_t *pev);
|
||||
int (*pfnGetUserMsgID) (plid_t plid, const char *msgname, int *size);
|
||||
const char *(*pfnGetUserMsgName) (plid_t plid, int msgid, int *size);
|
||||
const char *(*pfnGetPluginPath) (plid_t plid);
|
||||
const char *(*pfnGetGameInfo) (plid_t plid, ginfo_t tag);
|
||||
int (*pfnLoadPlugin) (plid_t plid, const char *cmdline, PLUG_LOADTIME now, void **plugin_handle);
|
||||
int (*pfnUnloadPlugin) (plid_t plid, const char *cmdline, PLUG_LOADTIME now, PL_UNLOAD_REASON reason);
|
||||
int (*pfnUnloadPluginByHandle) (plid_t plid, void *plugin_handle, PLUG_LOADTIME now, PL_UNLOAD_REASON reason);
|
||||
const char *(*pfnIsQueryingClienCVar_t) (plid_t plid, const edict_t *player);
|
||||
int (*pfnMakeRequestID) (plid_t plid);
|
||||
void (*pfnGetHookTables) (plid_t plid, enginefuncs_t **peng, gamefuncs_t **pdll, newgamefuncs_t **pnewdll);
|
||||
} mutil_funcs_t;
|
||||
|
||||
typedef struct {
|
||||
gamefuncs_t *dllapi_table;
|
||||
newgamefuncs_t *newapi_table;
|
||||
} gamedll_funcs_t;
|
||||
|
||||
extern gamedll_funcs_t *gpGamedllFuncs;
|
||||
extern mutil_funcs_t *gpMetaUtilFuncs;
|
||||
extern metamod_funcs_t gMetaFunctionTable;
|
||||
|
||||
#define MDLL_FUNC gpGamedllFuncs->dllapi_table
|
||||
|
||||
#define MDLL_GameDLLInit MDLL_FUNC->pfnGameInit
|
||||
#define MDLL_Spawn MDLL_FUNC->pfnSpawn
|
||||
#define MDLL_Think MDLL_FUNC->pfnThink
|
||||
#define MDLL_Use MDLL_FUNC->pfnUse
|
||||
#define MDLL_Touch MDLL_FUNC->pfnTouch
|
||||
#define MDLL_Blocked MDLL_FUNC->pfnBlocked
|
||||
#define MDLL_KeyValue MDLL_FUNC->pfnKeyValue
|
||||
#define MDLL_Save MDLL_FUNC->pfnSave
|
||||
#define MDLL_Restore MDLL_FUNC->pfnRestore
|
||||
#define MDLL_ObjectCollsionBox MDLL_FUNC->pfnAbsBox
|
||||
#define MDLL_SaveWriteFields MDLL_FUNC->pfnSaveWriteFields
|
||||
#define MDLL_SaveReadFields MDLL_FUNC->pfnSaveReadFields
|
||||
#define MDLL_SaveGlobalState MDLL_FUNC->pfnSaveGlobalState
|
||||
#define MDLL_RestoreGlobalState MDLL_FUNC->pfnRestoreGlobalState
|
||||
#define MDLL_ResetGlobalState MDLL_FUNC->pfnResetGlobalState
|
||||
#define MDLL_ClientConnect MDLL_FUNC->pfnClientConnect
|
||||
#define MDLL_ClientDisconnect MDLL_FUNC->pfnClientDisconnect
|
||||
#define MDLL_ClientKill MDLL_FUNC->pfnClientKill
|
||||
#define MDLL_ClientPutInServer MDLL_FUNC->pfnClientPutInServer
|
||||
#define MDLL_ClientCommand MDLL_FUNC->pfnClientCommand
|
||||
#define MDLL_ClientUserInfoChanged MDLL_FUNC->pfnClientUserInfoChanged
|
||||
#define MDLL_ServerActivate MDLL_FUNC->pfnServerActivate
|
||||
#define MDLL_ServerDeactivate MDLL_FUNC->pfnServerDeactivate
|
||||
#define MDLL_PlayerPreThink MDLL_FUNC->pfnPlayerPreThink
|
||||
#define MDLL_PlayerPostThink MDLL_FUNC->pfnPlayerPostThink
|
||||
#define MDLL_StartFrame MDLL_FUNC->pfnStartFrame
|
||||
#define MDLL_ParmsNewLevel MDLL_FUNC->pfnParmsNewLevel
|
||||
#define MDLL_ParmsChangeLevel MDLL_FUNC->pfnParmsChangeLevel
|
||||
#define MDLL_GetGameDescription MDLL_FUNC->pfnGetGameDescription
|
||||
#define MDLL_PlayerCustomization MDLL_FUNC->pfnPlayerCustomization
|
||||
#define MDLL_SpectatorConnect MDLL_FUNC->pfnSpectatorConnect
|
||||
#define MDLL_SpectatorDisconnect MDLL_FUNC->pfnSpectatorDisconnect
|
||||
#define MDLL_SpectatorThink MDLL_FUNC->pfnSpectatorThink
|
||||
#define MDLL_Sys_Error MDLL_FUNC->pfnSys_Error
|
||||
#define MDLL_PM_Move MDLL_FUNC->pfnPM_Move
|
||||
#define MDLL_PM_Init MDLL_FUNC->pfnPM_Init
|
||||
#define MDLL_PM_FindTextureType MDLL_FUNC->pfnPM_FindTextureType
|
||||
#define MDLL_SetupVisibility MDLL_FUNC->pfnSetupVisibility
|
||||
#define MDLL_UpdateClientData MDLL_FUNC->pfnUpdateClientData
|
||||
#define MDLL_AddToFullPack MDLL_FUNC->pfnAddToFullPack
|
||||
#define MDLL_CreateBaseline MDLL_FUNC->pfnCreateBaseline
|
||||
#define MDLL_RegisterEncoders MDLL_FUNC->pfnRegisterEncoders
|
||||
#define MDLL_GetWeaponData MDLL_FUNC->pfnGetWeaponData
|
||||
#define MDLL_CmdStart MDLL_FUNC->pfnCmdStart
|
||||
#define MDLL_CmdEnd MDLL_FUNC->pfnCmdEnd
|
||||
#define MDLL_ConnectionlessPacket MDLL_FUNC->pfnConnectionlessPacket
|
||||
#define MDLL_GetHullBounds MDLL_FUNC->pfnGetHullBounds
|
||||
#define MDLL_CreateInstancedBaselines MDLL_FUNC->pfnCreateInstancedBaselines
|
||||
#define MDLL_InconsistentFile MDLL_FUNC->pfnInconsistentFile
|
||||
#define MDLL_AllowLagCompensation MDLL_FUNC->pfnAllowLagCompensation
|
||||
|
||||
#define MNEW_FUNC gpGamedllFuncs->newapi_table
|
||||
|
||||
#define MNEW_OnFreeEntPrivateData MNEW_FUNC->pfnOnFreeEntPrivateData
|
||||
#define MNEW_GameShutdown MNEW_FUNC->pfnGameShutdown
|
||||
#define MNEW_ShouldCollide MNEW_FUNC->pfnShouldCollide
|
||||
#define MNEW_CvarValue MNEW_FUNC->pfnCvarValue
|
||||
#define MNEW_CvarValue2 MNEW_FUNC->pfnCvarValue2
|
||||
|
||||
// convenience macros for metautil functions
|
||||
#define LOG_CONSOLE (*gpMetaUtilFuncs->pfnLogConsole)
|
||||
#define LOG_MESSAGE (*gpMetaUtilFuncs->pfnLogMessage)
|
||||
#define LOG_MMERROR (*gpMetaUtilFuncs->pfnLogError)
|
||||
#define LOG_DEVELOPER (*gpMetaUtilFuncs->pfnLogDeveloper)
|
||||
#define CENTER_SAY (*gpMetaUtilFuncs->pfnCenterSay)
|
||||
#define CENTER_SAY_PARMS (*gpMetaUtilFuncs->pfnCenterSayParms)
|
||||
#define CENTER_SAY_VARARGS (*gpMetaUtilFuncs->pfnCenterSayVarargs)
|
||||
#define CALL_GAME_ENTITY (*gpMetaUtilFuncs->pfnCallGameEntity)
|
||||
#define GET_USER_MSG_ID (*gpMetaUtilFuncs->pfnGetUserMsgID)
|
||||
#define GET_USER_MSG_NAME (*gpMetaUtilFuncs->pfnGetUserMsgName)
|
||||
#define GET_PLUGIN_PATH (*gpMetaUtilFuncs->pfnGetPluginPath)
|
||||
#define GET_GAME_INFO (*gpMetaUtilFuncs->pfnGetGameInfo)
|
||||
#define LOAD_PLUGIN (*gpMetaUtilFuncs->pfnLoadPlugin)
|
||||
#define UNLOAD_PLUGIN (*gpMetaUtilFuncs->pfnUnloadPlugin)
|
||||
#define UNLOAD_PLUGIN_BY_HANDLE (*gpMetaUtilFuncs->pfnUnloadPluginByHandle)
|
||||
#define IS_QUERYING_CLIENT_CVAR (*gpMetaUtilFuncs->pfnIsQueryingClienCVar_t)
|
||||
#define MAKE_REQUESTID (*gpMetaUtilFuncs->pfnMakeRequestID)
|
||||
#define GET_HOOK_TABLES (*gpMetaUtilFuncs->pfnGetHookTables)
|
||||
|
||||
#endif
|
||||
|
|
@ -1,229 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2006 Will Day <willday@hpgx.net>
|
||||
*
|
||||
* This file is part of Metamod.
|
||||
*
|
||||
* Metamod is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* Metamod is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Metamod; if not, write to the Free Software Foundation,
|
||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* In addition, as a special exception, the author gives permission to
|
||||
* link the code of this program with the Half-Life Game Engine ("HL
|
||||
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
|
||||
* L.L.C ("Valve"). You must obey the GNU General Public License in all
|
||||
* respects for all of the code used other than the HL Engine and MODs
|
||||
* from Valve. If you modify this file, you may extend this exception
|
||||
* to your version of the file, but you are not obligated to do so. If
|
||||
* you do not wish to do so, delete this exception statement from your
|
||||
* version.
|
||||
*
|
||||
*/
|
||||
|
||||
// Simplified version by Wei Mingzhi
|
||||
|
||||
#ifndef METAMOD_H
|
||||
#define METAMOD_H
|
||||
|
||||
typedef enum {
|
||||
PNL_NULL = 0,
|
||||
PNL_INI_DELETED,
|
||||
PNL_FILE_NEWER,
|
||||
PNL_COMMAND,
|
||||
PNL_CMD_FORCED,
|
||||
PNL_DELAYED,
|
||||
PNL_PLUGIN,
|
||||
PNL_PLG_FORCED,
|
||||
PNL_RELOAD
|
||||
} PL_UNLOAD_REASON;
|
||||
|
||||
typedef enum {
|
||||
MRES_UNSET = 0,
|
||||
MRES_IGNORED,
|
||||
MRES_HANDLED,
|
||||
MRES_OVERRIDE,
|
||||
MRES_SUPERCEDE
|
||||
} META_RES;
|
||||
|
||||
typedef enum {
|
||||
PT_NEVER = 0,
|
||||
PT_STARTUP,
|
||||
PT_CHANGELEVEL,
|
||||
PT_ANYTIME,
|
||||
PT_ANYPAUSE
|
||||
} PLUG_LOADTIME;
|
||||
|
||||
// for getgameinfo:
|
||||
typedef enum {
|
||||
GINFO_NAME = 0,
|
||||
GINFO_DESC,
|
||||
GINFO_GAMEDIR,
|
||||
GINFO_DLL_FULLPATH,
|
||||
GINFO_DLL_FILENAME,
|
||||
GINFO_REALDLL_FULLPATH
|
||||
} ginfo_t;
|
||||
|
||||
|
||||
typedef int (*GETENTITYAPI_FN) (gamefuncs_t *pFunctionTable, int interfaceVersion);
|
||||
typedef int (*GETENTITYAPI2_FN) (gamefuncs_t *pFunctionTable, int *interfaceVersion);
|
||||
typedef int (*GETNEWDLLFUNCTIONS_FN) (newgamefuncs_t *pFunctionTable, int *interfaceVersion);
|
||||
typedef int (*GET_ENGINE_FUNCTIONS_FN) (enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion);
|
||||
|
||||
#define META_INTERFACE_VERSION "5:13"
|
||||
|
||||
typedef struct {
|
||||
char const *ifvers;
|
||||
char const *name;
|
||||
char const *version;
|
||||
char const *date;
|
||||
char const *author;
|
||||
char const *url;
|
||||
char const *logtag;
|
||||
PLUG_LOADTIME loadable;
|
||||
PLUG_LOADTIME unloadable;
|
||||
} plugin_info_t;
|
||||
|
||||
extern plugin_info_t Plugin_info;
|
||||
typedef plugin_info_t *plid_t;
|
||||
|
||||
#define PLID &Plugin_info
|
||||
|
||||
typedef struct meta_globals_s {
|
||||
META_RES mres;
|
||||
META_RES prev_mres;
|
||||
META_RES status;
|
||||
void *orig_ret;
|
||||
void *override_ret;
|
||||
} meta_globals_t;
|
||||
|
||||
extern meta_globals_t *gpMetaGlobals;
|
||||
|
||||
#define RETURN_META(result) \
|
||||
{ \
|
||||
gpMetaGlobals->mres = result; \
|
||||
return; \
|
||||
}
|
||||
|
||||
#define RETURN_META_VALUE(result, value) \
|
||||
{ \
|
||||
gpMetaGlobals->mres = result; \
|
||||
return (value); \
|
||||
}
|
||||
|
||||
#define META_RESULT_STATUS gpMetaGlobals->status
|
||||
#define META_RESULT_PREVIOUS gpMetaGlobals->prev_mres
|
||||
#define META_RESULT_ORIG_RET(type) *(type *)gpMetaGlobals->orig_ret
|
||||
#define META_RESULT_OVERRIDE_RET(type) *(type *)gpMetaGlobals->override_ret
|
||||
|
||||
typedef struct {
|
||||
GETENTITYAPI_FN pfnGetEntityAPI;
|
||||
GETENTITYAPI_FN pfnGetEntityAPI_Post;
|
||||
GETENTITYAPI2_FN pfnGetEntityAPI2;
|
||||
GETENTITYAPI2_FN pfnGetEntityAPI2_Post;
|
||||
GETNEWDLLFUNCTIONS_FN pfnGetNewDLLFunctions;
|
||||
GETNEWDLLFUNCTIONS_FN pfnGetNewDLLFunctions_Post;
|
||||
GET_ENGINE_FUNCTIONS_FN pfnGetEngineFunctions;
|
||||
GET_ENGINE_FUNCTIONS_FN pfnGetEngineFunctions_Post;
|
||||
} metamod_funcs_t;
|
||||
|
||||
// max buffer size for printed messages
|
||||
#define MAX_LOGMSG_LEN 1024
|
||||
|
||||
|
||||
// Meta Utility Function table type.
|
||||
typedef struct meta_util_funcs_s {
|
||||
void (*pfnLogConsole) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnLogMessage) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnLogError) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnLogDeveloper) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnCenterSay) (plid_t plid, const char *szFormat, ...);
|
||||
void (*pfnCenterSayParms) (plid_t plid, hudtextparms_t tparms, const char *szFormat, ...);
|
||||
void (*pfnCenterSayVarargs) (plid_t plid, hudtextparms_t tparms, const char *szFormat, va_list ap);
|
||||
int (*pfnCallGameEntity) (plid_t plid, const char *entStr, entvars_t *pev);
|
||||
int (*pfnGetUserMsgID) (plid_t plid, const char *msgname, int *size);
|
||||
const char *(*pfnGetUserMsgName) (plid_t plid, int msgid, int *size);
|
||||
const char *(*pfnGetPluginPath) (plid_t plid);
|
||||
const char *(*pfnGetGameInfo) (plid_t plid, ginfo_t tag);
|
||||
int (*pfnLoadPlugin) (plid_t plid, const char *cmdline, PLUG_LOADTIME now, void **plugin_handle);
|
||||
int (*pfnUnloadPlugin) (plid_t plid, const char *cmdline, PLUG_LOADTIME now, PL_UNLOAD_REASON reason);
|
||||
int (*pfnUnloadPluginByHandle) (plid_t plid, void *plugin_handle, PLUG_LOADTIME now, PL_UNLOAD_REASON reason);
|
||||
const char *(*pfnIsQueryingClienCVar_t) (plid_t plid, const edict_t *player);
|
||||
int (*pfnMakeRequestID) (plid_t plid);
|
||||
void (*pfnGetHookTables) (plid_t plid, enginefuncs_t **peng, gamefuncs_t **pdll, newgamefuncs_t **pnewdll);
|
||||
} mutil_funcs_t;
|
||||
|
||||
typedef struct {
|
||||
gamefuncs_t *dllapi_table;
|
||||
newgamefuncs_t *newapi_table;
|
||||
} gamedll_funcs_t;
|
||||
|
||||
extern gamedll_funcs_t *gpGamedllFuncs;
|
||||
extern mutil_funcs_t *gpMetaUtilFuncs;
|
||||
extern metamod_funcs_t gMetaFunctionTable;
|
||||
|
||||
#define MDLL_FUNC gpGamedllFuncs->dllapi_table
|
||||
|
||||
#define MDLL_GameDLLInit MDLL_FUNC->pfnGameInit
|
||||
#define MDLL_Spawn MDLL_FUNC->pfnSpawn
|
||||
#define MDLL_Think MDLL_FUNC->pfnThink
|
||||
#define MDLL_Use MDLL_FUNC->pfnUse
|
||||
#define MDLL_Touch MDLL_FUNC->pfnTouch
|
||||
#define MDLL_Blocked MDLL_FUNC->pfnBlocked
|
||||
#define MDLL_KeyValue MDLL_FUNC->pfnKeyValue
|
||||
#define MDLL_Save MDLL_FUNC->pfnSave
|
||||
#define MDLL_Restore MDLL_FUNC->pfnRestore
|
||||
#define MDLL_ObjectCollsionBox MDLL_FUNC->pfnAbsBox
|
||||
#define MDLL_SaveWriteFields MDLL_FUNC->pfnSaveWriteFields
|
||||
#define MDLL_SaveReadFields MDLL_FUNC->pfnSaveReadFields
|
||||
#define MDLL_SaveGlobalState MDLL_FUNC->pfnSaveGlobalState
|
||||
#define MDLL_RestoreGlobalState MDLL_FUNC->pfnRestoreGlobalState
|
||||
#define MDLL_ResetGlobalState MDLL_FUNC->pfnResetGlobalState
|
||||
#define MDLL_ClientConnect MDLL_FUNC->pfnClientConnect
|
||||
#define MDLL_ClientDisconnect MDLL_FUNC->pfnClientDisconnect
|
||||
#define MDLL_ClientKill MDLL_FUNC->pfnClientKill
|
||||
#define MDLL_ClientPutInServer MDLL_FUNC->pfnClientPutInServer
|
||||
#define MDLL_ClientCommand MDLL_FUNC->pfnClientCommand
|
||||
#define MDLL_ClientUserInfoChanged MDLL_FUNC->pfnClientUserInfoChanged
|
||||
#define MDLL_ServerActivate MDLL_FUNC->pfnServerActivate
|
||||
#define MDLL_ServerDeactivate MDLL_FUNC->pfnServerDeactivate
|
||||
#define MDLL_PlayerPreThink MDLL_FUNC->pfnPlayerPreThink
|
||||
#define MDLL_PlayerPostThink MDLL_FUNC->pfnPlayerPostThink
|
||||
#define MDLL_StartFrame MDLL_FUNC->pfnStartFrame
|
||||
#define MDLL_ParmsNewLevel MDLL_FUNC->pfnParmsNewLevel
|
||||
#define MDLL_ParmsChangeLevel MDLL_FUNC->pfnParmsChangeLevel
|
||||
#define MDLL_GetGameDescription MDLL_FUNC->pfnGetGameDescription
|
||||
#define MDLL_PlayerCustomization MDLL_FUNC->pfnPlayerCustomization
|
||||
#define MDLL_SpectatorConnect MDLL_FUNC->pfnSpectatorConnect
|
||||
#define MDLL_SpectatorDisconnect MDLL_FUNC->pfnSpectatorDisconnect
|
||||
#define MDLL_SpectatorThink MDLL_FUNC->pfnSpectatorThink
|
||||
#define MDLL_Sys_Error MDLL_FUNC->pfnSys_Error
|
||||
#define MDLL_PM_Move MDLL_FUNC->pfnPM_Move
|
||||
#define MDLL_PM_Init MDLL_FUNC->pfnPM_Init
|
||||
#define MDLL_PM_FindTextureType MDLL_FUNC->pfnPM_FindTextureType
|
||||
#define MDLL_SetupVisibility MDLL_FUNC->pfnSetupVisibility
|
||||
#define MDLL_UpdateClientData MDLL_FUNC->pfnUpdateClientData
|
||||
#define MDLL_AddToFullPack MDLL_FUNC->pfnAddToFullPack
|
||||
#define MDLL_CreateBaseline MDLL_FUNC->pfnCreateBaseline
|
||||
#define MDLL_RegisterEncoders MDLL_FUNC->pfnRegisterEncoders
|
||||
#define MDLL_GetWeaponData MDLL_FUNC->pfnGetWeaponData
|
||||
#define MDLL_CmdStart MDLL_FUNC->pfnCmdStart
|
||||
#define MDLL_CmdEnd MDLL_FUNC->pfnCmdEnd
|
||||
#define MDLL_ConnectionlessPacket MDLL_FUNC->pfnConnectionlessPacket
|
||||
#define MDLL_GetHullBounds MDLL_FUNC->pfnGetHullBounds
|
||||
#define MDLL_CreateInstancedBaselines MDLL_FUNC->pfnCreateInstancedBaselines
|
||||
#define MDLL_InconsistentFile MDLL_FUNC->pfnInconsistentFile
|
||||
#define MDLL_AllowLagCompensation MDLL_FUNC->pfnAllowLagCompensation
|
||||
|
||||
#define CALL_GAME_ENTITY (*gpMetaUtilFuncs->pfnCallGameEntity)
|
||||
#define GET_USER_MSG_ID (*gpMetaUtilFuncs->pfnGetUserMsgID)
|
||||
|
||||
#endif
|
||||
|
|
@ -1,229 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 1999-2005, Valve Corporation. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This source code contains proprietary and confidential information of
|
||||
* Valve LLC and its suppliers. Access to this code is restricted to
|
||||
* persons who have executed a written SDK license with Valve. Any access,
|
||||
* use or distribution of this code by or to any unlicensed person is illegal.
|
||||
*
|
||||
****/
|
||||
|
||||
// stripped down version of com_model.h & pm_info.h
|
||||
|
||||
#ifndef MODEL_H
|
||||
#define MODEL_H
|
||||
|
||||
typedef struct mplane_s {
|
||||
vec3_t normal;
|
||||
float dist;
|
||||
byte type; // for fast side tests
|
||||
byte signbits; // signx + (signy<<1) + (signz<<1)
|
||||
byte pad[2];
|
||||
} mplane_t;
|
||||
|
||||
typedef struct {
|
||||
vec3_t position;
|
||||
} mvertex_t;
|
||||
|
||||
typedef struct {
|
||||
float vecs[2][4]; // [s/t] unit vectors in world space [i][3] is the s/t offset relative to the origin s or t = dot( 3Dpoint, vecs[i] ) + vecs[i][3]
|
||||
float mipadjust; // mipmap limits for very small surfaces
|
||||
struct texture_t *texture;
|
||||
int flags; // sky or slime, no lightmap or 256 subdivision
|
||||
} mtexinfo_t;
|
||||
|
||||
typedef struct mnode_hw_s {
|
||||
int contents; // 0, to differentiate from leafs
|
||||
int visframe; // node needs to be traversed if current
|
||||
float minmaxs[6]; // for bounding box culling
|
||||
struct mnode_s *parent;
|
||||
mplane_t *plane;
|
||||
struct mnode_s *children[2];
|
||||
unsigned short firstsurface;
|
||||
unsigned short numsurfaces;
|
||||
} mnode_hw_t;
|
||||
|
||||
typedef struct mnode_s {
|
||||
int contents; // 0, to differentiate from leafs
|
||||
int visframe; // node needs to be traversed if current
|
||||
short minmaxs[6]; // for bounding box culling
|
||||
struct mnode_s *parent;
|
||||
mplane_t *plane;
|
||||
struct mnode_s *children[2];
|
||||
unsigned short firstsurface;
|
||||
unsigned short numsurfaces;
|
||||
} mnode_t;
|
||||
|
||||
typedef struct {
|
||||
byte r, g, b;
|
||||
} color24;
|
||||
|
||||
typedef struct msurface_hw_s {
|
||||
int visframe; // should be drawn when node is crossed
|
||||
mplane_t *plane; // pointer to shared plane
|
||||
int flags; // see SURF_ #defines
|
||||
int firstedge; // look up in model->surfedges[], negative numbers
|
||||
int numedges; // are backwards edges
|
||||
short texturemins[2];
|
||||
short extents[2];
|
||||
int light_s, light_t; // gl lightmap coordinates
|
||||
struct glpoly_t *polys; // multiple if warped
|
||||
struct msurface_s *texturechain;
|
||||
mtexinfo_t *texinfo;
|
||||
int dlightframe; // last frame the surface was checked by an animated light
|
||||
int dlightbits; // dynamically generated. Indicates if the surface illumination is modified by an animated light.
|
||||
int lightmaptexturenum;
|
||||
byte styles[MAXLIGHTMAPS];
|
||||
int cached_light[MAXLIGHTMAPS]; // values currently used in lightmap
|
||||
qboolean cached_dlight; // true if dynamic light in cache
|
||||
color24 *samples; // note: this is the actual lightmap data for this surface
|
||||
struct decal_t *pdecals;
|
||||
} msurface_hw_t;
|
||||
|
||||
typedef struct msurface_s {
|
||||
int visframe; // should be drawn when node is crossed
|
||||
int dlightframe; // last frame the surface was checked by an animated light
|
||||
int dlightbits; // dynamically generated. Indicates if the surface illumination is modified by an animated light.
|
||||
mplane_t *plane; // pointer to shared plane
|
||||
int flags; // see SURF_ #defines
|
||||
int firstedge; // look up in model->surfedges[], negative numbers
|
||||
int numedges; // are backwards edges
|
||||
struct surfcache_s *cachespots[4]; // surface generation data
|
||||
short texturemins[2]; // smallest s/t position on the surface.
|
||||
short extents[2]; // ?? s/t texture size, 1..256 for all non-sky surfaces
|
||||
mtexinfo_t *texinfo;
|
||||
byte styles[MAXLIGHTMAPS]; // index into d_lightstylevalue[] for animated lights no one surface can be effected by more than 4 animated lights.
|
||||
color24 *samples;
|
||||
struct decal_t *pdecals;
|
||||
} msurface_t;
|
||||
|
||||
typedef struct cache_user_s {
|
||||
void *data; // extradata
|
||||
} cache_user_t;
|
||||
|
||||
typedef struct hull_s {
|
||||
struct dclipnode_t *clipnodes;
|
||||
mplane_t *planes;
|
||||
int firstclipnode;
|
||||
int lastclipnode;
|
||||
vec3_t clip_mins;
|
||||
vec3_t clip_maxs;
|
||||
} hull_t;
|
||||
|
||||
typedef struct model_s {
|
||||
char name[64]; // model name
|
||||
qboolean needload; // bmodels and sprites don't cache normally
|
||||
int type; // model type
|
||||
int numframes; // sprite's framecount
|
||||
byte *mempool; // private mempool (was synctype)
|
||||
int flags; // hl compatibility
|
||||
vec3_t mins, maxs; // bounding box at angles '0 0 0'
|
||||
float radius;
|
||||
int firstmodelsurface;
|
||||
int nummodelsurfaces;
|
||||
int numsubmodels;
|
||||
struct dmodel_t *submodels; // or studio animations
|
||||
int numplanes;
|
||||
mplane_t *planes;
|
||||
int numleafs; // number of visible leafs, not counting 0
|
||||
struct mleaf_t *leafs;
|
||||
int numvertexes;
|
||||
mvertex_t *vertexes;
|
||||
int numedges;
|
||||
struct medge_t *edges;
|
||||
int numnodes;
|
||||
mnode_t *nodes;
|
||||
int numtexinfo;
|
||||
mtexinfo_t *texinfo;
|
||||
int numsurfaces;
|
||||
msurface_t *surfaces;
|
||||
int numsurfedges;
|
||||
int *surfedges;
|
||||
int numclipnodes;
|
||||
struct dclipnode_t *clipnodes;
|
||||
int nummarksurfaces;
|
||||
msurface_t **marksurfaces;
|
||||
hull_t hulls[MAX_MAP_HULLS];
|
||||
int numtextures;
|
||||
texture_t **textures;
|
||||
byte *visdata;
|
||||
color24 *lightdata;
|
||||
char *entities;
|
||||
cache_user_t cache; // only access through Mod_Extradata
|
||||
} model_t;
|
||||
|
||||
struct lightstyle_t {
|
||||
int length;
|
||||
char map[MAX_LIGHTSTYLES];
|
||||
};
|
||||
|
||||
typedef struct physent_s {
|
||||
char name[32]; // name of model, or "player" or "world".
|
||||
int player;
|
||||
vec3_t origin; // model's origin in world coordinates.
|
||||
struct model_s *model; // only for bsp models
|
||||
} physent_t;
|
||||
|
||||
typedef struct playermove_s {
|
||||
int player_index; // So we don't try to run the PM_CheckStuck nudging too quickly.
|
||||
qboolean server; // For debugging, are we running physics code on server side?
|
||||
qboolean multiplayer; // 1 == multiplayer server
|
||||
float time; // realtime on host, for reckoning duck timing
|
||||
float frametime; // Duration of this frame
|
||||
vec3_t forward, right, up; // Vectors for angles
|
||||
vec3_t origin; // Movement origin.
|
||||
vec3_t angles; // Movement view angles.
|
||||
vec3_t oldangles; // Angles before movement view angles were looked at.
|
||||
vec3_t velocity; // Current movement direction.
|
||||
vec3_t movedir; // For waterjumping, a forced forward velocity so we can fly over lip of ledge.
|
||||
vec3_t basevelocity; // Velocity of the conveyor we are standing, e.g.
|
||||
vec3_t view_ofs; // Our eye position.
|
||||
float flDuckTime; // Time we started duck
|
||||
qboolean bInDuck; // In process of ducking or ducked already?
|
||||
int flTimeStepSound; // Next time we can play a step sound
|
||||
int iStepLeft;
|
||||
float flFallVelocity;
|
||||
vec3_t punchangle;
|
||||
float flSwimTime;
|
||||
float flNextPrimaryAttack;
|
||||
int effects; // MUZZLE FLASH, e.g.
|
||||
int flags; // FL_ONGROUND, FL_DUCKING, etc.
|
||||
int usehull; // 0 = regular player hull, 1 = ducked player hull, 2 = point hull
|
||||
float gravity; // Our current gravity and friction.
|
||||
float friction;
|
||||
int oldbuttons; // Buttons last usercmd
|
||||
float waterjumptime; // Amount of time left in jumping out of water cycle.
|
||||
qboolean dead; // Are we a dead player?
|
||||
int deadflag;
|
||||
int spectator; // Should we use spectator physics model?
|
||||
int movetype; // Our movement type, NOCLIP, WALK, FLY
|
||||
int onground;
|
||||
int waterlevel;
|
||||
int watertype;
|
||||
int oldwaterlevel;
|
||||
char sztexturename[256];
|
||||
char chtexturetype;
|
||||
float maxspeed;
|
||||
float clientmaxspeed; // Player specific maxspeed
|
||||
int iuser1;
|
||||
int iuser2;
|
||||
int iuser3;
|
||||
int iuser4;
|
||||
float fuser1;
|
||||
float fuser2;
|
||||
float fuser3;
|
||||
float fuser4;
|
||||
vec3_t vuser1;
|
||||
vec3_t vuser2;
|
||||
vec3_t vuser3;
|
||||
vec3_t vuser4;
|
||||
int numphysent;
|
||||
physent_t physents[MAX_PHYSENTS];
|
||||
} playermove_t;
|
||||
|
||||
#endif
|
||||
|
|
@ -1,161 +0,0 @@
|
|||
/*
|
||||
physint.h - Server Physics Interface
|
||||
Copyright (C) 2011 Uncle Mike
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef PHYSINT_H
|
||||
#define PHYSINT_H
|
||||
|
||||
#define SV_PHYSICS_INTERFACE_VERSION 6
|
||||
|
||||
#define STRUCT_FROM_LINK( l, t, m ) ((t *)((byte *)l - (int)&(((t *)0)->m)))
|
||||
#define EDICT_FROM_AREA( l ) STRUCT_FROM_LINK( l, edict_t, area )
|
||||
|
||||
// values that can be returned with pfnServerState
|
||||
#define SERVER_DEAD 0
|
||||
#define SERVER_LOADING 1
|
||||
#define SERVER_ACTIVE 2
|
||||
|
||||
// LUMP reading errors
|
||||
#define LUMP_LOAD_OK 0
|
||||
#define LUMP_LOAD_COULDNT_OPEN 1
|
||||
#define LUMP_LOAD_BAD_HEADER 2
|
||||
#define LUMP_LOAD_BAD_VERSION 3
|
||||
#define LUMP_LOAD_NO_EXTRADATA 4
|
||||
#define LUMP_LOAD_INVALID_NUM 5
|
||||
#define LUMP_LOAD_NOT_EXIST 6
|
||||
#define LUMP_LOAD_MEM_FAILED 7
|
||||
#define LUMP_LOAD_CORRUPTED 8
|
||||
|
||||
// LUMP saving errors
|
||||
#define LUMP_SAVE_OK 0
|
||||
#define LUMP_SAVE_COULDNT_OPEN 1
|
||||
#define LUMP_SAVE_BAD_HEADER 2
|
||||
#define LUMP_SAVE_BAD_VERSION 3
|
||||
#define LUMP_SAVE_NO_EXTRADATA 4
|
||||
#define LUMP_SAVE_INVALID_NUM 5
|
||||
#define LUMP_SAVE_ALREADY_EXIST 6
|
||||
#define LUMP_SAVE_NO_DATA 7
|
||||
#define LUMP_SAVE_CORRUPTED 8
|
||||
|
||||
typedef struct areanode_s {
|
||||
int axis; // -1 = leaf node
|
||||
float dist;
|
||||
struct areanode_s *children[2];
|
||||
link_t trigger_edicts;
|
||||
link_t solid_edicts;
|
||||
link_t portal_edicts;
|
||||
} areanode_t;
|
||||
|
||||
typedef struct server_physics_api_s {
|
||||
// unlink edict from old position and link onto new
|
||||
void (*pfnLinkEdict) (edict_t *ent, qboolean touch_triggers);
|
||||
double (*pfnGetServerTime)(void); // unclamped
|
||||
double (*pfnGetFrameTime)(void); // unclamped
|
||||
void *(*pfnGetModel)(int modelindex);
|
||||
areanode_t *(*pfnGetHeadnode)(void); // AABB tree for all physic entities
|
||||
int (*pfnServerState)(void);
|
||||
void (*pfnHost_Error)(const char *error, ...); // cause Host Error
|
||||
// ONLY ADD NEW FUNCTIONS TO THE END OF THIS STRUCT. INTERFACE VERSION IS FROZEN AT 6
|
||||
struct triangleapi_s *pTriAPI; // draw coliisions etc. Only for local system
|
||||
|
||||
// draw debug messages (must be called from DrawOrthoTriangles). Only for local system
|
||||
int (*pfnDrawConsoleString)(int x, int y, char *string);
|
||||
void (*pfnDrawSetTextColor)(float r, float g, float b);
|
||||
void (*pfnDrawConsoleStringLen)(const char *string, int *length, int *height);
|
||||
void (*Con_NPrintf)(int pos, const char *fmt, ...);
|
||||
void (*Con_NXPrintf)(struct con_nprint_s *info, const char *fmt, ...);
|
||||
const char *(*pfnGetLightStyle)(int style); // read custom appreance for selected lightstyle
|
||||
void (*pfnUpdateFogSettings)(unsigned int packed_fog);
|
||||
char **(*pfnGetFilesList)(const char *pattern, int *numFiles, int gamedironly);
|
||||
struct msurface_s *(*pfnTraceSurface)(edict_t *pTextureEntity, const float *v1, const float *v2);
|
||||
const byte *(*pfnGetTextureData)(unsigned int texnum);
|
||||
|
||||
// static allocations
|
||||
void *(*pfnMemAlloc)(size_t cb, const char *filename, const int fileline);
|
||||
void (*pfnMemFree)(void *mem, const char *filename, const int fileline);
|
||||
|
||||
// trace & contents
|
||||
int (*pfnMaskPointContents)(const float *pos, int groupmask);
|
||||
struct trace_t (*pfnTrace)(const float *p0, float *mins, float *maxs, const float *p1, int type, edict_t *e);
|
||||
struct trace_t (*pfnTraceNoEnts)(const float *p0, float *mins, float *maxs, const float *p1, int type, edict_t *e);
|
||||
int (*pfnBoxInPVS)(const float *org, const float *boxmins, const float *boxmaxs);
|
||||
|
||||
// message handler (missed function to write raw bytes)
|
||||
void (*pfnWriteBytes)(const byte *bytes, int count);
|
||||
|
||||
// BSP lump management
|
||||
int (*pfnCheckLump)(const char *filename, const int lump, int *lumpsize);
|
||||
int (*pfnReadLump)(const char *filename, const int lump, void **lumpdata, int *lumpsize);
|
||||
int (*pfnSaveLump)(const char *filename, const int lump, void *lumpdata, int lumpsize);
|
||||
|
||||
// FS tools
|
||||
int (*pfnSaveFile)(const char *filename, const void *data, int len);
|
||||
const byte *(*pfnLoadImagePixels)(const char *filename, int *width, int *height);
|
||||
|
||||
const char *(*pfnGetModelName)(int modelindex);
|
||||
} server_physics_api_t;
|
||||
|
||||
// physic callbacks
|
||||
typedef struct physics_interface_s {
|
||||
int version;
|
||||
// passed through pfnCreate (0 is attempt to create, -1 is reject)
|
||||
int (*SV_CreateEntity)(edict_t *pent, const char *szName);
|
||||
// run custom physics for each entity (return 0 to use built-in engine physic)
|
||||
int (*SV_PhysicsEntity)(edict_t *pEntity);
|
||||
// spawn entities with internal mod function e.g. for re-arrange spawn order (0 - use engine parser, 1 - use mod parser)
|
||||
int (*SV_LoadEntities)(const char *mapname, char *entities);
|
||||
// update conveyor belt for clients
|
||||
void (*SV_UpdatePlayerBaseVelocity)(edict_t *ent);
|
||||
// The game .dll should return 1 if save game should be allowed
|
||||
int (*SV_AllowSaveGame)(void);
|
||||
// ONLY ADD NEW FUNCTIONS TO THE END OF THIS STRUCT. INTERFACE VERSION IS FROZEN AT 6
|
||||
// override trigger area checking and touching
|
||||
int (*SV_TriggerTouch)(edict_t *pent, edict_t *trigger);
|
||||
// some engine features can be enabled only through this function
|
||||
unsigned int (*SV_CheckFeatures)(void);
|
||||
// used for draw debug collisions for custom physic engine etc
|
||||
void (*DrawDebugTriangles)(void);
|
||||
// used for draw debug overlay (textured)
|
||||
void (*DrawNormalTriangles)(void);
|
||||
// used for draw debug messages (2d mode)
|
||||
void (*DrawOrthoTriangles)(void);
|
||||
// tracing entities with SOLID_CUSTOM mode on a server (not used by pmove code)
|
||||
void (*ClipMoveToEntity)(edict_t *ent, const float *start, float *mins, float *maxs, const float *end, trace_t *trace);
|
||||
// tracing entities with SOLID_CUSTOM mode on a server (only used by pmove code)
|
||||
void (*ClipPMoveToEntity)(struct physent_s *pe, const float *start, float *mins, float *maxs, const float *end, struct pmtrace_s *tr);
|
||||
// called at end the frame of SV_Physics call
|
||||
void (*SV_EndFrame)(void);
|
||||
// obsolete
|
||||
void (*pfnPrepWorldFrame)(void);
|
||||
// called through save\restore process
|
||||
void (*pfnCreateEntitiesInRestoreList)(SAVERESTOREDATA *pSaveData, int levelMask, qboolean create_world);
|
||||
// allocate custom string (e.g. using user implementation of stringtable, not engine strings)
|
||||
string_t (*pfnAllocString)(const char *szValue);
|
||||
// make custom string (e.g. using user implementation of stringtable, not engine strings)
|
||||
string_t (*pfnMakeString)(const char *szValue);
|
||||
// read custom string (e.g. using user implementation of stringtable, not engine strings)
|
||||
const char *(*pfnGetString)(string_t iString);
|
||||
// helper for restore custom decals that have custom message (e.g. Paranoia)
|
||||
int (*pfnRestoreDecal)(struct decallist_s *entry, edict_t *pEdict, qboolean adjacent);
|
||||
// handle custom trigger touching for player
|
||||
void (*PM_PlayerTouch)(struct playermove_s *ppmove, edict_t *client);
|
||||
// alloc or destroy model custom data (called only for dedicated servers, otherwise using an client version)
|
||||
void (*Mod_ProcessUserData)(struct model_s *mod, qboolean create, const byte *buffer);
|
||||
// select BSP-hull for trace with specified mins\maxs
|
||||
void *(*SV_HullForBsp)(edict_t *ent, const float *mins, const float *maxs, float *offset);
|
||||
// handle player custom think function
|
||||
int (*SV_PlayerThink)(edict_t *ent, float frametime, double time);
|
||||
} physics_interface_t;
|
||||
|
||||
#endif//PHYSINT_H
|
||||
|
|
@ -1,213 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 1999-2005, Valve Corporation. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This source code contains proprietary and confidential information of
|
||||
* Valve LLC and its suppliers. Access to this code is restricted to
|
||||
* persons who have executed a written SDK license with Valve. Any access,
|
||||
* use or distribution of this code by or to any unlicensed person is illegal.
|
||||
*
|
||||
****/
|
||||
#pragma once
|
||||
|
||||
typedef struct {
|
||||
float time;
|
||||
float frametime;
|
||||
float force_retouch;
|
||||
string_t mapname;
|
||||
string_t startspot;
|
||||
float deathmatch;
|
||||
float coop;
|
||||
float teamplay;
|
||||
float serverflags;
|
||||
float found_secrets;
|
||||
vec3_t v_forward;
|
||||
vec3_t v_up;
|
||||
vec3_t v_right;
|
||||
float trace_allsolid;
|
||||
float trace_startsolid;
|
||||
float trace_fraction;
|
||||
vec3_t trace_endpos;
|
||||
vec3_t trace_plane_normal;
|
||||
float trace_plane_dist;
|
||||
edict_t *trace_ent;
|
||||
float trace_inopen;
|
||||
float trace_inwater;
|
||||
int trace_hitgroup;
|
||||
int trace_flags;
|
||||
int msg_entity;
|
||||
int cdAudioTrack;
|
||||
int maxClients;
|
||||
int maxEntities;
|
||||
const char *pStringBase;
|
||||
void *pSaveData;
|
||||
vec3_t vecLandmarkOffset;
|
||||
} globalvars_t;
|
||||
|
||||
typedef struct entvars_s {
|
||||
string_t classname;
|
||||
string_t globalname;
|
||||
|
||||
vec3_t origin;
|
||||
vec3_t oldorigin;
|
||||
vec3_t velocity;
|
||||
vec3_t basevelocity;
|
||||
vec3_t clbasevelocity; // Base velocity that was passed in to server physics so
|
||||
// client can predict conveyors correctly. Server zeroes it, so we need to store here, too.
|
||||
vec3_t movedir;
|
||||
|
||||
vec3_t angles; // Model angles
|
||||
vec3_t avelocity; // angle velocity (degrees per second)
|
||||
vec3_t punchangle; // auto-decaying view angle adjustment
|
||||
vec3_t v_angle; // Viewing angle (player only)
|
||||
|
||||
// For parametric entities
|
||||
vec3_t endpos;
|
||||
vec3_t startpos;
|
||||
float impacttime;
|
||||
float starttime;
|
||||
|
||||
int fixangle; // 0:nothing, 1:force view angles, 2:add avelocity
|
||||
float idealpitch;
|
||||
float pitch_speed;
|
||||
float ideal_yaw;
|
||||
float yaw_speed;
|
||||
|
||||
int modelindex;
|
||||
string_t model;
|
||||
|
||||
string_t viewmodel; // player's viewmodel
|
||||
string_t weaponmodel; // what other players see
|
||||
|
||||
vec3_t absmin; // BB max translated to world coord
|
||||
vec3_t absmax; // BB max translated to world coord
|
||||
vec3_t mins; // local BB min
|
||||
vec3_t maxs; // local BB max
|
||||
vec3_t size; // maxs - mins
|
||||
|
||||
float ltime;
|
||||
float nextthink;
|
||||
|
||||
int movetype;
|
||||
int solid;
|
||||
|
||||
int skin;
|
||||
int body; // sub-model selection for studiomodels
|
||||
int effects;
|
||||
|
||||
float gravity; // % of "normal" gravity
|
||||
float friction; // inverse elasticity of MOVETYPE_BOUNCE
|
||||
|
||||
int light_level;
|
||||
|
||||
int sequence; // animation sequence
|
||||
int gaitsequence; // movement animation sequence for player (0 for none)
|
||||
float frame; // % playback position in animation sequences (0..255)
|
||||
float animtime; // world time when frame was set
|
||||
float framerate; // animation playback rate (-8x to 8x)
|
||||
uint8_t controller[4]; // bone controller setting (0..255)
|
||||
uint8_t blending[2]; // blending amount between sub-sequences (0..255)
|
||||
|
||||
float scale; // sprite rendering scale (0..255)
|
||||
|
||||
int rendermode;
|
||||
float renderamt;
|
||||
vec3_t rendercolor;
|
||||
int renderfx;
|
||||
|
||||
float health;
|
||||
float frags;
|
||||
int weapons; // bit mask for available weapons
|
||||
float takedamage;
|
||||
|
||||
int deadflag;
|
||||
vec3_t view_ofs; // eye position
|
||||
|
||||
int button;
|
||||
int impulse;
|
||||
|
||||
edict_t *chain; // Entity pointer when linked into a linked list
|
||||
edict_t *dmg_inflictor;
|
||||
edict_t *enemy;
|
||||
edict_t *aiment; // entity pointer when MOVETYPE_FOLLOW
|
||||
edict_t *owner;
|
||||
edict_t *groundentity;
|
||||
|
||||
int spawnflags;
|
||||
int flags;
|
||||
|
||||
int colormap; // lowbyte topcolor, highbyte bottomcolor
|
||||
int team;
|
||||
|
||||
float max_health;
|
||||
float teleport_time;
|
||||
float armortype;
|
||||
float armorvalue;
|
||||
int waterlevel;
|
||||
int watertype;
|
||||
|
||||
string_t target;
|
||||
string_t targetname;
|
||||
string_t netname;
|
||||
string_t message;
|
||||
|
||||
float dmg_take;
|
||||
float dmg_save;
|
||||
float dmg;
|
||||
float dmgtime;
|
||||
|
||||
string_t noise;
|
||||
string_t noise1;
|
||||
string_t noise2;
|
||||
string_t noise3;
|
||||
|
||||
float speed;
|
||||
float air_finished;
|
||||
float pain_finished;
|
||||
float radsuit_finished;
|
||||
|
||||
edict_t *pContainingEntity;
|
||||
|
||||
int playerclass;
|
||||
float maxspeed;
|
||||
|
||||
float fov;
|
||||
int weaponanim;
|
||||
|
||||
int pushmsec;
|
||||
|
||||
int bInDuck;
|
||||
int flTimeStepSound;
|
||||
int flSwimTime;
|
||||
int flDuckTime;
|
||||
int iStepLeft;
|
||||
float flFallVelocity;
|
||||
|
||||
int gamestate;
|
||||
|
||||
int oldbuttons;
|
||||
|
||||
int groupinfo;
|
||||
|
||||
// For mods
|
||||
int iuser1;
|
||||
int iuser2;
|
||||
int iuser3;
|
||||
int iuser4;
|
||||
float fuser1;
|
||||
float fuser2;
|
||||
float fuser3;
|
||||
float fuser4;
|
||||
vec3_t vuser1;
|
||||
vec3_t vuser2;
|
||||
vec3_t vuser3;
|
||||
vec3_t vuser4;
|
||||
edict_t *euser1;
|
||||
edict_t *euser2;
|
||||
edict_t *euser3;
|
||||
edict_t *euser4;
|
||||
} entvars_t;
|
||||
129
ext/hlsdk/util.h
129
ext/hlsdk/util.h
|
|
@ -1,129 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 1999-2005, Valve Corporation. All rights reserved.
|
||||
*
|
||||
* This product contains software technology licensed from Id
|
||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This source code contains proprietary and confidential information of
|
||||
* Valve LLC and its suppliers. Access to this code is restricted to
|
||||
* persons who have executed a written SDK license with Valve. Any access,
|
||||
* use or distribution of this code by or to any unlicensed person is illegal.
|
||||
*
|
||||
****/
|
||||
|
||||
#ifndef SDKUTIL_H
|
||||
#define SDKUTIL_H
|
||||
|
||||
extern globalvars_t *globals;
|
||||
extern enginefuncs_t engfuncs;
|
||||
extern gamefuncs_t dllapi;
|
||||
|
||||
// Dot products for view cone checking
|
||||
#define VIEW_FIELD_FULL (float)-1.0 // +-180 degrees
|
||||
#define VIEW_FIELD_WIDE (float)-0.7 // +-135 degrees 0.1 // +-85 degrees, used for full FOV checks
|
||||
#define VIEW_FIELD_NARROW (float)0.7 // +-45 degrees, more narrow check used to set up ranged attacks
|
||||
#define VIEW_FIELD_ULTRA_NARROW (float)0.9 // +-25 degrees, more narrow check used to set up ranged attacks
|
||||
|
||||
typedef enum { ignore_monsters = 1, dont_ignore_monsters = 0, missile = 2 } IGNORE_MONSTERS;
|
||||
typedef enum { ignore_glass = 1, dont_ignore_glass = 0 } IGNORE_GLASS;
|
||||
typedef enum { point_hull = 0, human_hull = 1, large_hull = 2, head_hull = 3 } HULL;
|
||||
|
||||
typedef struct hudtextparms_s {
|
||||
float x;
|
||||
float y;
|
||||
int effect;
|
||||
uint8_t r1, g1, b1, a1;
|
||||
uint8_t r2, g2, b2, a2;
|
||||
float fadeinTime;
|
||||
float fadeoutTime;
|
||||
float holdTime;
|
||||
float fxTime;
|
||||
int channel;
|
||||
} hudtextparms_t;
|
||||
|
||||
#define AMBIENT_SOUND_STATIC 0 // medium radius attenuation
|
||||
#define AMBIENT_SOUND_EVERYWHERE 1
|
||||
#define AMBIENT_SOUND_SMALLRADIUS 2
|
||||
#define AMBIENT_SOUND_MEDIUMRADIUS 4
|
||||
#define AMBIENT_SOUND_LARGERADIUS 8
|
||||
#define AMBIENT_SOUND_START_SILENT 16
|
||||
#define AMBIENT_SOUND_NOT_LOOPING 32
|
||||
|
||||
#define SPEAKER_START_SILENT 1 // wait for trigger 'on' to start announcements
|
||||
|
||||
#define SND_SPAWNING (1 << 8) // duplicated in protocol.h we're spawing, used in some cases for ambients
|
||||
#define SND_STOP (1 << 5) // duplicated in protocol.h stop sound
|
||||
#define SND_CHANGE_VOL (1 << 6) // duplicated in protocol.h change sound vol
|
||||
#define SND_CHANGE_PITCH (1 << 7) // duplicated in protocol.h change sound pitch
|
||||
|
||||
#define LFO_SQUARE 1
|
||||
#define LFO_TRIANGLE 2
|
||||
#define LFO_RANDOM 3
|
||||
|
||||
// func_rotating
|
||||
#define SF_BRUSH_ROTATE_Y_AXIS 0
|
||||
#define SF_BRUSH_ROTATE_INSTANT 1
|
||||
#define SF_BRUSH_ROTATE_BACKWARDS 2
|
||||
#define SF_BRUSH_ROTATE_Z_AXIS 4
|
||||
#define SF_BRUSH_ROTATE_X_AXIS 8
|
||||
#define SF_PENDULUM_AUTO_RETURN 16
|
||||
#define SF_PENDULUM_PASSABLE 32
|
||||
|
||||
#define SF_BRUSH_ROTATE_SMALLRADIUS 128
|
||||
#define SF_BRUSH_ROTATE_MEDIUMRADIUS 256
|
||||
#define SF_BRUSH_ROTATE_LARGERADIUS 512
|
||||
|
||||
#define PUSH_BLOCK_ONLY_X 1
|
||||
#define PUSH_BLOCK_ONLY_Y 2
|
||||
|
||||
#define VEC_HULL_MIN Vector(-16, -16, -36)
|
||||
#define VEC_HULL_MAX Vector(16, 16, 36)
|
||||
#define VEC_HUMAN_HULL_MIN Vector(-16, -16, 0)
|
||||
#define VEC_HUMAN_HULL_MAX Vector(16, 16, 72)
|
||||
#define VEC_HUMAN_HULL_DUCK Vector(16, 16, 36)
|
||||
|
||||
#define VEC_VIEW Vector(0, 0, 28)
|
||||
|
||||
#define VEC_DUCK_HULL_MIN Vector(-16, -16, -18)
|
||||
#define VEC_DUCK_HULL_MAX Vector(16, 16, 18)
|
||||
#define VEC_DUCK_VIEW Vector(0, 0, 12)
|
||||
|
||||
#define SVC_TEMPENTITY 23
|
||||
#define SVC_CENTERPRINT 26
|
||||
#define SVC_INTERMISSION 30
|
||||
#define SVC_CDTRACK 32
|
||||
#define SVC_WEAPONANIM 35
|
||||
#define SVC_ROOMTYPE 37
|
||||
#define SVC_DIRECTOR 51
|
||||
|
||||
// triggers
|
||||
#define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger
|
||||
#define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger
|
||||
#define SF_TRIGGER_PUSHABLES 4 // only pushables can fire this trigger
|
||||
|
||||
// func breakable
|
||||
#define SF_BREAK_TRIGGER_ONLY 1 // may only be broken by trigger
|
||||
#define SF_BREAK_TOUCH 2 // can be 'crashed through' by running player (plate glass)
|
||||
#define SF_BREAK_PRESSURE 4 // can be broken by a player standing on it
|
||||
#define SF_BREAK_CROWBAR 256 // instant break if hit with crowbar
|
||||
|
||||
// func_pushable (it's also func_breakable, so don't collide with those flags)
|
||||
#define SF_PUSH_BREAKABLE 128
|
||||
|
||||
#define SF_LIGHT_START_OFF 1
|
||||
|
||||
#define SPAWNFLAG_NOMESSAGE 1
|
||||
#define SPAWNFLAG_NOTOUCH 1
|
||||
#define SPAWNFLAG_DROIDONLY 4
|
||||
|
||||
#define SPAWNFLAG_USEONLY 1 // can't be touched, must be used (buttons)
|
||||
|
||||
#define TELE_PLAYER_ONLY 1
|
||||
#define TELE_SILENT 2
|
||||
|
||||
#define SF_TRIG_PUSH_ONCE 1
|
||||
|
||||
|
||||
#endif
|
||||
1
ext/linkage
Submodule
1
ext/linkage
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a8117ca144f5652974d3eb3210396138a907a980
|
||||
Loading…
Add table
Add a link
Reference in a new issue