bool Json::WriteFile(const char* file, const int & indent){ std::ofstream out(file); if(!out.is_open()) return false; out << IndentString(indent); out.close(); return true; }
CoreLib::String ShaderLibFile::ToString() { StringBuilder writer; writer << L"name " << MetaData.ShaderName << EndLine; for (auto & world : MetaData.Worlds) { writer << L"world " << world.Key << EndLine << L"{" << EndLine; writer << L"target " << world.Value.TargetName << EndLine; for (auto & blk : world.Value.InputBlocks) { writer << L"in " << blk << L";\n"; } writer << L"out " << world.Value.OutputBlock << L";\n"; for (auto & comp : world.Value.Components) writer << L"comp " << comp << L";\n"; writer << L"}" << EndLine; } for (auto & ublock : MetaData.InterfaceBlocks) { writer << L"interface " << ublock.Key << L" size " << ublock.Value.Size << L"\n{\n"; for (auto & entry : ublock.Value.Entries) { writer << ILBaseTypeToString(entry.Type) << L" " << entry.Name << L" : " << entry.Offset << L"," << entry.Size; if (entry.Attributes.Count()) { writer << L"\n{\n"; for (auto & attrib : entry.Attributes) { writer << attrib.Key << L" : " << CoreLib::Text::Parser::EscapeStringLiteral(attrib.Value) << L";\n"; } writer << L"}"; } writer << L";\n"; } writer << L"}\n"; } writer << L"source" << EndLine << L"{" << EndLine; for (auto & src : Sources) { writer << src.Key << EndLine; writer << L"{" << EndLine; writer << src.Value.GetAllCodeGLSL() << EndLine; writer << L"}" << EndLine; } writer << L"}" << EndLine; StringBuilder formatSB; IndentString(formatSB, writer.ProduceString()); return formatSB.ProduceString(); }