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 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
26 typedef const struct VuoList_VuoSceneObject_struct { void *l; } * VuoList_VuoSceneObject;
27 #define VuoList_VuoSceneObject_TYPE_DEFINED
28 
41 typedef enum
42 {
43  VuoSceneObjectSubType_Empty,
44  VuoSceneObjectSubType_Group,
45  VuoSceneObjectSubType_Mesh,
46  VuoSceneObjectSubType_PerspectiveCamera,
47  VuoSceneObjectSubType_StereoCamera,
48  VuoSceneObjectSubType_OrthographicCamera,
49  VuoSceneObjectSubType_FisheyeCamera,
50  VuoSceneObjectSubType_AmbientLight,
51  VuoSceneObjectSubType_PointLight,
52  VuoSceneObjectSubType_Spotlight,
53  VuoSceneObjectSubType_Text
55 
64 typedef const struct { void *l; } * VuoSceneObject;
65 
66 uint64_t VuoSceneObject_getNextId(void);
67 
68 // Constructors
72 VuoSceneObject VuoSceneObject_makeQuad(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
73 VuoSceneObject VuoSceneObject_makeQuadWithNormals(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
74 VuoSceneObject VuoSceneObject_makeImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal alpha);
75 VuoSceneObject VuoSceneObject_makeLitImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal alpha, VuoColor highlightColor, VuoReal shininess);
76 VuoSceneObject VuoSceneObject_makeCube(VuoTransform transform, VuoShader frontShader, VuoShader leftShader, VuoShader rightShader, VuoShader backShader, VuoShader topShader, VuoShader bottomShader);
78 VuoSceneObject VuoSceneObject_makeText(VuoText text, VuoFont font, VuoBoolean scaleWithScene, float wrapWidth);
79 VuoSceneObject VuoSceneObject_makePerspectiveCamera(VuoText name, VuoTransform transform, float fieldOfView, float distanceMin, float distanceMax);
80 VuoSceneObject VuoSceneObject_makeStereoCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal distanceMin, VuoReal distanceMax, VuoReal confocalDistance, VuoReal intraocularDistance);
81 VuoSceneObject VuoSceneObject_makeOrthographicCamera(VuoText name, VuoTransform transform, float width, float distanceMin, float distanceMax);
82 VuoSceneObject VuoSceneObject_makeFisheyeCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal vignetteWidth, VuoReal vignetteSharpness);
85 VuoSceneObject VuoSceneObject_makePointLight(VuoColor color, float brightness, VuoPoint3d position, float range, float sharpness);
86 VuoSceneObject VuoSceneObject_makeSpotlight(VuoColor color, float brightness, VuoTransform transform, float cone, float range, float sharpness);
87 
88 // Finders
90 bool VuoSceneObject_findById(VuoSceneObject so, uint64_t idToMatch, VuoList_VuoSceneObject parentObjects, VuoSceneObject *foundObject) VuoWarnUnusedResult;
93 void VuoSceneObject_findLights(VuoSceneObject so, VuoColor *ambientColor, float *ambientBrightness, VuoList_VuoSceneObject *pointLights, VuoList_VuoSceneObject *spotLights);
94 
96 
97 void VuoSceneObject_visit(const VuoSceneObject object, bool (^function)(const VuoSceneObject currentObject, float modelviewMatrix[16]));
98 void VuoSceneObject_apply(VuoSceneObject object, void (^function)(VuoSceneObject currentObject, float modelviewMatrix[16]));
99 
100 // Mutators
104 void VuoSceneObject_translate(VuoSceneObject object, VuoPoint3d translation);
105 void VuoSceneObject_scale(VuoSceneObject object, VuoPoint3d scale);
106 
107 // Getters
109 uint64_t VuoSceneObject_getId(const VuoSceneObject object);
115 VuoPoint3d VuoSceneObject_getTranslation(const VuoSceneObject object);
117 bool VuoSceneObject_isRealSize(const VuoSceneObject object);
133 float VuoSceneObject_getLightRange(const VuoSceneObject object);
135 float VuoSceneObject_getLightCone(const VuoSceneObject object);
136 
137 // Setters
139 void VuoSceneObject_setId(VuoSceneObject object, uint64_t id);
144 void VuoSceneObject_setTranslation(VuoSceneObject object, VuoPoint3d translation);
145 void VuoSceneObject_setScale(VuoSceneObject object, VuoPoint3d scale);
149 void VuoSceneObject_setRealSize(VuoSceneObject object, bool isRealSize);
150 void VuoSceneObject_setPreservePhysicalSize(VuoSceneObject object, bool shouldPreservePhysicalSize);
153 void VuoSceneObject_setCameraFieldOfView(VuoSceneObject object, float fieldOfView);
154 void VuoSceneObject_setCameraDistanceMin(VuoSceneObject object, float distanceMin);
155 void VuoSceneObject_setCameraDistanceMax(VuoSceneObject object, float distanceMax);
156 
158 
161 char * VuoSceneObject_getSummary(const VuoSceneObject value);
162 void VuoSceneObject_getStatistics(const VuoSceneObject value, unsigned long *descendantCount, unsigned long *totalVertexCount, unsigned long *totalElementCount);
163 
165 bool VuoSceneObject_meshBounds(const VuoSceneObject so, VuoBox *bounds, float matrix[16]);
166 void VuoSceneObject_dump(const VuoSceneObject so);
167 
168 unsigned long VuoSceneObject_getVertexCount(const VuoSceneObject value);
169 
174 
176 
180 char * VuoSceneObject_getString(const VuoSceneObject value);
184 
189 #ifdef __cplusplus
190 }
191 #endif