Vuo  2.3.2
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 #include "VuoOrientation.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
28 typedef const struct VuoList_VuoSceneObject_struct { void *l; } * VuoList_VuoSceneObject;
29 #define VuoList_VuoSceneObject_TYPE_DEFINED
31 
43 typedef enum
44 {
45  VuoSceneObjectSubType_Empty,
46  VuoSceneObjectSubType_Group,
47  VuoSceneObjectSubType_Mesh,
48  VuoSceneObjectSubType_PerspectiveCamera,
49  VuoSceneObjectSubType_StereoCamera,
50  VuoSceneObjectSubType_OrthographicCamera,
51  VuoSceneObjectSubType_FisheyeCamera,
52  VuoSceneObjectSubType_AmbientLight,
53  VuoSceneObjectSubType_PointLight,
54  VuoSceneObjectSubType_Spotlight,
55  VuoSceneObjectSubType_Text
57 
66 typedef const struct { void *l; } * VuoSceneObject;
67 
68 uint64_t VuoSceneObject_getNextId(void);
69 
70 // Constructors
74 VuoSceneObject VuoSceneObject_makeQuad(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
75 VuoSceneObject VuoSceneObject_makeQuadWithNormals(VuoShader shader, VuoPoint3d center, VuoPoint3d rotation, VuoReal width, VuoReal height);
76 VuoSceneObject VuoSceneObject_makeImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal size, VuoOrientation fixed, VuoReal alpha);
77 VuoSceneObject VuoSceneObject_makeLitImage(VuoImage image, VuoPoint3d center, VuoPoint3d rotation, VuoReal size, VuoOrientation fixed, VuoReal alpha, VuoColor highlightColor, VuoReal shininess);
78 VuoSceneObject VuoSceneObject_makeCube(VuoTransform transform, VuoShader frontShader, VuoShader leftShader, VuoShader rightShader, VuoShader backShader, VuoShader topShader, VuoShader bottomShader);
85 VuoSceneObject VuoSceneObject_makeText(VuoText text, VuoFont font, VuoBoolean scaleWithScene, float wrapWidth);
86 VuoSceneObject VuoSceneObject_makePerspectiveCamera(VuoText name, VuoTransform transform, float fieldOfView, float distanceMin, float distanceMax);
87 VuoSceneObject VuoSceneObject_makeStereoCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal distanceMin, VuoReal distanceMax, VuoReal confocalDistance, VuoReal intraocularDistance);
88 VuoSceneObject VuoSceneObject_makeOrthographicCamera(VuoText name, VuoTransform transform, float width, float distanceMin, float distanceMax);
89 VuoSceneObject VuoSceneObject_makeFisheyeCamera(VuoText name, VuoTransform transform, VuoReal fieldOfView, VuoReal vignetteWidth, VuoReal vignetteSharpness);
92 VuoSceneObject VuoSceneObject_makePointLight(VuoColor color, float brightness, VuoPoint3d position, float range, float sharpness);
93 VuoSceneObject VuoSceneObject_makeSpotlight(VuoColor color, float brightness, VuoTransform transform, float cone, float range, float sharpness);
94 
95 // Finders
97 bool VuoSceneObject_findById(VuoSceneObject so, uint64_t idToMatch, VuoList_VuoSceneObject parentObjects, VuoSceneObject *foundObject) VuoWarnUnusedResult;
100 void VuoSceneObject_findLights(VuoSceneObject so, VuoColor *ambientColor, float *ambientBrightness, VuoList_VuoSceneObject *pointLights, VuoList_VuoSceneObject *spotLights);
101 
103 
104 void VuoSceneObject_visit(const VuoSceneObject object, bool (^function)(const VuoSceneObject currentObject, float modelviewMatrix[16]));
105 void VuoSceneObject_apply(VuoSceneObject object, void (^function)(VuoSceneObject currentObject, float modelviewMatrix[16]));
106 
107 // Mutators
111 void VuoSceneObject_translate(VuoSceneObject object, VuoPoint3d translation);
112 void VuoSceneObject_scale(VuoSceneObject object, VuoPoint3d scale);
113 
114 // Getters
116 uint64_t VuoSceneObject_getId(const VuoSceneObject object);
122 VuoPoint3d VuoSceneObject_getTranslation(const VuoSceneObject object);
124 bool VuoSceneObject_isRealSize(const VuoSceneObject object);
140 float VuoSceneObject_getLightRange(const VuoSceneObject object);
142 float VuoSceneObject_getLightCone(const VuoSceneObject object);
143 
144 // Setters
146 void VuoSceneObject_setId(VuoSceneObject object, uint64_t id);
151 void VuoSceneObject_setTranslation(VuoSceneObject object, VuoPoint3d translation);
152 void VuoSceneObject_setScale(VuoSceneObject object, VuoPoint3d scale);
156 void VuoSceneObject_setRealSize(VuoSceneObject object, bool isRealSize);
157 void VuoSceneObject_setPreservePhysicalSize(VuoSceneObject object, bool shouldPreservePhysicalSize);
160 void VuoSceneObject_setCameraFieldOfView(VuoSceneObject object, float fieldOfView);
161 void VuoSceneObject_setCameraDistanceMin(VuoSceneObject object, float distanceMin);
162 void VuoSceneObject_setCameraDistanceMax(VuoSceneObject object, float distanceMax);
163 
165 
168 char * VuoSceneObject_getSummary(const VuoSceneObject value);
169 void VuoSceneObject_getStatistics(const VuoSceneObject value, unsigned long *descendantCount, unsigned long *totalVertexCount, unsigned long *totalElementCount);
170 
172 bool VuoSceneObject_meshBounds(const VuoSceneObject so, VuoBox *bounds, float matrix[16]);
173 void VuoSceneObject_dump(const VuoSceneObject so);
174 
175 unsigned long VuoSceneObject_getVertexCount(const VuoSceneObject value);
176 
181 
183 
191 
196 #ifdef __cplusplus
197 }
198 #endif