EasyTok/Tokamak - how to detect collision?

Blitz3D Forums/Blitz3D Userlibs/EasyTok/Tokamak - how to detect collision?

Is there a clever way to check whether a RB cube is collided with an AB cube?

Basically I need to know whether a cube is 'sitting' on another cube (the 2nd cube is a flattened larger cube)

Do you look the example : Beginning - Camera Move 01.bb
It's an example with camera moving with physic + collisions

I have EasyTok 1.1 - it does not have that example

??? 1.1 ??? Send me an email at "pagnisola at exequo dot com"

done

not received yet.

Sent again from work this time.

Sended :)

Gotted :-)

Thanks.

There is no Beginning - Camera Move 01.bb exmaple in the 1.3 archive :-(

Hi can someone please explaine how to detect collisions with EasyTok, if I load a mesh
MyMesh=LoadMesh("MyMesh.3ds")
TOK_CreateRBCube("Object",MyMesh,0,0,0,0,0,0,2,2,2,6,"",255,255,255,1,0)
and set it for a Rb object
and if i create a TokCollider ie
Map1=LoadMesh("Map1.b3d")
TOK_CreateTokCollider(Map1,"",Map1,0);,Erase=False

I can see that the collisions work the two object interact with each other but I need know if they have collided.

can anyone help pls ?

That's exactly my point!

You cannot use the Blitz collision detection as we are using dynamic bodies here.

I don't think it can be done.

The only way that i have find to make collisions
is under the example : Beginning - Push Object 01.bb
you can see how the camera can push an object.

Filax,

but that is not good for dymanic colisions.

I know but i have not solutions for the moment :/

I have noticed that TOK_CreateTokCollider has a flag for collision but TOK_CreateRBCube has no flag not sure how to use the collision flag in TOK_CreateTokCollider or even how to get a result from it, anyway I have thought of a possible workaround using Blitz collisions

MyMesh=LoadMesh("MyMesh.3ds")
TOK_CreateRBCube("Object",MyMesh,0,0,0,0,0,0,2,2,2,6,"",255,255,255,1,0)
Map1=LoadMesh("Map1.b3d")
TOK_CreateTokCollider(Map1,"",Map1,0);,Erase=False
freeentity MyMesh

CollisionFlag=createcube(0)
scaleentity CollisionFlag,2,2,2
entityalpha CollisionFlag,0
Repeat
;keep the CollisionFlag entity at same position as the Rb ;object
CollisionFlagX#=(TOK_GetRBY#"Object")
CollisionFlagY#=(TOK_GetRBY#"Object")
CollisionFlagZ#=(TOK_GetRBY#"Object")
positionmeshCollisionFlag,CollisionFlagX,CollisionFlagY,CollisionFlagZ
Until KeyHit (1)

and just check for collisions with the CollisionFlag mesh and the map1 blitz mesh,I have not tested this and am assuming that when you create a Tok_CreateTokCollider mesh that the original biltz mesh is copyed and is still there. anyway this is just a quick idea I will test it tonight.

--

This is a bit better but it is still not detecting a collision on every impact any ideas anyone mabey I need to play around with TOK_RefreshPhysic(.1,2)?

Include "Inc_EasyTOK.bb"

Const Balls=1,Maps=2

Graphics3D 800,600
SetBuffer BackBuffer()
Cam=CreateCamera()
PositionEntity Cam,0,0,-40

Global Light=CreateLight()
PositionEntity Light,0,50,-10

TOK_InitWorld(0,-.6,0,1000,100)

Ball1=CreateSphere()
EntityType(ball1,Balls)
TOK_CreateRBSphere("Ball",Ball1,0,0,0,0,0,0,1,.2,"",255,255,255,1,0)
FreeEntity Ball1

Global Map=CreateCube()
ScaleEntity Map,2,2,2
EntityType Map,Maps
EntityColor Map,255,0,0
PositionEntity Map,0,-20,0
TOK_CreateTokCollider(Map,"",Map,Maps,0); Set the collision type to maps

Collisions Balls,Maps,2,2

Repeat

UpdateWorld()

TOK_RefreshPhysic(.1,2)
TOK_RefreshEasyTOK()

RenderWorld()
If EntityCollided(TOK_GetRBMesh("Ball"),Maps)
TOK_ApplyImpulse("ball",0,.5,0)
EndIf

Flip
Until KeyHit(1)

TOK_FreePhysic()
End

You must know bain that blit have many many problems with collisions and moving objects :( In pure blitz detect
collisions with animated objects is the hell, so with
tokamak ...