GetColor (inline)
Syntax
// // Strong typing definition // static inline void GetColor( OwlInstance owlInstanceColor, uint32_t * ambient, uint32_t * diffuse, uint32_t * emissive, uint32_t * specular ) { assert(IsInstanceOfClass(owlInstanceColor, "Color")); int64_t model = GetModel(owlInstanceColor); GetDefaultColor( model, ambient, diffuse, emissive, specular ); const char * componentNames[4] = { "ambient", "diffuse", "emissive", "specular" }; uint32_t * componentColors[4] = { ambient, diffuse, emissive, specular }; for (size_t i = 0; i < 4; i++) { if (componentColors[i]) { OwlInstance * values = nullptr; int64_t card = 0; GetObjectProperty( owlInstanceColor, GetPropertyByName( model, componentNames[i] ), (const OwlInstance**) &values, &card ); int64_t owlInstanceColorComponent = (card == 1) ? values[0] : 0; if (owlInstanceColorComponent) { (*componentColors[i]) = GetColorOfComponent(owlInstanceColorComponent); } } } } // // Weak typing definition // static inline void GetColor( int64_t owlInstanceColor, uint32_t * ambient, uint32_t * diffuse, uint32_t * emissive, uint32_t * specular ) { assert(IsInstanceOfClass(owlInstanceColor, "Color")); int64_t model = GetModel(owlInstanceColor); GetDefaultColor( model, ambient, diffuse, emissive, specular ); const char * componentNames[4] = { "ambient", "diffuse", "emissive", "specular" }; uint32_t * componentColors[4] = { ambient, diffuse, emissive, specular }; for (size_t i = 0; i < 4; i++) { if (componentColors[i]) { OwlInstance * values = nullptr; int64_t card = 0; GetObjectProperty( owlInstanceColor, GetPropertyByName( model, componentNames[i] ), (const OwlInstance**) &values, &card ); int64_t owlInstanceColorComponent = (card == 1) ? values[0] : 0; if (owlInstanceColorComponent) { (*componentColors[i]) = GetColorOfComponent(owlInstanceColorComponent); } } } }