tge/lib/maxsdk70/include/maxnet_job.h
2017-04-17 06:17:10 -06:00

224 lines
7.5 KiB
C++
Executable File

//-----------------------------------------------------------------------------
// -----------------------
// File ....: maxnet_job.h
// -----------------------
// Author...: Gus J Grubba
// Date ....: March 2000
// O.S. ....: Windows 2000
//
// History .: March, 11 2000 - Created
//
// 3D Studio Max Network Rendering Classes - Job
//
//-----------------------------------------------------------------------------
#ifndef _MAXNET_JOB_H_
#define _MAXNET_JOB_H_
#ifdef WIN32
#ifndef MAXNETEXPORT
#define MAXNETEXPORT __declspec( dllimport )
#endif
#else
#define MAXNETEXPORT
#endif
//-----------------------------------------------------------------------------
//-- Forward Reference
class MaxNetManagerImp;
//-----------------------------------------------------------------------------
//-- Scene Info
//#define SCENE_SHADOWMAPPED (1<<0) Obsolete
//#define SCENE_RAYTRACED (1<<1) Obsolete
#define SCENE_VIDEOCOLORCHECK (1<<2)
#define SCENE_TWOSIDED (1<<3)
#define SCENE_RENDERHIDEN (1<<4)
#define SCENE_RENDERATMOSPHER (1<<5)
#define SCENE_SUPERBLACK (1<<6)
//#define SCENE_RENDERALPHA (1<<7) Obsolete
#define SCENE_SERIALNUMBERING (1<<8)
#define SCENE_DITHER256 (1<<9)
#define SCENE_DITHERTRUE (1<<10)
#define SCENE_RENDERFIELDS (1<<11)
#define SCENE_DISPLACEMENT (1<<12)
#define SCENE_EFFECTS (1<<13)
#define SCENE_FIELDORDER (1<<14) //-- 0 Even / 1 Odd
typedef struct tagSceneInfo {
int objects; //-- Number of Objects in scene
int faces; //-- Total number of faces in scene
int lights; //-- Total number of lights in scene
int start,end; //-- Scene Start and End times
DWORD flags; //-- SCENE_XXX above
} SceneInfo;
//-----------------------------------------------------------------------------
//-- Text Info
//
typedef enum {
JOB_TEXT_USER=64, //-- User Name
JOB_TEXT_COMPUTER, //-- Computer Name (Job Submission)
JOB_TEXT_MANAGER_SHARE, //-- Manager's share (where to find job - filled by Manager)
JOB_TEXT_FRAMES, //-- Frames for those "1,2,4,5-40" types. Otherwise frames are defined in Job
JOB_TEXT_MAX_OUTPUT, //-- Output image file name (MAX)
JOB_TEXT_CMB_OUTPUT, //-- Output image file name (Combustion)
JOB_TEXT_RENDER_ELEMENT, //-- Render Elements
JOB_TEXT_CAMERA, //-- Camera List
JOB_TEXT_RESERVED = 9999 //-- Unknown Type
} JOB_TEXT_TYPE;
typedef struct tag_TextBufferOutput {
bool device;
float gamma;
TCHAR data[256];
}TextBufferOutput;
typedef struct tag_JobRenderElement {
bool enabled;
bool filterenabled;
bool atmosphere_applied;
bool shadows_applied;
TCHAR name[128];
TCHAR output[MAX_PATH];
}JobRenderElement;
typedef struct tag_TextBuffer {
JOB_TEXT_TYPE type;
union {
TCHAR text[256];
TextBufferOutput output;
JobRenderElement re;
};
} JobText;
class MAXNETEXPORT CJobText {
friend class MaxNetManagerImp;
protected:
void* list;
public:
CJobText ( );
~CJobText ( );
int Count ( );
int Add (JobText* jt);
void Delete (int idx, int count = 1);
void Reset ( );
JobText* Buffer ( );
int BufferSize ( );
JobText& operator[](const int i);
int FindJobText (JOB_TEXT_TYPE tp, int start = 0);
bool GetTextItem (TCHAR* text, JOB_TEXT_TYPE type, int start = 0, int* idx = 0);
bool GetUser (TCHAR* user);
bool GetComputer (TCHAR* computer);
bool GetFrames (TCHAR* frames);
bool GetShare (TCHAR* share);
};
//---------------------------------------------------------
//-- Alert Notification
//
#define NOTIFY_FAILURE (1<<0)
#define NOTIFY_PROGRESS (1<<1)
#define NOTIFY_COMPLETION (1<<2)
typedef struct tag_AlertData {
bool alertEnabled; //-- Are alerts enabled?
DWORD notifications; //-- Bitmap of alerts enabled
int nthFrames; //-- Every n frames for progress reports
} AlertData;
//---------------------------------------------------------
//-- Job Flags
#define JOB_VP (1<<0) //-- Video Post (otherwise is Render Scene)
#define JOB_NONC (1<<1) //-- Non concurrent driver (Accom, AVI, etc.)
#define JOB_MAPS (1<<2) //-- Include Maps
#define JOB_NONSTOP (1<<3) //-- Uninterruptible Driver (AVI, FCL, etc.)
#define JOB_SKIPEXST (1<<4) //-- Skip Existing Frames
#define JOB_ALLSERVERS (1<<5) //-- Use All Available Servers
#define JOB_INACTIVE (1<<6) //-- Job is Suspended
#define JOB_COMPLETE (1<<7) //-- Job is Complete (Read Only)
#define JOB_IGNORESHARE (1<<8) //-- Ignore Manager's Job Share - Always request archives
#define JOB_SKIPOUTPUTTST (1<<9) //-- Skip output test (Server won't test the output path)
#define JOB_NONSEQFRAMES (1<<10) //-- Non sequential frames (1,3,5-10, etc.)
#define JOB_COMBUSTIONJOB (1<<11) //-- Combustion Job
#define JOB_NOTARCHIVED (1<<12) //-- Uncompressed File (not an archive)
#define JOB_VFB (1<<13) //-- Should the VFB be up?
#define JOB_RENDER_CROP (1<<14) //-- Partial Render (Crop / Zoom / Region / etc.)
#define JOB_ASSIGN_VP JOB_VP //-- Make compatible with legacy flag
#define JOB_ASSIGN_RND 0 //-- Make compatible with legacy flag
//---------------------------------------------------------
//-- Priority Level
#define _JOB_PRIORITY_CRITICAL 0
#define _JOB_DEFAULT_PRIORITY 50
//---------------------------------------------------------
//-- Job
#define _JOB_VERSION 399
typedef struct tag_MaxJobRenderElements {
bool enabled;
}MaxJobRenderElements;
typedef struct tag_MaxJob {
bool init; //-- Is structure valid?
bool gammacorrection; //-- Use gamma correction?
float gammavaluein; //-- Input Gamma (Maps)
float gammavalueout; //-- Output Gamma (Output Image)
float pixelaspect; //-- Pixel Aspect Ratio
char camera[128]; //-- Camera
SceneInfo sceneInfo; //-- Scene Info
MaxJobRenderElements re; //-- Render Elements
char reserved[64];
}MaxJob;
typedef struct tag_CombustionJob {
bool init; //-- Is structure valid?
char reserved[128];
}CombustionJob;
typedef struct tag_Job {
DWORD size; //-- Structure Size ( size = sizeof(Job) )
DWORD version; //-- Structure Version
DWORD server_pid; //-- Server Process ID (Used by MAX to check server's health)
DWORD flags; //-- JOB_XXX flags
HJOB hJob; //-- Assigned by Manager when job is created (Submitted) - Read Only afterwards
char name[MAX_PATH]; //-- Job Name
DWORD filesize; //-- Used internally when transferring archive (size of archive file)
DWORD filesizeextracted; //-- Used internally when transferring archive (size of expanded archive)
SYSTEMTIME submission; //-- Set when job is submitted
SYSTEMTIME startjob; //-- Set when job starts
SYSTEMTIME endjob; //-- Set when job is completed
int servercount; //-- Number of servers defined for this job (can be 0 if JOB_ALLSERVERS is set)
AlertData alerts; //-- Alerts
int jobtextcount; //-- Number of JobTextInfo records
int firstframe; //-- First frame in range
int lastframe; //-- Last frame in range
int step; //-- Every nth frame (step)
int width,height; //-- Output Dimensions
int frames_completed; //-- Number of completed frames
char priority; //-- Priority Level
char reserved[32]; //-- Future stuff
union {
MaxJob maxJob; //-- MAX Specific
CombustionJob combustionJob; //-- Combustion Specific
};
} Job;
#endif
//-- EOF: maxnet_job.h --------------------------------------------------------