Abstraido el grueso de character controller. De momento en la primera version de la refactorizacion del proyecto de fisicas no voy a ser muy delicado con el acoplamiento. Una vez que tenga todo bien modularizado, empiezo a abstraer temas como la escena y delegar operaciones de anadido al server (exclusivamente).
Modularizado character controller. Ahora el server ya no se encarga de tareas que deberian corresponder a los character controllers (como su inicializacion o el seteo de posiciones). El acoplamiento entre clases ahora mismo es fuerte, pero como ya dije en anteriores commits, de momento me voy a centrar en modularizar.
Casi abstraido el componente entity de fisicas. De momento he creado una factoria sencillisima de geometrias para usar con el overlap y en la creacion de entidades. No he encapsulado las geometrias por ser la iteracion 1, aunque teniendo en cuenta que la factoria de geometrias solo es util para el proyecto de fisicas, no habria mucho problema en dejarlo asi. En cuanto tenga algo mas de tiempo lo acabo y me paso a las queries de overlap y raycast.
Casi abstraidos los rigid bodies. Queda modificar por completo el componente physic entity y
anadir donde corresponda el metodo de crear desde archivo.
Creado el gestor de materiales. Ahora mismo es un manager sencillisimo que he creado por comodidad para almacenar distintos tipos de materiales. Como en principio no vamos a tener muchos materiales con esta aproximacion nos vale.
PhysicDynamicEntity practicamente funcional. Falta arreglar los metodos de movimiento kinematico en la entidad de fisicas e implementar el metodo de desactivado de gravedad. PhysicStaticEntity esta por hacer y hay que probar que todo funcione debidamente, que seguro que me va a dar algun disgusto que otro. La factoria de geometrias y el gestor de materiales estan acoplados en la logica de momento. En cuanto que tenga la primera iteracion lista con overlaps y raycasts me pongo a desacoplar.
Los componentes que encapsulan a las entidades fisicas estaticas y dinamicas ya estan creados y compilan. Me pongo a probar a ver si explota el mundo.
Merge branch 'physics' of https://github.com/franaisa/Gloom into physics
Solucionado el problema con el addforce. Corregido ademas un bug en la creacion de las entidades dinamicas para el disparo. Abstraidos los materiales y las geometrias usando typedefs (no merece la pena hacer una estructura mas compleja). Queda probar las entidades estaticas y dinamicas bien (que por lo que veo funcionan requetebien) e implementar las queries de overlap y raycast. Con eso hecho ya puedo darle una segunda pasada para dejarlo todo mejor modularizado. Ademas, hay algunos mensajes que son demasiado especificos (como addimpulsiveforce). Todo eso lo cambiare dentro de poco (:
Implementada la funcionalidad de los kinematics. Hay un problema con la reactivacion de las entidades ya que los items por ejemplo al reaparecer colisionan contigo, creo que tiene que ver con lo que he hecho para ver si es un trigger.
Arreglado el bug, era justo lo que pensaba (:
Cambiados los componentes fisicos del blueprints del single player a los nuevos. Todo funciona correctamente menos una petada que hay en la sierra al matarte, que al respawnear pasa algo raro. Cuando tenga un rato lo miro y luego me paso a las queries.
Merge branch 'physics' of https://github.com/franaisa/Gloom into physics
Arreglado el bug de las sierras y los pinchos. Abstraido por completo la entidad fisica (hay mucho codigo guarreao que ya corregire, pero de momento es funcional). Manana empiezo con las queries.
Corregida una cagada en la liberacion de memoria del actor de physx.
Los overlaps ya estan implementados aunque no los puedo probar porque me esta dando un petardazo rarisimo visual. Creo que es un problema de referencias cruzadas o alguna historia de esas, esta tarde le preguntare a David a ver si el sabe por donde van los tiros. Me paso a los raycasts.
Cambiado el mensaje de add Force para que se indique el tipo de fuerza que se quiere aplicar. Nota: Recordadme que mate a Jose.
Vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaale, pues ya he eliminado la funcionalidad innecesaria del server (que era una poquita la verdad). Entre clases del proyecto de fisicas hay bastante acoplamiento, pero bueno, de momento no nos perjudica mucho la verdad, ya lo ire cambiando. De momento me estoy centrando en desmierdear la fisica, que la teniamos enmierdeceada por todos lados. Recordadme que mate a Jose multiplicado por infinito. El raycast al final no lo he tocado porque tendriamos que acordar algunas cosas pa dejar los filtros bien. Voy a seguir haciendo limpieza, y cuando eso me pongo a implementar un manager de filtros que no estaria mal.
Borrado de la cache physicEntity, ahora ya solo tenemos los componentes chachis
Corregido el bug de las queries. Al final no he hecho que se devuelvan punteros a geometrias porque el cliente tiene que ser el encargado de liberar dicha memoria y eso lo veo un poco peligroso la verdad. Asi que de momento prefiero compilar alguna que otra cabecera a cambio no tener memory leaks. Si vemos que se hace pesado lo cambio a punteros que no se tarda mucho. Ya esta practicamente todo terminado. Lo que me toca ahora es limpiar codigo y meter quizas un gestor de filtros.