]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - progsvm.h
ODE physics engine support, needs more work, disabled by default
[xonotic/darkplaces.git] / progsvm.h
index 3d9af47730cd0bd79a1576bd97ed4399ff3aaf37..5d60d777488b5f4c4ab391c8a9db1efae5155e1a 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -40,6 +40,8 @@ typedef struct prvm_stack_s
 {
        int                             s;
        mfunction_t             *f;
+       double                  profile_acc;
+       double                  builtinsprofile_acc;
 } prvm_stack_t;
 
 
@@ -190,6 +192,7 @@ typedef struct prvm_prog_fieldoffsets_s
        int glow_color; // ssqc
        int glow_size; // ssqc
        int glow_trail; // ssqc
+       int glowmod; // ssqc / csqc
        int gravity; // ssqc
        int groundentity; // ssqc / csqc
        int hull; // ssqc / csqc
@@ -226,6 +229,22 @@ typedef struct prvm_prog_fieldoffsets_s
        int viewmodelforclient; // ssqc
        int viewzoom; // ssqc
        int yaw_speed; // ssqc / csqc
+       int bouncefactor; // ssqc
+       int bouncestop; // ssqc
+
+       int solid; // ssqc / csqc (physics)
+       int movetype; // ssqc / csqc (physics)
+       int modelindex; // ssqc / csqc (physics)
+       int mins; // ssqc / csqc (physics)
+       int maxs; // ssqc / csqc (physics)
+       int mass; // ssqc / csqc (physics)
+       int origin; // ssqc / csqc (physics)
+       int axis_forward; // ssqc / csqc (physics)
+       int axis_left; // ssqc / csqc (physics)
+       int axis_up; // ssqc / csqc (physics)
+       //int angles; // ssqc / csqc (physics)
+       int velocity; // ssqc / csqc (physics)
+       int spinvelocity; // ssqc / csqc (physics)
 }
 prvm_prog_fieldoffsets_t;
 
@@ -273,6 +292,7 @@ typedef struct prvm_prog_globaloffsets_s
        int gettaginfo_forward; // ssqc / csqc
        int gettaginfo_right; // ssqc / csqc
        int gettaginfo_up; // ssqc / csqc
+       int transparent_offset; // csqc
 }
 prvm_prog_globaloffsets_t;
 
@@ -467,6 +487,8 @@ typedef struct prvm_prog_s
        void                            (*reset_cmd)(void); // [INIT] used by PRVM_ResetProg
 
        void                            (*error_cmd)(const char *format, ...) DP_FUNC_PRINTF(1); // [INIT]
+
+       void                            (*ExecuteProgram)(func_t fnum, const char *errormessage); // pointer to one of the *VM_ExecuteProgram functions
 } prvm_prog_t;
 
 extern prvm_prog_t * prog;
@@ -507,7 +529,10 @@ void VM_Cmd_Reset(void);
 
 void PRVM_Init (void);
 
-void PRVM_ExecuteProgram (func_t fnum, const char *errormessage);
+void MVM_ExecuteProgram (func_t fnum, const char *errormessage);
+void CLVM_ExecuteProgram (func_t fnum, const char *errormessage);
+void SVVM_ExecuteProgram (func_t fnum, const char *errormessage);
+#define PRVM_ExecuteProgram prog->ExecuteProgram
 
 #define PRVM_Alloc(buffersize) _PRVM_Alloc(buffersize, __FILE__, __LINE__)
 #define PRVM_Free(buffer) _PRVM_Free(buffer, __FILE__, __LINE__)
@@ -516,8 +541,9 @@ void *_PRVM_Alloc (size_t buffersize, const char *filename, int fileline);
 void _PRVM_Free (void *buffer, const char *filename, int fileline);
 void _PRVM_FreeAll (const char *filename, int fileline);
 
-void PRVM_Profile (int maxfunctions, int mininstructions);
+void PRVM_Profile (int maxfunctions, int mininstructions, int sortby);
 void PRVM_Profile_f (void);
+void PRVM_ChildProfile_f (void);
 void PRVM_CallProfile_f (void);
 void PRVM_PrintFunction_f (void);
 
@@ -525,7 +551,7 @@ void PRVM_PrintState(void);
 void PRVM_CrashAll (void);
 void PRVM_Crash (void);
 void PRVM_ShortStackTrace(char *buf, size_t bufsize);
-const char *PRVM_AllocationOrigin();
+const char *PRVM_AllocationOrigin(void);
 
 ddef_t *PRVM_ED_FindField(const char *name);
 ddef_t *PRVM_ED_FindGlobal(const char *name);
@@ -539,6 +565,7 @@ func_t PRVM_ED_FindFunctionOffset(const char *name);
 
 void PRVM_MEM_IncreaseEdicts(void);
 
+qboolean PRVM_ED_CanAlloc(prvm_edict_t *e);
 prvm_edict_t *PRVM_ED_Alloc (void);
 void PRVM_ED_Free (prvm_edict_t *ed);
 void PRVM_ED_ClearEdict (prvm_edict_t *e);