/*/////////////////////////////////////////////////////////////// // REALITY ENGINE 2.0 // // Novartis Games (c) 2009. // *//////////////////////////////////////////////////////////////// #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if _EXPORT #define API_DECL extern "C" __declspec(dllexport) #else #define API_DECL extern "C" __declspec(dllimport) #endif #define API_CALL __stdcall // Стандартные типы данных typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned char uchar; typedef unsigned short ushort; typedef signed int sint; typedef signed long slong; typedef signed char schar; typedef signed short sshort; typedef signed __int64 int64; typedef unsigned long dword; typedef void* TWorld; typedef void* TCamera; typedef void* TEntity; typedef void* TMesh; typedef void* TTexture; typedef void* TBuffer; typedef void* TBrush; typedef void* TImage; typedef void* TSurface; typedef void* TFont; typedef void* TShader; typedef void* TPivot; typedef void* TAnimation; typedef void* TFile; typedef void* TListener; typedef void* TSound; typedef void* TServer; typedef void* TClient; typedef void* TMD2; typedef void* TSprite; typedef void* TEmiter; typedef void* TContact; typedef void* TLight; // Стандартный 2-мерный вектор struct Vec2{ float x,y; }; // Стандартный 3-мерный вектор struct Vec3{ float x,y,z; Vec3(){x=0;y=0;z=0;} Vec3(float _x,float _y,float _z){x=_x;y=_y;z=_z;} }; // Стандартный 4-мерный вектор struct Vec4{ float x,y,z,w; }; // Стандартная 4-мерная матрица struct Mat4{ union{ Vec4 i,j,k,t; float mat[4][4]; float m[16]; }; }; // Стандартная вершина struct TVertex{ float x,y,z; float nx,ny,nz; float tx,ty,tz; float bx,by,bz; float u,v; }; // Стандартный триуголник struct TTriangle{ uint v[3]; }; // Коды клавиш enum KeyCode { KC_UNASSIGNED = 0x00, KC_ESCAPE = 0x01, KC_1 = 0x02, KC_2 = 0x03, KC_3 = 0x04, KC_4 = 0x05, KC_5 = 0x06, KC_6 = 0x07, KC_7 = 0x08, KC_8 = 0x09, KC_9 = 0x0A, KC_0 = 0x0B, KC_MINUS = 0x0C, // - on main keyboard KC_EQUALS = 0x0D, KC_BACK = 0x0E, // backspace KC_TAB = 0x0F, KC_Q = 0x10, KC_W = 0x11, KC_E = 0x12, KC_R = 0x13, KC_T = 0x14, KC_Y = 0x15, KC_U = 0x16, KC_I = 0x17, KC_O = 0x18, KC_P = 0x19, KC_LBRACKET = 0x1A, KC_RBRACKET = 0x1B, KC_RETURN = 0x1C, // Enter on main keyboard KC_LCONTROL = 0x1D, KC_A = 0x1E, KC_S = 0x1F, KC_D = 0x20, KC_F = 0x21, KC_G = 0x22, KC_H = 0x23, KC_J = 0x24, KC_K = 0x25, KC_L = 0x26, KC_SEMICOLON = 0x27, KC_APOSTROPHE = 0x28, KC_GRAVE = 0x29, // accent KC_LSHIFT = 0x2A, KC_BACKSLASH = 0x2B, KC_Z = 0x2C, KC_X = 0x2D, KC_C = 0x2E, KC_V = 0x2F, KC_B = 0x30, KC_N = 0x31, KC_M = 0x32, KC_COMMA = 0x33, KC_PERIOD = 0x34, // . on main keyboard KC_SLASH = 0x35, // / on main keyboard KC_RSHIFT = 0x36, KC_MULTIPLY = 0x37, // * on numeric keypad KC_LMENU = 0x38, // left Alt KC_SPACE = 0x39, KC_CAPITAL = 0x3A, KC_F1 = 0x3B, KC_F2 = 0x3C, KC_F3 = 0x3D, KC_F4 = 0x3E, KC_F5 = 0x3F, KC_F6 = 0x40, KC_F7 = 0x41, KC_F8 = 0x42, KC_F9 = 0x43, KC_F10 = 0x44, KC_NUMLOCK = 0x45, KC_SCROLL = 0x46, // Scroll Lock KC_NUMPAD7 = 0x47, KC_NUMPAD8 = 0x48, KC_NUMPAD9 = 0x49, KC_SUBTRACT = 0x4A, // - on numeric keypad KC_NUMPAD4 = 0x4B, KC_NUMPAD5 = 0x4C, KC_NUMPAD6 = 0x4D, KC_ADD = 0x4E, // + on numeric keypad KC_NUMPAD1 = 0x4F, KC_NUMPAD2 = 0x50, KC_NUMPAD3 = 0x51, KC_NUMPAD0 = 0x52, KC_DECIMAL = 0x53, // . on numeric keypad KC_OEM_102 = 0x56, // < > | on UK/Germany keyboards KC_F11 = 0x57, KC_F12 = 0x58, KC_F13 = 0x64, // (NEC PC98) KC_F14 = 0x65, // (NEC PC98) KC_F15 = 0x66, // (NEC PC98) KC_KANA = 0x70, // (Japanese keyboard) KC_ABNT_C1 = 0x73, // / ? on Portugese (Brazilian) keyboards KC_CONVERT = 0x79, // (Japanese keyboard) KC_NOCONVERT = 0x7B, // (Japanese keyboard) KC_YEN = 0x7D, // (Japanese keyboard) KC_ABNT_C2 = 0x7E, // Numpad . on Portugese (Brazilian) keyboards KC_NUMPADEQUALS= 0x8D, // = on numeric keypad (NEC PC98) KC_PREVTRACK = 0x90, // Previous Track (KC_CIRCUMFLEX on Japanese keyboard) KC_AT = 0x91, // (NEC PC98) KC_COLON = 0x92, // (NEC PC98) KC_UNDERLINE = 0x93, // (NEC PC98) KC_KANJI = 0x94, // (Japanese keyboard) KC_STOP = 0x95, // (NEC PC98) KC_AX = 0x96, // (Japan AX) KC_UNLABELED = 0x97, // (J3100) KC_NEXTTRACK = 0x99, // Next Track KC_NUMPADENTER = 0x9C, // Enter on numeric keypad KC_RCONTROL = 0x9D, KC_MUTE = 0xA0, // Mute KC_CALCULATOR = 0xA1, // Calculator KC_PLAYPAUSE = 0xA2, // Play / Pause KC_MEDIASTOP = 0xA4, // Media Stop KC_VOLUMEDOWN = 0xAE, // Volume - KC_VOLUMEUP = 0xB0, // Volume + KC_WEBHOME = 0xB2, // Web home KC_NUMPADCOMMA = 0xB3, // , on numeric keypad (NEC PC98) KC_DIVIDE = 0xB5, // / on numeric keypad KC_SYSRQ = 0xB7, KC_RMENU = 0xB8, // right Alt KC_PAUSE = 0xC5, // Pause KC_HOME = 0xC7, // Home on arrow keypad KC_UP = 0xC8, // UpArrow on arrow keypad KC_PGUP = 0xC9, // PgUp on arrow keypad KC_LEFT = 0xCB, // LeftArrow on arrow keypad KC_RIGHT = 0xCD, // RightArrow on arrow keypad KC_END = 0xCF, // End on arrow keypad KC_DOWN = 0xD0, // DownArrow on arrow keypad KC_PGDOWN = 0xD1, // PgDn on arrow keypad KC_INSERT = 0xD2, // Insert on arrow keypad KC_DELETE = 0xD3, // Delete on arrow keypad KC_LWIN = 0xDB, // Left Windows key KC_RWIN = 0xDC, // Right Windows key KC_APPS = 0xDD, // AppMenu key KC_POWER = 0xDE, // System Power KC_SLEEP = 0xDF, // System Sleep KC_WAKE = 0xE3, // System Wake KC_WEBSEARCH = 0xE5, // Web Search KC_WEBFAVORITES= 0xE6, // Web Favorites KC_WEBREFRESH = 0xE7, // Web Refresh KC_WEBSTOP = 0xE8, // Web Stop KC_WEBFORWARD = 0xE9, // Web Forward KC_WEBBACK = 0xEA, // Web Back KC_MYCOMPUTER = 0xEB, // My Computer KC_MAIL = 0xEC, // Mail KC_MEDIASELECT = 0xED // Media Select }; // BUFFER FORMAT,Формат буффера enum{ BUFFER_COLOR0 = 1, BUFFER_COLOR1 = 2, BUFFER_COLOR2 = 4, BUFFER_COLOR3 = 8 }; // TEXTURE FLAGS,Флаги для текстур. enum{ TEXTURE_32BIT = 1, TEXTURE_64BIT = 2, TEXTURE_128BIT = 4, TEXTURE_2D = 8, TEXTURE_CUBE = 16, TEXTURE_3D = 32, TEXTURE_ALPHA = 128, TEXTURE_MASKED = 256, TEXTURE_CLAMPU = 512, TEXTURE_CLAMPV = 1024, TEXTURE_D24BIT = 2048, TEXTURE_D32BIT = 4096, TEXTURE_RENDERABLE = 8192, TEXTURE_LINEAR = 16384, TEXTURE_ANISOTROPIC = 32768, TEXTURE_POINT = 65536, TEXTURE_DXT2 = 131072, TEXTURE_DXT5 = 262144, TEXTURE_32BITF = 524288 }; // cube map faces,флаги для установки текущего фейса в кубмапе для рендринга enum { CUBEMAP_FACE_POSITIVE_X = 0, CUBEMAP_FACE_NEGATIVE_X = 1, CUBEMAP_FACE_POSITIVE_Y = 2, CUBEMAP_FACE_NEGATIVE_Y = 3, CUBEMAP_FACE_POSITIVE_Z = 4, CUBEMAP_FACE_NEGATIVE_Z = 5, }; // Тип проекции для камеры enum{ PROJECTION_NONE = 0, PROJECTION_PERSPECTIVE = 1, PROJECTION_ORTHO = 2 }; // Flags returned GraphicsMode\GraphicsDepth functions,Флаги которые возвращают функци GraphicsMode\GraphicsDepth enum{ GRAPHICS_WINDOWED = 0, GRAPHICS_FULLSCREEN = 1, GRAPHICS_DEPTH16 = 16, GRAPHICS_DEPTH24 = 24, GRAPHICS_DEPTH32 = 32, }; // Shader constant types,Типы шейдерных констант. enum{ CONST_MATRIX = 1, CONST_VECTOR2 = 2, CONST_VECTOR3 = 3, CONST_VECTOR4 = 4, CONST_FLOAT = 5, CONST_INT = 6, CONST_BOOL = 7, }; enum{ CULL_NONE = 0, CULL_BOX = 1, CULL_SPHERE = 2, }; enum{ PICK_NONE = 0, PICK_WITCH_SPHERE = 1, PICK_WITCH_POLY = 2, PICK_WITCH_BOX = 3 }; enum{ ALIGN_X_AXIS = 1, ALIGN_Y_AXIS = 2, ALIGN_Z_AXIS = 3 }; enum{ MSG_TYPE_NONE = 0, MSG_TYPE_CONNECT = 1, MSG_TYPE_DISCONNECT = 2, MSG_TYPE_RECEIVE = 3 }; enum{ SPOT_LIGHT = 1, POINT_LIGHT = 2, DIRECTIONAL_LIGHT = 4 }; // TEXTURE FLAGS EX,EX типизация текстурных флагов #define TEXTURE_2D_STAND TEXTURE_2D #define TEXTURE_CUBE_STAND TEXTURE_32BIT|TEXTURE_CUBE #define TEXTURE_2D_RENDERABLE TEXTURE_2D|TEXTURE_RENDERABLE #define TEXTURE_CUBE_RENDERABLE TEXTURE_32BIT|TEXTURE_CUBE|TEXTURE_RENDERABLE // INITIALIZATION/SHUTDOWN,Инициализация/Деинициализация. API_DECL void API_CALL EngineInitialize(const char*log,const char* render,const char* physic,const char* sound); API_DECL void API_CALL EngineShutdown(); // GRAPHICS,Глобальные функции для работы с графикой. API_DECL void API_CALL SetWindow(ulong wnd,bool destroy); API_DECL void API_CALL Graphics3D(int width,int height,int depth,bool fs,bool vsync); API_DECL int API_CALL GraphicsWidth(); API_DECL int API_CALL GraphicsHeight(); API_DECL int API_CALL GraphicsDepth(); API_DECL int API_CALL GraphicsMode(); API_DECL bool API_CALL GraphicsFFP(); API_DECL void API_CALL AppTitle(const char* text); API_DECL const char* API_CALL GraphicsDriver(); API_DECL void API_CALL Flip(); API_DECL uint API_CALL TrisRendered(); API_DECL uint API_CALL VertsRendered(); API_DECL uint API_CALL DipCalls(); API_DECL void API_CALL Wireframe(bool state); API_DECL int API_CALL FPS(); // WORLD,Функции для работы с миром. API_DECL TWorld API_CALL CreateWorld(); API_DECL void API_CALL SetWorld(TWorld world); API_DECL TWorld API_CALL GetWorld(); API_DECL void API_CALL RenderWorld(); API_DECL void API_CALL UpdateWorld(float elapsed_time = 1); API_DECL void API_CALL ClearWorld(); API_DECL void API_CALL FreeWorld(TWorld world); // ENTITY,Интития(SceneNode). API_DECL void API_CALL PositionEntity(TEntity entity,float x,float y,float z,bool global=false); API_DECL void API_CALL TranslateEntity(TEntity entity,float x,float y,float z,bool global=false); API_DECL void API_CALL RotateEntity(TEntity entity,float x,float y,float z,bool global=false); API_DECL void API_CALL TurnEntity(TEntity entity,float x,float y,float z); API_DECL void API_CALL MoveEntity(TEntity entity,float x,float y,float z); API_DECL void API_CALL ScaleEntity(TEntity entity,float x,float y,float z,bool global=false); API_DECL float API_CALL EntityX(TEntity entity,bool global=false); API_DECL float API_CALL EntityY(TEntity entity,bool global=false); API_DECL float API_CALL EntityZ(TEntity entity,bool global=false); API_DECL float API_CALL EntityPitch(TEntity entity,bool global=false); API_DECL float API_CALL EntityYaw(TEntity entity,bool global=false); API_DECL float API_CALL EntityRoll(TEntity entity,bool global=false); API_DECL float API_CALL EntityWidth(TEntity entity,bool global = false); API_DECL float API_CALL EntityHeight(TEntity entity,bool global = false); API_DECL float API_CALL EntityDepth(TEntity entity,bool global = false); API_DECL float API_CALL EntityScaleX(TEntity entity); API_DECL float API_CALL EntityScaleY(TEntity entity); API_DECL float API_CALL EntityScaleZ(TEntity entity); API_DECL float API_CALL GetRadius(TEntity entity); API_DECL float API_CALL GetCenterX(TEntity entity,bool global = false); API_DECL float API_CALL GetCenterY(TEntity entity,bool global = false); API_DECL float API_CALL GetCenterZ(TEntity entity,bool global = false); API_DECL void API_CALL EntityParent(TEntity entity,TEntity parent,bool global=true); API_DECL TEntity API_CALL ParentEntity(TEntity entity); API_DECL void API_CALL EntityWorld(TEntity entity,Mat4 matrix); API_DECL Mat4 API_CALL WorldEntity(TEntity entity); API_DECL void API_CALL CaptureTransform(TEntity entity,bool global = false); API_DECL Mat4 API_CALL MatrixCaptured(); API_DECL Vec3 API_CALL PositionCaptured(); API_DECL Vec3 API_CALL RotationCaptured(); API_DECL Vec3 API_CALL ScaleCaptured(); API_DECL void API_CALL EntityToEntity(TEntity ent1,TEntity ent2,bool global = false); API_DECL void API_CALL EntityShader(TEntity entity,TShader shader); API_DECL void API_CALL EntityBrush(TEntity entity,TBrush brush); API_DECL void API_CALL EntityTexture(TEntity entity,TTexture texture,int frame,int chanel); API_DECL void API_CALL ShowEntity(TEntity entity); API_DECL void API_CALL HideEntity(TEntity entity); API_DECL void API_CALL PointEntity(TEntity entity,TEntity target,float roll = 0.1f); API_DECL void API_CALL NameEntity(TEntity entity,const char* name); API_DECL const char* API_CALL EntityName(TEntity entity); API_DECL uint API_CALL CountChildren(TEntity entity); API_DECL TEntity API_CALL GetChild(TEntity entity,uint index); API_DECL TEntity API_CALL FindChild(TEntity entity,const char* name); API_DECL void API_CALL EntityPickMode(TEntity entity,int mode); API_DECL void API_CALL EntityCullMode(TEntity entity,int mode); API_DECL void API_CALL TFormPoint(float x, float y, float z, TEntity src, TEntity dest); API_DECL void API_CALL TFormVector(float x, float y, float z, TEntity src, TEntity dest); API_DECL void API_CALL TFormNormal(float x, float y, float z, TEntity src, TEntity dest); API_DECL float API_CALL TFormX(); API_DECL float API_CALL TFormY(); API_DECL float API_CALL TFormZ(); API_DECL void API_CALL AlignToVector(TEntity ent, float vx, float vy, float vz, int axis, float rate); API_DECL float API_CALL VectorPitch(float x, float y, float z); API_DECL float API_CALL VectorYaw(float x, float y, float z); API_DECL float API_CALL DeltaPitch(TEntity src,TEntity dest); API_DECL float API_CALL DeltaYaw(TEntity src,TEntity dest); API_DECL TEntity API_CALL EntityPick(TEntity entity,float radius); API_DECL TEntity API_CALL LinePick(float x,float y,float z,float dx,float dy,float dz); // CAMERA,Камера API_DECL TCamera API_CALL CreateCamera(); API_DECL void API_CALL CameraViewport(TCamera camera,int x,int y,int width,int height); API_DECL void API_CALL CameraClsMode(TCamera camera,bool color,bool zbuffer); API_DECL void API_CALL CameraClsColor(TCamera camera,float r,float g,float b); API_DECL void API_CALL CameraRange(TCamera camera,float cnear,float cfar); API_DECL void API_CALL CameraZoom(TCamera camera,float zoom); API_DECL void API_CALL CameraProjMode(TCamera camera,int mode); API_DECL void API_CALL CameraProject(TCamera camera,float x,float y,float z); API_DECL void API_CALL CameraUnProject(TCamera camera,float x,float y,float z); API_DECL void API_CALL CameraFov(TCamera camera,float fov); API_DECL TEntity API_CALL CameraPick(TCamera camera,float x,float y); API_DECL float API_CALL ProjectedX(); API_DECL float API_CALL ProjectedY(); API_DECL float API_CALL ProjectedZ(); API_DECL float API_CALL PickedX(); API_DECL float API_CALL PickedY(); API_DECL float API_CALL PickedZ(); API_DECL float API_CALL PickedNX(); API_DECL float API_CALL PickedNY(); API_DECL float API_CALL PickedNZ(); API_DECL float API_CALL PickedU(); API_DECL float API_CALL PickedV(); API_DECL float API_CALL PickedTime(); API_DECL TEntity API_CALL PickedEntity(); API_DECL TSurface API_CALL PickedSurface(); API_DECL uint API_CALL PickedTriangle(); API_DECL float API_CALL PickedDistance(); API_DECL bool API_CALL EntityInView(TEntity entity,TCamera camera); API_DECL float API_CALL EntityDistance(TEntity entity,TEntity entity2); // PIVOT,Пустышка API_DECL TPivot API_CALL CreatePivot(); // MESH,Меш API_DECL TMesh API_CALL CreateMesh(); API_DECL TMesh API_CALL CreateCube(); API_DECL TMesh API_CALL CreateSphere(int segments,float radius); API_DECL TMesh API_CALL CreateCylinder(int segments); API_DECL TMesh API_CALL CreateCapsule(int segments,float radius,float length); API_DECL TMesh API_CALL CreatePlane(int sub_divs); API_DECL TMesh API_CALL LoadMesh(const char* fn); API_DECL void API_CALL FlipMesh(TMesh mesh); API_DECL void API_CALL PaintMesh(TMesh mesh,TBrush brush); API_DECL void API_CALL FitMesh(TMesh mesh,float x,float y,float z,float width,float height,float depth); API_DECL float API_CALL MeshWidth(TMesh mesh); API_DECL float API_CALL MeshHeight(TMesh mesh); API_DECL float API_CALL MeshDepth(TMesh mesh); API_DECL uint API_CALL CountSurfaces(TMesh mesh); API_DECL TSurface API_CALL GetSurface(TMesh mesh,uint index); API_DECL void API_CALL UpdateNormals(TMesh mesh); API_DECL void API_CALL UpdateTangents(TMesh mesh); API_DECL void API_CALL UpdateBounds(TMesh mesh); API_DECL void API_CALL EnableSoftwareSkin(); API_DECL void API_CALL DisableSoftwareSkin(); API_DECL uint API_CALL CountBones(TMesh mesh); API_DECL TEntity API_CALL GetBone(TMesh mesh,uint index); API_DECL bool API_CALL Skinned(TMesh mesh); API_DECL void API_CALL UpdateSkeleton(TMesh mesh); // BONE,Кость API_DECL TEntity API_CALL CreateBone(TMesh mesh); API_DECL TEntity API_CALL CreateBoneEx(TMesh mesh,TEntity parent); // TEXTURE,Текстура API_DECL TTexture API_CALL CreateTexture(uint width,uint height,int flags); API_DECL TTexture API_CALL LoadTexture(const char* fn,int flags); API_DECL uint API_CALL TextureWidth(TTexture texture); API_DECL uint API_CALL TextureHeight(TTexture texture); API_DECL uint API_CALL TextureFormat(TTexture texture); API_DECL void API_CALL TextureFilter(uint filter); API_DECL void API_CALL ClearTextureFilters(); API_DECL void API_CALL SetCubeFace(uint face); // BRUSH,Браш API_DECL TBrush API_CALL CreateBrush(); API_DECL void API_CALL BrushTexture(TBrush brush,TTexture texture,int ch); API_DECL void API_CALL BrushColor(TBrush brush,float r,float g,float b); API_DECL void API_CALL BrushAlpha(TBrush brush,float a); API_DECL void API_CALL BrushFX(TBrush brush,float fx); API_DECL void API_CALL BrushBlend(TBrush brush,float blend); // SURFACE,Поверхность API_DECL TSurface API_CALL CreateSurface(TMesh mesh,TBrush brush); API_DECL uint API_CALL AddVertex(TSurface surf,float x,float y,float z,float u = 1.0f,float v = 1.0f); API_DECL uint API_CALL AddTriangle(TSurface surf,uint v1,uint v2,uint v3); API_DECL void API_CALL VertexCoords(TSurface surf,uint index,float x,float y,float z); API_DECL void API_CALL VertexNormals(TSurface surf,uint index,float x,float y,float z); API_DECL void API_CALL VertexBinormals(TSurface surf,uint index,float x,float y,float z); API_DECL void API_CALL VertexTangents(TSurface surf,uint index,float x,float y,float z); API_DECL void API_CALL VertexTexCoords(TSurface surf,uint index,float x,float y); API_DECL void API_CALL VertexBones(TSurface surf,uint index,uint bone_index1,uint bone_index2,uint bone_index3,uint bone_index4); API_DECL void API_CALL VertexWeights(TSurface surf,uint index,float weight1,float weight2,float weight3,float weight4); API_DECL void API_CALL VertexColor(TSurface surf,uint index,float r,float g,float b,float a); API_DECL float API_CALL VertexX(TSurface surf,uint index); API_DECL float API_CALL VertexY(TSurface surf,uint index); API_DECL float API_CALL VertexZ(TSurface surf,uint index); API_DECL float API_CALL VertexNX(TSurface surf,uint index); API_DECL float API_CALL VertexNY(TSurface surf,uint index); API_DECL float API_CALL VertexNZ(TSurface surf,uint index); API_DECL float API_CALL VertexTX(TSurface surf,uint index); API_DECL float API_CALL VertexTY(TSurface surf,uint index); API_DECL float API_CALL VertexTZ(TSurface surf,uint index); API_DECL float API_CALL VertexBX(TSurface surf,uint index); API_DECL float API_CALL VertexBY(TSurface surf,uint index); API_DECL float API_CALL VertexBZ(TSurface surf,uint index); API_DECL float API_CALL VertexU(TSurface surf,uint index); API_DECL float API_CALL VertexV(TSurface surf,uint index); API_DECL float API_CALL VertexRed(TSurface surf,uint index); API_DECL float API_CALL VertexGreen(TSurface surf,uint index); API_DECL float API_CALL VertexBlue(TSurface surf,uint index); API_DECL float API_CALL VertexAlpha(TSurface surf,uint index); API_DECL uint API_CALL TriangleVertex(TSurface surf,uint index,uint corner); API_DECL void API_CALL VertexTriangle(TSurface surf,uint index,uint corner,uint vertex); API_DECL uint API_CALL VertexBoneIndex(TSurface surf,uint index,uint bone_index); API_DECL float API_CALL VertexBoneWeight(TSurface surf,uint index,uint bone_index); API_DECL uint API_CALL CountVertices(TSurface surf); API_DECL uint API_CALL CountTriangles(TSurface surf); API_DECL void API_CALL PaintSurface(TSurface surf,TBrush brush); API_DECL void API_CALL ClearSurface(TSurface,bool clearVert=true,bool clearTri=true); API_DECL TSurface API_CALL CopySurface(TSurface surf); API_DECL void API_CALL TransformSurface(TSurface surf,Mat4 m); API_DECL void API_CALL AddQuad(TSurface surf,float x,float y,float z,float size); // ANIMATION,Анимация API_DECL void API_CALL SetAnimTime( TEntity ent ,float time,int seq ); API_DECL void API_CALL Animate( TEntity ent ,int mode=1,float speed=1.0f,int seq=0,float trans=0.0f ); API_DECL void API_CALL SetAnimKey( TEntity ent ,int frame,int pos_key=1,int rot_key=1,int scl_key=1 ); API_DECL int API_CALL ExtractAnimSeq( TEntity ent ,int first,int last,int seq ); API_DECL int API_CALL AddAnimSeq( TEntity ent ,int length ); API_DECL int API_CALL AnimSeq( TEntity ent ); API_DECL float API_CALL AnimTime( TEntity ent ); API_DECL int API_CALL AnimLength( TEntity ent ); API_DECL bool API_CALL Animating( TEntity ent ); // LIGHT,Источник света // BUFFER,Буффера рендергинга API_DECL TBuffer API_CALL CreateBuffer(int width,int height,int flags); API_DECL void API_CALL SetBufferChanel(TBuffer buffer,int chanel,int flags); API_DECL void API_CALL SetBuffer(TBuffer buffer); API_DECL TBuffer API_CALL GetBuffer(); API_DECL void API_CALL SetBufferChanelEx(TBuffer buffer,TTexture texture,int chanel); API_DECL TTexture API_CALL GetBufferChanel(TBuffer buffer,int chanel); API_DECL TBuffer API_CALL BackBuffer(); API_DECL void API_CALL LockBuffer(TBuffer buffer); API_DECL void API_CALL UnlockBuffer(); API_DECL dword API_CALL ReadPixelFast(int x,int y); API_DECL void API_CALL WritePixelFast(int x,int y,dword rgb); API_DECL void API_CALL FreeBuffer(TBuffer buffer); // TERRAIN,Ландшафт // SHADER,Шейдер API_DECL TShader API_CALL CreateShader(const char* defines,const char* src); API_DECL TShader API_CALL LoadShader(const char* defines,const char* fn); API_DECL void API_CALL ShaderDefineConstant(TShader shader,const char* nameInCb,const char* shader_semantic,int type_const); API_DECL void API_CALL SetShader(TShader shader,int pass,const char* technique,bool tech); // Global set shader // CONSTANT BUFFER,Буффер констант API_DECL void API_CALL SetBoolConstant(const char* name,bool v); API_DECL void API_CALL SetFloatConstant(const char* name,float v); API_DECL void API_CALL SetIntConstant(const char* name,int v); API_DECL void API_CALL SetMatrixConstant(const char* name,const Mat4& v); API_DECL void API_CALL SetVector2Constant(const char* name,const Vec2& v); API_DECL void API_CALL SetVector3Constant(const char* name,const Vec3& v); API_DECL void API_CALL SetVector4Constant(const char* name,const Vec4& v); API_DECL bool API_CALL GetBoolConstant(const char* name); API_DECL float API_CALL GetFloatConstant(const char* name); API_DECL int API_CALL GetIntConstant(const char* name); API_DECL Mat4 API_CALL GetMatrixConstant(const char* name); API_DECL Vec2 API_CALL GetVector2Constant(const char* name); API_DECL Vec3 API_CALL GetVector3Constant(const char* name); API_DECL Vec4 API_CALL GetVector4Constant(const char* name); // IMAGE,Картинка,юзать только нахъ после всех RenderWorld'вызовов API_DECL void API_CALL DrawImageFS(TTexture image); API_DECL void API_CALL DrawBrushFS(TBrush brush); API_DECL void API_CALL DrawImage(TTexture image,float x,float y); API_DECL void API_CALL DrawBrush(TBrush brush,float x,float y); API_DECL void API_CALL DrawImageEx(TTexture image,float x,float y,float angle,float sx,float sy); // INPUT,Ввод API_DECL bool API_CALL KeyDown(char kc); API_DECL bool API_CALL KeyHit(char kc); API_DECL bool API_CALL KeyRelease(char kc); API_DECL bool API_CALL MouseDown(int kc); API_DECL bool API_CALL MouseHit(int kc); API_DECL bool API_CALL MouseRelease(int kc); API_DECL float API_CALL MouseX(); API_DECL float API_CALL MouseY(); API_DECL float API_CALL MouseZ(); API_DECL float API_CALL MouseXSpeed(); API_DECL float API_CALL MouseYSpeed(); API_DECL float API_CALL MouseZSpeed(); API_DECL void API_CALL MouseMove(float x,float y); API_DECL bool API_CALL WaitKey(); API_DECL char API_CALL GetKey(); // FONT,Шрифты API_DECL TFont API_CALL LoadFont(const char* name,uint height,bool bold); API_DECL void API_CALL SetFont(TFont font); API_DECL TFont API_CALL GetFont(); API_DECL void API_CALL Text(float x,float y,const char* text,bool center=false); // COLOR,цвет API_DECL void API_CALL Color(float r,float g,float b,float a); // FILE Function's,Функии для работы с файлами API_DECL TFile API_CALL OpenFileWrite(const char* fn); API_DECL TFile API_CALL OpenFileRead(const char* fn); API_DECL void API_CALL CloseFile(TFile f); API_DECL void API_CALL WriteInt(TFile f,int v); API_DECL void API_CALL WriteUInt(TFile f,uint v); API_DECL void API_CALL WriteFloat(TFile f,float v); API_DECL void API_CALL WriteString(TFile f,const char* s); API_DECL void API_CALL WriteByte(TFile f,unsigned char b); API_DECL void API_CALL WriteLong(TFile f,long l); API_DECL void API_CALL WriteULong(TFile f,ulong ul); API_DECL void API_CALL WriteBool(TFile f,bool b); API_DECL int API_CALL ReadInt(TFile f); API_DECL uint API_CALL ReadUInt(TFile f); API_DECL float API_CALL ReadFloat(TFile f); API_DECL const char* API_CALL ReadString(TFile f); API_DECL unsigned char API_CALL ReadByte(TFile f); API_DECL long API_CALL ReadLong(TFile f); API_DECL ulong API_CALL ReadULong(TFile f); API_DECL bool API_CALL ReadBool(TFile f); API_DECL void API_CALL SeekFile(TFile f,long pos); // SOUND Function's,Функции для работы с звуком. API_DECL TListener API_CALL CreateListener( float rolloff_factor = 1.0f,float doppler_scale = 1.0f,float distance_scale = 1.0f ); API_DECL TSound API_CALL LoadSound(const char* fn,bool stream = true); API_DECL TSound API_CALL Load3DSound(const char* fn,bool stream = true); API_DECL void API_CALL EmitSound(TSound sound,TEntity entity); API_DECL void API_CALL LoopSound(TSound sound); API_DECL void API_CALL SoundPitch(TSound sound,int pitch); API_DECL void API_CALL SoundVolume(TSound sound,float vol); API_DECL void API_CALL SoundMaxGain(TSound sound,float gain); API_DECL void API_CALL SoundMinGain(TSound sound,float gain); API_DECL void API_CALL SoundOuterConeGain(TSound sound,float gain); API_DECL void API_CALL SoundOuterConeAngle(TSound sound,float angle); API_DECL void API_CALL SoundInnerConeGain(TSound sound,float gain); API_DECL void API_CALL SoundPan(TSound sound,float pan); API_DECL void API_CALL SoundPlay(TSound sound); API_DECL void API_CALL SoundStop(TSound sound); API_DECL void API_CALL SoundPause(TSound sound); API_DECL void API_CALL SoundResume(TSound sound); API_DECL bool API_CALL SoundPlaying(TSound sound); // Network(LAN\NET),Работа с сетью NET\LAN API_DECL bool API_CALL InitializeNetwork(); API_DECL void API_CALL ShutdownNetwork(); API_DECL TServer API_CALL CreateServer(const char* address,int port,int max_clients); API_DECL TClient API_CALL CreateClient(const char* name,int port,int rate); API_DECL void API_CALL SetClientRate(TClient client,int rate); API_DECL void API_CALL SetServerRate(TServer client,int rate); API_DECL void API_CALL ConnectServer(TServer server,const char* address); API_DECL void API_CALL DisconnectServer(TServer serv); API_DECL void API_CALL ConnectClient(TClient client,const char* address); API_DECL void API_CALL DisconnectClient(TClient client); API_DECL void API_CALL SendClientPacket(TClient client,uint chanel,uint size,void* data); API_DECL void API_CALL SendServerPacket(TServer client,uint chanel,uint size,void* data); API_DECL bool API_CALL RecvServerMsg(TServer server,int milsecs); API_DECL bool API_CALL RecvClientMsg(TClient client,int milsecs); API_DECL uint API_CALL ClientMsgType(TClient client); API_DECL void* API_CALL ClientPacket(TClient client); API_DECL uint API_CALL ServerMsgType(TServer server); API_DECL void* API_CALL ServerPacket(TServer server); API_DECL void API_CALL UpdateServer(TServer server); API_DECL void API_CALL UpdateClient(TClient client); // Quake 2 MD2 Model API_DECL TMD2 API_CALL LoadMD2(const char* fn); API_DECL void API_CALL MD2LoadSkin(TMD2 md2,const char* skin); API_DECL void API_CALL AnimateMD2(TMD2 md2,short mode); API_DECL void API_CALL SetAnimFrame(TMD2 md2,int start,int end); API_DECL void API_CALL SetAnimSpeed(TMD2 md2,float speed); API_DECL float API_CALL MD2AnimTime(TMD2 md2); API_DECL int API_CALL MD2AnimLength(TMD2 md2); API_DECL bool API_CALL MD2Animating(TMD2 md2); // SPRITE,Спрайт API_DECL TSprite API_CALL CreateSprite(); API_DECL TSprite API_CALL LoadSprite(const char* fn); API_DECL void API_CALL SpriteViewMode(TSprite sprite,int mode); API_DECL void API_CALL HandleSprite(TSprite sprite,float x,float y); // Collisions,Коллизии API_DECL void API_CALL Collisions(int src_type,int dest_type,int method,int responce); API_DECL void API_CALL EntityType(TEntity ent,int type); API_DECL TEntity API_CALL EntityCollided(TEntity ent,int type); API_DECL uint API_CALL CountContacts(); API_DECL uint API_CALL CountEntityContacts(TEntity ent); API_DECL TContact API_CALL GetEntityContact(TEntity ent,int id); API_DECL TContact API_CALL GetContact(uint id); API_DECL float API_CALL ContactX(TContact c); API_DECL float API_CALL ContactY(TContact c); API_DECL float API_CALL ContactZ(TContact c); API_DECL float API_CALL ContactNX(TContact c); API_DECL float API_CALL ContactNY(TContact c); API_DECL float API_CALL ContactNZ(TContact c); API_DECL float API_CALL ContactDepth(TContact c); API_DECL float API_CALL ContactTime(TContact c); API_DECL TEntity API_CALL ContactEntity(TContact c,int index); // [0,1] 0 - Src,1- Dest API_DECL TSurface API_CALL ContactSurface(TContact c,int index); // [0,1] 0 - Src, 1- Dest API_DECL uint API_CALL ContactTriangle(TContact c,int index); // [0,1] 0 - Src, 1- Dest API_DECL uint API_CALL ContactType(TContact c,int index); // [0,1] 0 - Src,1- Dest // Particle System,Партиклы API_DECL TEmiter API_CALL CreateSpriteEmiter(); API_DECL void API_CALL AddParticle(TEmiter emiter,const char* texture); API_DECL uint API_CALL CountParticles(TEmiter emiter); API_DECL void API_CALL EmiterForce(TEmiter emiter,float fx,float fy,float fz); API_DECL void API_CALL FreeEmiter(TEmiter emiter); // Light,Источник света API_DECL TLight API_CALL CreateLight(int type); API_DECL void API_CALL LightRange(TLight lit,float range); API_DECL float API_CALL RangeLight(TLight lit); API_DECL void API_CALL LightColor(TLight lit,float r,float g,float b); API_DECL Vec3 API_CALL ColorLight(TLight lit); API_DECL void API_CALL LightConeAngles(TLight lit,float inner,float outer); API_DECL Vec2 API_CALL ConeAnglesLight(TLight lit); API_DECL void API_CALL LightSpecularColor(TLight lit,float r,float g,float b); API_DECL Vec3 API_CALL SpecularColorLight(TLight lit); API_DECL void API_CALL LightFallOff(TLight lit,float fo); API_DECL float API_CALL FallOffLight(TLight lit); API_DECL Vec3 API_CALL LightDirection(TLight lit); API_DECL uint API_CALL CountLights(); API_DECL TLight API_CALL GetLight(uint index); // Deferred-Shading,Отложеное затинение API_DECL void API_CALL DeferredInitialize(); API_DECL TBuffer API_CALL GetGBuffer(); API_DECL TTexture API_CALL GetAlbedoMap(); API_DECL TTexture API_CALL GetPositionMap(); API_DECL TTexture API_CALL GetNormalMap(); API_DECL void API_CALL RenderLights();