diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-01-29 18:28:24 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-01-29 19:53:51 +0300 |
commit | 006c66b1ff5972c5badff7a7f53f638e27e24cd4 (patch) | |
tree | 5969a622529686545b923353f36a7b66188daf37 /source/blender/makesdna/DNA_object_types.h | |
parent | d174f3bd60bbc2b07c0136bd2e1c4a1dea50ca7b (diff) |
Refactor object engine data storage
Main idea is to make specific engine types be a subclass of generic
ObjectEngineData structure.
This required following changes:
- Have extra size argument to engine data allocation function.
Not sure whether there is less error-prone way of doing this.
- Add init() callback to engine data allocation function.
Additionally, added some extra checks to Eevee's engine data getters, so we do
not silently cast lamp data to lightprobe data.
Reviewers: dfelinto, fclem
Differential Revision: https://developer.blender.org/D3027
Diffstat (limited to 'source/blender/makesdna/DNA_object_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_object_types.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 7364dcbc167..d62ec746309 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -75,11 +75,17 @@ typedef struct bFaceMap { } bFaceMap; /* Object Runtime display data */ +struct ObjectEngineData; +typedef void (*ObjectEngineDataInitCb)(struct ObjectEngineData *engine_data); +typedef void (*ObjectEngineDataFreeCb)(struct ObjectEngineData *engine_data); + +# +# typedef struct ObjectEngineData { struct ObjectEngineData *next, *prev; struct DrawEngineType *engine_type; - void *storage; - void (*free)(void *storage); + /* Only nested data, NOT the engine data itself. */ + ObjectEngineDataFreeCb free; } ObjectEngineData; #define MAX_VGROUP_NAME 64 |