void FSLSLBridgeScriptCallback::fire(const LLUUID& inv_item) { if (inv_item.isNull() || !FSLSLBridge::instance().getBridgeCreating()) return; LLViewerInventoryItem* item = gInventory.getItem(inv_item); if (!item) { return; } gInventory.updateItem(item); gInventory.notifyObservers(); LLViewerObject* obj = gAgentAvatarp->getWornAttachment(FSLSLBridge::instance().getBridge()->getUUID()); //caps import std::string url = gAgent.getRegion()->getCapability("UpdateScriptAgent"); std::string isMono = "lsl2"; //could also be "mono" if (!url.empty() && obj != NULL) { const std::string fName = prepUploadFile(); LLLiveLSLEditor::uploadAssetViaCapsStatic(url, fName, obj->getID(), inv_item, isMono, true); llinfos << "updating script ID for bridge" << llendl; FSLSLBridge::instance().mScriptItemID = inv_item; } else { //can't complete bridge creation - detach and remove object, remove script //try to clean up and go away. Fail. LLVOAvatarSelf::detachAttachmentIntoInventory(FSLSLBridge::instance().getBridge()->getUUID()); FSLSLBridge::instance().cleanUpBridge(); //also clean up script remains gInventory.purgeObject(item->getUUID()); gInventory.notifyObservers(); return; } }
void FSLSLBridgeScriptCallback::fire(const LLUUID& inv_item) { if (inv_item.isNull() || !FSLSLBridge::instance().getBridgeCreating()) { llwarns << "BridgeScriptCallback fired, but target item was null or bridge isn't marked as under creation. Ignoring." << llendl; return; } LLViewerInventoryItem* item = gInventory.getItem(inv_item); if (!item) { llwarns << "BridgeScriptCallback Can't find target item in inventory. Ignoring." << llendl; return; } if (!isAgentAvatarValid()) { llwarns << "Agent is 0, bailing out" << llendl; return; } gInventory.updateItem(item); gInventory.notifyObservers(); LLViewerObject* obj(NULL); if (FSLSLBridge::instance().isBridgeValid()) { obj = gAgentAvatarp->getWornAttachment(FSLSLBridge::instance().getBridge()->getUUID()); } else { llwarns << "Bridge non valid" << llendl; } //caps import std::string url; if (gAgent.getRegion()) { url = gAgent.getRegion()->getCapability("UpdateScriptAgent"); } std::string isMono = "mono"; //could also be "lsl2" if (!url.empty() && obj != NULL) { const std::string fName = prepUploadFile(); LLLiveLSLEditor::uploadAssetViaCapsStatic(url, fName, obj->getID(), inv_item, isMono, true); llinfos << "updating script ID for bridge" << llendl; FSLSLBridge::instance().mScriptItemID = inv_item; } else { //can't complete bridge creation - detach and remove object, remove script //try to clean up and go away. Fail. if (FSLSLBridge::instance().isBridgeValid()) { LLVOAvatarSelf::detachAttachmentIntoInventory(FSLSLBridge::instance().getBridge()->getUUID()); } FSLSLBridge::instance().cleanUpBridge(); //also clean up script remains gInventory.purgeObject(item->getUUID()); gInventory.notifyObservers(); llwarns << "Can't update bridge script. Purging bridge." << llendl; return; } }