Subo un commit tocho. He hecho mucha I+D este finde, me ha costado pero ya he dejado todo mas o menos como sugería Emilio con su grafo. Hay algunas diferencias que vienen muy bien pero lo esencial es igual.

Queriais que AvatarController calculara la posición y la enviara a PhysicController y que ese componente sea quien ponga la entidad en su posición. Pues eso es exactamente lo que hace ahora, con ayuda de los componentes de salto y cambio de anillo. Emilio veia un problema en que la posición se calculara de manera distibuida porque PhysicController debía recibir tan sólo mensajes AVATAR_MOVE, y yo también lo he creido así, por ello, tan solo recibe AVATAR_MOVE de todos los componentes que modifican algún aspecto de una posición lógica. En destino, accediendo por getAction(), vemos que dato contiene y actualizamos ese y solo ese campo. Sólo se envia un float normalmente, el grado que calcula AvatarController, cuando se está saltando es otro float adicional que nos calcula Jump. Y si se cambia de anillo/base supone un entero nada mas. NUNCA SE ENVIA UNA POSICIÓN LÓGICA COMPLETA, otra de las cosas que posiblemente os quitaban el sueño :).

He cambiado  el salto, que era muy complicado, sobraban muchas cosas, ahora está muy simplificado y es más facil de entender y desde luego queda más elegante en único componente que no haga espeso el AvatarController.
Que sea distribuido no es un problema porque cada componente envia solo lo que hace y nada más y en el PhysicController se junta todo.
 Es posible que no os termine de convencer que el comportamiento de entidades se componga con componentes y no por herencia del AvatarController pero estoy convencido de que activar y desactivar ciertos componentes en cualquier momento nos será muy util. Por ejemplo activar el tercer combo del prota o comprar una evolución para una criatura. No se puede cambiar el tipo de un componente en tiempo de ejecución (corregirme si me equivoco, que es posible) por lo que ya tendría que ser desde el principo del tipo que lleva lo máximo.

Más cosas, he cambiado las coordenadas polares por coordenadas cilíndricas. No sabía ni que existian las coordenasa cilíndricas xD, pero el caso es que me he topado con ellas y es que es precisamente lo que usamos aunque lo hubieramos llamado polares. Basicamente, lo que haciamos era tratar la y como una excepción al sistema lógico que se trataba aparte,. Ahora se tiene en cuenta en el mundo lógico como un dato más, lo he metido como un nuevo float que es _height (altura). No os supone ningún cambio importante, si hasta ahora lo entendiais no os preocupeis que es lo mismo. Usabamos coordenadas cilindricas pero no lo sabiamos, ahora es tenido en cuenta y es mucho mejor así.

AngularMovement también se ha caido del proyecto. También según el grafo de Emilio.
Walk_back sigue estando, no porque quiera que se quede, es que no me ha dado tiempo a quitarlo.
En definitiva, del grafo de Emilio faltaría crear un proyecto de física para que  Physic::CServer y PhysicController de Lógica se comuniquen.  Lo importante es sobre todo que PhysicController tiene en cada tick una posición lógica actualizada disponible para poner la entidad en el mundo y para hacer con esa posición las llamadas al servidor de física.