thx guys :)
I have stated to integrate a kind of interface with minib3d so
my current test code looks like this (everything oop yet, but I will provide procedural functions later).
I'm interrested what you guys currently think about how it looks in the code: (easiness, readability etc.)
I have stated to integrate a kind of interface with minib3d so
my current test code looks like this (everything oop yet, but I will provide procedural functions later).
I'm interrested what you guys currently think about how it looks in the code: (easiness, readability etc.)
Framework sidesign.minib3d Strict Local width=640,height=480,depth=16,mode=0 Graphics3D width,height,depth,mode Local cam:TCamera=CreateCamera() PositionEntity cam,0,0,-15 Local light:TLight=CreateLight() RotateEntity light,45,0,0 ' used by camera code Local mxs#=0 Local mys#=0 Local move#=0.5 MouseXSpeed() ' flush MouseYSpeed() ' flush ' used by fps code Local old_ms=MilliSecs() Local renders Local fps Local Physic:TPhysic = TPhysic.Init() 'Will disapear to the inernals 'This will be replaced and also disapear Local MatID:Int = NewtonMaterialGetDefaultGroupID(TPhysic.World) NewtonMaterialSetDefaultElasticity(TPhysic.World,MatID,MatID,.6) SeedRnd(MilliSecs()) 'Creating some Balls and cubes to play with For Local I:Int = 0 To 200 If Rand(10) < 5 Then Local sphere:TMesh=CreateSphere() EntityRadius sphere,2 EntityPickMode sphere,2 PositionEntity sphere,Rnd(-20,20),Rnd(0,100),Rnd(-20,20) EntityColor(sphere,Rand(255),Rand(255),Rand(255)) Local NSphere:TNewtonObject = TNewtonObject.Create(Sphere,PHYS_SPHERE_HULL) 'Create the Collision Hull (Parameters are set automatically) NSphere.SetMass(1.0,1.0,1.0,1.0) ' Make it movable and a accurate ball Physic.AddObject(NSphere) 'Give it to the Physic engine Else Local cube:TMesh=CreateCube() EntityRadius cube,2 EntityPickMode cube,2 PositionEntity cube,Rnd(-20,20),Rnd(0,100),Rnd(-20,20) EntityColor(cube,Rand(255),Rand(255),Rand(255)) Local NCube:TNewtonObject = TNewtonObject.Create(cube,PHYS_BOX_HULL) 'Create the Collision Hull (Parameters are set automatically) NCube.SetMass(1.0,1.0,1.0,1.0) ' Make it movable and a accurate cube Physic.AddObject(NCube) 'Give it to the Physic engine EndIf Next Local Plane:TMesh = CreateCube() PositionEntity(Plane,0,-30,0) ScaleEntity(Plane,80,5,80) EntityColor plane,20,100,30 Local NPlane:TNewtonObject = TNewtonObject.Create(Plane,PHYS_BOX_HULL) NPlane.SetMass(0.0,0.0,0.0,0.0) ' Set it solid Physic.AddObject(NPlane) 'Give it to the Physic engine Local Timestep:Int = MilliSecs() Global pick:TEntity While Not KeyDown(KEY_ESCAPE) Pick = Null If KeyHit(KEY_ENTER) Then DebugStop '' control camera ' mouse look mxs#=mxs#+(MouseXSpeed()/5.0) mys#=mys#+(MouseYSpeed()/5.0) RotateEntity cam,mys#,-mxs#,0 If KeyDown(KEY_SPACE)=False MoveMouse width/2,height/2 MouseXSpeed() ' flush MouseYSpeed() ' flush EndIf ' move camera forwards/backwards/left/right with cursor keys If KeyDown(KEY_UP)=True Then MoveEntity cam,0,0,move# ' move camera forward If KeyDown(KEY_DOWN)=True Then MoveEntity cam,0,0,-move# ' move camera back If KeyDown(KEY_LEFT)=True Then MoveEntity cam,-move#,0,0 ' move camera left If KeyDown(KEY_RIGHT)=True Then MoveEntity cam,move#,0,0 ' move camera right ' if mousehit then perform camerapick If MouseHit(1) pick=CameraPick(cam,MouseX(),MouseY()) If pick<>Null Local XP:Float = Rnd(-15.0,15.0) Local YP:Float = Rnd(-15.0,15.0) Local ZP:Float = Rnd(-15.0,15.0) ' Apply a random impulse to the picked ball Physic.ApplyImpulse(pick,PickedX(),PickedY(),PickedZ(),XP,YP,ZP) EndIf EndIf Physic.Update() ' Update the physics (Update time is automatically calculated and passed as Deltatime within the engine) UpdateWorld() RenderWorld() renders=renders+1 If MilliSecs()-old_ms>=1000 old_ms=MilliSecs() fps=renders renders=0 EndIf SetBlend AlphaBlend Text 0,0,"FPS: "+String(fps) Flip Wend End