//-------------------------------------------------------------------------- bool JSONElement::has_key(const char* k) const { Map<DynamicString, const char*> object(default_allocator()); json::parse_object(m_at, object); return map::has(object, DynamicString(k)); }
//-------------------------------------------------------------------------- JSONElement JSONElement::key(const char* k) { Map<DynamicString, const char*> object(default_allocator()); json::parse_object(m_at, object); const char* value = map::get(object, DynamicString(k), (const char*) NULL); CE_ASSERT(value != NULL, "Key not found: '%s'", k); return JSONElement(value); }
//-------------------------------------------------------------------------- JSONElement JSONElement::key_or_nil(const char* k) { if (m_at != NULL) { Map<DynamicString, const char*> object(default_allocator()); json::parse_object(m_at, object); const char* value = map::get(object, DynamicString(k), (const char*) NULL); if (value) return JSONElement(value); } return JSONElement(); }
BundleCompiler::BundleCompiler(const char* source_dir, const char* bundle_dir) : _source_fs(default_allocator(), source_dir) , _bundle_fs(default_allocator(), bundle_dir) , _compilers(default_allocator()) , _files(default_allocator()) , _globs(default_allocator()) { namespace pcr = physics_config_resource; namespace phr = physics_resource; namespace pkr = package_resource; namespace sdr = sound_resource; namespace mhr = mesh_resource; namespace utr = unit_resource; namespace txr = texture_resource; namespace mtr = material_resource; namespace lur = lua_resource; namespace ftr = font_resource; namespace lvr = level_resource; namespace spr = sprite_resource; namespace shr = shader_resource; namespace sar = sprite_animation_resource; namespace cor = config_resource; register_resource_compiler(RESOURCE_TYPE_SCRIPT, RESOURCE_VERSION_SCRIPT, lur::compile); register_resource_compiler(RESOURCE_TYPE_TEXTURE, RESOURCE_VERSION_TEXTURE, txr::compile); register_resource_compiler(RESOURCE_TYPE_MESH, RESOURCE_VERSION_MESH, mhr::compile); register_resource_compiler(RESOURCE_TYPE_SOUND, RESOURCE_VERSION_SOUND, sdr::compile); register_resource_compiler(RESOURCE_TYPE_UNIT, RESOURCE_VERSION_UNIT, utr::compile); register_resource_compiler(RESOURCE_TYPE_SPRITE, RESOURCE_VERSION_SPRITE, spr::compile); register_resource_compiler(RESOURCE_TYPE_PACKAGE, RESOURCE_VERSION_PACKAGE, pkr::compile); register_resource_compiler(RESOURCE_TYPE_PHYSICS, RESOURCE_VERSION_PHYSICS, phr::compile); register_resource_compiler(RESOURCE_TYPE_MATERIAL, RESOURCE_VERSION_MATERIAL, mtr::compile); register_resource_compiler(RESOURCE_TYPE_PHYSICS_CONFIG, RESOURCE_VERSION_PHYSICS_CONFIG, pcr::compile); register_resource_compiler(RESOURCE_TYPE_FONT, RESOURCE_VERSION_FONT, ftr::compile); register_resource_compiler(RESOURCE_TYPE_LEVEL, RESOURCE_VERSION_LEVEL, lvr::compile); register_resource_compiler(RESOURCE_TYPE_SHADER, RESOURCE_VERSION_SHADER, shr::compile); register_resource_compiler(RESOURCE_TYPE_SPRITE_ANIMATION, RESOURCE_VERSION_SPRITE_ANIMATION, sar::compile); register_resource_compiler(RESOURCE_TYPE_CONFIG, RESOURCE_VERSION_CONFIG, cor::compile); _bundle_fs.create_directory(bundle_dir); if (!_bundle_fs.exists(CROWN_DATA_DIRECTORY)) _bundle_fs.create_directory(CROWN_DATA_DIRECTORY); scan_source_dir(""); TempAllocator512 ta; vector::push_back(_globs, DynamicString("*.tmp", ta)); vector::push_back(_globs, DynamicString("*.wav", ta)); vector::push_back(_globs, DynamicString("*.ogg", ta)); vector::push_back(_globs, DynamicString("*.png", ta)); vector::push_back(_globs, DynamicString("*.tga", ta)); vector::push_back(_globs, DynamicString("*.dds", ta)); vector::push_back(_globs, DynamicString("*.ktx", ta)); vector::push_back(_globs, DynamicString("*.pvr", ta)); vector::push_back(_globs, DynamicString("*.swn", ta)); // VIM swap file. vector::push_back(_globs, DynamicString("*.swo", ta)); // VIM swap file. vector::push_back(_globs, DynamicString("*.swp", ta)); // VIM swap file. vector::push_back(_globs, DynamicString("*~", ta)); vector::push_back(_globs, DynamicString(".*", ta)); if (_source_fs.exists(CROWN_BUNDLEIGNORE)) { File& file = *_source_fs.open(CROWN_BUNDLEIGNORE, FileOpenMode::READ); const u32 size = file.size(); char* data = (char*)default_allocator().allocate(size + 1); file.read(data, size); data[size] = '\0'; _source_fs.close(file); LineReader lr(data); while (!lr.eof()) { TempAllocator512 ta; DynamicString line(ta); lr.read_line(line); line.trim(); if (line.empty() || line.starts_with("#")) continue; vector::push_back(_globs, line); } default_allocator().deallocate(data); } }