diff options
Diffstat (limited to 'source/blender/makesdna/DNA_simulation_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_simulation_types.h | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_simulation_types.h b/source/blender/makesdna/DNA_simulation_types.h index 113c301bb9e..93ba9c425f0 100644 --- a/source/blender/makesdna/DNA_simulation_types.h +++ b/source/blender/makesdna/DNA_simulation_types.h @@ -22,6 +22,7 @@ #define __DNA_SIMULATION_TYPES_H__ #include "DNA_ID.h" +#include "DNA_customdata_types.h" typedef struct Simulation { ID id; @@ -30,12 +31,49 @@ typedef struct Simulation { struct bNodeTree *nodetree; int flag; - int _pad1[1]; + int _pad; + + /** List containing SimulationState objects. */ + struct ListBase states; } Simulation; +typedef struct SimulationState { + struct SimulationState *next; + struct SimulationState *prev; + + /** This is only initialized on cow copies of the simulation. It points to the state on the + * original data block. That is where the cache is stored. */ + struct SimulationState *orig_state; + + /** eSimulationStateType */ + int type; + int _pad; + + char name[64]; +} SimulationState; + +typedef struct ParticleSimulationState { + SimulationState head; + + /** Contains the state of the particles at time current_frame. */ + float current_frame; + int tot_particles; + struct CustomData attributes; + + /** Caches the state of the particles over time. The cache only exists on the original data + * block, not on cow copies. */ + struct PointCache *point_cache; + struct ListBase ptcaches; +} ParticleSimulationState; + /* Simulation.flag */ enum { SIM_DS_EXPAND = (1 << 0), }; +/* SimulationCache.type */ +typedef enum eSimulationStateType { + SIM_STATE_TYPE_PARTICLES = 0, +} eSimulationStateType; + #endif /* __DNA_SIMULATION_TYPES_H__ */ |