ScrollObject classes provides a lot of functionality and organisation for projects by wrapping the existing Orx object.
For testing collisions between one ScrollObject and another, the class provides the OnCollide
function eg:
orxBOOL Truck::OnCollide(ScrollObject *_poCollider, orxBODY_PART *_pstPart, orxBODY_PART *_pstColliderPart, const orxVECTOR &_rvPosition, const orxVECTOR &_rvNormal) { if (_poCollider == orxNULL) { return orxTRUE; } }
The OnCollide
in this Truck
ScrollObject class will detect collisions with another ScrollObject. This expects that any Orx object in your game be wrapped in a ScrollObject class. However, this is not necessary.
You may have many simple Orx objects in your game like Rocks, or Ice, bullets that you wish to collide with your Truck. But it would be very heavy handed to have to create a ScrollObject class for each, especially if the classes are basically empty.
Fortunately, Orx allows you to declare an object in your config to be a ScrollObject. If you had a Rock object defined as:
[Rock] Graphic = RockGraphic
You can convert it with: @ScrollObject
.
[Rock@ScrollObject] Graphic = RockGraphic
From here, _poCollider
in the OnCollide
function will be able to contain the Rock
ScrollObject if it collides with the Truck.
Brilliant.