Vuo  2.0.0
VuoSceneObject.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include "VuoCubemap.h"
13 #include "VuoHeap.h"
14 #include "VuoText.h"
15 #include "VuoMesh.h"
16 #include "VuoShader.h"
17 #include "VuoTransform.h"
18 #include "VuoPoint3d.h"
19 #include "VuoBlendMode.h"
20 #include "VuoFont.h"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
27 typedef const struct VuoList_VuoSceneObject_struct { void *l; } * VuoList_VuoSceneObject;
28 #define VuoList_VuoSceneObject_TYPE_DEFINED
29 
42 typedef enum
43 {
44  VuoSceneObjectSubType_Empty,
45  VuoSceneObjectSubType_Group,
46  VuoSceneObjectSubType_Mesh,
47  VuoSceneObjectSubType_PerspectiveCamera,
48  VuoSceneObjectSubType_StereoCamera,
49  VuoSceneObjectSubType_OrthographicCamera,
50  VuoSceneObjectSubType_FisheyeCamera,
51  VuoSceneObjectSubType_AmbientLight,
52  VuoSceneObjectSubType_PointLight,
53  VuoSceneObjectSubType_Spotlight,
54  VuoSceneObjectSubType_Text
56 
65 typedef const struct { void *l; } * VuoSceneObject;
66 
67 uint64_t VuoSceneObject_getNextId(void);
68 
69 // Constructors
73 VuoSceneObject VuoSceneObject_makeQuad(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
74 VuoSceneObject VuoSceneObject_makeQuadWithNormals(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
75 VuoSceneObject VuoSceneObject_makeImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal alpha);
76 VuoSceneObject VuoSceneObject_makeLitImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal alpha, VuoColor highlightColor, VuoReal shininess);
77 VuoSceneObject VuoSceneObject_makeCube(VuoTransform transform, VuoShader frontShader, VuoShader leftShader, VuoShader rightShader, VuoShader backShader, VuoShader topShader, VuoShader bottomShader);
84 VuoSceneObject VuoSceneObject_makeText(VuoText text, VuoFont font, VuoBoolean scaleWithScene, float wrapWidth);
85 VuoSceneObject VuoSceneObject_makePerspectiveCamera(VuoText name, VuoTransform transform, float fieldOfView, float distanceMin, float distanceMax);
86 VuoSceneObject VuoSceneObject_makeStereoCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal distanceMin, VuoReal distanceMax, VuoReal confocalDistance, VuoReal intraocularDistance);
87 VuoSceneObject VuoSceneObject_makeOrthographicCamera(VuoText name, VuoTransform transform, float width, float distanceMin, float distanceMax);
88 VuoSceneObject VuoSceneObject_makeFisheyeCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal vignetteWidth, VuoReal vignetteSharpness);
91 VuoSceneObject VuoSceneObject_makePointLight(VuoColor color, float brightness, VuoPoint3d position, float range, float sharpness);
92 VuoSceneObject VuoSceneObject_makeSpotlight(VuoColor color, float brightness, VuoTransform transform, float cone, float range, float sharpness);
93 
94 // Finders
96 bool VuoSceneObject_findById(VuoSceneObject so, uint64_t idToMatch, VuoList_VuoSceneObject parentObjects, VuoSceneObject *foundObject) VuoWarnUnusedResult;
99 void VuoSceneObject_findLights(VuoSceneObject so, VuoColor *ambientColor, float *ambientBrightness, VuoList_VuoSceneObject *pointLights, VuoList_VuoSceneObject *spotLights);
100 
102 
103 void VuoSceneObject_visit(const VuoSceneObject object, bool (^function)(const VuoSceneObject currentObject, float modelviewMatrix[16]));
104 void VuoSceneObject_apply(VuoSceneObject object, void (^function)(VuoSceneObject currentObject, float modelviewMatrix[16]));
105 
106 // Mutators
110 void VuoSceneObject_translate(VuoSceneObject object, VuoPoint3d translation);
111 void VuoSceneObject_scale(VuoSceneObject object, VuoPoint3d scale);
112 
113 // Getters
115 uint64_t VuoSceneObject_getId(const VuoSceneObject object);
121 VuoPoint3d VuoSceneObject_getTranslation(const VuoSceneObject object);
123 bool VuoSceneObject_isRealSize(const VuoSceneObject object);
139 float VuoSceneObject_getLightRange(const VuoSceneObject object);
141 float VuoSceneObject_getLightCone(const VuoSceneObject object);
142 
143 // Setters
145 void VuoSceneObject_setId(VuoSceneObject object, uint64_t id);
150 void VuoSceneObject_setTranslation(VuoSceneObject object, VuoPoint3d translation);
151 void VuoSceneObject_setScale(VuoSceneObject object, VuoPoint3d scale);
155 void VuoSceneObject_setRealSize(VuoSceneObject object, bool isRealSize);
156 void VuoSceneObject_setPreservePhysicalSize(VuoSceneObject object, bool shouldPreservePhysicalSize);
159 void VuoSceneObject_setCameraFieldOfView(VuoSceneObject object, float fieldOfView);
160 void VuoSceneObject_setCameraDistanceMin(VuoSceneObject object, float distanceMin);
161 void VuoSceneObject_setCameraDistanceMax(VuoSceneObject object, float distanceMax);
162 
164 
167 char * VuoSceneObject_getSummary(const VuoSceneObject value);
168 void VuoSceneObject_getStatistics(const VuoSceneObject value, unsigned long *descendantCount, unsigned long *totalVertexCount, unsigned long *totalElementCount);
169 
171 bool VuoSceneObject_meshBounds(const VuoSceneObject so, VuoBox *bounds, float matrix[16]);
172 void VuoSceneObject_dump(const VuoSceneObject so);
173 
174 unsigned long VuoSceneObject_getVertexCount(const VuoSceneObject value);
175 
180 
182 
186 char * VuoSceneObject_getString(const VuoSceneObject value);
190 
195 #ifdef __cplusplus
196 }
197 #endif