public void Import(string id, SavedActorPrefab prefab) { string json = JsonUtility.ToJson(prefab, true); Sojo sojo = new Sojo(ToSojoId(id), prefab.label, SojoType.ActorPrefab, json); sojoSystem.PutSojo(sojo); }
public ActorPrefabImpl(SavedActorPrefab saved, Texture2D thumbnail, string id, SojoSystem sojos) { saved.AssertValid(); this.saved = saved; this.thumbnail = thumbnail; this.id = id; this.sojos = sojos; }
ActorPrefabImpl Deserialize(Sojo sojo) { SavedActorPrefab saved = JsonUtility.FromJson <SavedActorPrefab>(sojo.content); saved.PerformUpgrades(); Texture2D thumbnail = null; if (!saved.thumbnailJZB64.IsNullOrEmpty()) { thumbnail = Util.ZippedJpegToTexture2D(System.Convert.FromBase64String(saved.thumbnailJZB64), false); } return(new ActorPrefabImpl(saved, thumbnail, FromSojoId(sojo.id), sojoSystem)); }
public static Dictionary <string, SavedActorPrefab> ReadPrefabsFromDir( string path, #if USE_STEAMWORKS WorkshopItem workshopItem = null, #endif Dictionary <string, SavedActorPrefab> prefabs = null) { if (prefabs == null) { prefabs = new Dictionary <string, SavedActorPrefab>(); } IEnumerable <string> files = Directory.EnumerateFiles(path, "*.json"); foreach (string file in files) { string id = Path.GetFileNameWithoutExtension(file); try { string json = File.ReadAllText(file); SavedActorPrefab prefab = JsonUtility.FromJson <SavedActorPrefab>(json); #if USE_STEAMWORKS if (workshopItem != null) { id += $" (from \"{workshopItem.Name}\" on Workshop)"; prefab.label += $" (from \"{workshopItem.Name}\" on Workshop)"; prefab.workshopId = workshopItem.SteamNative.m_nPublishedFileId.ToString(); } #endif prefabs[id] = prefab; } catch (System.IO.FileNotFoundException) { // Maybe user modified it badly? Ignore it. } } foreach (string subDir in Directory.GetDirectories(path)) { ReadPrefabsFromDir(subDir, #if USE_STEAMWORKS workshopItem, #endif prefabs); } return(prefabs); }
ActorPrefab LoadActorPrefab(string uri) { string voosFilePath = GetPathForUri(uri); string json = File.ReadAllText(voosFilePath); SavedActorPrefab actorPrefab = JsonUtility.FromJson <SavedActorPrefab>(json); actorPrefab.PerformUpgrades(); // Load thumbnail string thumbnailPng = GetActorThumbnailPath(uri); Texture2D thumbnail = Util.ReadPngToTexture(thumbnailPng); if (thumbnail == null && !actorPrefab.thumbnailJZB64.IsNullOrEmpty()) { thumbnail = Util.ZippedJpegToTexture2D( System.Convert.FromBase64String(actorPrefab.thumbnailJZB64)); } return(new ActorPrefabImpl(actorPrefab, thumbnail, uri, sojos)); }
public string FindOneActorUsingBehavior(string behaviorUri) { foreach (var sojo in sojoSystem.GetAllSojosOfType(SojoType.ActorPrefab)) { Debug.Assert(sojo.id.Contains(SojoIdPrefix)); SavedActorPrefab saved = JsonUtility.FromJson <SavedActorPrefab>(sojo.content); saved.PerformUpgrades(); foreach (var brain in saved.brainDatabase.brains) { foreach (var use in brain.behaviorUses) { if (use.behaviorUri == behaviorUri) { // Too lazy to find the actual actor in the prefab.. return($"Actor in prefab '{saved.label}'"); } } } } return(null); }