Blender  V3.3
Classes | Macros | Typedefs | Enumerations
DNA_object_types.h File Reference

Object is a sort of wrapper for general info. More...

#include "DNA_object_enums.h"
#include "DNA_customdata_types.h"
#include "DNA_defs.h"
#include "DNA_lineart_types.h"
#include "DNA_listBase.h"
#include "DNA_ID.h"
#include "DNA_action_types.h"

Go to the source code of this file.

Classes

struct  bDeformGroup
 
struct  bFaceMap
 
class  BoundBox
 
struct  Object_Runtime
 
struct  ObjectLineArt
 
class  Object
 
struct  ObHook
 

Macros

#define MAX_VGROUP_NAME   64
 
#define DG_LOCK_WEIGHT   1
 
#define SELECT   1
 
#define OB_TYPE_SUPPORT_MATERIAL(_type)    (((_type) >= OB_MESH && (_type) <= OB_MBALL) || ((_type) >= OB_GPENCIL && (_type) <= OB_VOLUME))
 
#define OB_TYPE_IS_GEOMETRY(_type)
 
#define OB_TYPE_SUPPORT_VGROUP(_type)   (ELEM(_type, OB_MESH, OB_LATTICE, OB_GPENCIL))
 
#define OB_TYPE_SUPPORT_EDITMODE(_type)
 
#define OB_TYPE_SUPPORT_PARVERT(_type)    (ELEM(_type, OB_MESH, OB_SURF, OB_CURVES_LEGACY, OB_LATTICE))
 
#define OB_DATA_SUPPORT_EDITMODE(_type)
 
#define OB_DATA_SUPPORT_ID(_id_type)
 
#define OB_DATA_SUPPORT_ID_CASE
 
#define BA_TEMP_TAG   (1 << 5)
 
#define BA_TRANSFORM_LOCKED_IN_PLACE   (1 << 7)
 
#define BA_TRANSFORM_CHILD   (1 << 8) /* child of a transformed object */
 
#define BA_TRANSFORM_PARENT   (1 << 13) /* parent of a transformed object */
 
#define OB_FROMDUPLI   (1 << 9)
 
#define OB_DONE   (1 << 10) /* unknown state, clear before use */
 
#define OB_EMPTY_IMAGE_DEPTH_DEFAULT   0
 
#define OB_EMPTY_IMAGE_DEPTH_FRONT   1
 
#define OB_EMPTY_IMAGE_DEPTH_BACK   2
 
#define MAX_DUPLI_RECUR   8
 

Typedefs

typedef struct bDeformGroup bDeformGroup
 
typedef struct bFaceMap bFaceMap
 
typedef struct BoundBox BoundBox
 
typedef struct Object_Runtime Object_Runtime
 
typedef struct ObjectLineArt ObjectLineArt
 
typedef struct Object Object
 
typedef struct ObHook ObHook
 
typedef enum ObjectModifierFlag ObjectModifierFlag
 

Enumerations

enum  { BOUNDBOX_DIRTY = (1 << 1) }
 
enum  eObjectLineArt_Usage {
  OBJECT_LRT_INHERIT = 0 , OBJECT_LRT_INCLUDE = (1 << 0) , OBJECT_LRT_OCCLUSION_ONLY = (1 << 1) , OBJECT_LRT_EXCLUDE = (1 << 2) ,
  OBJECT_LRT_INTERSECTION_ONLY = (1 << 3) , OBJECT_LRT_NO_INTERSECTION = (1 << 4) , OBJECT_LRT_FORCE_INTERSECTION = (1 << 5)
}
 
enum  eObjectLineArt_Flags { OBJECT_LRT_OWN_CREASE = (1 << 0) , OBJECT_LRT_OWN_INTERSECTION_PRIORITY = (1 << 1) }
 
enum  {
  OB_EMPTY = 0 , OB_MESH = 1 , OB_CURVES_LEGACY = 2 , OB_SURF = 3 ,
  OB_FONT = 4 , OB_MBALL = 5 , OB_LAMP = 10 , OB_CAMERA = 11 ,
  OB_SPEAKER = 12 , OB_LIGHTPROBE = 13 , OB_LATTICE = 22 , OB_ARMATURE = 25 ,
  OB_GPENCIL = 26 , OB_CURVES = 27 , OB_POINTCLOUD = 28 , OB_VOLUME = 29 ,
  OB_TYPE_MAX
}
 
enum  {
  PARTYPE = (1 << 4) - 1 , PAROBJECT = 0 , PARSKEL = 4 , PARVERT1 = 5 ,
  PARVERT3 = 6 , PARBONE = 7
}
 
enum  {
  OB_TRANSFORM_ADJUST_ROOT_PARENT_FOR_VIEW_LOCK = 1 << 0 , OB_TRANSFLAG_UNUSED_1 = 1 << 1 , OB_NEG_SCALE = 1 << 2 , OB_TRANSFLAG_UNUSED_3 = 1 << 3 ,
  OB_DUPLIVERTS = 1 << 4 , OB_DUPLIROT = 1 << 5 , OB_TRANSFLAG_UNUSED_6 = 1 << 6 , OB_TRANSFLAG_UNUSED_7 = 1 << 7 ,
  OB_DUPLICOLLECTION = 1 << 8 , OB_DUPLIFACES = 1 << 9 , OB_DUPLIFACES_SCALE = 1 << 10 , OB_DUPLIPARTS = 1 << 11 ,
  OB_TRANSFLAG_UNUSED_12 = 1 << 12 , OB_NO_CONSTRAINTS = 1 << 13 , OB_DUPLI = OB_DUPLIVERTS | OB_DUPLICOLLECTION | OB_DUPLIFACES | OB_DUPLIPARTS
}
 
enum  {
  OB_POSX = 0 , OB_POSY = 1 , OB_POSZ = 2 , OB_NEGX = 3 ,
  OB_NEGY = 4 , OB_NEGZ = 5
}
 
enum  {
  OB_DRAWBOUNDOX = 1 << 0 , OB_AXIS = 1 << 1 , OB_TEXSPACE = 1 << 2 , OB_DRAWNAME = 1 << 3 ,
  OB_DRAWWIRE = 1 << 5 , OB_DRAW_IN_FRONT = 1 << 6 , OB_DRAWTRANSP = 1 << 7 , OB_DRAW_ALL_EDGES = 1 << 8 ,
  OB_DRAW_NO_SHADOW_CAST = 1 << 9 , OB_USE_GPENCIL_LIGHTS = 1 << 10
}
 
enum  {
  OB_ARROWS = 1 , OB_PLAINAXES = 2 , OB_CIRCLE = 3 , OB_SINGLE_ARROW = 4 ,
  OB_CUBE = 5 , OB_EMPTY_SPHERE = 6 , OB_EMPTY_CONE = 7 , OB_EMPTY_IMAGE = 8
}
 
enum  {
  GP_EMPTY = 0 , GP_STROKE = 1 , GP_MONKEY = 2 , GP_LRT_SCENE = 3 ,
  GP_LRT_OBJECT = 4 , GP_LRT_COLLECTION = 5
}
 
enum  {
  OB_BOUND_BOX = 0 , OB_BOUND_SPHERE = 1 , OB_BOUND_CYLINDER = 2 , OB_BOUND_CONE = 3 ,
  OB_BOUND_CAPSULE = 7
}
 
enum  { BA_WAS_SEL = (1 << 1) , BA_SNAP_FIX_DEPS_FIASCO = (1 << 2) }
 
enum  {
  OB_HIDE_VIEWPORT = 1 << 0 , OB_HIDE_SELECT = 1 << 1 , OB_HIDE_RENDER = 1 << 2 , OB_HIDE_CAMERA = 1 << 3 ,
  OB_HIDE_DIFFUSE = 1 << 4 , OB_HIDE_GLOSSY = 1 << 5 , OB_HIDE_TRANSMISSION = 1 << 6 , OB_HIDE_VOLUME_SCATTER = 1 << 7 ,
  OB_HIDE_SHADOW = 1 << 8 , OB_HOLDOUT = 1 << 9 , OB_SHADOW_CATCHER = 1 << 10
}
 
enum  { OB_SHAPE_LOCK = 1 << 0 , OB_SHAPE_EDIT_MODE = 1 << 2 }
 
enum  { OB_ADS_UNUSED_1 = 1 << 0 , OB_ADS_UNUSED_2 = 1 << 1 , OB_ADS_COLLAPSED = 1 << 10 }
 
enum  {
  OB_LOCK_LOCX = 1 << 0 , OB_LOCK_LOCY = 1 << 1 , OB_LOCK_LOCZ = 1 << 2 , OB_LOCK_LOC = OB_LOCK_LOCX | OB_LOCK_LOCY | OB_LOCK_LOCZ ,
  OB_LOCK_ROTX = 1 << 3 , OB_LOCK_ROTY = 1 << 4 , OB_LOCK_ROTZ = 1 << 5 , OB_LOCK_ROT = OB_LOCK_ROTX | OB_LOCK_ROTY | OB_LOCK_ROTZ ,
  OB_LOCK_SCALEX = 1 << 6 , OB_LOCK_SCALEY = 1 << 7 , OB_LOCK_SCALEZ = 1 << 8 , OB_LOCK_SCALE = OB_LOCK_SCALEX | OB_LOCK_SCALEY | OB_LOCK_SCALEZ ,
  OB_LOCK_ROTW = 1 << 9 , OB_LOCK_ROT4D = 1 << 10
}
 
enum  { OB_DUPLI_FLAG_VIEWPORT = 1 << 0 , OB_DUPLI_FLAG_RENDER = 1 << 1 }
 
enum  {
  OB_EMPTY_IMAGE_HIDE_PERSPECTIVE = 1 << 0 , OB_EMPTY_IMAGE_HIDE_ORTHOGRAPHIC = 1 << 1 , OB_EMPTY_IMAGE_HIDE_BACK = 1 << 2 , OB_EMPTY_IMAGE_HIDE_FRONT = 1 << 3 ,
  OB_EMPTY_IMAGE_HIDE_NON_AXIS_ALIGNED = 1 << 4
}
 
enum  { OB_EMPTY_IMAGE_USE_ALPHA_BLEND = 1 << 0 }
 
enum  ObjectModifierFlag { OB_MODIFIER_FLAG_ADD_REST_POSITION = 1 << 0 }
 

Detailed Description

Object is a sort of wrapper for general info.

Definition in file DNA_object_types.h.

Macro Definition Documentation

◆ BA_TEMP_TAG

#define BA_TEMP_TAG   (1 << 5)

Definition at line 696 of file DNA_object_types.h.

◆ BA_TRANSFORM_CHILD

#define BA_TRANSFORM_CHILD   (1 << 8) /* child of a transformed object */

Definition at line 704 of file DNA_object_types.h.

◆ BA_TRANSFORM_LOCKED_IN_PLACE

#define BA_TRANSFORM_LOCKED_IN_PLACE   (1 << 7)

Even if this is tagged for transform, this flag means it's being locked in place. Use for SCE_XFORM_SKIP_CHILDREN.

Definition at line 702 of file DNA_object_types.h.

◆ BA_TRANSFORM_PARENT

#define BA_TRANSFORM_PARENT   (1 << 13) /* parent of a transformed object */

Definition at line 705 of file DNA_object_types.h.

◆ DG_LOCK_WEIGHT

#define DG_LOCK_WEIGHT   1

Definition at line 66 of file DNA_object_types.h.

◆ MAX_DUPLI_RECUR

#define MAX_DUPLI_RECUR   8

Definition at line 801 of file DNA_object_types.h.

◆ MAX_VGROUP_NAME

#define MAX_VGROUP_NAME   64

Definition at line 63 of file DNA_object_types.h.

◆ OB_DATA_SUPPORT_EDITMODE

#define OB_DATA_SUPPORT_EDITMODE (   _type)
Value:
(ELEM(_type, ID_ME, ID_CU_LEGACY, ID_MB, ID_LT, ID_AR) || \
(U.experimental.use_new_curves_tools && (_type) == ID_CV))
#define ELEM(...)
@ ID_AR
Definition: DNA_ID_enums.h:66
@ ID_CV
Definition: DNA_ID_enums.h:81
@ ID_CU_LEGACY
Definition: DNA_ID_enums.h:49
@ ID_ME
Definition: DNA_ID_enums.h:48
@ ID_MB
Definition: DNA_ID_enums.h:50
@ ID_LT
Definition: DNA_ID_enums.h:54
unsigned int U
Definition: btGjkEpa3.h:78

Matches OB_TYPE_SUPPORT_EDITMODE.

Definition at line 548 of file DNA_object_types.h.

◆ OB_DATA_SUPPORT_ID

#define OB_DATA_SUPPORT_ID (   _id_type)
Value:
(ELEM(_id_type, \
ID_ME, \
ID_MB, \
ID_LA, \
ID_SPK, \
ID_LP, \
ID_CA, \
ID_LT, \
ID_GD, \
ID_AR, \
ID_CV, \
ID_PT, \
@ ID_CA
Definition: DNA_ID_enums.h:56
@ ID_VO
Definition: DNA_ID_enums.h:83
@ ID_LA
Definition: DNA_ID_enums.h:55
@ ID_GD
Definition: DNA_ID_enums.h:71
@ ID_LP
Definition: DNA_ID_enums.h:80
@ ID_SPK
Definition: DNA_ID_enums.h:63
@ ID_PT
Definition: DNA_ID_enums.h:82

Definition at line 553 of file DNA_object_types.h.

◆ OB_DATA_SUPPORT_ID_CASE

#define OB_DATA_SUPPORT_ID_CASE
Value:
ID_ME: \
case ID_CU_LEGACY: \
case ID_MB: \
case ID_LA: \
case ID_SPK: \
case ID_LP: \
case ID_CA: \
case ID_LT: \
case ID_GD: \
case ID_AR: \
case ID_CV: \
case ID_PT: \
case ID_VO

Definition at line 569 of file DNA_object_types.h.

◆ OB_DONE

#define OB_DONE   (1 << 10) /* unknown state, clear before use */

Definition at line 708 of file DNA_object_types.h.

◆ OB_EMPTY_IMAGE_DEPTH_BACK

#define OB_EMPTY_IMAGE_DEPTH_BACK   2

Definition at line 781 of file DNA_object_types.h.

◆ OB_EMPTY_IMAGE_DEPTH_DEFAULT

#define OB_EMPTY_IMAGE_DEPTH_DEFAULT   0

Object.empty_image_depth

Definition at line 779 of file DNA_object_types.h.

◆ OB_EMPTY_IMAGE_DEPTH_FRONT

#define OB_EMPTY_IMAGE_DEPTH_FRONT   1

Definition at line 780 of file DNA_object_types.h.

◆ OB_FROMDUPLI

#define OB_FROMDUPLI   (1 << 9)

Definition at line 707 of file DNA_object_types.h.

◆ OB_TYPE_IS_GEOMETRY

#define OB_TYPE_IS_GEOMETRY (   _type)
Value:
(ELEM(_type, \
@ OB_MBALL
@ OB_SURF
@ OB_FONT
@ OB_MESH
@ OB_POINTCLOUD
@ OB_VOLUME
@ OB_CURVES_LEGACY
@ OB_CURVES
@ OB_GPENCIL

Does the object have some render-able geometry (unlike empties, cameras, etc.). True for OB_CURVES_LEGACY, since these often evaluate to objects with geometry.

Definition at line 522 of file DNA_object_types.h.

◆ OB_TYPE_SUPPORT_EDITMODE

#define OB_TYPE_SUPPORT_EDITMODE (   _type)
Value:

Definition at line 534 of file DNA_object_types.h.

◆ OB_TYPE_SUPPORT_MATERIAL

#define OB_TYPE_SUPPORT_MATERIAL (   _type)     (((_type) >= OB_MESH && (_type) <= OB_MBALL) || ((_type) >= OB_GPENCIL && (_type) <= OB_VOLUME))

Definition at line 518 of file DNA_object_types.h.

◆ OB_TYPE_SUPPORT_PARVERT

#define OB_TYPE_SUPPORT_PARVERT (   _type)     (ELEM(_type, OB_MESH, OB_SURF, OB_CURVES_LEGACY, OB_LATTICE))

Definition at line 544 of file DNA_object_types.h.

◆ OB_TYPE_SUPPORT_VGROUP

#define OB_TYPE_SUPPORT_VGROUP (   _type)    (ELEM(_type, OB_MESH, OB_LATTICE, OB_GPENCIL))

Definition at line 533 of file DNA_object_types.h.

◆ SELECT

#define SELECT   1

Definition at line 482 of file DNA_object_types.h.

Typedef Documentation

◆ bDeformGroup

typedef struct bDeformGroup bDeformGroup

Vertex Groups - Name Info

◆ bFaceMap

typedef struct bFaceMap bFaceMap

Face Maps.

◆ BoundBox

typedef struct BoundBox BoundBox

The following illustrates the orientation of the bounding box in local space


Z  Y
| /
|/
.-----X
    2----------6
   /|         /|
  / |        / |
 1----------5  |
 |  |       |  |
 |  3-------|--7
 | /        | /
 |/         |/
 0----------4

◆ ObHook

typedef struct ObHook ObHook

DEPRECATED: this is not used anymore because hooks are now modifiers.

◆ Object

typedef struct Object Object

◆ Object_Runtime

Not saved in file!

◆ ObjectLineArt

typedef struct ObjectLineArt ObjectLineArt

◆ ObjectModifierFlag

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Object.nlaflag

Enumerator
OB_ADS_UNUSED_1 
OB_ADS_UNUSED_2 
OB_ADS_COLLAPSED 

Definition at line 739 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.protectflag

Enumerator
OB_LOCK_LOCX 
OB_LOCK_LOCY 
OB_LOCK_LOCZ 
OB_LOCK_LOC 
OB_LOCK_ROTX 
OB_LOCK_ROTY 
OB_LOCK_ROTZ 
OB_LOCK_ROT 
OB_LOCK_SCALEX 
OB_LOCK_SCALEY 
OB_LOCK_SCALEZ 
OB_LOCK_SCALE 
OB_LOCK_ROTW 
OB_LOCK_ROT4D 

Definition at line 755 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.duplicator_visibility_flag

Enumerator
OB_DUPLI_FLAG_VIEWPORT 
OB_DUPLI_FLAG_RENDER 

Definition at line 773 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.empty_image_visibility_flag

Enumerator
OB_EMPTY_IMAGE_HIDE_PERSPECTIVE 
OB_EMPTY_IMAGE_HIDE_ORTHOGRAPHIC 
OB_EMPTY_IMAGE_HIDE_BACK 
OB_EMPTY_IMAGE_HIDE_FRONT 
OB_EMPTY_IMAGE_HIDE_NON_AXIS_ALIGNED 

Definition at line 784 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.empty_image_flag

Enumerator
OB_EMPTY_IMAGE_USE_ALPHA_BLEND 

Definition at line 793 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

BoundBox.flag

Enumerator
BOUNDBOX_DIRTY 

Definition at line 96 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.type

Enumerator
OB_EMPTY 
OB_MESH 
OB_CURVES_LEGACY 

Curve object is still used but replaced by "Curves" for the future (see T95355).

OB_SURF 
OB_FONT 
OB_MBALL 
OB_LAMP 
OB_CAMERA 
OB_SPEAKER 
OB_LIGHTPROBE 
OB_LATTICE 
OB_ARMATURE 
OB_GPENCIL 

Grease Pencil object used in 3D view but not used for annotation in 2D.

OB_CURVES 
OB_POINTCLOUD 
OB_VOLUME 
OB_TYPE_MAX 

Definition at line 485 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.partype: first 4 bits: type.

Enumerator
PARTYPE 
PAROBJECT 
PARSKEL 
PARVERT1 
PARVERT3 
PARBONE 

Definition at line 585 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.transflag (short)

Enumerator
OB_TRANSFORM_ADJUST_ROOT_PARENT_FOR_VIEW_LOCK 
OB_TRANSFLAG_UNUSED_1 
OB_NEG_SCALE 
OB_TRANSFLAG_UNUSED_3 
OB_DUPLIVERTS 
OB_DUPLIROT 
OB_TRANSFLAG_UNUSED_6 
OB_TRANSFLAG_UNUSED_7 
OB_DUPLICOLLECTION 
OB_DUPLIFACES 
OB_DUPLIFACES_SCALE 
OB_DUPLIPARTS 
OB_TRANSFLAG_UNUSED_12 
OB_NO_CONSTRAINTS 
OB_DUPLI 

Definition at line 596 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.trackflag / Object.upflag (short)

Enumerator
OB_POSX 
OB_POSY 
OB_POSZ 
OB_NEGX 
OB_NEGY 
OB_NEGZ 

Definition at line 618 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.dtx draw type extra flags (short)

Enumerator
OB_DRAWBOUNDOX 
OB_AXIS 
OB_TEXSPACE 
OB_DRAWNAME 
OB_DRAWWIRE 
OB_DRAW_IN_FRONT 
OB_DRAWTRANSP 
OB_DRAW_ALL_EDGES 
OB_DRAW_NO_SHADOW_CAST 
OB_USE_GPENCIL_LIGHTS 

Definition at line 628 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.empty_drawtype: no flags

Enumerator
OB_ARROWS 
OB_PLAINAXES 
OB_CIRCLE 
OB_SINGLE_ARROW 
OB_CUBE 
OB_EMPTY_SPHERE 
OB_EMPTY_CONE 
OB_EMPTY_IMAGE 

Definition at line 647 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Grease-pencil add types. TODO: doesn't need to be DNA, local to OBJECT_OT_gpencil_add.

Enumerator
GP_EMPTY 
GP_STROKE 
GP_MONKEY 
GP_LRT_SCENE 
GP_LRT_OBJECT 
GP_LRT_COLLECTION 

Definition at line 662 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.boundtype

Enumerator
OB_BOUND_BOX 
OB_BOUND_SPHERE 
OB_BOUND_CYLINDER 
OB_BOUND_CONE 
OB_BOUND_CAPSULE 

Definition at line 672 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Base.flag_legacy

Enumerator
BA_WAS_SEL 
BA_SNAP_FIX_DEPS_FIASCO 

DEPRECATED, was runtime only, but was reusing an older flag.

Definition at line 686 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.visibility_flag

Enumerator
OB_HIDE_VIEWPORT 
OB_HIDE_SELECT 
OB_HIDE_RENDER 
OB_HIDE_CAMERA 
OB_HIDE_DIFFUSE 
OB_HIDE_GLOSSY 
OB_HIDE_TRANSMISSION 
OB_HIDE_VOLUME_SCATTER 
OB_HIDE_SHADOW 
OB_HOLDOUT 
OB_SHADOW_CATCHER 

Definition at line 715 of file DNA_object_types.h.

◆ anonymous enum

anonymous enum

Object.shapeflag

Enumerator
OB_SHAPE_LOCK 
OB_SHAPE_EDIT_MODE 

Definition at line 730 of file DNA_object_types.h.

◆ eObjectLineArt_Flags

Enumerator
OBJECT_LRT_OWN_CREASE 
OBJECT_LRT_OWN_INTERSECTION_PRIORITY 

Definition at line 237 of file DNA_object_types.h.

◆ eObjectLineArt_Usage

Warning
while the values seem to be flags, they aren't treated as flags.
Enumerator
OBJECT_LRT_INHERIT 
OBJECT_LRT_INCLUDE 
OBJECT_LRT_OCCLUSION_ONLY 
OBJECT_LRT_EXCLUDE 
OBJECT_LRT_INTERSECTION_ONLY 
OBJECT_LRT_NO_INTERSECTION 
OBJECT_LRT_FORCE_INTERSECTION 

Definition at line 227 of file DNA_object_types.h.

◆ ObjectModifierFlag

Enumerator
OB_MODIFIER_FLAG_ADD_REST_POSITION 

Definition at line 797 of file DNA_object_types.h.