*very depending on your classes*, you might be able to use the event system to send around events and create event-listeners in the required classes.
Like, the cameraclass sends out an event when its coords change, it sends event.x, event.y and event.data (for z), event.source to identify and event.id to give the event type. Emit it. Next somewhere in the 3d engine an event listener picks up the event, and you can extract x y z again. This way, the 3d engine and camera class really don't need to know eachother. But it only works for some situations, might not work for yours. It might also require you to create your classes in a somewhat different way, to be prepared for all this sending around. For more info to send around you could try the .extra field.. (never done so, except for sending an own GUI object's helptext to one of my help-displayers)
Like, the cameraclass sends out an event when its coords change, it sends event.x, event.y and event.data (for z), event.source to identify and event.id to give the event type. Emit it. Next somewhere in the 3d engine an event listener picks up the event, and you can extract x y z again. This way, the 3d engine and camera class really don't need to know eachother. But it only works for some situations, might not work for yours. It might also require you to create your classes in a somewhat different way, to be prepared for all this sending around. For more info to send around you could try the .extra field.. (never done so, except for sending an own GUI object's helptext to one of my help-displayers)