I don't think you will be able to do anything about enable_impact, but you can calculate how far you are trying to move in some direction, (just like you would for move()) copy the absolute coordinates of the destination to some temporary vector (destination.x is how far to move + your current position), and perform a trace() from your position to the destination vector. This should provide basic effects of collision detection.