Changed gun system to use shared_ptr instead of raw pointers