typedef struct trace_s
{
// if true, the entire trace was in solid (see hitsupercontentsmask)
- int allsolid;
+ qbool allsolid;
// if true, the initial point was in solid (see hitsupercontentsmask)
- int startsolid;
+ qbool startsolid;
// this is set to true in world.c if startsolid was set in a trace against world
- int worldstartsolid;
+ qbool worldstartsolid;
// this is set to true in world.c if startsolid was set in a trace against a SOLID_BSP entity, in other words this is true if the entity is stuck in a door or wall, but not if stuck in another normal entity
- int bmodelstartsolid;
+ qbool bmodelstartsolid;
// if true, the trace passed through empty somewhere
// (set only by Q1BSP tracing)
- int inopen;
+ qbool inopen;
// if true, the trace passed through water/slime/lava somewhere
// (set only by Q1BSP tracing)
- int inwater;
+ qbool inwater;
// fraction of the total distance that was traveled before impact
// in case of impact this is actually nudged a bit off the surface
// (1.0 = did not hit anything)
const struct texture_s *hittexture;
// initially false, set when the start leaf is found
// (set only by Q1BSP tracing and entity box tracing)
- int startfound;
+ qbool startfound;
// if startsolid, contains the minimum penetration depth found in the
// trace, and the normal needed to push it out of that solid
double startdepth;
//description:
//Adds a new console command which will take priority over a previous command of the same name (including engine commands) and in CSQC is removed when the VM shuts down. This will call CSQC_ConsoleCommand(string command) or ConsoleCmd(string command) in SVQC. Return value should be true if QC handled the command, otherwise return false to have the engine handle it.
-
//DP_QC_FINDBOX
//idea: Mario
//darkplaces implementation: bones_was_here
trace_t stucktrace;
vec3_t stuckorigin;
vec3_t stuckmins, stuckmaxs;
- vec_t nudge;
vec_t separation;
model_t *worldmodel;
VectorCopy(stuckorigin, PRVM_serveredictvector(ent, origin));
return bump || pass ? 1 : -1; // -1 means it wasn't stuck
}
- nudge = -stucktrace.startdepth;
- VectorMA(stuckorigin, nudge, stucktrace.startdepthnormal, stuckorigin);
+
+ VectorMA(stuckorigin, -stucktrace.startdepth, stucktrace.startdepthnormal, stuckorigin);
}
}
return 0;
"DP_QC_ENTITYSTRING",
"DP_QC_ETOS",
"DP_QC_EXTRESPONSEPACKET",
+"DP_QC_FINDBOX",
"DP_QC_FINDCHAIN",
"DP_QC_FINDCHAINFLAGS",
"DP_QC_FINDCHAINFLOAT",
"DP_QC_FINDFLAGS",
"DP_QC_FINDFLOAT",
"DP_QC_FS_SEARCH",
+"DP_QC_FS_SEARCH_PACKFILE",
"DP_QC_GETLIGHT",
"DP_QC_GETSURFACE",
"DP_QC_GETSURFACETRIANGLE",
"TW_SV_STEPCONTROL",
"ZQ_PAUSE",
"DP_RM_CLIPGROUP",
-"DP_QC_FS_SEARCH_PACKFILE",
-"DP_QC_FINDBOX",
NULL
//"EXT_CSQC" // not ready yet
};