public static void Encode( this AssetLibraryManager assetLibraryManager, BitWriter writer, Platform platform, AssetGroup group, Items.PackedAssetReference value) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } var config = assetLibraryManager.Configurations[group]; uint index; if (value == Items.PackedAssetReference.None) { index = config.NoneIndex; } else { index = 0; index |= (((uint)value.AssetIndex) & config.AssetMask) << 0; index |= (((uint)value.SublibraryIndex) & config.SublibraryMask) << config.AssetBits; if (value.UseSetId == true) { index |= 1u << config.AssetBits + config.SublibraryBits - 1; } } writer.WriteUInt32(index, config.SublibraryBits + config.AssetBits); }
public static void Encode(this AssetLibraryManager alm, BitWriter writer, int setId, AssetGroup group, string value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (string.IsNullOrEmpty(value) == true) { throw new ArgumentNullException("value"); } var config = alm.Configurations[group]; uint index; if (value == "None") { index = config.NoneIndex; } else { var parts = value.Split(new[] { '.' }, 2); if (parts.Length != 2) { throw new ArgumentException(); } var package = parts[0]; var asset = parts[1]; if (alm.GetIndex(setId, group, package, asset, out index) == false) { if (alm.GetIndex(0, group, package, asset, out index) == false) { throw new ArgumentException("unsupported asset"); } } } writer.WriteUInt32(index, config.SublibraryBits + config.AssetBits); }
public static void Encode(this AssetLibraryManager alm, BitWriter writer, int setId, AssetGroup group, string value) { if (writer == null) { throw new ArgumentNullException("writer"); } if (string.IsNullOrEmpty(value) == true) { throw new ArgumentNullException("value"); } var config = alm.Configurations[group]; uint index; if (value == "None") { index = config.NoneIndex; } else { var parts = value.Split(new[] { '.' }, 2); if (parts.Length != 2) { throw new ArgumentException(); } var package = parts[0]; var asset = parts[1]; if (alm.GetIndex(setId, group, package, asset, out index) == false) { if (alm.GetIndex(0, group, package, asset, out index) == false) { throw new ArgumentException("unsupported asset"); } } } writer.WriteUInt32(index, config.SublibraryBits + config.AssetBits); }