-void PR_ExecuteProgram (func_t fnum, const char *errormessage);
-void PR_LoadProgs (void);
-
-void PR_Profile_f (void);
-
-void PR_Crash (void);
-
-edict_t *ED_Alloc (void);
-void ED_Free (edict_t *ed);
-
-char *ED_NewString (const char *string);
-// returns a copy of the string allocated from the server's string heap
-
-void ED_Print (edict_t *ed);
-void ED_Write (QFile *f, edict_t *ed);
-const char *ED_ParseEdict (const char *data, edict_t *ent);
-
-void ED_WriteGlobals (QFile *f);
-void ED_ParseGlobals (const char *data);
-
-void ED_LoadFromFile (const char *data);
-
-edict_t *EDICT_NUM_ERROR(int n);
-#define EDICT_NUM(n) ((n >= 0 && n < sv.max_edicts) ? sv.edictstable[(n)] : EDICT_NUM_ERROR(n))
-
-int NUM_FOR_EDICT(edict_t *e);
-
-#define NEXT_EDICT(e) ((e) + 1)
-
-int EDICT_TO_PROG(edict_t *e);
-edict_t *PROG_TO_EDICT(int n);
-
-//============================================================================
-
-#define G_FLOAT(o) (pr_globals[o])
-#define G_INT(o) (*(int *)&pr_globals[o])
-#define G_EDICT(o) (PROG_TO_EDICT(*(int *)&pr_globals[o]))
-#define G_EDICTNUM(o) NUM_FOR_EDICT(G_EDICT(o))
-#define G_VECTOR(o) (&pr_globals[o])
-#define G_STRING(o) (PR_GetString(*(string_t *)&pr_globals[o]))
-//#define G_FUNCTION(o) (*(func_t *)&pr_globals[o])
-
-// FIXME: make these go away?
-#define E_FLOAT(e,o) (((float*)e->v)[o])
-//#define E_INT(e,o) (((int*)e->v)[o])
-//#define E_VECTOR(e,o) (&((float*)e->v)[o])
-#define E_STRING(e,o) (PR_GetString(*(string_t *)&((float*)e->v)[o]))
-
-extern int type_size[8];
-
-typedef void (*builtin_t) (void);
-extern builtin_t *pr_builtins;
-extern int pr_numbuiltins;
-
-extern int pr_argc;
-
-extern int pr_trace;
-extern mfunction_t *pr_xfunction;
-extern int pr_xstatement;
-
-extern unsigned short pr_crc;
-
-void PR_Execute_ProgsLoaded(void);
-
-void ED_PrintEdicts (void);
-void ED_PrintNum (int ent);
-
-#define PR_GetString(num) (pr_strings + num)
-#define PR_SetString(s) ((int) (s - pr_strings))
+ framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS];
+ frameblend_t frameblend[MAX_FRAMEBLENDS];
+ skeleton_t skeleton;
+
+ // physics parameters
+ qboolean ode_physics;
+ void *ode_body;
+ void *ode_geom;
+ void *ode_joint;
+ float *ode_vertex3f;
+ int *ode_element3i;
+ int ode_numvertices;
+ int ode_numtriangles;
+ edict_odefunc_t *ode_func;
+ vec3_t ode_mins;
+ vec3_t ode_maxs;
+ vec3_t ode_scale;
+ vec_t ode_mass;
+ float ode_friction;
+ vec3_t ode_origin;
+ vec3_t ode_velocity;
+ vec3_t ode_angles;
+ vec3_t ode_avelocity;
+ qboolean ode_gravity;
+ int ode_modelindex;
+ vec_t ode_movelimit; // smallest component of (maxs[]-mins[])
+ matrix4x4_t ode_offsetmatrix;
+ matrix4x4_t ode_offsetimatrix;
+ int ode_joint_type;
+ int ode_joint_enemy;
+ int ode_joint_aiment;
+ vec3_t ode_joint_origin; // joint anchor
+ vec3_t ode_joint_angles; // joint axis
+ vec3_t ode_joint_velocity; // second joint axis
+ vec3_t ode_joint_movedir; // parameters
+ void *ode_massbuf;
+}
+edict_engineprivate_t;