PDA

View Full Version : DivGL 3D Engine



djoker
16-12-2006, 04:19 PM
Hi ppl this is my biggest project ,im working about 4 months :roll:




features :

3d Mesh Builder with collision,

grass ,billboard,decals,lensflare,skydome,skyboxe,skypla ne,waterplane,

Tile Terrain and LandScape,

models:
milkshape,md3,md2,3ds,smd,

world:
quake bsp and DelgineMaps with collision


demo
http://www.keepmyfile.com/download/586e6a1277301

http://www.keepmyfile.com/thumb/1166278218c4b77b.gif (http://www.keepmyfile.com/image/c4b77b1277339) http://www.keepmyfile.com/thumb/116627821905fb27.gif (http://www.keepmyfile.com/image/05fb271277340) http://www.keepmyfile.com/thumb/1166278220d7b601.gif (http://www.keepmyfile.com/image/d7b6011277341) http://www.keepmyfile.com/thumb/1166278221ed9b0c.gif (http://www.keepmyfile.com/image/ed9b0c1277342) http://www.keepmyfile.com/thumb/1166278224a1aac7.gif (http://www.keepmyfile.com/image/a1aac71277343) http://www.keepmyfile.com/thumb/1166278224d062be.gif (http://www.keepmyfile.com/image/d062be1277344) http://www.keepmyfile.com/thumb/11662782254488f3.gif (http://www.keepmyfile.com/image/4488f31277345) http://www.keepmyfile.com/thumb/11662782253af2ba.gif (http://www.keepmyfile.com/image/3af2ba1277346) http://www.keepmyfile.com/thumb/1166278226787c27.gif (http://www.keepmyfile.com/image/787c271277347)




unit divGL;

interface
uses
windows,classes,sysutils,opengl;


const
Div_PI: Single = 3.141592654;

M_PI = 3.1415926535897932384626433832795; // matches value in gcc v2 math.h
M_TWO_PI = 6.283185307179586476925286766559;
M_180_PI = 57.295779513082320876798154814105;
M_PI_180 = 0.017453292519943295769236907684886;

const
cPIdiv180 : Single = 0.017453292;
c180divPI : Single = 57.29577951;
c2PI : Single = 6.283185307;
cPIdiv2 : Single = 1.5707963268;
cInv2PI : Single = 1 / 6.283185307;
cInv360 : Single = 1 / 360;
c180 : Single = 180;
c360 : Single = 360;





//************************************************** ********************
const
VK_W=87;
VK_S=83;
VK_A=65;
VK_D=68;
VK_Q=81;
VK_E=69;


type
CAMERA_STYLE=(FREE_6DOF = 0, FPS_STYLE = 1);
TBlendingMode = (bmOpaque, bmTransparency, bmAdditive, bmAlphaTest50, bmAlphaTest100, bmModulate);
TFaceCulling = (fcBufferDefault, fcCull, fcNoCull);
TTextureFilter = (txLinear,txBilinear,txTrilinear );
TTextureWrap = (twRepeat,twClamp );




DivText=record
texture:integer;
Width,Height : integer;
rWidth,rHeight : integer;
end;

//************************************************** ********************

PathRec=record
aFirstTime : Integer;
Posx:single;
PosY:single;
PosZ:single;
aYaw : Single;
aPitch : Single;
aRoll : Single;
end;

//************************************************** ********************

type
THeightMapFormat=(HRaw8Bit,HRaw16Bit,HRaw32Bit,HBM P);
TTileFlip = (FZero, F80, F180, F270);

TColor4f =array[0..3]of single;
TColor4=record
red,green,blue,alpha:single;
end;
TColor3=record
red,green,blue:single;
end;



TD3DVector=record
x,y,z:single;
end ;

DivRay=Record
RBegin,
RDir,
REnd:TD3DVector;

End;

TD3DMatrix = packed record
case Integer of
0 : (_11, _12, _13, _14: single;
_21, _22, _23, _24: single;
_31, _32, _33, _34: single;
_41, _42, _43, _44: single);
// 1 : (M : TMatrixf4);
end;
TAVector3f = array[0..2] of single;

TOBoundingBox = Array [0..7] of TAVector3f;

TAABB=record
min,max:TAVector3f;
end;

TColideSystem=record
position,View:TD3DVector;
end;



TBSphere=record
Center:TAVector3f;
Radius:single;
end;


////************************************************** **************************
Type
TMaterial = Record
Ambient : TColor4f;
Diffuse : TColor4f;
Specular : TColor4f;
Emission : TColor4f;
Shininess: Single;
end;


const

MatBrass=0 ;
MatBronze=1 ;
MatPolished_Bronze=2 ;
MatChrome=3 ;
MatCopper=4 ;
MatPolished_Copper=5 ;
MatGold=6 ;
MatPolished_Gold=7 ;
MatPewter=8 ;
MatSilver=9 ;
MatPolished_Silver=10 ;
MatEmerald=11 ;
MatJade= 12;
MatObsidian=13 ;
MatPearl=14 ;
MatRuby=15 ;
MatTurquoise=16 ;
MatBlack_Plastic=17 ;
MatBlack_Rubber=18 ;
MatRed=19;
MatGreen=20;
MatBlue=21;
MatYellow=22;
MatAqua=23;
MatFuchsia=24;
MatWhite=25;


clrTransparent : TColor4f = (0, 0, 0, 0);
clrBlack : TColor4f = (0, 0, 0, 1);
clrWhite : TColor4f = (1, 1, 1, 1);
clrDimGray : TColor4f = (0.329412, 0.329412, 0.329412, 1);
clrGray : TColor4f = (0.752941, 0.752941, 0.752941, 1);
clrLightGray : TColor4f = (0.658824, 0.658824, 0.658824, 1);
clrAquamarine : TColor4f = (0.439216, 0.858824, 0.576471, 1);
clrBlueViolet : TColor4f = (0.62352, 0.372549, 0.623529, 1);
clrBrown : TColor4f = (0.647059, 0.164706, 0.164706, 1);
clrCadetBlue : TColor4f = (0.372549, 0.623529, 0.623529, 1);
clrGold : TColor4f = (0.8, 0.498039, 0.196078, 1);
clrMaroon : TColor4f = (0.556863, 0.137255, 0.419608, 1);
clrNavy : TColor4f = (0.137255, 0.137255, 0.556863, 1);
clrPink : TColor4f = (0.737255, 0.560784, 0.560784, 1);
clrSilver : TColor4f = (0.90, 0.91, 0.98, 1);
clrGreen : TColor4f = (0, 0.5, 0, 1);
clrOlive : TColor4f = (0.5, 0.5, 1, 1);
clrPurple : TColor4f = (1, 0, 1, 1);
clrTeal : TColor4f = (0, 0.5, 0.5, 1);
clrRed : TColor4f = (1, 0, 0, 1);
clrLime : TColor4f = (0, 1, 0, 1);
clrYellow : TColor4f = (1, 1, 0, 1);
clrBlue : TColor4f = (0, 0, 1, 1);
clrFuchsia : TColor4f = (1, 0, 1, 1);
clrAqua : TColor4f = (0, 1, 1, 1);


//md3 model animations
const BOTH_DEATH1 = 0;
BOTH_DEAD1 = 1;
BOTH_DEATH2 = 2;
BOTH_DEAD2 = 3;
BOTH_DEATH3 = 4;
BOTH_DEAD3 = 5;

TORSO_GESTURE = 6;
TORSO_ATTACK = 7;
TORSO_ATTACK2 = 8;
TORSO_DROP = 9;
TORSO_RAISE = 10;
TORSO_STAND = 11;
TORSO_STAND2 = 12;

LEGS_WALKCR = 13;
LEGS_WALK = 14;
LEGS_RUN = 15;
LEGS_BACK = 16;
LEGS_SWIM = 17;
LEGS_JUMP = 18;
LEGS_LAND = 19;
LEGS_JUMPB = 20;
LEGS_LANDB = 21;
LEGS_IDLE = 22;
LEGS_IDLECR = 23;
LEGS_TURN = 24;



type
TDiv_WindowResize=procedure (Width, Height : Integer);
TDiv_WindowRender=procedure (timeDelta:single);
TDiv_WindowMsg= function (uMsg: LongWord; wParam: WPARAM; lParam: LPARAM): Boolean;








//*******************Window************************* *****************
function Div_WindowCreate(TITLE:pchar;x,y,Width, Height,PixelDepth : Integer; Fullscreen : Boolean):HWND; stdcall;external 'DivGL.dll';
procedure Div_WindowClose;stdcall;external 'DivGL.dll';
function Div_WindowGetEvents:integer;stdcall;external 'DivGL.dll';
Function Div_WindowSetCaption( lpString: PChar): BOOL; stdcall;external 'DivGL.dll';
procedure Div_WindowOnResize(evento:TDiv_WindowResize);stdca ll;external 'DivGL.dll';
procedure Div_WindowOnRender(evento:TDiv_WindowRender);stdca ll;external 'DivGL.dll';
procedure Div_WindowOnMsg(evento:TDiv_WindowMsg);stdcall;ext ernal 'DivGL.dll';

function Div_WindowLoop:integer;stdcall;external 'DivGL.dll';
Function Div_WindowGetHDC:HDC;stdcall;external 'DivGL.dll';
function Div_WindowProcess:integer;stdcall;external 'DivGL.dll';
Function Div_WindowGetHandle: HWND;stdcall;external 'DivGL.dll';
function Div_WindowMouseX:integer;stdcall;external 'DivGL.dll';
function Div_WindowMouseY:integer;stdcall;external 'DivGL.dll';

//************************************************** *****************
//*******************RENDER************************* *****************
//************************************************** *****************
//procedure DivRender_Init;stdcall;external 'DivGL.dll';
procedure DivRender_Free;stdcall;external 'DivGL.dll';
function DivRender_Init(VSync:Boolean;Bpp:integer;handle:HW ND):boolean;stdcall;external 'DivGL.dll';
procedure DivRender_Flip;stdcall;external 'DivGL.dll';
procedure DivRender_Setdc(dc:hdc);stdcall;external 'DivGL.dll';
procedure DivRender_Clear(r,g,b:single);stdcall;external 'DivGL.dll';


procedure DivRender_SetPerspective(fovy, aspect, zNear, zFar:single);stdcall;external 'DivGL.dll';
procedure DivRender_SetViewPort(x,y,w,h:integer);stdcall;ext ernal 'DivGL.dll';
procedure DivRender_SetFov(fov:single);stdcall;external 'DivGL.dll';
//************************************************** *****************
//*****************STATES*************************** ******************
procedure DivRender_SetFlatShade;stdcall;external 'DivGL.dll';
procedure DivRender_SetSmoothShade;stdcall;external 'DivGL.dll';
procedure DivRender_SetFillMode;stdcall;external 'DivGL.dll';
procedure DivRender_SetLights(state : boolean);stdcall;external 'DivGL.dll';
procedure DivRender_EnableTexture(state : boolean);stdcall;external 'DivGL.dll';
procedure DivRender_SetCull(state : boolean);stdcall;external 'DivGL.dll';
procedure DivRender_SetWireMode;stdcall;external 'DivGL.dll';
procedure DivRender_DisableSphereMapping; stdcall;external 'DivGL.dll';
procedure DivRender_EnableSphereMapping; stdcall;external 'DivGL.dll';
Procedure DivRender_SwitchView(Ortho: boolean);stdcall;external 'DivGL.dll';
procedure DivRender_SetBlend(FBlendingMode:TBlendingMode);st dcall;external 'DivGL.dll';
Procedure DivRender_Enable2D(Ortho: boolean);stdcall;external 'DivGL.dll';

function DivRender_PrintScreen(Folder : pchar ) : integer; stdcall;external 'DivGL.dll';

function DivRender_GetFPS:integer;stdcall;external 'DivGL.dll';
function DivRender_GetTicks:single;stdcall;external 'DivGL.dll';


function DivRender_GetRay(var RayBegin,RayEnd: TD3DVector): TD3DVector;stdcall;external 'DivGL.dll';
function DivRender_Vect_2D_To_3D(x,y:integer;Dist:Single=0. 965): DivRay;stdcall;external 'DivGL.dll';
function DivRender_PosGetRay(x,y:integer;var RayBegin,RayEnd:TD3DVector):TD3DVector;stdcall;ext ernal 'DivGL.dll';

procedure DivRender_SetFog(state : boolean);stdcall;external 'DivGL.dll';
procedure DivRender_SetupFog(Color : TColor4f;Fog_Density:single; Fog_Start, Fog_End : single); stdcall;external 'DivGL.dll';

Procedure DivRender_EnableDebug(Value: boolean);stdcall;external 'DivGL.dll';

procedure DivRender_Print(x,y:integer;Text:pchar;Color:TColo r4f);stdcall;external 'DivGL.dll';

//************************************************** *****************
//************************************************** *****************



//************************************************** *****************
//*****************TEXT***************************** *****************
//************************************************** *****************

function Div_Font_Init(name:pchar;size:integer;Bold:boolean ):integer;stdcall;external 'DivGL.dll';
procedure Div_Font_Print(Index:integer; pX,pY : Integer; pText : pchar;Color:TColor4f);stdcall; external 'DivGL.dll';

function Div_FontText_Init(texture:string):integer;stdcall; external 'DivGL.dll';
procedure Div_FontText_Print(Index:integer;x, y: single; text: pchar);stdcall;external 'DivGL.dll';
procedure Div_FontText_CenterPrint(x, y, z: integer; UPCasse:boolean; text: pchar);stdcall;external 'DivGL.dll';



//************************************************** *****************
//************************************************** *****************
//************************************************** *****************
////////////////////////////////////////////////////////////////////////////////

procedure DivCamera_Init(width,Height:integer;style:CAMERA_S TYLE);stdcall;external 'DivGL.dll';
procedure DivCamera_SetPosition(x,y,z:single);stdcall;extern al 'DivGL.dll';
function DivCamera_GetPosition:TD3DVector;stdcall;external 'DivGL.dll';
function DivCamera_GetDirection:TD3DVector;stdcall;external 'DivGL.dll';
procedure DivCamera_SetDirection(x,y,z:single);stdcall;exter nal 'DivGL.dll';
procedure DivCamera_LookAt(x,y,z:single);stdcall;external 'DivGL.dll';
procedure DivCamera_SetY(Value:single);stdcall;external 'DivGL.dll';
procedure DivCamera_SetX(Value:single);stdcall;external 'DivGL.dll';
procedure DivCamera_SetZ(Value:single);stdcall;external 'DivGL.dll';
procedure DivCamera_Update;stdcall;external 'DivGL.dll';
procedure DivCamera_MouseLook(MouseSpeed:Single = 0.001;InvertMouse:boolean=false;CenterMousePos: Boolean = true);stdcall;external 'DivGL.dll';

procedure DivCamera_TurnRight(AngleAmount:Single);stdcall;ex ternal 'DivGL.dll';
procedure DivCamera_TurnLeft( AngleAmount:Single); stdcall;external 'DivGL.dll';
procedure DivCamera_TurnDown(AngleAmount:Single); stdcall;external 'DivGL.dll';
procedure DivCamera_TurnUp(AngleAmount:Single);stdcall;exter nal 'DivGL.dll';
procedure DivCamera_MoveBackward(StepAmount:Single); stdcall;external 'DivGL.dll';
procedure DivCamera_MoveForward(StepAmount:Single);stdcall;e xternal 'DivGL.dll';
procedure DivCamera_StrafeDown(StepAmount:Single);stdcall;ex ternal 'DivGL.dll';
procedure DivCamera_StrafeUp(StepAmount:Single);stdcall;exte rnal 'DivGL.dll';
procedure DivCamera_StrafeLeft(StepAmount:Single);stdcall;ex ternal 'DivGL.dll';
procedure DivCamera_StrafeRight(StepAmount:Single);stdcall; external 'DivGL.dll';
procedure DivCamera_RollLeft( AngleAmount : Single);stdcall;external 'DivGL.dll';
procedure DivCamera_RollRight( AngleAmount : Single);stdcall;external 'DivGL.dll';
procedure DivCamera_Roll( AngleAmount : Single);stdcall;external 'DivGL.dll';
procedure DivCamera_RotateX(DegreeAngle:Single);stdcall;exte rnal 'DivGL.dll';
procedure DivCamera_RotateY(DegreeAngle:Single);stdcall;exte rnal 'DivGL.dll';
procedure DivCamera_RotateZ(DegreeAngle:Single);stdcall;exte rnal 'DivGL.dll';


function DivCamera_GetX:single;
function DivCamera_GetY:single;
function DivCamera_GetZ:single;
function DivCamera_GetRX:single;
function DivCamera_GetRY:single;
function DivCamera_GetRZ:single;


//************************************************** *****************
//*****************WAYPOINTS************************ *************
//************************************************** *****************


Function DivWayPoint_Init:integer;stdcall;external 'DivGL.dll';
procedure DivWayPoint_Free(pathIndex:integer);stdcall;extern al 'DivGL.dll';
procedure DivWayPoint_AddPath(pathIndex:integer;Time,PosX,Po sY,PosZ,DirX,DirY,DirZ:single);stdcall;external 'DivGL.dll';
procedure DivWayPoint_Render(pathIndex:integer;Visible:boole an);stdcall;external 'DivGL.dll';
procedure DivWayPoint_GetPath(pathIndex:integer;ElapsedTime : Integer;var aFirstTime : Integer;var Posx:single;var PosY:single;var PosZ:single;var aYaw : Single; var aPitch : Single; var aRoll : Single);stdcall;external 'DivGL.dll';
procedure DivWayPoint_SetPathToCamera(pathIndex:integer;Elap sedTime : Integer;CamIndex:integer;FreeLook:boolean);stdcall ;external 'DivGL.dll';

//************************************************** *****************
//*****************DIRECT3D DRAW*************************************
//************************************************** *****************
Procedure Div3DDraw_Grid(num_x, num_y, size_x, size_y : single; r,g,b:single; Arrows : Boolean);stdcall;external 'DivGL.dll';
procedure Div3DDraw_Plane(width,Height,XTiles,YTiles:integer ;XOffset,YOffset,XScope,YScope:Single;TileTextured ,NoZWrite:boolean);stdcall;external 'DivGL.dll';
procedure Div3DDraw_Sphere(x, y, z:single;radius:double;slices, stacks:integer;wire:boolean=false);stdcall;externa l 'DivGL.dll';
procedure Div3DDraw_Cone(x, y, z, Baseradius, Height: single;slices, stacks: integer);stdcall;external 'DivGL.dll';
procedure Div3DDraw_Disk (x,y,z, innerradius,outerradius: single;slices, loops: integer);stdcall;external 'DivGL.dll';
procedure Div3DDraw_Cube(x,y,z,width,height,deapth: single);stdcall;external 'DivGL.dll';
procedure Div3DDraw_Pyramid(x, y, z, Width, Deapth, Height: single);stdcall;external 'DivGL.dll';
procedure DivD3Draw_SplashScreen(TextureFile : PChar); stdcall;external 'DivGL.dll';
procedure DivD3Draw_SplashScreenRect(Px,Py:single;R:trect;Te xtureFile : PChar); stdcall;external 'DivGL.dll';
Procedure Div3DDraw_Billboard(x, y, z, width, height: glFloat;VFlip:boolean);stdcall;external 'DivGL.dll';

//************************************************** *****************
//**********************DIVPACK********************* *****************
//************************************************** *****************


function Div_UnZip_Load(filename,Password:string):integer;s tdcall;external 'DivGL.dll';
procedure Div_UnZip_AddFile(PackIndex:integer;Dir,Files:stri ng);stdcall;external 'DivGL.dll';
procedure Div_UnZip_Close(packindex:integer);stdcall;externa l 'DivGL.dll';
procedure Div_UnZip_ExtractFiles(packindex:integer;ToDir:str ing);stdcall;external 'DivGL.dll';
procedure Div_UnZip_ExtractFile(packindex:integer;FileName,T oDir:string);stdcall;external 'DivGL.dll';


//************************************************** *****************
//**********************3DEnvironment*************** *****************
//************************************************** *****************

procedure DivDecals_Add(Texture:DivText;Size:single;PT,norma l: TD3DVector);stdcall;external 'DivGL.dll';
procedure DivDecal_DrawAll;stdcall;external 'DivGL.dll';
procedure DivDecal_Update(time:single);stdcall;external 'DivGL.dll';


procedure DivBill_Add(x,y,z,w,h:single;TextureIndex:integer) ;stdcall;external 'DivGL.dll';
procedure DivBill_AddTexture(FileName:pchar;ColorKey:integer );stdcall;external 'DivGL.dll';
procedure DivBill_Render(BlendingMode:TBlendingMode);stdcall ;external 'DivGL.dll';

procedure DivGrass_Add(x,y,z,w,h,angle:single;TextureIndex:i nteger);stdcall;external 'DivGL.dll';
procedure DivGrass_AddTexture(FileName:pchar;ColorKey:intege r);stdcall;external 'DivGL.dll';
procedure DivGrass_Render(BlendingMode:TBlendingMode);stdcal l;external 'DivGL.dll';


function DIVSkybox_Load(texture:String):integer;stdcall;ext ernal 'DivGL.dll';
procedure DIVSkybox_Draw(skyindex:integer;x,y,z, width,height,length:single);stdcall;external 'DivGL.dll';

function DIVSkyPlane_Load(texture:String):integer;stdcall;e xternal 'DivGL.dll';
procedure DIVSkyPlane_Draw(PlaneIndex:integer;px,py,pz, pwidth,plength:single);stdcall;external 'DivGL.dll';
procedure DIVSkyPlane_MoveTexture(PlaneIndex:integer;OffsetX ,OffsetY:single);stdcall;external 'DivGL.dll';
procedure DIVSkyPlane_ScaleTexture(PlaneIndex:integer;SX,SY: single);stdcall;external 'DivGL.dll';

procedure DIVSkyHorizon_Init(CloudTexture:string);stdcall;ex ternal 'DivGL.dll';
procedure DIVSkyHorizon_Draw(x,y,z:single;DrawHorizon:boolea n);stdcall;external 'DivGL.dll';


function DivSkyDome_Init(SunElevation:single=60;Turbidity:s ingle=15):integer;stdcall;external 'DivGL.dll';
procedure DivSkyDome_Draw(SkyDomeIndex:integer;x,y,z:single; IsDay:boolean);stdcall;external 'DivGL.dll';
procedure DivSkyDome_AddStars(SkyDomeIndex:integer;TotalOfSt ars : Integer);stdcall;external 'DivGL.dll';
procedure DivSkyDome_AddMoontexture(SkyDomeIndex:integer;Fil ename:string);stdcall;external 'DivGL.dll';
procedure DivSkyDome_SetSunElevation(SkyDomeIndex:integer;Va lue:single);stdcall;external 'DivGL.dll';
procedure DivSkyDome_SetTurbidity(SkyDomeIndex:integer;Value :single);stdcall;external 'DivGL.dll';


Function DivLensFlare_Init(Position:TD3DVector):integer;std call;external 'DivGL.dll';
procedure DivLensFlare_AddTextures(LensIndex:integer; aF1, aF2, aF3,aF4, aF5, aF6, aF7, aF8, aF9: String);external 'DivGL.dll';
procedure DivLensFlare_Render(LensIndex:integer;drawHolow,Dr awSun:boolean);stdcall;external 'DivGL.dll';
procedure DivLensFlare_Free(LensIndex:integer);stdcall;exter nal 'DivGL.dll';
procedure DivLensFlare_SetPosition(LensIndex:integer;Positio n:TD3DVector);stdcall;external 'DivGL.dll';

Procedure DivLigthLens_Render(LLensIndex:integer;x,y,z:singl e);stdcall;external 'DivGL.dll';
function DivLigthLens_Init(Resolution:integer):integer;stdc all;external 'DivGL.dll';

//************************************************** *****************
//*****************TEXTURES************************* *****************
//************************************************** *****************
procedure DivTexture_SetFilter(Filter:TTextureFilter);stdcal l;external 'DivGL.dll';
procedure DivTexture_SetWrap(Wrap : TTextureWrap);stdcall;external 'DivGL.dll';
procedure DivTexture_MipMapping(Enabled: Boolean);stdcall;external 'DivGL.dll';

procedure DivTexture_Bind(Texture:DivText);stdcall;external 'DivGL.dll';
function DivTexture_LoadFromFile(FileName: String; TransparentColor : integer):DivText;stdcall;external 'DivGL.dll';
function DivTexture_LoadFromPack(PackIndex:integer;FileName : String; TransparentColor : integer):DivText;external 'DivGL.dll';
procedure DivTexture_Free(Texture:DivText);stdcall;external 'DivGL.dll';
//************************************************** *****************
//*************************MATERIAL***************** *****************
//************************************************** *****************
procedure DivMaterial_SetMaterial(Material:TMaterial);stdcal l;external 'DivGL.dll';
procedure DivMaterial_SetMaterialFace(Face:Cardinal;Material :TMaterial);stdcall;external 'DivGL.dll';
procedure DivMaterial_SetMaterialEx( Ambient : TColor4f;Diffuse : TColor4f;Specular : TColor4f;Emission : TColor4f;Shininess: Single);stdcall;external 'DivGL.dll';
procedure DivMaterial_SetMaterialFaceEx(Face:Cardinal; Ambient : TColor4f;Diffuse : TColor4f;Specular : TColor4f;Emission : TColor4f;Shininess: Single);stdcall;external 'DivGL.dll';
function DivMaterial_GetTipical(mat:byte;NewShiness:single=-1):TMaterial;stdcall;external 'DivGL.dll';
function DivColor_Set(r,g,b,a:single):TColor4f;stdcall;exte rnal 'DivGL.dll';

//************************************************** *****************
//************************************************** *****************
//************************************************** *****************
Function DivMesh_AddTexture(Filename:pchar;colorkey:integer ):integer;stdcall;external 'DivGL.dll';
procedure DivMesh_AddBox(x,y,z:single;w,h,d:single; TextureIDLeft, TextureIDRight,TextureIDTop , TextureIDBottom,TextureIDFront,TextureIDBack:GluIn t ; Tu :Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddFloor(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddRoof(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddWallFront(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddWallBack(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddWallLeft(x,y,z,H,D:single;TextureID :GluInt=0;Tu : Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddWallRight(x,y,z,H,D:single;TextureID :GluInt=0;Tu : Single = 1;TV:Single = 1);stdcall;external 'DivGL.dll';
procedure DivMesh_AddCilynder(x,y,z,Radius,Height:single; Segment:integer= 10;TextureIDBody:Gluint=0);stdcall;external 'DivGL.dll';
procedure DivMesh_Render;stdcall;external 'DivGL.dll';
function DivMesh_SphereCollisionSliding(Var View:TD3DVector;Var Position:TD3DVector;Radius:single):boolean;stdcall ;external 'DivGL.dll';
function DivMesh_SphereCollision(Position: TD3DVector;Radius:single):boolean;stdcall;external 'DivGL.dll';
function DivMesh_CheckRayCollision(var Point:TD3DVector;var Normal:TD3DVector;RayBegin,Rayend:TD3DVector):bool ean;stdcall;external 'DivGL.dll';

//************************************************** *****************
//************************************************** *****************
//************************************************** *****************
function DivModels_AddMD2(filename:pchar;Skin:pchar;GetBBox :boolean):integer;stdcall;external 'DivGL.dll';
procedure DivModels_SetMD2Animation(Index:integer;Animation: integer);stdcall;external 'DivGL.dll';
procedure DivModels_SetMD2AnimationRange(Index:integer;AStar t,AEnd:integer);stdcall;external 'DivGL.dll';

function DivModels_Add3DS(filename,TexturesPath:pchar):inte ger;stdcall;external 'DivGL.dll';

function DivModels_AddMD3Player(filename,Skin:pchar):intege r;stdcall;external 'DivGL.dll';
procedure DivModels_AddMD3PlayerGun(Index:integer;Dir,Model, Skin:pchar);stdcall;external 'DivGL.dll';
procedure DivModels_SetMD3PlayerAnimation(Index:integer;Anim ation:integer);stdcall;external 'DivGL.dll';
Function DivModels_GetMD3PlayerLowerAnimation(Index:integer ):integer;stdcall;external 'DivGL.dll';
Function DivModels_GetMD3PlayerUpperAnimation(Index:integer ):integer;stdcall;external 'DivGL.dll';

function DivModels_AddMD3(filename:pchar):integer;stdcall; external 'DivGL.dll';
procedure DivModels_SetMD3Skin(Index:integer;Path,skin:pchar );stdcall;external 'DivGL.dll';
procedure DivModels_SetMD3Frame(Index:integer;Frame:integer) ;stdcall;external 'DivGL.dll';
procedure DivModels_SetMD3Link(Index:integer;TagName:pchar;M odelIndex:integer);stdcall;external 'DivGL.dll';
procedure DivModels_SetMD3Texture(Index:integer;MeshName,Fil eName:pchar);stdcall;external 'DivGL.dll';

function DivModels_AddMS3D(filename,TexturePath:pchar):inte ger;stdcall;external 'DivGL.dll';
procedure DivModels_MS3DSetState(Index:integer;FPS:single;se q_start,seq_end,next:integer);stdcall;external 'DivGL.dll';
procedure DivModels_MS3DUpdateAnimation(Index:integer);stdca ll;external 'DivGL.dll';
procedure DivModels_MS3DTransform(Index,OBJIndex,Joint:integ er);stdcall;external 'DivGL.dll';

function DivModels_AddSMD(filename,TexturePath:pchar):integ er;stdcall;external 'DivGL.dll';
procedure DivModels_SMDAddAnimation(Index:integer;filename:p char);stdcall;external 'DivGL.dll';
procedure DivModels_SMDUpdate(Index:integer);stdcall;externa l 'DivGL.dll';
procedure DivModels_SMDSetAnimation(Index,AnimationIndex:int eger);stdcall;external 'DivGL.dll';
procedure DivModels_SMDRotateJoint(Index,AnimationIndex,Join tIndex:integer;x,y,z:single);stdcall;external 'DivGL.dll';


function DivEntities_GetVertex(Index:integer;FaceIndex,TriI ndex:integer):TD3DVector;stdcall;external 'DivGL.dll';

procedure DivModels_Free(Index:integer);stdcall;external 'DivGL.dll';


procedure DivEntities_SetTexture(Index:Integer;Texture:DivTe xt);stdcall;external 'DivGL.dll';
procedure DivEntities_Render(Index:Integer;Time:single);stdc all;external 'DivGL.dll';
procedure DivEntities_Position(Index:integer;x,y,z:single);s tdcall;external 'DivGL.dll';
procedure DivEntities_Yaw(Index:integer;angle:single);stdcal l;external 'DivGL.dll';
procedure DivEntities_Pitch(Index:integer;angle:single);stdc all;external 'DivGL.dll';
procedure DivEntities_Roll(Index:integer;angle:single);stdca ll;external 'DivGL.dll';
procedure DivEntities_Scale(Index:integer;x,y,z:single);stdc all;external 'DivGL.dll'

procedure DivEntities_LookAT(Index:integer;x,y,z:single);std call;external 'DivGL.dll'

procedure DivEntities_AddChild(Index,Child:integer);stdcall; external 'DivGL.dll';

procedure DivEntities_RenderNoTrasform(Index:Integer;Time:si ngle);stdcall;external 'DivGL.dll';

procedure DivEntities_SetStatic(Index:integer;Value:boolean) ;stdcall;external 'DivGL.dll';


procedure DivEntities_BBoxByIndex(index:integer;obj:integer) ;stdcall;external 'DivGL.dll';
procedure DivEntities_SetBBox(index:integer;MinX,MinY,Minz,M axX,MaxY,MaxZ:single);stdcall;external 'DivGL.dll';


function DivEntities_BoxColide(En1,En2:integer):boolean;std call;external 'DivGL.dll';
function DivEntities_RayBoxColide(Index:integer;RayStar,Ray End: TD3DVector):boolean;stdcall;external 'DivGL.dll';
function DivEntities_RaySphereColide(Index:integer;RayStar, RayEnd:TD3DVector):boolean;stdcall;external 'DivGL.dll';
function DivEntities_RayTriangleColide(Index:integer;RaySta r,RayEnd: TD3DVector):BOOL;stdcall;external 'DivGL.dll';


//************************************************** *****************
//************************************************** *****************
//*********** Terrain **************************************
//************************************************** *****************
//************************************************** *****************


//tile engine
procedure DivHeightMap_Init(TileW,TileH:integer);stdcall;ext ernal 'DivGL.dll';
procedure DivHeightMap_ImportHeightMap(FileName:pchar;FileTy pe:THeightMapFormat);stdcall;external 'DivGL.dll';
procedure DivHeightMap_LoadTextures(MainTexture,DetailTextur e:pchar);stdcall;external 'DivGL.dll';



procedure DivHeightMap_Update;stdcall;external 'DivGL.dll';
procedure DivHeightMap_Draw;stdcall;external 'DivGL.dll';

Function DivHeightMap_GetAbsHeight(x,y:single):single;stdca ll;external 'DivGL.dll';
Function DivHeightMap_GetNormal(x,y:integer):TVector3D;stdc all;external 'DivGL.dll';
Function DivHeightMap_GetHeight(x,y:single):single;stdcall; external 'DivGL.dll';
Function DivHeightMap_CenterX:single;stdcall;external 'DivGL.dll';
Function DivHeightMap_CenterY:single;stdcall;external 'DivGL.dll';

procedure DivHeightMap_Scale(x,y,z:single);stdcall;external 'DivGL.dll';
procedure DivHeightMap_Position(x,y,z:single);stdcall;extern al 'DivGL.dll';

//+++++++++++


procedure DivTerrain_Init(TileW,TileH:integer);stdcall;exter nal 'DivGL.dll';

procedure DivTerrain_SetFlat;stdcall;external 'DivGL.dll';
procedure DivTerrain_ImportHeightMap(FileName:string;FileTyp e:THeightMapFormat);stdcall;external 'DivGL.dll';
procedure DivTerrain_AddShadowMap(FileName:string);stdcall;e xternal 'DivGL.dll';

procedure DivTerrain_Scale(x,y,z:single);stdcall;external 'DivGL.dll';
procedure DivTerrain_Position(x,y,z:single);stdcall;external 'DivGL.dll';

procedure DivTerrain_AddTileTextures(filename:string);stdcal l;external 'DivGL.dll';
procedure DivTerrain_Update;stdcall;external 'DivGL.dll';

procedure DivTerrain_SetTileTexture(x,y:integer;textureIndex :integer);stdcall;external 'DivGL.dll';
procedure DivTerrain_SetTileHeight(x,y:integer;Height:Single );stdcall;external 'DivGL.dll';

Function DivTerrain_GetAbsHeight(x,y:single):single;stdcall ;external 'DivGL.dll';
Function DivTerrain_GetNormal(x,y:integer):TD3DVector;stdca ll;external 'DivGL.dll';

Function DivTerrain_GetHeight(x,y:single):single;stdcall;ex ternal 'DivGL.dll';
Function DivTerrain_RayColide(RayStar,RayEnd:TD3DVector):Bo olean;stdcall;external 'DivGL.dll';

Function DivTerrain_CenterX:single;stdcall;external 'DivGL.dll';
Function DivTerrain_CenterY:single;stdcall;external 'DivGL.dll';

procedure DivTerrain_SetTileFlip(x,y:integer;flip:TTileFlip) ;stdcall;external 'DivGL.dll';

procedure DivTerrain_Render(RealTime:boolean);Stdcall;extern al 'DivGL.dll';

procedure DivTerrain_Save(filename:string);Stdcall;external 'DivGL.dll';
procedure DivTerrain_Load(filename:string);Stdcall;external 'DivGL.dll';



//************************************************** *****************
//************************************************** *****************


//************************************************** *****************
//************************************************** *****************
//******************Half-Life map loader*****************************
//************************************************** *****************
procedure DivHLMap_Init(Filename,TextureDir:pchar);stdcall;e xternal 'DivGL.dll';
procedure DivHLMap_Free;stdcall;external 'DivGL.dll';

function DivHLMap_NumSectors:integer;stdcall;external 'DivGL.dll';
function DivHLMap_GetPlayerStart:TD3DVector;stdcall;externa l 'DivGL.dll';

procedure DivHLMap_DrawAll;stdcall;external 'DivGL.dll';
procedure DivHLMap_DrawSector(Index:integer);stdcall;externa l 'DivGL.dll';

//************************************************** *****************
//******************Delgine map loader*****************************
//************************************************** *****************

Procedure DivDLMap_Render(Index:integer); stdcall;external 'DivGL.dll';
function DivDLMap_Load(Filename,Textures:pchar;UseLightmaps :boolean):integer;stdcall;external 'DivGL.dll';
Function DivDLMap_Colide(Index:integer;Inside:boolean;Posit ion:TD3DVector):TColideSystem;stdcall;external 'DivGL.dll';

//************************************************** *****************
//************************************************** *****************
function DivWorl3DS_Add(Filename,Texturepath:pchar):integer ;stdcall;external 'DivGL.dll';
procedure DivWorl3DS_Free(Index:integer);stdcall;external 'DivGL.dll';
procedure DivWorl3DS_DrawAll(Index:integer);stdcall;external 'DivGL.dll';
procedure DivWorl3DS_DrawSelect(Index,OBJindex:integer);stdc all;external 'DivGL.dll';
procedure DivWorl3DS_DrawSelectBox(Index,OBJIndex:integer);s tdcall;external 'DivGL.dll';
procedure DivWorl3DS_SelectObject(Index,objIndex:integer;val ue:boolean);stdcall;external 'DivGL.dll';
procedure DivWorl3DS_DrawAllBBox(Index:integer);stdcall;exte rnal 'DivGL.dll';

//************************************************** *****************
//************************************************** *****************


function DivWaterPlane_Init(Texture:string):integer; stdcall;external 'DivGL.dll';
procedure DivWaterPlane_Draw(WP_Index_integer:integer);stdca ll;external 'DivGL.dll';
procedure DivWaterPlane_SetDefaults(WP_Index_integer:integer );stdcall;external 'DivGL.dll';
procedure DivWaterPlane_Move(WP_Index_integer:integer;mcount :single);stdcall;external 'DivGL.dll';
procedure DivWaterPlane_SetPosition(WP_Index_integer:integer ;x,y,z:single);stdcall;external 'DivGL.dll';
procedure DivWaterPlane_SetSize(WP_Index_integer:integer;Wid th,Height:integer;scaleWidth,scaleHeight:single);s tdcall;external 'DivGL.dll';
procedure DivWaterPlane_SetRepeats(WP_Index_integer:integer; Repeats:integer;StartAngle:single);stdcall;externa l 'DivGL.dll';
procedure DivWaterPlane_SetWave(WP_Index_integer:integer;Wav eLength,WaveSpeed,WaveAmplitude:single);stdcall;ex ternal 'DivGL.dll';
procedure DivWaterPlane_SetAlpha(WP_Index_integer:integer;va lue:single);stdcall;external 'DivGL.dll';
//************************************************** *****************
//************************************************** *****************
//************************************************** *****************
//************************************************** *****************
procedure DivFrustum_Update;stdcall;external 'DivGL.dll';
function DivFrustum_PointIn(const pX, pY, pZ : Single) : Boolean;stdcall;external 'DivGL.dll';
function DivFrustum_BoxIn(const pX, pY, pZ,size : Single) : Boolean;stdcall;external 'DivGL.dll';
function DivFrustum_SphereIn(const pX, pY, pZ, pRadius : Single) : Boolean;stdcall;external 'DivGL.dll';
function DivFrustum_AABBIn(const aOBoundingBox: TOBoundingBox): Boolean;stdcall;external 'DivGL.dll';

//************************************************** *****************
//************************************************** *****************
//************************************************** *****************
//**********************2D"*********************************************
//************************************************** *****************
procedure DivImage_Draw(Texture: DivText;x,y:integer;scaleX,ScaleY:single;angle:sin gle;Color:TColor4f;FBlendingMode:TBlendingMode);st dcall;external 'DivGL.dll';
procedure DivImage_DrawRect(Texture: DivText;Rect:Trect;x,y,scaleX,ScaleY:single;angle: single;Color:TColor4f;FBlendingMode:TBlendingMode) ;stdcall;external 'DivGL.dll';
procedure DivImage_DrawScroll(Texture: DivText;R:Trect;UFactor,VFactor,ScrolXfactor,Scrol YFactor:single;x,y:single;Color:TColor4f;FBlending Mode:TBlendingMode);stdcall;external 'DivGL.dll';
procedure DivImage_SubRect(Texture: DivText;x,y,SCallX,SCallY:single;SRect:TRECT;Color :TColor4f;FBlendingMode:TBlendingMode);stdcall;ext ernal 'DivGL.dll';
procedure DivImage_SubRectTransform(Texture: DivText;x,y:single;FlipV,FlipH:boolean;scaleX,Scal eY:single;CenterX, CenterY,angle:single;SRect:TRECT;Color:TColor4f;FB lendingMode:TBlendingMode);stdcall;external 'DivGL.dll';
//************************************************** *****************
//************************************************** *****************
function DivFader_FadeEnded:boolean;stdcall;external 'DivGL.dll';
procedure DivFader_SotpFade;stdcall;external 'DivGL.dll';
procedure DivFader_SetLoop(Value:boolean);stdcall;external 'DivGL.dll';
procedure DivFader_SetInOut(Value:boolean);stdcall;external 'DivGL.dll';
procedure DivFader_FadeOut(r,g,b:byte;Speed:single);stdcall; external 'DivGL.dll';
procedure DivFader_FadeIn(r,g,b:byte;Speed:single);stdcall;e xternal 'DivGL.dll';
procedure DivFader_Draw;stdcall;external 'DivGL.dll';
procedure DivFader_DrawinRect(rect:trect);stdcall;external 'DivGL.dll';


//************************************************** ***********
//************************************************** ***********
//************************************************** ***********
//************************************************** ***********


procedure DivInput_Update;stdcall;external 'DivGL.dll';

function DivInput_MouseAbsX:Integer;stdcall;external 'DivGL.dll';
function DivInput_MouseAbsY:Integer;stdcall;external 'DivGL.dll';
function DivInput_MouseAbsZ:Integer;stdcall;external 'DivGL.dll';

function DivInput_MouseX:Integer;stdcall;external 'DivGL.dll';
function DivInput_MouseY:Integer;stdcall;external 'DivGL.dll';
function DivInput_MouseZ:Integer;stdcall;external 'DivGL.dll';

function DivInput_MouseDown(Button: Integer):Boolean;stdcall;external 'DivGL.dll';
function DivInput_MouseUp(Button: Integer):Boolean;stdcall;external 'DivGL.dll';

function DivInput_KeyDown(key:integer):boolean;stdcall;exte rnal 'DivGL.dll';
function DivInput_KeyUp(key:integer):boolean;stdcall;extern al 'DivGL.dll';
function DivInput_KeyName(key:integer):Pchar;stdcall;extern al 'DivGL.dll';
function DivInput_KeyPressed:boolean;stdcall;external 'DivGL.dll';


//************************************************** ***********
//************************************************** ***********
//************************************************** ***********
//************************************************** ***********

function DivSound_Load(Filename:pchar;Is3d:boolean):integer ;stdcall;external 'DivGL.dll';
function DivSound_Play(SoundIndex:integer;Loop:boolean):Boo lean;stdcall;external 'DivGL.dll';
function DivSound_Stop(SoundIndex:integer):Boolean;stdcall; external 'DivGL.dll';
function DivSound_SetPosition(SoundIndex:integer;x,y,z:sing le):Boolean;stdcall;external 'DivGL.dll';
function DivSound_SetListnerPosition(SoundIndex:integer;x,y ,z:single):Boolean;stdcall;external 'DivGL.dll';

//************************************************** ***********
//************************************************** ***********

procedure DivMusic_Free(MusicIndex:integer);stdcall;external 'DivGL.dll';
function DivMusic_Load(Filename:pchar):integer;stdcall;exte rnal 'DivGL.dll';
function DivMusic_SetPan(MusicIndex:integer;Value:Integer): boolean;stdcall;external 'DivGL.dll';
function DivMusic_SetVolume(MusicIndex:integer;Value:Intege r):boolean;stdcall;external 'DivGL.dll';
function DivMusic_SetPosition(MusicIndex:integer;Value:Doub le):boolean;stdcall;external 'DivGL.dll';
function DivMusic_GetPosition(MusicIndex:integer):Double;st dcall;external 'DivGL.dll';
function DivMusic_GetDuration(MusicIndex:integer):Double;st dcall;external 'DivGL.dll';
function DivMusic_Play(MusicIndex:integer):boolean;stdcall; external 'DivGL.dll';
function DivMusic_Stop(MusicIndex:integer):boolean;stdcall; external 'DivGL.dll';
function DivMusic_Pause(MusicIndex:integer):boolean;stdcall ;external 'DivGL.dll';
function DivMusic_IsPlaying(MusicIndex:integer):boolean;std call;external 'DivGL.dll';
procedure DivMusic_LoopIt(MusicIndex:integer);stdcall;extern al 'DivGL.dll';
//************************************************** ***********
//************************************************** ***********
//************************************************** ***********
//************************************************** ***********

function DivMath_RandomS( lo, hi : Single ) : Single;stdcall;external 'DivGL.dll';
function DivMath_RandomI( lo, hi : integer ) : integer;stdcall;external 'DivGL.dll';

[/pascal]

ps: is just the first release espect lots of bugs ;)

asta

JSoftware
16-12-2006, 05:26 PM
Looks good.

Haven't I seen that gun before? :P
If it's the gun I think of then isn't the texture wrong? eventually loaded upsidedown?

djoker
16-12-2006, 05:44 PM
Looks good.

Haven't I seen that gun before? :P
If it's the gun I think of then isn't the texture wrong? eventually loaded upsidedown?

hummm?

WILL
16-12-2006, 06:28 PM
Wow djoker,

You're definately goin ot the moon on this one. ;)


Can I ask you for a few small house-keeping things though? Your code will widen the browsers of people with smaller desktop resolutions. Can you find the code lines that are long and add some spaces so that it's not so wide? Thanks. :)


Good luck with the engine, it's looking good so far.

djoker
16-12-2006, 07:06 PM
Wow djoker,

You're definately goin ot the moon on this one. ;)


Can I ask you for a few small house-keeping things though? Your code will widen the browsers of people with smaller desktop resolutions. Can you find the code lines that are long and add some spaces so that it's not so wide? Thanks. :)


Good luck with the engine, it's looking good so far.
mi bad :s


the zip have the souce ;)


on this engine i will put all stuff like $$$ engines ;)