private void ReloadCard(string path) { string metaPath = path + ".metaJson"; if (!File.Exists(metaPath)) { Complain($"Can't load card from {path} because there is no corresponding .metaJson file."); return; } string jsContents = File.ReadAllText(path); string metaContents = File.ReadAllText(metaPath); BehaviorCards.CardMetadata cardMeta = JsonUtility.FromJson <BehaviorCards.CardMetadata>(metaContents); string providedId = cardMeta.cardSystemCardData.userProvidedId; if (!string.IsNullOrEmpty(cardMeta.cardSystemCardData.imageResourcePath) && !cardMeta.cardSystemCardData.imageResourcePath.StartsWith("icon:") && !cardMeta.cardSystemCardData.imageResourcePath.StartsWith("BuiltinAssets") ) { Complain($"Error loading {path}: metaJson file has invalid format for imageResourcePath field."); return; } if (string.IsNullOrEmpty(providedId)) { Complain($"Error loading {path}: metaJson file is missing userProvidedId field."); return; } providedId = providedId.ToLowerInvariant(); if (!BehaviorSystem.IsGuid(providedId)) { Complain($"Error loading {path}: userProvidedId must be a valid GUID (32 hex digits)."); return; } Debug.Log($"Hot-loading card from {path} -> {providedId}"); Behavior behavior = new Behavior { label = "Hotloaded", javascript = jsContents, metadataJson = metaContents }; loadedCardGuids.Add(providedId); behaviorSystem.PutBehavior(providedId, behavior); }