Vuo  2.0.0
VuoSceneObject.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include "VuoHeap.h"
13 #include "VuoText.h"
14 #include "VuoMesh.h"
15 #include "VuoShader.h"
16 #include "VuoTransform.h"
17 #include "VuoPoint3d.h"
18 #include "VuoBlendMode.h"
19 #include "VuoFont.h"
20 
22 typedef const struct VuoList_VuoSceneObject_struct { void *l; } * VuoList_VuoSceneObject;
23 #define VuoList_VuoSceneObject_TYPE_DEFINED
24 
37 typedef enum
38 {
39  VuoSceneObjectSubType_Empty,
40  VuoSceneObjectSubType_Group,
41  VuoSceneObjectSubType_Mesh,
42  VuoSceneObjectSubType_PerspectiveCamera,
43  VuoSceneObjectSubType_StereoCamera,
44  VuoSceneObjectSubType_OrthographicCamera,
45  VuoSceneObjectSubType_FisheyeCamera,
46  VuoSceneObjectSubType_AmbientLight,
47  VuoSceneObjectSubType_PointLight,
48  VuoSceneObjectSubType_Spotlight,
49  VuoSceneObjectSubType_Text
51 
57 typedef struct VuoSceneObject
58 {
60 
61  // Data for all scene objects
62  VuoText name;
63  VuoTransform transform;
64 
65  // Mesh
66  VuoMesh mesh;
67  VuoShader shader;
68  bool isRealSize;
70  VuoBlendMode blendMode;
71 
72  // Group
73  VuoList_VuoSceneObject childObjects;
74 
75  // Camera
77  float cameraWidth;
84 
85  // Light
86  VuoColor lightColor;
87  float lightBrightness;
88  float lightRange;
89  float lightCone;
91 
92  // Text
93  VuoText text;
94  VuoFont font;
95  bool scaleWithScene;
96  float wrapWidth;
97 
98 
99  uint64_t id;
101 
102 uint64_t VuoSceneObject_getNextId(void);
106 VuoSceneObject VuoSceneObject_makeQuad(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
107 VuoSceneObject VuoSceneObject_makeQuadWithNormals(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
108 VuoSceneObject VuoSceneObject_makeImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal alpha);
109 VuoSceneObject VuoSceneObject_makeLitImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal alpha, VuoColor highlightColor, VuoReal shininess);
110 VuoSceneObject VuoSceneObject_makeCube(VuoTransform transform, VuoShader frontShader, VuoShader leftShader, VuoShader rightShader, VuoShader backShader, VuoShader topShader, VuoShader bottomShader);
112 VuoSceneObject VuoSceneObject_makeText(VuoText text, VuoFont font, VuoBoolean scaleWithScene, float wrapWidth);
113 
114 VuoSceneObject VuoSceneObject_makePerspectiveCamera(VuoText name, VuoTransform transform, float fieldOfView, float distanceMin, float distanceMax);
115 VuoSceneObject VuoSceneObject_makeStereoCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal distanceMin, VuoReal distanceMax, VuoReal confocalDistance, VuoReal intraocularDistance);
116 VuoSceneObject VuoSceneObject_makeOrthographicCamera(VuoText name, VuoTransform transform, float width, float distanceMin, float distanceMax);
117 VuoSceneObject VuoSceneObject_makeFisheyeCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal vignetteWidth, VuoReal vignetteSharpness);
119 
121 bool VuoSceneObject_findById(VuoSceneObject so, uint64_t idToMatch, VuoList_VuoSceneObject parentObjects, VuoSceneObject *foundObject) VuoWarnUnusedResult;
125 
127 VuoSceneObject VuoSceneObject_makePointLight(VuoColor color, float brightness, VuoPoint3d position, float range, float sharpness);
128 VuoSceneObject VuoSceneObject_makeSpotlight(VuoColor color, float brightness, VuoTransform transform, float cone, float range, float sharpness);
129 
130 void VuoSceneObject_findLights(VuoSceneObject so, VuoColor *ambientColor, float *ambientBrightness, VuoList_VuoSceneObject *pointLights, VuoList_VuoSceneObject *spotLights);
131 
132 void VuoSceneObject_visit(const VuoSceneObject object, bool (^function)(const VuoSceneObject *currentObject, float modelviewMatrix[16]));
133 void VuoSceneObject_apply(VuoSceneObject *object, void (^function)(VuoSceneObject *currentObject, float modelviewMatrix[16]));
134 
135 void VuoSceneObject_setFaceCullingMode(VuoSceneObject *object, unsigned int faceCullingMode);
137 
139 
142 char * VuoSceneObject_getSummary(const VuoSceneObject value);
143 void VuoSceneObject_getStatistics(const VuoSceneObject value, unsigned long *descendantCount, unsigned long *totalVertexCount, unsigned long *totalElementCount);
144 
146 bool VuoSceneObject_meshBounds(const VuoSceneObject so, VuoBox *bounds, float matrix[16]);
149 void VuoSceneObject_dump(const VuoSceneObject so);
150 
151 unsigned long VuoSceneObject_getVertexCount(const VuoSceneObject value);
152 
153 VuoSceneObject VuoSceneObject_flatten(const VuoSceneObject so, bool calculateTangents);
157 
159 
163 char * VuoSceneObject_getString(const VuoSceneObject value);
167