[Bf-blender-cvs] [2efdbeb58bd] master: Cleanup: Organize and comment bNode struct

Hans Goudey noreply at git.blender.org
Thu Dec 8 18:59:18 CET 2022


Commit: 2efdbeb58bd172939edb3a01f25d119c821e6627
Author: Hans Goudey
Date:   Thu Dec 8 11:49:41 2022 -0600
Branches: master
https://developer.blender.org/rB2efdbeb58bd172939edb3a01f25d119c821e6627

Cleanup: Organize and comment bNode struct

I organized the fields so that similar variables were closer together and
more "important" fields were closer to the beginning. I also added
comments to help describe the purpose of most fields.

Differential Revision: https://developer.blender.org/D16710

===================================================================

M	source/blender/makesdna/DNA_node_types.h

===================================================================

diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 7764e2937b4..10cdc8e702e 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -280,57 +280,80 @@ typedef enum eNodeSocketFlag {
   SOCK_HIDE_LABEL = (1 << 12),
 } eNodeSocketFlag;
 
-/** TODO: Limit data in #bNode to what we want to see saved. */
 typedef struct bNode {
   struct bNode *next, *prev;
 
-  /** User-defined properties. */
-  IDProperty *prop;
-
-  /** Runtime type information. */
-  struct bNodeType *typeinfo;
-  /** Runtime type identifier. */
-  char idname[64];
+  /* Input and output #bNodeSocket. */
+  ListBase inputs, outputs;
 
-  /** MAX_NAME. */
+  /** The node's name for unique identification and string lookup. MAX_NAME. */
   char name[64];
+
+  /**
+   * A value that uniquely identifies a node in a node tree even when the name changes.
+   * This also allows referencing nodes more efficiently than with strings.
+   *
+   * Must be set whenever a node is added to a tree, besides a simple tree copy.
+   * Must always be positive.
+   */
+  int32_t identifier;
+
   int flag;
-  short type;
 
-  char _pad2[6];
+  /**
+   * String identifier of the type like "FunctionNodeCompare". Stored in files to allow retrieving
+   * the node type for node types including custom nodes defined in Python by addons.
+   */
+  char idname[64];
 
-  /** Custom user-defined color. */
-  float color[3];
+  /** Type information retrieved from the #idname. TODO: Move to runtime data. */
+  struct bNodeType *typeinfo;
+
+  /**
+   * Integer type used for builtin nodes, allowing cheaper lookup and changing ID names with
+   * versioning code. Avoid using directly if possible, since may not match runtime node type if it
+   * wasn't found.
+   */
+  int16_t type;
+
+  char _pad1[2];
+
+  /** Used for some builtin nodes that store properties but don't have a storage struct . */
+  int16_t custom1, custom2;
+  float custom3, custom4;
 
-  ListBase inputs, outputs;
-  /** Parent node. */
-  struct bNode *parent;
   /** Optional link to libdata. */
   struct ID *id;
-  /** Custom data, must be struct, for storage in file. */
+
+  /** Custom data struct for node properties for storage in files. */
   void *storage;
 
-  /** Root offset for drawing (parent space). */
-  float locx, locy;
-  /** Node custom width and height. */
-  float width, height;
-  /** Additional offset from loc. */
-  float offsetx, offsety;
+  /**
+   * Custom properties often defined by addons to store arbitrary data on nodes. A non-builtin
+   * equivalent to #storage.
+   */
+  IDProperty *prop;
 
+  /** Parent node (for frame nodes). */
+  struct bNode *parent;
+
+  /** Root location in the node canvas (in parent space). */
+  float locx, locy;
   /**
-   * A value that uniquely identifies a node in a node tree even when the name changes.
-   * This also allows referencing nodes more efficiently than with strings.
-   *
-   * Must be set whenever a node is added to a tree, besides a simple tree copy.
-   * Must always be positive.
+   * Custom width and height controlled by users. Height is calculate automatically for most
+   * nodes.
    */
-  int32_t identifier;
+  float width, height;
+  /** Additional offset from loc. TODO: Redundant with #locx and #locy, remove/deprecate. */
+  float offsetx, offsety;
 
   /** Custom user-defined label, MAX_NAME. */
   char label[64];
-  /** To be abused for buttons. */
-  short custom1, custom2;
-  float custom3, custom4;
+
+  /** Custom user-defined color. */
+  float color[3];
+
+  char _pad2[4];
 
   bNodeRuntimeHandle *runtime;



More information about the Bf-blender-cvs mailing list