haha. I do like the sound of EZRotate. I have considered it a few times, but I've always figured out how to do it myself at the last moment. It's still something I might pick up in the future. What I've also discovered is even though the two rotation command sets in DB are incompatible, you can actually still use them in conjunction if you use them in the right order.
Here's some of my tree stuff (some of these variables have been calculated earlier).
When the tree is first hit:
tree(t).falling = 1
ang# = atanfull(xdist#,zdist#)
yrotate object treeobj,wrapvalue(ang#*-1)
fix object pivot treeobj
yrotate object treeobj,ang#
That makes it face the direction for falling, but still appear to face the same direction as before. Then, this for falling over:
if tree(t).falling = 1
if object angle x(treeobj) < 80
xrotate object treeobj,wrapvalue(object angle x(treeobj)+tree(t).fallspd#)
tree(t).fallspd# = tree(t).fallspd# + 1
else
position object treeobj,object position x(treeobj),object position y(treeobj)-0.0005,object position z(treeobj)
if object position y(treeobj) < -0.5
tree(t).alive = 0
delete object treeobj
endif
endif
Obviously that's stripped down. But it's nice and simple. When it's fallen over, it slowly falls through the ground untl out of view.
I still might consider EZRotate in the future though.