Ogre4Delphi (UP 30/11/08) - All files
Posted: Sat Nov 29, 2008 9:19 pm
hi ppl this is my fist attempt 2 create a framework 4 delphi, still mutch to do.
the next version will initiate the engine by code and or dialog.
sorry my english
full working version and better with all files(media ,source and binary)
http://www.mediafire.com/file/mzmmkytagyy/Ogre4D.zip
plz report any problem.
the next version will initiate the engine by code and or dialog.
sorry my english
full working version and better with all files(media ,source and binary)
http://www.mediafire.com/file/mzmmkytagyy/Ogre4D.zip
plz report any problem.
Code: Select all
program teste2;
{$APPTYPE CONSOLE}
uses
SysUtils,mmsystem,math,
dialogs,
Ogre4D in 'Ogre4D.pas',
OgreTypes in 'OgreTypes.pas';
var
camera:ocamera;
vp:OViewPort;
plane,Mesh:OEntity;
l2,Light:OLight;
AnimNode,PlaneNode,Ogre:OSceneNode;
bbs:OBillboards;
trail:ORibbonTrail;
mRotX,mRotY:single;
mMoveSpeed:single=800;
mSpeedLimit , mMoveScale:single;
mTranslateVector:vector3;
animupdate,animupdate2:OAnimationState;
anim:OAnimation;
track:OAnimationTrack;
kf:OKeyFrame;
dir:vector3;
procedure RenderEvent(timeSinceLastEvent,timeSinceLastFrame:single);stdcall;
begin
AnimState_AddTime(animupdate,timeSinceLastFrame);
AnimState_AddTime(animupdate2,timeSinceLastFrame);
mTranslateVector:=vector(0,0,0);
mSpeedLimit := mMoveScale * timeSinceLastFrame;
mMoveScale := mMoveSpeed * timeSinceLastFrame;
if Window_isKeyDown(KC_F12) then Window_TakeShot;
if Window_isKeyDown(KC_A) then mTranslateVector.x := -mMoveScale; // Move camera left
if Window_isKeyDown(KC_D) then mTranslateVector.x := mMoveScale; // Move camera RIGHT
if(Window_isKeyDown(KC_UP) or (Window_isKeyDown(KC_W))) then
mTranslateVector.z := -mMoveScale; // Move camera forward
if(Window_isKeyDown(KC_DOWN) or (Window_isKeyDown(KC_S))) then
mTranslateVector.z := mMoveScale; // Move camera backward
if(Window_isKeyDown(KC_PGUP)) then mTranslateVector.y := mMoveScale; // Move camera up
if(Window_isKeyDown(KC_PGDOWN)) then mTranslateVector.y := -mMoveScale; // Move camera down
mRotX := -Window_MouseX * 0.13;
mRotY := -Window_MouseY * 0.13;
Camera_SetYaw(camera,mRotX);
Camera_SetPitch(camera,mRotY);
Camera_MoveRelative(camera,mTranslateVector);
Node_Yaw(ogre,0.10);
Engine_DrawDebugPanel;
end;
begin
Engine_CreateRoot(LL_NORMAL,'plugins.cfg','ogre.cfg');
Engine_SelectRenderSystem(DV_DIRECT3D9);
engine_SetConfigOption('VSync','No');
engine_SetConfigOption('Full Screen','No');
engine_SetConfigOption('Video Mode','800 x 600 @ 16-bit colour');
Engine_Init('OGRE4D');
Engine_SetFrameListner(RenderEvent);
camera:=Scene_AddCamera('mycamera');
Camera_SetDistanceClip(camera,1.0,20000.0);
vp:=Camera_SetViewPort(Camera);
ViewPort_SetColor(vp,0,0,0.4);
Camera_SetPosition(camera,vector(0,20,500));
Camera_SetLookAt(camera,vector(0,0,300));
Scene_SetAmbientLight(1.0,1.0,0.5);
Engine_AddResourceLocation('media','FileSystem');
Engine_AddResourceLocation('media/fonts','FileSystem');
Engine_AddResourceLocation('media/overlays','FileSystem');
Engine_AddResourceLocation('media/models','FileSystem');
Engine_AddResourceLocation('media/materials/scripts','FileSystem');
Engine_AddResourceLocation('media/materials/textures','FileSystem');
Engine_AddResourceLocation('media/packs/ogrecore.zip','Zip');
Engine_AddResourceLocation('media/packs/skybox.zip','Zip');
Engine_UpdateAllResourceGroups;
Scene_AddSkyBox('Examples/SpaceSkyBox');
//Scene_AddSkyPlane('Examples/SpaceSkyPlane');
//Scene_SetSkyDome('Examples/CloudySky',5,8);
Mesh:=Scene_AddEntity('axes', 'axes.mesh');
Scene_AttachObject(mesh);
Mesh:=Scene_AddEntity('head', 'ogrehead.mesh');
ogre:=Scene_AddChildSceneNode( 'head');
Node_AttachObject(ogre,mesh);
Node_ShowBoundigBox(ogre,true);
MeshManager_CreatePlane('plane',1000,1000);
plane:=Scene_AddEntity('floor','plane');
Entity_SetMaterialName(plane,'Examples/RustySteel');
PlaneNode:=Scene_AddChildSceneNode( 'plane');
Node_AttachObject(planenode,plane);
dir:=vector(-1, -1, 0.5);
dir:=VNormalize(dir);
Light:=Scene_AddLight('light1',LT_DIRECTIONAL);
Light_SetDirection(light,dir);
trail:=Scene_AddRibbonTrail('l','RibbonTrail');
RibbonTrail_SetMaterialName(trail,'Examples/LightRibbonTrail');
RibbonTrail_SetTrailLength(trail,400);
Scene_AttachObject(trail);
animnode:=Scene_AddChildSceneNode('anim1');
Node_SetPosition(animnode,vector(50,30,0));
anim:=Scene_AddAnimation('an1',14);
Animation_SetInterpolationMode(anim,IM_SPLINE);
track:=Animation_CreateNodeTrackTOnNode(anim,1,animnode);
kf:=Track_CreateNodeKeyFrame(track,0);
KeyFrame_SetTranslate(kf,Vector(50,30,0));
kf:=Track_CreateNodeKeyFrame(track,2);
KeyFrame_SetTranslate(kf,Vector(100, -30, 0));
kf:=Track_CreateNodeKeyFrame(track,4);
KeyFrame_SetTranslate(kf,Vector(120, -100, 150));
kf:=Track_CreateNodeKeyFrame(track,6);
KeyFrame_SetTranslate(kf,Vector(30, -100, 50));
kf:=Track_CreateNodeKeyFrame(track,8);
KeyFrame_SetTranslate(kf,Vector(-50, 30, -50));
kf:=Track_CreateNodeKeyFrame(track,10);
KeyFrame_SetTranslate(kf,Vector(-150, -20, -100));
kf:=Track_CreateNodeKeyFrame(track,12);
KeyFrame_SetTranslate(kf,Vector(-50, -30, 0));
kf:=Track_CreateNodeKeyFrame(track,14);
KeyFrame_SetTranslate(kf,Vector(50,30,0));
animupdate:=Scene_AddAnimationState('an1');
RibbonTrail_SetInitialColour(trail,0, color(1.0, 0.8, 0,0));
RibbonTrail_SetColourChange(trail,0,color( 0.5, 0.5, 0.5, 0.5));
RibbonTrail_SetInitialWidth(trail,0, 5);
RibbonTrail_AddNode(trail,animNode);
l2:=Scene_AddLight('l2',LT_POINT);
Light_SetColor(l2,1.0,0.8,0);
Node_AttachObject(animnode,l2);
bbs:=Scene_AddBillBoards('bb',1);
BillBoard_AddBillBoard(bbs,vector(0,0,0),color(1.0,0.8,0,0));
BillBoard_SetMaterial(bbs,'Examples/Flare');
Node_AttachObject(animnode,bbs);
animnode:=Scene_AddChildSceneNode('anim2');
Node_SetPosition(animnode,vector(-50,100,0));
anim:=Scene_AddAnimation('an2',10);
Animation_SetInterpolationMode(anim,IM_SPLINE);
track:=Animation_CreateNodeTrackTOnNode(anim,1,animnode);
kf:=Track_CreateNodeKeyFrame(track,0);
KeyFrame_SetTranslate(kf,Vector(-50,100,0));
kf:=Track_CreateNodeKeyFrame(track,2);
KeyFrame_SetTranslate(kf,Vector(-200, 150, -30));
kf:=Track_CreateNodeKeyFrame(track,4);
KeyFrame_SetTranslate(kf,Vector(-200, 0, 40));
kf:=Track_CreateNodeKeyFrame(track,6);
KeyFrame_SetTranslate(kf,Vector(0, -150, 70));
kf:=Track_CreateNodeKeyFrame(track,8);
KeyFrame_SetTranslate(kf,Vector(50, 0, 30));
kf:=Track_CreateNodeKeyFrame(track,10);
KeyFrame_SetTranslate(kf,Vector(-50, 100, 0));
animupdate2:=Scene_AddAnimationState('an2');
RibbonTrail_SetInitialColour(trail,1, color(0.0, 1.0, 0.4,0));
RibbonTrail_SetColourChange(trail,1,color( 0.5, 0.5, 0.5, 0.5));
RibbonTrail_SetInitialWidth(trail,1, 5);
RibbonTrail_AddNode(trail,animNode);
l2:=Scene_AddLight('l3');
Light_SetColor(l2,0.0,1.0,0.4);
Node_AttachObject(animnode,l2);
bbs:=Scene_AddBillBoards('bb2',1);
BillBoard_AddBillBoard(bbs,vector(0,0,0),color(0.0,1.0,0.4,0));
BillBoard_SetMaterial(bbs,'Examples/Flare');
Node_AttachObject(animnode,bbs);
Engine_BeginLoop;
Engine_Shutdown;
end.
Code: Select all
unit Ogre4D;
interface
uses windows,ogretypes;
//*********************************************************
//* OGRE MAIN *
//*********************************************************
function Engine_CreateRoot(OLoggingLevel:OLoggingLevel;pluginFileName,configFileName:pchar):bool;cdecl;external ogredll;
function Engine_RootLoadPlugin(pluginFileName:pchar):bool;cdecl;external ogredll;
function Engine_InitFromDialog(caption:pchar;SceneType:OSceneType=ST_GENERIC):bool;cdecl;external ogredll;
function Engine_SelectRenderSystem(Devide:ODeviceType):bool;cdecl;external ogredll;
function Engine_SetConfigOption(name,value:pchar):bool;cdecl;external ogredll;
function Engine_Init(windowTitle:pchar;SceneType:OSceneType=ST_GENERIC):bool;stdcall;external ogredll;
//function Engine_SelectRenderSystemByCode(windowTitle:pchar):bool;cdecl;external ogredll;
function Engine_BeginLoop:bool;cdecl;external ogredll;
procedure Engine_SetFrameListner(OgreRenderCallBack:ORenderEvent);cdecl;external ogredll;
procedure Engine_Shutdown();cdecl;external ogredll;
procedure Engine_RenderOneFrame;cdecl;external ogredll;
procedure Engine_AddResourceLocation( Path, LocType:pchar; recursive:boolean=false);cdecl;external ogredll;
procedure Engine_AddResourceLocationFromFile(filename:pchar);cdecl;external ogredll;
procedure Engine_UpdateAllResourceGroups;cdecl;external ogredll;
procedure Engine_DrawDebugPanel;cdecl;external ogredll;
procedure Engine_SetDefaultTextureFiltering( fo:OTextureFilterOptions);cdecl;external ogredll;
procedure Engine_SetDefaultTextureFilteringMinMag(minFilter, magFilter, mipFilter:OFilterOptions);cdecl;external ogredll;
procedure Engine_SetDefaultTextureFilteringType( ftype:OFilterType; opts:OFilterOptions);cdecl;external ogredll;
procedure Engine_SetDefaultAnisotropy(maxAniso:integer);cdecl;external ogredll;
//*********************************************************
//* OGRE WINDOW *
//*********************************************************
procedure Window_Close;cdecl;external ogredll;
procedure Window_TakeShot;cdecl;external ogredll;
function Window_isKeyDown(key:OKeyCode):bool;cdecl;external ogredll;
function Window_isMouseDown( button:integer):boolean;cdecl;external ogredll;
function Window_MouseX:integer;cdecl;external ogredll;
function Window_MouseY:integer;cdecl;external ogredll;
function Window_MouseZ:integer;cdecl;external ogredll;
function Window_MouseXAbs:integer;cdecl;external ogredll;
function Window_MouseYAbs:integer;cdecl;external ogredll;
function Window_MouseZAbs:integer;cdecl;external ogredll;
//*********************************************************
//* OGRE SCENE *
//*********************************************************
procedure Scene_SetAmbientLight(r,g,b:single);cdecl;external ogredll;
procedure Scene_AddSkyBox(MatName:pchar;distance :single= 5000; drawFirst:boolean = true);cdecl;external ogredll;
function Scene_AddBillBoards(Name:pchar;poolSize:integer = 20):OBillBoards;cdecl;external ogredll;
procedure Scene_AddSkyDome(Name:pchar; curvature:single = 10;tiling:single = 8; distance:single = 4000;drawFirst:boolean = true)cdecl;external ogredll;
procedure Scene_AddSkyPlane(Name:pchar; dist:single=5000; scale:single = 1000; tiling:single = 10; drawFirst:boolean = true; bow:single = 0)cdecl;external ogredll;
function Scene_AddCamera(Name:pchar):OCamera;cdecl;external ogredll;
function Scene_AddEntity(Name,Filename:pchar):OEntity;cdecl;external ogredll;
function Scene_AddLight(Name:pchar;LightTypes:OLightTypes=LT_POINT):OLight;cdecl;external ogredll;
function Scene_AddRibbonTrail(Name,TypeName:pchar; NumberOfChains:integer=2; maxElement:integer=80):ORibbonTrail;cdecl;external ogredll;
function Scene_AddChildSceneNode(Name:pchar):OSceneNode;cdecl;external ogredll;
function Scene_AddAnimation(Name:pchar;length:single):OAnimation;cdecl;external ogredll;
function Scene_AddAnimationState(Name:pchar):OAnimationState;cdecl;external ogredll;
procedure Scene_AttachObject(obj:TMovableObject);cdecl;external ogredll;
//*********************************************************
//* OGRE CAMERAS *
//*********************************************************
procedure Camera_SetAspectRatio(camera:OCamera;Ratio:single);cdecl;external ogredll;
procedure Camera_SetFOVy(camera:OCamera;fov:single);cdecl;external ogredll;
procedure Camera_SetDistanceClip(camera:OCamera;distNear,distFar:single);cdecl;external ogredll;
function Camera_SetViewPort(Camera:OCamera;ZOrder:integer=0;left:single=0.0;Top:single=0.0;width:single= 1.0;height:single= 1.0):OViewPort;cdecl;external ogredll;
procedure Camera_SetPolygonMode(Camera:Ocamera;value:OPolygonMode);cdecl;external ogredll;
procedure Camera_SetPosition(Camera:OCamera;vec:Vector3);cdecl;external ogredll;
procedure Camera_SetLookAt(Camera:OCamera; vec:Vector3);cdecl;external ogredll;
procedure Camera_MoveRelative(Camera:OCamera; vec:Vector3);cdecl;external ogredll;
procedure Camera_Move(Camera:OCamera; vec:Vector3);cdecl;external ogredll;
procedure Camera_SetDirection(Camera:OCamera; vec:Vector3);cdecl;external ogredll;
procedure Camera_SetYaw(Camera:OCamera;angle:single);cdecl;external ogredll;
procedure Camera_SetPitch(Camera:OCamera;angle:single);cdecl;external ogredll;
procedure Camera_SetRoll(Camera:OCamera;angle:single);cdecl;external ogredll;
//*********************************************************
//* OGRE VIEWPORT *
//*********************************************************
procedure ViewPort_SetColor(vp:OViewport;r,g,b:single);cdecl;external ogredll;
function ViewPort_GetWidth(vp:OViewport):single;cdecl;external ogredll;
function ViewPort_GetHeight(vp:OViewport):single;cdecl;external ogredll;
//*********************************************************
//* OGRE ENTITYS *
//*********************************************************
procedure Entity_SetMaterialName(Entity:OEntity;MatName:pchar);cdecl;external ogredll;
//*********************************************************
//* OGRE LIGHTS *
//*********************************************************
procedure Light_SetPosition(Light:Olight; vec:Vector3);cdecl;external ogredll;
procedure Light_SetDirection(Light:Olight; vec:Vector3);cdecl;external ogredll;
procedure Light_SetColor(Light:OLight;r,g,b:single);cdecl;external ogredll;
//*********************************************************
//* OGRE NODES *
//*********************************************************
procedure Node_AttachObject(Node:OSceneNode;obj:OMovableObject);cdecl;external ogredll;
procedure Node_AttachChilld(Node,Chilld:OSceneNode);cdecl;external ogredll;
procedure Node_SetPosition(SceneNode:OSceneNode; vec:Vector3);cdecl;external ogredll;
procedure Node_SetDirection(SceneNode:OSceneNode; vec:Vector3);cdecl;external ogredll;
procedure Node_Scale(SceneNode:OSceneNode; vec:Vector3);cdecl;external ogredll;
procedure Node_Rotate(SceneNode:OSceneNode; vec:Vector3; angle:single);cdecl;external ogredll;
procedure Node_ShowBoundigBox(SceneNode:OSceneNode;bShow:boolean);cdecl;external ogredll;
procedure Node_SetDebugDisplayEnabled(SceneNode:OSceneNode;bShow:boolean);cdecl;external ogredll;
procedure Node_Yaw(Node:OSceneNode;angle:single);cdecl;external ogredll;
procedure Node_Pitch(Node:OSceneNode;angle:single);cdecl;external ogredll;
procedure Node_Roll(Node:OSceneNode;angle:single);cdecl;external ogredll;
procedure Node_YawPitchRollInRadian(Node:OSceneNode; yaw, pitch,roll:single);cdecl;external ogredll;
procedure Node_YawPitchRollInDegree(Node:OSceneNode; yaw, pitch,roll:single);cdecl;external ogredll;
function Node_GetChilldByIndex(Node:OSceneNode;index:integer):OSceneNode;cdecl;external ogredll;
function Node_GetChilldByName(Node:OSceneNode;name:pchar):OSceneNode;cdecl;external ogredll;
//*********************************************************
//* OGRE MESHMANAGER *
//*********************************************************
procedure MeshManager_CreatePlane(Name:pchar; width, height:single;xsegments:integer = 1;ysegments:integer = 1;
normals:boolean = true; numTexCoordSets:integer = 1;
uTile:single = 1.0; vTile :single= 1.0);cdecl;external ogredll;
//*********************************************************
//* OGRE RibbonTrail *
//*********************************************************
procedure RibbonTrail_SetTrailLength(trail:ORibbonTrail; lean:single);cdecl;external ogredll;
procedure RibbonTrail_SetMaterialName(trail:ORibbonTrail; Name:pchar);cdecl;external ogredll;
procedure RibbonTrail_SetInitialColour(Trail:ORibbonTrail;chainIndex:integer;color:OColor);cdecl;external ogredll;
procedure RibbonTrail_SetColourChange(Trail:ORibbonTrail;chainIndex:integer;color:OColor);cdecl;external ogredll;
procedure RibbonTrail_SetInitialWidth(Trail:ORibbonTrail;chainIndex:integer;size:single);cdecl;external ogredll;
procedure RibbonTrail_AddNode(Trail:ORibbonTrail;cNode:OSceneNode);cdecl;external ogredll;
//*********************************************************
//* OGRE ANIMATION *
//*********************************************************
procedure Animation_SetInterpolationMode(anim:OAnimation;im:OInterpolationMode);cdecl;external ogredll;
function Animation_CreateNodeTrack(anim:OAnimation;handle:integer):OAnimationTrack;cdecl;external ogredll;
function Animation_CreateNodeTrackTOnNode(anim:OAnimation;handle:integer;Node:OSceneNode):OAnimationTrack;cdecl;external ogredll;
//*********************************************************
//* OGRE ANIMATION STATES *
//*********************************************************
procedure AnimState_AddTime(state:OAnimationState;offset:single)cdecl;external ogredll;
//*********************************************************
//* OGRE KEYFRAME *
//*********************************************************
procedure KeyFrame_SetTranslate(keyframe:Okeyframe;vect:vector3);cdecl;external ogredll;
procedure KeyFrame_SetScale(keyframe:Okeyframe;vect:vector3);cdecl;external ogredll;
procedure KeyFrame_SetRotation(keyframe:Okeyframe;vect:vector3);cdecl;external ogredll;
//*********************************************************
//* OGRE TRACK *
//*********************************************************
function Track_CreateNodeKeyFrame(anim:OAnimationTrack; timePos:single):OKeyFrame;cdecl;external ogredll;
//*********************************************************
//* OGRE BILLBOARD *
//*********************************************************
function BillBoard_AddBillBoard(Bils:OBillboards;pos:vector3;color:OColor ):OBillBoard;cdecl;external ogredll;
procedure BillBoard_SetMaterial(Bils:OBillboards;name:pchar);cdecl;external ogredll;