I'm working on a small FPS game (as a hobby and for learning purposes, nothing else) built with C++ in OpenGL (from scratch). Documenting online on the kind of strategy someone would approach with collision detection for bullets I've come to the conclusion that I must implement it using either Octree or BSP (Binary Space Partitioning used for indoor style games like Quake). Now my question is, since I already use a physics library like Bullet physics, can I use the physics engine for collisions of bullets and leave the Octree partitioning system only to handle the Occlusion Culling, View Frustum Culling etc. (to not render what is not visible)
Until now I was convinced that I must implement the ray cast and bullet collision using the partitioning system (preferably Octrees) until I read this thread and found out that Unity does this using it's physics library and not the partitioning system.
An FPS engine must be able to do ray casts for bullet collisions and other stuff to determine what's targeted and what's hit. Therefore, what partitioning system would you recommend if this isn't possible using the physics engine? (preferably something simpler and more dynamic like Octree and not that complicated like BSP)
I'm a bit confused on how to approach this kind of implementation and I was hoping someone could clear this out for me.
Other links where I've found this kind of implementation:
Bullet physics Using RayTest