float WideVM::read(int index) { if(index < 0) { index = -index - 1; return m_globals[index]; } return getParticleData(m_pindex)[index]; }
Particle WideVM::getParticle(int index) { return Particle(getParticleData(index), &m_channelnames); }
float& WideVM::write(int index) { return getParticleData(m_pindex)[index]; }
void ParticleEditor::SaveConfigFile(QString filename) { FILE* sFile; sFile = fopen(filename.toLocal8Bit().data(), "wb"); if (!sFile){ addConsoleInfo("保存失败"); return; } QVariantMap document; QVariantList resList; QVariantMap particleData; //导出资源 QStringList imageList = resourceView->getImageList(); for (int i = 0; i < imageList.size(); i++){ QVariant res = imageList.at(i); resList.append(res); } //导出粒子 auto layer = dynamic_cast<C3DLayer*>(g_Layer); auto particleSystem = layer->getParticleSystem(); particleData.insert("texture", particleSystem->getTextureFileName().c_str()); particleData.insert("count", particleSystem->getParticleCount()); particleData.insert("particle_type", particleSystem->getParticleType()); particleData.insert("blendfunc_src", particleSystem->getBlendFunc().src); particleData.insert("blendfunc_dst", particleSystem->getBlendFunc().dst); auto data = particleSystem->getParticleData(); particleData.insert("velocity_min_x", data.m_Velocity_Min.x); particleData.insert("velocity_min_y", data.m_Velocity_Min.y); particleData.insert("velocity_min_z", data.m_Velocity_Min.z); particleData.insert("velocity_max_x", data.m_Velocity_Max.x); particleData.insert("velocity_max_y", data.m_Velocity_Max.y); particleData.insert("velocity_max_z", data.m_Velocity_Max.z); particleData.insert("accleration_min_x", data.m_Acceleration_Min.x); particleData.insert("accleration_min_y", data.m_Acceleration_Min.y); particleData.insert("accleration_min_z", data.m_Acceleration_Min.z); particleData.insert("accleration_max_x", data.m_Acceleration_Max.x); particleData.insert("accleration_max_y", data.m_Acceleration_Max.y); particleData.insert("accleration_max_z", data.m_Acceleration_Max.z); particleData.insert("size_min_x", data.m_Size_Min.x); particleData.insert("size_min_y", data.m_Size_Min.y); particleData.insert("size_min_z", data.m_Size_Min.z); particleData.insert("size_max_x", data.m_Size_Max.x); particleData.insert("size_max_y", data.m_Size_Max.y); particleData.insert("size_max_z", data.m_Size_Max.z); particleData.insert("size_velocity_x", data.m_Size_Velocity.x); particleData.insert("size_velocity_y", data.m_Size_Velocity.y); particleData.insert("size_velocity_z", data.m_Size_Velocity.z); particleData.insert("color_min_x", data.m_Color_Min.x); particleData.insert("color_min_y", data.m_Color_Min.y); particleData.insert("color_min_z", data.m_Color_Min.z); particleData.insert("color_max_x", data.m_Color_Max.x); particleData.insert("color_max_y", data.m_Color_Max.y); particleData.insert("color_max_z", data.m_Color_Max.z); particleData.insert("color_velocity_x", data.m_Color_Velocity.x); particleData.insert("color_velocity_y", data.m_Color_Velocity.y); particleData.insert("color_velocity_z", data.m_Color_Velocity.z); particleData.insert("life_min", data.m_Life_Min); particleData.insert("life_max", data.m_Life_Max); particleData.insert("life_velocity", data.m_Life_Velocity); particleData.insert("m_color_r", particleSystem->getColor()[0]); particleData.insert("m_color_g", particleSystem->getColor()[1]); particleData.insert("m_color_b", particleSystem->getColor()[2]); particleData.insert("m_color_a", particleSystem->getColor()[3]); document.insert("resList", resList); document.insert("particleData", particleData); QJsonDocument jsonDocument = QJsonDocument::fromVariant(document); QByteArray array = jsonDocument.toJson(QJsonDocument::Compact); unsigned int count = array.size(); const char* data__ = (const char*)array.data(); fwrite(data__, count, 1, sFile); fclose(sFile); }