So I've been trying to do collision for quite a while but I never got it to work. So does anyone know a easy way to have collision for this nearly perfect or best possible?
// Ironworks Engine World Editor
// 14/04/2013
//Setup
sync on : sync rate 0 : sync
center text screen width()/2,screen height()/2,"Loading..." : sync : cls
//Load media
global g_HeightmapImgID : global g_TextureImgID : global g_DetailmapImgID : global g_EnvironmentmapImgID
g_HeightmapImgID=1 : g_TextureImgID=2 : g_DetailmapImgID=3 : g_EnvironmentmapImgID=4
load image "..\Media\heightmap1.bmp",g_HeightmapImgID
load image "..\Media\texture1.jpg",g_TextureImgID
load image "..\Media\detail.tga",g_DetailmapImgID
load image "..\Media\environment1.bmp",g_EnvironmentmapImgID
load object "Knight.x",3 : rotate object 3,-90,0,0 : position object 3,147815,2027,46683
load image "cobble.bmp",5
Rem World
Load object "Media\castlepack\castle pieces\wall_a.x",4
position object 4,159995.890625,2980,35145.0820313
rotate object 4,0,120,0
Load object "Media\castlepack\castle pieces\wall_b.x",5
position object 5,160230.0625,2980,35549.8867188
rotate object 5,0,300,0
Clone object 7,4
position object 7,160475.8125,2980,35970.1132813
rotate object 7,0,120,0
Clone object 8,5
position object 8,160719.203125,2980,36393.1835938
rotate object 8,0,300,0
Clone object 6,4
position object 6,160915.8125,2980,36820.1132813
rotate object 6,0,110,0
Load object "Media\castlepack\castle pieces\tower1_b.x",9
position object 9,161163.28125,2980,37283.859375
rotate object 9,0,280,0
Load object "Media\castlepack\castle pieces\entrance.x",10
position object 10,161214.5625,2980,37809.0898438
rotate object 10,0,280,0
Clone object 12,9
position object 12,161367.109375,2980,38346.3125
rotate object 12,0,100,0
Clone object 13,5
position object 13,161219.34375,2980,38916.84375
rotate object 13,0,250,0
Clone object 14,4
position object 14,161051.359375,2980,39375.0820313
rotate object 14,0,70,0
Clone object 15,5
position object 15,160930.125,2980,39811.0664063
rotate object 15,0,260,0
Clone object 16,4
position object 16,160881.0625,2980,40286.2421875
rotate object 16,0,90,0
Clone object 17,5
position object 17,160886.078125,2980,40766.375
rotate object 17,0,270,0
Clone object 18,9
position object 18,160883.84375,2980,41328.0351563
rotate object 18,0,270,0
Clone object 20,10
position object 20,160915.078125,2980,41845.8203125
rotate object 20,0,280,0
Clone object 21,9
position object 21,161006.453125,2980,42353.8085938
rotate object 21,0,100,0
Clone object 22,4
position object 22,160989.84375,2980,42906.921875
rotate object 22,0,100,0
Clone object 23,5
position object 23,161144.234375,2980,43324.453125
rotate object 23,0,300,0
Clone object 24,4
position object 24,161387.890625,2980,43759.03125
rotate object 24,0,120,0
Clone object 25,5
position object 25,161634.96875,2980,44175.4453125
rotate object 25,0,300,0
Clone object 27,4
position object 27,161873.890625,2980,44587.5351563
rotate object 27,0,120,0
Clone object 26,5
position object 26,162186.28125,2980,44905.4296875
rotate object 26,0,330,0
Clone object 28,9
position object 28,162682.671875,2980,45134.4726563
rotate object 28,0,330,0
Clone object 30,10
position object 30,163161.828125,2980,45478.5585938
rotate object 30,0,330,0
Clone object 31,9
position object 31,163691.828125,2980,45728.5585938
rotate object 31,0,150,0
Clone object 33,4
position object 33,164105.796875,2980,46082.109375
rotate object 33,0,150,0
Clone object 34,9
position object 34,164495.796875,2980,46302.109375
rotate object 34,0,330,0
Clone object 36,4
position object 36,164916.828125,2980,46542.9726563
rotate object 36,0,150,0
Load object "Media\castlepack\castle pieces\stable.x",37
position object 37,163491.59375,2980,44791.6132813
rotate object 37,0,150,0
Clone object 38,37
position object 38,161728.03125,2980,42078.5351563
rotate object 38,0,360,0
Clone object 39,37
position object 39,161677.5,2980,37187.546875
rotate object 39,0,270,0
Load object "Media\castlepack\castle pieces\well.x",40
position object 40,161733.75,2980,41788.5703125
rotate object 40,0,360,0
Load object "Media\medievalpack\buildings\inn.x",41
position object 41,161503.671875,2980,41505.1953125
rotate object 41,0,280,0
Load object "Media\medievalpack\buildings\medhouse1.x",42
position object 42,161862.40625,2980,41239.953125
rotate object 42,0,280,0
Clone object 43,42
position object 43,162138.828125,2980,41519.1484375
rotate object 43,0,330,0
Clone object 44,42
position object 44,162624.4375,2980,41552.0703125
rotate object 44,0,360,0
Load object "Media\medievalpack\buildings\medhouse4.x",45
position object 45,162261.15625,2980,44604.6171875
rotate object 45,0,150,0
Clone object 46,45
position object 46,161822.15625,2980,44082.4023438
rotate object 46,0,120,0
Clone object 47,45
position object 47,161475.484375,2980,43519.1484375
rotate object 47,0,120,0
Load object "Media\medievalpack\buildings\medhouse5.x",48
position object 48,161839.1875,2980,42949.6367188
rotate object 48,0,10,0
Clone object 50,42
position object 50,162309.40625,2980,43308.6992188
rotate object 50,0,210,0
Load object "Media\medievalpack\buildings\medhouse2.x",51
position object 51,162121.6875,2980,43442.5507813
rotate object 51,0,200,0
Clone object 52,51
position object 52,161895.765625,2980,43474.7226563
rotate object 52,0,230,0
Clone object 53,42
position object 53,162010.421875,2980,43721.3007813
rotate object 53,0,270,0
Clone object 54,42
position object 54,162103.5,2980,43959.1328125
rotate object 54,0,300,0
Load object "Media\medievalpack\buildings\medhouse9.x",56
position object 56,162953.46875,2980,44468.8671875
rotate object 56,0,60,0
Clone object 57,42
position object 57,162271.90625,2980,44162.3359375
rotate object 57,0,320,0
Clone object 58,42
position object 58,162638.890625,2980,44428.484375
rotate object 58,0,330,0
Load object "Media\medievalpack\buildings\medhouse13.x",59
position object 59,162443.484375,2980,43844.6835938
rotate object 59,0,70,0
Clone object 60,41
position object 60,162812.25,2980,43965.0859375
rotate object 60,0,160,0
Clone object 61,45
position object 61,163198.421875,2980,43494.1679688
rotate object 61,0,340,0
Clone object 62,45
position object 62,161715.09375,2980,42497.8242188
rotate object 62,0,190,0
Clone object 63,42
position object 63,162597.75,2980,43568.9765625
rotate object 63,0,120,0
Clone object 64,42
position object 64,162806.390625,2980,43268.1601563
rotate object 64,0,320,0
Clone object 65,51
position object 65,162694.421875,2980,43035.1914063
rotate object 65,0,310,0
Load object "Media\medievalpack\buildings\medhouse10.x",67
position object 67,162255.515625,2980,42414.9296875
rotate object 67,0,110,0
Clone object 68,42
position object 68,162423.796875,2980,42770.1757813
rotate object 68,0,40,0
Clone object 69,45
position object 69,162744.59375,2980,42556.328125
rotate object 69,0,290,0
Clone object 70,42
position object 70,162563.6875,2980,42141.2460938
rotate object 70,0,260,0
Clone object 71,42
position object 71,162896.640625,2980,42025.7460938
rotate object 71,0,200,0
Clone object 72,48
position object 72,161459.421875,2980,40863.7929688
rotate object 72,0,100,0
Load object "Media\medievalpack\buildings\medhouse6.x",73
position object 73,161240.96875,2980,40079.1914063
rotate object 73,0,360,0
Clone object 74,73
position object 74,163600.109375,2980,44444.9765625
rotate object 74,0,240,0
Clone object 77,56
position object 77,163890.3125,2995,44715.6914063
rotate object 77,0,60,0
Load object "Media\medievalpack\buildings\medhouse13.x",78
position object 78,163997.921875,2980,44426.1679688
rotate object 78,0,60,0
Clone object 79,45
position object 79,162279.578125,2980,37336.4375
rotate object 79,0,360,0
Clone object 80,42
position object 80,163055.53125,2980,42884.1875
rotate object 80,0,140,0
Clone object 84,51
position object 84,163239.265625,2980,43013.8398438
rotate object 84,0,160,0
Clone object 83,42
position object 83,163464.6875,2980,43003.0703125
rotate object 83,0,160,0
Clone object 82,42
position object 82,163084.6875,2980,42293.0703125
rotate object 82,0,130,0
Clone object 81,42
position object 81,163174.6875,2980,42493.0703125
rotate object 81,0,110,0
Clone object 85,4
position object 85,166291.046875,3070.48706055,33129.5351563
rotate object 85,0,110,0
Clone object 86,5
position object 86,166493.625,3070.62451172,33566.9921875
rotate object 86,0,300,0
Clone object 87,4
position object 87,166737.609375,3071.83569336,33988.6796875
rotate object 87,0,120,0
Clone object 88,5
position object 88,166923.765625,3073.23364258,34409.0195313
rotate object 88,0,290,0
Clone object 89,4
position object 89,167007.90625,3072.00585938,34862.3554688
rotate object 89,0,90,0
Clone object 90,5
position object 90,167120.15625,3072.00219727,35273.9921875
rotate object 90,0,300,0
Clone object 91,4
position object 91,167282.703125,3072.03198242,35699.5546875
rotate object 91,0,100,0
Clone object 92,9
position object 92,167359.21875,3081.24536133,36256.8476563
rotate object 92,0,290,0
Clone object 93,10
position object 93,167676.96875,3079.04077148,36818.25
rotate object 93,0,300,0
Clone object 94,9
position object 94,167997.71875,3072.00195313,37341.3710938
rotate object 94,0,120,0
Clone object 95,4
position object 95,168180.265625,3071.22875977,37821.375
rotate object 95,0,100,0
Clone object 96,5
position object 96,168220.609375,3070.6965332,38276.765625
rotate object 96,0,270,0
Clone object 97,4
position object 97,168177.4375,3072.05834961,38754.6757813
rotate object 97,0,80,0
Clone object 98,5
position object 98,168173.1875,3071.95654297,39216.84375
rotate object 98,0,280,0
Clone object 99,4
position object 99,168323.53125,3072.01391602,39649.5820313
rotate object 99,0,120,0
Clone object 100,5
position object 100,168602.3125,3072.03100586,40040.7382813
rotate object 100,0,310,0
Clone object 101,5
position object 101,168926.1875,3072.03100586,40335.828125
rotate object 101,0,320,0
Clone object 102,10
position object 102,173417.515625,3359.01635742,35196.5859375
rotate object 102,0,180,0
Clone object 103,9
position object 103,172960.703125,3268.36230469,35117.9726563
rotate object 103,0,1,0
Clone object 104,9
position object 104,173868.46875,3251.56811523,35127.5
rotate object 104,0,180,0
Clone object 105,4
position object 105,173911.8125,3363.25561523,35760.2734375
rotate object 105,0,100,0
Clone object 106,5
position object 106,173994.546875,3363.25561523,36238.9179688
rotate object 106,0,280,0
Clone object 108,4
position object 108,174118.3125,3363,36706.3242188
rotate object 108,0,110,0
Clone object 109,5
position object 109,174240.34375,3363,37163.0625
rotate object 109,0,280,0
Clone object 110,4
position object 110,174237.90625,3363,37625.1132813
rotate object 110,0,80,0
Clone object 111,5
position object 111,174231.375,3363,38100.90625
rotate object 111,0,280,0
Clone object 112,4
position object 112,174301.859375,3363,38506.6328125
rotate object 112,0,100,0
Clone object 113,4
position object 113,172305.03125,3433.49780273,31742.3945313
rotate object 113,0,100,0
Clone object 114,5
position object 114,172383.109375,3433.41503906,32220.5546875
rotate object 114,0,280,0
Clone object 115,4
position object 115,172461.828125,3432.02197266,32700.2890625
rotate object 115,0,100,0
Clone object 116,5
position object 116,172547.375,3433.90966797,33181.453125
rotate object 116,0,280,0
Clone object 117,4
position object 117,172637.328125,3432.34448242,33670.6210938
rotate object 117,0,100,0
Clone object 118,5
position object 118,172767.328125,3432.34448242,34130.6210938
rotate object 118,0,290,0
Clone object 119,4
position object 119,172927.328125,3432.34448242,34590.6210938
rotate object 119,0,110,0
For CullObj=4 to 200
If object exist(CullObj)=1 then set object cull CullObj,1
Next CullObj
If object exist(10000)=0 then make object cube 10000,10 : position object 10000,147815,2047,46683 : hide object 10000
//Create terrain
//Make the terrain
global g_TerrainID
g_TerrainID=BT MakeTerrain()
//Set images
BT SetTerrainHeightmap g_TerrainID,g_HeightmapImgID
BT SetTerrainTexture g_TerrainID,g_TextureImgID
BT SetTerrainDetail g_TerrainID,g_DetailmapImgID
BT SetTerrainEnvironment g_TerrainID,g_EnvironmentmapImgID
//Set some other values
BT SetTerrainScale g_TerrainID,120.0
BT SetTerrainYScale g_TerrainID,30.0
BT SetTerrainSplit g_TerrainID,32
BT SetTerrainDetailTile g_TerrainID,3.0
//LOD
BT SetTerrainLOD g_TerrainID,3 //3 LOD levels
BT SetTerrainLODDistance g_TerrainID,1,100.0 //LOD Distances start at one and go up to 1 less the LOD level count
BT SetTerrainLODDistance g_TerrainID,2,200.0
//Smoothing and Quad Rotation
BT SetTerrainSmoothing g_TerrainID,1
BT SetTerrainQuadRotation g_TerrainID,1
//Environment maps
EM_Empire=BT AddTerrainEnvironment(g_TerrainID,rgb(255,106,0)) //Seccond parameter tells the system which colour represents this environment on the environment map
EM_HighLords=BT AddTerrainEnvironment(g_TerrainID,rgb(225,0,0))
EM_Sea=BT AddTerrainEnvironment(g_TerrainID,rgb(96,38,0))
//Build
global g_TerrainObjectID
g_TerrainObjectID=1
//This command processes the heightmap and creates all the internal structures for the terrain
BT BuildTerrain g_TerrainID,g_TerrainObjectID,1
Vertex = BT GetVertexCount()
//Setup camera
set camera range 10,100000
hide mouse
//Enable auto render
BT EnableAutoRender 1
//Main loop
StartTime=timer()
Obj=91 : autocam off
If file exist ("Coords.txt")=1 then delete file "Coords.txt"
open to write 1,"Coords.txt"
do
If image exist(1)=1 then delete image 1
Height#=BT GetGroundHeight(g_TerrainID,Obj-1,Obj-1)
//Camera movement
Elapsedtime#=(timer()-StartTime)/3000.0+Elapsedtime#*0.7
StartTime=timer()
ObjTimer=ObjTimer+1
ObjectTimer=ObjectTimer+1
cx#=camera angle x()+mousemovey()/4.0
if cx#>90.0 then cx#=90.0
if cx#<-90.0 then cx#=-90.0
rotate camera cx#,camera angle y()+mousemovex()/4.0,0.0
If keystate(2) then object$="Knight"
If keystate(3) then object$="Media\castlepack\castle pieces\wall_a.x"
If keystate(4) then object$="Media\castlepack\castle pieces\wall_b.x"
If keystate(5) then object$="Media\castlepack\castle pieces\tower1_b.x"
If keystate(6) then object$="Media\castlepack\castle pieces\entrance.x"
If keystate(15) and ObjTimer=>50 then set cursor 10,115 : object$="" : Input "Load:", object$
If object$="/tp Orthone" then position camera 158193,6031,42292 : object$=""
If mousemovez()>0 then suspend for key
If keystate(57) then object$=get clipboard$()
If mouseclick()=1 and PositionMode=0 and object$="Media\castlepack\castle pieces\wall_a.x" then clone object Obj,4 : position object Obj,camera position x(),gheight#,camera position z() : If object exist(Obj)=1 then set object cull Obj,1 : Obj=Obj+1 : wait 50 : Clone=4
If mouseclick()=1 and PositionMode=0 and object$="Media\castlepack\castle pieces\wall_b.x" then clone object Obj,5 : position object Obj,camera position x(),gheight#,camera position z() : If object exist(Obj)=1 then set object cull Obj,1 : Obj=Obj+1 : wait 50 : Clone=5
If mouseclick()=1 and PositionMode=0 and object$="Media\castlepack\castle pieces\tower1_b.x" then clone object Obj,9 : position object Obj,camera position x(),gheight#,camera position z() : If object exist(Obj)=1 then set object cull Obj,1 : Obj=Obj+1 : wait 50 : Clone=9
If mouseclick()=1 and PositionMode=0 and object$="Media\castlepack\castle pieces\entrance.x" then clone object Obj,10 : position object Obj,camera position x(),gheight#,camera position z() : If object exist(Obj)=1 then set object cull Obj,1 : Obj=Obj+1 : wait 50 : Clone=10
If mouseclick()=1 and PositionMode=1 and object$="Knight" then clone object Obj,3,1 : position object Obj,camera position x(),gheight#,camera position z() : If object exist(Obj)=1 then set object cull Obj,1 : rotate object Obj,-90,0,0 : Obj=Obj+1
If keystate(11) then PositionMode=1
If keystate(10) then PositionMode=0
If Obj=>5 and mouseclick()=2 and ObjectTimer=>20
ObjString$=str$(Obj-1)
ObjXAxis$=str$(object position x(Obj-1))
ObjYAxis$=str$(object position y(Obj-1))
ObjZAxis$=str$(object position z(Obj-1))
CloneString$=str$(Clone)
Comma$=","
ObjPos$ = "position object " + ObjString$ + Comma$ + ObjXAxis$ + Comma$ + ObjYAxis$ + Comma$ + ObjZAxis$
ObjRot$="rotate object " + ObjString$ + ",0," + str$(object angle y(Obj-1)) + ",0"
ObjLod$="Clone object " + ObjString$ + Comma$ + CloneString$
write string 1,ObjLod$
write string 1,ObjPos$
write string 1,ObjRot$
ObjectTimer=0
endif
If keystate(78) and ObjTimer=>20 then Obj=Obj+1 : ObjTimer=0
If keystate(76) and ObjTimer=>20 then Obj=Obj-1 : ObjTimer=0
If Object exist(Obj-1)=1
If keystate(17) then position object Obj-1,object position x(Obj-1)+10,gheight#,object position z(Obj-1) : wait 20
If keystate(31) then position object Obj-1,object position x(Obj-1)-10,gheight#,object position z(Obj-1) : wait 20
If keystate(30) then position object Obj-1,object position x(Obj-1),gheight#,object position z(Obj-1)+10 : wait 20
If keystate(32) then position object Obj-1,object position x(Obj-1),gheight#,object position z(Obj-1)-10 : wait 20
If keystate(16) then rotate object Obj-1,0,object angle y(Obj-1)+10,0 : wait 20
If keystate(18) then rotate object Obj-1,0,object angle y(Obj-1)-10,0 : wait 20
If object angle y(Obj-1)>=360 then rotate object Obj-1,object angle x(Obj-1),1,0 : wait 20
If object angle y(Obj-1)<=0 then rotate object obj-1,object angle x(Obj-1),360,0 : wait 20
endif
if keystate(19) then RPGTest=1
if keystate(46) then RPGTest=0
if upkey() and RPGTest=0 then move camera 1000.0*Elapsedtime#
if upkey() and RPGTest=0 and keystate(54) then move camera 10000.0*Elapsedtime#
if downkey() and RPGTest=0 then move camera -1000.0*Elapsedtime#
if downkey() and RPGTest=0 and keystate(54) then move camera -10000.0*Elapsedtime#
gheight#=BT GetGroundHeight(g_TerrainID,camera position x(),camera position z())
if camera position y()-40<gheight# then position camera camera position x(),gheight#+40,camera position z()
//Paint
If keystate(157) then BT PaintTerrain g_TerrainID,camera position x(),camera position z(),200,5 : BT UpdateTerrainTexture g_TerrainID
//Environment Maps
Env=BT GetPointEnvironment(g_TerrainID,camera position x(),camera position z())
if Env=EM_Empire then text 10,100,"Empire"
if Env=EM_HighLords then text 10,100,"High Lords"
if Env=EM_Sea then text 10,100,"Sea"
//Wireframe
if keystate(59) then set object wireframe g_TerrainObjectID,1
if keystate(60) then set object wireframe g_TerrainObjectID,0
//FPS
text 10,10,str$(screen fps())
set cursor 10,25 : print "Camera:",camera position x(),",",camera position y(),",",camera position z()
set cursor 10,40 : print "Object:", object$
set cursor 10,55 : print "Obj Selected=", Obj
If object exist(obj-1)=1
set cursor 10,70 : print "Object position:", object position x(Obj-1),",",object position y(Obj-1),",",object position z(Obj-1)
set cursor 10,85 : print "Object rotation:", object angle x(Obj-1),",",object angle y(Obj-1),",", object angle z(Obj-1)
set cursor 10,115 : print "Verticals:", Vertex
endif
//Position mouse
position mouse screen width()/2,screen height()/2
//Update screen
sync
loop
World map have got collision
Thanks in advance