Polygon Crucher SDK - Documentation
Documentation
Loading...
Searching...
No Matches
3DBaseObject.h File Reference

C3DBaseObject class which is the common base class for all object types. More...

Detailed Description

C3DBaseObject class which is the common base class for all object types.

#include "DependentChannels.h"
#include "4x4Matrix.h"
#include "3DPoint.h"

Go to the source code of this file.

Classes

class  C3DBaseObject
 This is the base class for any kind of object. More...
 

Macros

#define OBJECT_REFERENCE_OBJECT   MAKE_CUSTOM_ID('R', 'F', 'O', 'B')
 
#define OBJECT_GUID_CLASS   MAKE_CUSTOM_ID('O', 'B', 'J', 'C')
 

Typedefs

typedef enum OBJECT_KINDOF OBJECT_KINDOF
 
typedef enum _OBJECT_PROPERTIES OBJECT_PROPERTIES
 
typedef enum OBJECT_UPDATE_PROPERTIES OBJECT_UPDATE_PROPERTIES
 
typedef enum OBJECT_COPY_FLAGS OBJECT_COPY_FLAGS
 

Enumerations

enum  OBJECT_KINDOF {
  OBJECT_UNKNOWN = 0 , OBJECT_MESH = 0x01 , OBJECT_CURVE = 0x02 , OBJECT_PATCH = 0x04 ,
  OBJECT_GROUP = 0x08 , OBJECT_DUMMY = 0x10 , OBJECT_CAMERA = 0x20 , OBJECT_LIGHT = 0x40 ,
  OBJECT_PRIVATE_TYPE = 0xFF000000 , OBJECT_POI_CAMERA = 0x01000000 , OBJECT_GEOM_WITH_FACES = OBJECT_MESH | OBJECT_PATCH , OBJECT_GEOM = OBJECT_GEOM_WITH_FACES | OBJECT_CURVE ,
  OBJECT_ALL_KINDOF = (unsigned int)-1
}
 
enum  _OBJECT_PROPERTIES {
  OBJECT_NONE = 0x00 , OBJECT_IS_INVALID = 0x10 , OBJECT_RENDER_WIREFRAME = 0x20 , OBJECT_USER_PROPERTIES1 = 0x01000000 ,
  OBJECT_USER_PROPERTIES2 = 0x02000000 , OBJECT_USER_PROPERTIES3 = 0x04000000 , OBJECT_USER_PROPERTIES4 = 0x08000000
}
 
enum  OBJECT_UPDATE_PROPERTIES {
  OBJECT_INV_FLAGS = 0xFFFF , OBJECT_INV_ALL = OBJECT_INV_FLAGS , OBJECT_INV_GEOM = 0x0001 , OBJECT_INV_TOPO = 0x0002 ,
  OBJECT_INV_FACE_FLAG = 0x0004 , OBJECT_INV_MATERIALS = 0x0008 , OBJECT_INV_CHANNELS = 0x0010 , OBJECT_INV_MATERIAL_ATTR = 0x0020 ,
  OBJECT_INV_DATA = 0x0040 , OBJECT_INV_DISPLAY = 0x0800 , OBJECT_UPDATE_NONE = 0x00000000 , OBJECT_UPDATE_ALL = 0x0FFF0000 ,
  OBJECT_UPDATE_FIRST_VALUE = 0x00010000 , OBJECT_UPDATE_BBOX = 0x00010000 , OBJECT_UPDATE_GEOM = 0x00020000 , OBJECT_UPDATE_CHANNELS = 0x00040000
}
 
enum  OBJECT_COPY_FLAGS { OBJECT_COPY_DEFAULT = 0x00 , OBJECT_COPY_CREATE_INSTANCE = 0x10 , OBJECT_PREVENT_OBJECT_COPY = 0x100 , OBJECT_COPY_ALL_CHANNELS = 0x200 }
 

Enumeration Type Documentation

◆ OBJECT_COPY_FLAGS

Flags used to control the way objects are copied

Enumerator
OBJECT_COPY_CREATE_INSTANCE 

Create an instance copy of the object that should be affected to a node.

OBJECT_PREVENT_OBJECT_COPY 

Used internally. Prevent a node to copy its object (creating an empty node)

OBJECT_COPY_ALL_CHANNELS 

If not defined, only CHANNEL_COPY_USEFUL_ONLY are copied (channels than are not auto generated.

◆ OBJECT_KINDOF

The kind of object. An object has only one kind.
It is possible to test if an object belong to a given kind using OR operator. Ie. if (kindOf & (OBJECT_MESH|OBJECT_CURVE))

Enumerator
OBJECT_MESH 

C3DObject.

OBJECT_CURVE 

C3DCurve.

OBJECT_PATCH 

C3DPatch.

OBJECT_GROUP 

C3DGroup.

OBJECT_DUMMY 

C3DDummy.

OBJECT_CAMERA 

C3DCamera.

OBJECT_LIGHT 

C3DLight.

OBJECT_GEOM_WITH_FACES 

These flags can be used in C3DScene::GetFirstNode/GetNextNode or to perform a bitwise operation on C3DBaseObject::GetKindOf.

OBJECT_ALL_KINDOF 

This also include private type for copy and other specific operations.

◆ OBJECT_UPDATE_PROPERTIES

Flags used by C3DBaseObject::Invalidate / C3DBaseObject::Update. Depending on the SCENE_NODE_INV flags in a C3DBaseObject::Invalidate call, the method set required OBJECT_UPDATE flags that will be processed when calling C3DBaseObject::Update.
For example OBJECT_INV_TOPO will flag OBJECT_UPDATE_GEOM. For a C3DPatch object, this will make the subdivided object to be invalidate and recomputed on the Update call.

Enumerator
OBJECT_INV_GEOM 

Points position or number changed.

OBJECT_INV_TOPO 

Faces indexes size, indexes changes.

OBJECT_INV_FACE_FLAG 

Face properties changed (ie HIDDEN flag of face changed)

OBJECT_INV_MATERIALS 

Face materials changes.

OBJECT_INV_CHANNELS 

Channel changed, autogenerated channels need to be recomputed...

OBJECT_INV_MATERIAL_ATTR 

A material related to object changed.

OBJECT_INV_DATA 

Custom data associated to object changed.

OBJECT_INV_DISPLAY 

The object drawing should be updated.

OBJECT_UPDATE_FIRST_VALUE 

For intenal offset.

OBJECT_UPDATE_BBOX 

Bounding box will be recomputed next time we ask for the BBox.

OBJECT_UPDATE_GEOM 

Geometry need to be recomputed or updated. This should be done in the C3DBaseObject::Update.

OBJECT_UPDATE_CHANNELS 

Update autogenerated channels (normals or projected UV for example)