2006-11-11 17:38:37 +01:00
|
|
|
/**
|
|
|
|
* $Id$
|
|
|
|
*
|
2008-04-17 00:40:48 +02:00
|
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
2006-11-11 17:38:37 +01:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
2008-04-17 00:40:48 +02:00
|
|
|
* of the License, or (at your option) any later version.
|
2006-11-11 17:38:37 +01:00
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
|
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* The Original Code is: all of this file.
|
|
|
|
*
|
|
|
|
* Contributor(s): none yet.
|
|
|
|
*
|
2008-04-17 00:40:48 +02:00
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
2006-11-11 17:38:37 +01:00
|
|
|
*/
|
2008-07-04 19:59:16 +02:00
|
|
|
|
2006-11-11 17:38:37 +01:00
|
|
|
#ifndef DNA_CUSTOMDATA_TYPES_H
|
|
|
|
#define DNA_CUSTOMDATA_TYPES_H
|
|
|
|
|
|
|
|
/* descriptor and storage for a custom data layer */
|
|
|
|
typedef struct CustomDataLayer {
|
|
|
|
int type; /* type of data in layer */
|
|
|
|
int offset; /* in editmode, offset of layer in block */
|
2006-12-12 22:29:09 +01:00
|
|
|
int flag; /* general purpose flag */
|
|
|
|
int active; /* number of the active layer of this type */
|
2007-05-02 02:01:23 +02:00
|
|
|
int active_rnd; /* number of the layer to render*/
|
|
|
|
char pad[4];
|
2006-12-21 14:47:27 +01:00
|
|
|
char name[32]; /* layer name */
|
2006-11-11 17:38:37 +01:00
|
|
|
void *data; /* layer data */
|
|
|
|
} CustomDataLayer;
|
|
|
|
|
|
|
|
/* structure which stores custom element data associated with mesh elements
|
|
|
|
* (vertices, edges or faces). The custom data is organised into a series of
|
2006-12-12 22:29:09 +01:00
|
|
|
* layers, each with a data type (e.g. MTFace, MDeformVert, etc.). */
|
2006-11-11 17:38:37 +01:00
|
|
|
typedef struct CustomData {
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
CustomDataLayer *layers; /* CustomDataLayers, ordered by type */
|
|
|
|
int totlayer, maxlayer; /* number of layers, size of layers array */
|
|
|
|
int totsize, pad; /* in editmode, total size of all data layers */
|
2008-07-04 19:59:16 +02:00
|
|
|
void *pool; /* for Bmesh: Memory pool for allocation of blocks*/
|
2006-11-11 17:38:37 +01:00
|
|
|
} CustomData;
|
|
|
|
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
/* CustomData.type */
|
|
|
|
#define CD_MVERT 0
|
|
|
|
#define CD_MSTICKY 1
|
|
|
|
#define CD_MDEFORMVERT 2
|
|
|
|
#define CD_MEDGE 3
|
|
|
|
#define CD_MFACE 4
|
|
|
|
#define CD_MTFACE 5
|
|
|
|
#define CD_MCOL 6
|
|
|
|
#define CD_ORIGINDEX 7
|
|
|
|
#define CD_NORMAL 8
|
|
|
|
#define CD_FLAGS 9
|
2007-06-04 21:18:19 +02:00
|
|
|
#define CD_PROP_FLT 10
|
|
|
|
#define CD_PROP_INT 11
|
|
|
|
#define CD_PROP_STR 12
|
Particles
=========
Merge of the famous particle patch by Janne Karhu, a full rewrite
of the Blender particle system. This includes:
- Emitter, Hair and Reactor particle types.
- Newtonian, Keyed and Boids physics.
- Various particle visualisation and rendering types.
- Vertex group and texture control for various properties.
- Interpolated child particles from parents.
- Hair editing with combing, growing, cutting, .. .
- Explode modifier.
- Harmonic, Magnetic fields, and multiple falloff types.
.. and lots of other things, some more info is here:
http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite
http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite_Doc
The new particle system cannot be backwards compatible. Old particle
systems are being converted to the new system, but will require
tweaking to get them looking the same as before.
Point Cache
===========
The new system to replace manual baking, based on automatic caching
on disk. This is currently used by softbodies and the particle system.
See the Cache API section on:
http://wiki.blender.org/index.php/BlenderDev/PhysicsSprint
Documentation
=============
These new features still need good docs for the release logs, help
for this is appreciated.
2007-11-26 23:09:57 +01:00
|
|
|
#define CD_ORIGSPACE 13 /* for modifier stack face location mapping */
|
2007-12-05 13:40:54 +01:00
|
|
|
#define CD_ORCO 14
|
2008-07-04 19:59:16 +02:00
|
|
|
#define CD_MTEXPOLY 15
|
|
|
|
#define CD_MLOOPUV 16
|
|
|
|
#define CD_MLOOPCOL 17
|
|
|
|
#define CD_NUMTYPES 18
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
|
2006-12-05 18:42:03 +01:00
|
|
|
/* Bits for CustomDataMask */
|
|
|
|
#define CD_MASK_MVERT (1 << CD_MVERT)
|
|
|
|
#define CD_MASK_MSTICKY (1 << CD_MSTICKY)
|
|
|
|
#define CD_MASK_MDEFORMVERT (1 << CD_MDEFORMVERT)
|
|
|
|
#define CD_MASK_MEDGE (1 << CD_MEDGE)
|
|
|
|
#define CD_MASK_MFACE (1 << CD_MFACE)
|
|
|
|
#define CD_MASK_MTFACE (1 << CD_MTFACE)
|
|
|
|
#define CD_MASK_MCOL (1 << CD_MCOL)
|
|
|
|
#define CD_MASK_ORIGINDEX (1 << CD_ORIGINDEX)
|
|
|
|
#define CD_MASK_NORMAL (1 << CD_NORMAL)
|
|
|
|
#define CD_MASK_FLAGS (1 << CD_FLAGS)
|
2007-06-04 21:18:19 +02:00
|
|
|
#define CD_MASK_PROP_FLT (1 << CD_PROP_FLT)
|
|
|
|
#define CD_MASK_PROP_INT (1 << CD_PROP_INT)
|
|
|
|
#define CD_MASK_PROP_STR (1 << CD_PROP_STR)
|
Particles
=========
Merge of the famous particle patch by Janne Karhu, a full rewrite
of the Blender particle system. This includes:
- Emitter, Hair and Reactor particle types.
- Newtonian, Keyed and Boids physics.
- Various particle visualisation and rendering types.
- Vertex group and texture control for various properties.
- Interpolated child particles from parents.
- Hair editing with combing, growing, cutting, .. .
- Explode modifier.
- Harmonic, Magnetic fields, and multiple falloff types.
.. and lots of other things, some more info is here:
http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite
http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite_Doc
The new particle system cannot be backwards compatible. Old particle
systems are being converted to the new system, but will require
tweaking to get them looking the same as before.
Point Cache
===========
The new system to replace manual baking, based on automatic caching
on disk. This is currently used by softbodies and the particle system.
See the Cache API section on:
http://wiki.blender.org/index.php/BlenderDev/PhysicsSprint
Documentation
=============
These new features still need good docs for the release logs, help
for this is appreciated.
2007-11-26 23:09:57 +01:00
|
|
|
#define CD_MASK_ORIGSPACE (1 << CD_ORIGSPACE)
|
2007-12-05 13:40:54 +01:00
|
|
|
#define CD_MASK_ORCO (1 << CD_ORCO)
|
2008-07-04 19:59:16 +02:00
|
|
|
#define CD_MASK_MTEXPOLY (1 << CD_MTEXPOLY)
|
|
|
|
#define CD_MASK_MLOOPUV (1 << CD_MLOOPUV)
|
|
|
|
#define CD_MASK_MLOOPCOL (1 << CD_MLOOPCOL)
|
2007-06-04 21:18:19 +02:00
|
|
|
|
2006-12-05 18:42:03 +01:00
|
|
|
|
Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 05:28:02 +01:00
|
|
|
/* CustomData.flag */
|
|
|
|
|
|
|
|
/* indicates layer should not be copied by CustomData_from_template or
|
|
|
|
* CustomData_copy_data */
|
|
|
|
#define CD_FLAG_NOCOPY (1<<0)
|
|
|
|
/* indicates layer should not be freed (for layers backed by external data) */
|
|
|
|
#define CD_FLAG_NOFREE (1<<1)
|
|
|
|
/* indicates the layer is only temporary, also implies no copy */
|
|
|
|
#define CD_FLAG_TEMPORARY ((1<<2)|CD_FLAG_NOCOPY)
|
2006-11-11 17:38:37 +01:00
|
|
|
|
2006-12-21 14:47:27 +01:00
|
|
|
/* Limits */
|
2006-12-27 11:20:29 +01:00
|
|
|
#define MAX_MTFACE 8
|
|
|
|
#define MAX_MCOL 8
|
2006-12-21 14:47:27 +01:00
|
|
|
|
2006-11-11 17:38:37 +01:00
|
|
|
#endif
|