protected virtual void WritePrefabTypeFile(PrefabTypeMode prefabTypeMode, FileInfo file, string rawContents) { try { var prefabTypeModeStr = prefabTypeMode.ToString().ToLower(); var contents = string.Format(Template.FileTemplate, rawContents, prefabTypeModeStr).Replace("{{", "{").Replace("}}", "}"); using (var stream = file.Open(FileMode.Create)) using (var writer = new StreamWriter(stream)) { writer.Write(contents); } AssetDatabase.Refresh(); Debug.Log(this.ToString() + " Updated " + FILE_NAME); } catch (Exception e) { Debug.LogError(this.ToString() + " error in attempting to update " + FILE_NAME + ": " + e.Message.ToString() + "\n" + e.StackTrace.ToString()); } }
protected virtual void EnsureMaxPrefabsLength(PrefabTypeMode mode) { // do not allow prefabs to surpass max value var max = 0; switch (mode) { case PrefabTypeMode.Byte: { max = byte.MaxValue; break; } case PrefabTypeMode.Short: { max = short.MaxValue; break; } case PrefabTypeMode.Int: { max = int.MaxValue; break; } default: { throw new NotImplementedException(this.ToString() + " VRPrefabTypeMode unhandled type == " + mode.ToString()); } } if (_prefabs.arraySize > max) { Debug.LogWarning(this.ToString() + " does not support more than " + max.ToString() + " prefabs, due to the currently selected prefab type mode (" + mode.ToString() + "). Please change the VRPrefab Type Mode first if you need more prefabs than the current maximum. Removing the last " + (_prefabs.arraySize - max).ToString() + " prefabs from array."); for (int i = _prefabs.arraySize - 1; i >= max; i--) { _prefabs.DeleteArrayElementAtIndex(i); } } }