20 Commits (3d97e20821550de6af6cf74f26af594095f0ae7f)

Author SHA1 Message Date
Nico de Poel 764f2a8a0f Optimized lightmap uploads by converting the raw byte pointer from Quake to a NativeArray (unsafe code required) and passing that directly to SetPixelData. This does away with the extra copying step and removes garbage created by Texture2D's implementation. 5 years ago
Nico de Poel 46cafd0c63 Renamed "target" pointers to "context" to fit in line with the rest of the callbacks refactoring 5 years ago
Nico de Poel 2a4ec90ff1 Reworked setup of native-to-managed callbacks. The "target" pointer is no longer a part of the callbacks struct, instead this is now supplied and stored as an opaque "context" pointer along with a pointer to the callbacks struct. These are provided through separate SetCallbacks functions before initializing the UniQuake native plugin. This cleans up several functions and requires less use of global pointers, while also making it easier to see how things fit together and how to add new modules in the future. 5 years ago
Nico de Poel ec87ac10b0 Added profiler sampling to the Game and Render callbacks, to make it easier to measure performance of native-to-managed callbacks 5 years ago
Nico de Poel cce1ed6d47 Reuse the same lightmap byte buffer, since the lightmap dimensions are static anyway. Reduces the amount of garbage produced by dynamic lightmap uploading. 5 years ago
Nico de Poel c9a3d0430c First implementation of dynamically updated lightmap textures. These are uploaded from the Quake engine to Unity on map load, and whenever a lightmap texture changes. 5 years ago
Nico de Poel cd7423ae34 Use ref when passing structs by pointer through P/Invoke. This fixes positions and angles not being updated correctly in 32-bit builds. This was not a problem in 64-bit mode (probably because an entire vec3_t fits into a single register and the call is optimized as such) but it is in 32-bit mode. 5 years ago
Nico de Poel a886f3d993 First steps in reorganizing the project, so that assets and game state are managed separately from the interop modules. This will allow for a clearer picture of where gameplay-related interactions should take place, and how entities and such should be linked to their associated assets. 5 years ago
Nico de Poel 15e3faa753 Added callback function to allow Quake to send the view parameters to Unity, and apply them to the main camera. This makes actual movement through the map in Unity possible. 5 years ago
Nico de Poel 11c3b2d826 Defined structs for BSP SubModels and Nodes, which will allow for a more systematic conversion to Unity meshes. Also moved more marshalling code into the data classes, which seems like a more natural place. 5 years ago
Nico de Poel 89f3600608 Reconstruct brush model data based on glpoly_t data generated by GLQuake. We can now successfully display BSP maps in Unity! 5 years ago
Nico de Poel 3988db5f8e Defined a bunch more data for brush models and initial marshaling of model data 5 years ago
Nico de Poel 4a7155bb1b Fixed marshaling of multi-dimensional arrays of QGLTextures, and add a second unlit material layer with additive blending for models that use fullbright textures 5 years ago
Nico de Poel e70d363998 Implemented uploading of skin texture data to Unity, and linking loaded alias models to their primary skin texture 5 years ago
Nico de Poel 428eebb941 Pass along alias frame type and correctly count the total number of poses in a model, so that the correct number of pose vertices are marshaled and we can identify models that use group frame animations instead of typical single frames. Quake's model formats are weird. 5 years ago
Nico de Poel 96d2a1fe7b First setup to upload brush models (specifically: the world model) from Quake to Unity. Updated the QWorld class to include the fields added by QuakeSpasm. 5 years ago
Nico de Poel 4d974bf6cd Solved the UV correcting problem for backside triangles by pre-processing the model input data, whereby vertices on the seam are duplicated and adjusted. The rest of the mesh conversion process then remains as it was. 5 years ago
Nico de Poel e8a3313d88 Some cleanup 5 years ago
Nico de Poel 834ff9a794 First test converting models from Quake into Unity meshes, including normals and UVs. It's still far from perfect (back side UVs are not handled at all yet) but it's a good demonstration of what will be possible. 5 years ago
Nico de Poel 754812d63e Split all of the callback modules' native interop boilerplate code off into separate partial class files, to keep the actual logic code clean and easy to read. 5 years ago
Nico de Poel e416868650 Modifications to make UniQuake work with a new engine DLL based on QuakeSpasm: 5 years ago
Nico de Poel 0f02005c58 Reimplemented uploading of alias model data, which now includes all vertex, triangle index and UV data 5 years ago
Nico de Poel 3b4382954a Some renaming and reorganization 5 years ago
Nico de Poel ec8951fa7c First test to upload model data (brush models and alias models) from Quake to Unity 5 years ago