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 ops:
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: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: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;
Bookmarks