shared_ptr <GLTF::JSONObject> serializeEffect(GLTFEffect* effect, void *context) { shared_ptr <GLTF::JSONObject> effectObject(new GLTF::JSONObject()); shared_ptr <GLTF::JSONObject> instanceTechnique(new GLTF::JSONObject()); shared_ptr <JSONObject> techniqueGenerator = effect->getTechniqueGenerator(); GLTF::GLTFConverterContext *converterContext= (GLTF::GLTFConverterContext*)context; std::string techniqueID = GLTF::getReferenceTechniqueID(techniqueGenerator, *converterContext); effectObject->setString("name", effect->getName()); effectObject->setValue("instanceTechnique", instanceTechnique); instanceTechnique->setString("technique", techniqueID); shared_ptr<JSONObject> outputs(new JSONObject()); shared_ptr <JSONObject> values = effect->getValues(); std::vector <std::string> keys = values->getAllKeys(); for (size_t i = 0 ; i < keys.size() ; i++) { shared_ptr <JSONObject> parameter = static_pointer_cast <JSONObject> (values->getValue(keys[i])); shared_ptr <JSONObject> parameterValue = static_pointer_cast <JSONObject> (parameter->getValue("value")); shared_ptr<JSONObject> output(new JSONObject()); if (parameterValue) { outputs->setValue(keys[i], parameterValue); } } instanceTechnique->setValue("values", outputs); return effectObject; }
shared_ptr <GLTF::JSONObject> serializeEffect(GLTFEffect* effect, void *context) { shared_ptr <GLTF::JSONObject> effectObject(new GLTF::JSONObject()); shared_ptr <GLTF::JSONObject> instanceTechnique(new GLTF::JSONObject()); std::string techniqueID = effect->getTechniqueID(); effectObject->setString("name", effect->getName()); effectObject->setValue("instanceTechnique", instanceTechnique); instanceTechnique->setString("technique", techniqueID); shared_ptr<JSONArray> outputs(new JSONArray()); shared_ptr <JSONObject> values = effect->getValues(); std::vector <std::string> keys = values->getAllKeys(); for (size_t i = 0 ; i < keys.size() ; i++) { shared_ptr <JSONObject> parameter = static_pointer_cast <JSONObject> (values->getValue(keys[i])); shared_ptr <JSONObject> parameterValue = static_pointer_cast <JSONObject> (parameter->getValue("value")); shared_ptr<JSONObject> output(new JSONObject()); if (parameterValue) { output->setValue("value", parameterValue); output->setString("parameter", keys[i]); outputs->appendValue(output); } } instanceTechnique->setValue("values", outputs); return effectObject; }
shared_ptr <JSONExport::JSONObject> serializeEffect(JSONEffect* effect, void *context) { shared_ptr <JSONExport::JSONObject> effectObject(new JSONExport::JSONObject()); shared_ptr <JSONExport::JSONArray> colorObject(new JSONExport::JSONArray()); effectObject->setString("technique", effect->getTechniqueID()); effectObject->setString("name", effect->getName()); effectObject->setValue("techniques", effect->getTechniques()); return effectObject; }
shared_ptr <GLTF::JSONObject> serializeEffect(GLTFEffect* effect, void *context) { shared_ptr <GLTF::JSONObject> effectObject(new GLTF::JSONObject()); shared_ptr <GLTF::JSONObject> techniques(new GLTF::JSONObject()); std::string techniqueID = effect->getTechniqueID(); effectObject->setString("technique", techniqueID); effectObject->setString("name", effect->getName()); shared_ptr <GLTF::JSONObject> technique = effect->getTechnique(); techniques->setValue(techniqueID, technique); effectObject->setValue("techniques", techniques); return effectObject; }