/**************************************************************************** * * Copyright (c) 2011 CRI Middleware Co., Ltd. * ****************************************************************************/ using UnityEngine; using UnityEditor; using System; namespace CriWare { [CustomEditor(typeof(CriWareInitializer))] public class CriWareInitializerEditor : UnityEditor.Editor { private void GenToggleField(string label_str, string tooltip, ref bool field_value) { GUIContent content = new GUIContent(label_str, tooltip); field_value = EditorGUILayout.Toggle(content, field_value); } private void GenIntField(string label_str, string tooltip, ref int field_value, int min, int max) { GUIContent content = new GUIContent(label_str, tooltip); field_value = Math.Min(max, Math.Max(min, EditorGUILayout.IntField(content, field_value))); } private void GenIntFieldWithUnit(string label_str, string label_unit, string tooltip, ref int field_value, int min, int max) { //GUIContent content = new GUIContent(label_str, tooltip); //field_value = Math.Min(max, Math.Max(min, EditorGUILayout.IntField(content, field_value))); EditorGUILayout.BeginHorizontal(); { GUIContent content = new GUIContent(label_str, tooltip); field_value = Math.Min(max, Math.Max(min, EditorGUILayout.IntField(content, field_value))); int indentLevel = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; EditorGUILayout.LabelField(label_unit); EditorGUI.indentLevel = indentLevel; } EditorGUILayout.EndHorizontal(); } private void GenPositiveFloatField(string label_str, string tooltip, ref float field_value, float min, float max) { GUIContent content = new GUIContent(label_str, tooltip); field_value = Math.Min(max, Math.Max(min, EditorGUILayout.FloatField(content, field_value))); } private void GenPositiveFloatField(string label_str, string label_unit, string tooltip, ref float field_value, float min, float max) { EditorGUILayout.BeginHorizontal(); { GUIContent content = new GUIContent(label_str, tooltip); field_value = Math.Min(max, Math.Max(min, EditorGUILayout.FloatField(content, field_value))); int indentLevel = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; EditorGUILayout.LabelField(label_unit); EditorGUI.indentLevel = indentLevel; } EditorGUILayout.EndHorizontal(); } private void GenStringField(string label_str, string tooltip, ref string field_value) { GUIContent content = new GUIContent(label_str, tooltip); field_value = EditorGUILayout.TextField(content, field_value); } private Enum GenEnumField(string label_str, string tooltip, Enum field_value) { EditorGUILayout.BeginHorizontal(); { GUIContent content = new GUIContent(label_str, tooltip); field_value = EditorGUILayout.EnumPopup(content, field_value); } EditorGUILayout.EndHorizontal(); return field_value; } static private bool showFileSystemAndroidConfig = false; static private bool showAtomStandardVoicePoolConfig = false; static private bool showAtomHcaMxVoicePoolConfig = false; static private bool showAtomEditorConfig = false; static private bool showAtomPCConfig = false; /* @cond excludele */ static private bool showAtomLINUXConfig = false; /* @endcond */ static private bool showAtomIOSConfig = false; static private bool showAtomAndroidConfig = false; static private bool showAtomAndroidVoicePoolConfig = true; /* @cond excludele */ static private bool showAtomVitaConfig = false; static private bool showAtomVitaAtrac9VoicePoolConfig = true; static private bool showAtomPs4Config = false; static private bool showAtomPs4Atrac9VoicePoolConfig = true; static private bool showAtomPs4Audio3dVoicePoolConfig = true; static private bool showAtomSwitchConfig = false; static private bool showAtomSwitchOpusVoicePoolConfig = true; static private bool showAtomWebGLConfig = false; static private bool showAtomWebGLWebAudioVoicePoolConfig = true; static private bool showManaVitaConfig = false; static private bool showManaWebGLConfig = false; /* @endcond */ static private string[] asrOutputModes = {"Default", "Stereo", "4ch", "6ch(5.1ch)", "8ch(7.1ch)"}; static private int[] asrNumOutputChannels = {0, 2, 4, 6, 8}; static private string[] inGamePreviewSwitchModes = { "Disable", "Enable", "Follow Build Setting" }; static private CriAtomConfig.InGamePreviewSwitchMode[] inGamePreviewSwitchModeValues = { CriAtomConfig.InGamePreviewSwitchMode.Disable, CriAtomConfig.InGamePreviewSwitchMode.Enable, CriAtomConfig.InGamePreviewSwitchMode.FollowBuildSetting }; public override void OnInspectorGUI() { CriWareInitializer initializer = target as CriWareInitializer; Undo.RecordObject(target, null); GUI.changed = false; { // FileSystem Config initializer.initializesFileSystem = EditorGUILayout.BeginToggleGroup("Initialize FileSystem", initializer.initializesFileSystem); EditorGUI.indentLevel += 1; { GenIntField("Number of Loaders", "The maximum number of CriFsLoader objects used at a time. " + "NOTE: Count the number of CriFsLoadFileRequest objects and the total number of Streaming Voices in CRI Atom settings and the number of CriMana.Player component,", ref initializer.fileSystemConfig.numberOfLoaders, 0, 128); GenIntField("Number of Binders", "", ref initializer.fileSystemConfig.numberOfBinders, 0, 128); GenIntField("Number of Installers", "", ref initializer.fileSystemConfig.numberOfInstallers, 0, 128); GenIntFieldWithUnit("Install Buffer Size", "[KiB]", "Internal buffer size to install data. A larger buffer size result in better performance.", ref initializer.fileSystemConfig.installBufferSize, 32, int.MaxValue); GenIntField("Max Length of Path", "The maximum length of path (file path or url path) that can be passed.", ref initializer.fileSystemConfig.maxPath, 64, 2048); GenStringField("User Agent String", "", ref initializer.fileSystemConfig.userAgentString); GenToggleField("Minimize FD Usage", "With this option, the plugin minimizes file descriptor usage so that applicaiton can save file descriptor resource. However, this may increase file I/O instead.", ref initializer.fileSystemConfig.minimizeFileDescriptorUsage); GenToggleField("Enable CRC Check", "This option enables a CRC check on loading or binding when the cpk file contains CRC.", ref initializer.fileSystemConfig.enableCrcCheck); showFileSystemAndroidConfig = EditorGUILayout.Foldout(showFileSystemAndroidConfig, "Android Config"); if (showFileSystemAndroidConfig) { EditorGUI.indentLevel += 1; { /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */ if (initializer.fileSystemConfig.androidDeviceReadBitrate == 0) { initializer.fileSystemConfig.androidDeviceReadBitrate = CriFsConfig.defaultAndroidDeviceReadBitrate; } } GenIntFieldWithUnit("Device Read Bitrate", "[bps]", "Expected minimum device read bitrate to be used for multi-streaming management." + CriFsConfig.defaultAndroidDeviceReadBitrate + " bps", ref initializer.fileSystemConfig.androidDeviceReadBitrate, 0, int.MaxValue); EditorGUI.indentLevel -= 1; } } EditorGUI.indentLevel -= 1; EditorGUILayout.EndToggleGroup(); // Atom Config initializer.initializesAtom = EditorGUILayout.BeginToggleGroup("Initialize Atom", initializer.initializesAtom); EditorGUI.indentLevel += 1; { GenStringField("ACF File Name", "", ref initializer.atomConfig.acfFileName); GenIntField("Max Virtual Voices", "", ref initializer.atomConfig.maxVirtualVoices, CriAtomPlugin.GetRequiredMaxVirtualVoices(initializer.atomConfig), 1024); GenIntField("Max Voice Limit Groups", "", ref initializer.atomConfig.maxVoiceLimitGroups, 0, 1024); GenIntField("Max Parameter Blocks", "", ref initializer.atomConfig.maxParameterBlocks, 1024, 4096); GenIntField("Max Buses", "Maximum number of buses.", ref initializer.atomConfig.maxBuses, 1, 64); GenIntField("Max Categories", "Maximum number of categories.", ref initializer.atomConfig.maxCategories, 0, 1024); GenIntField("Max Aisacs", "Maximum number of Aisacs.", ref initializer.atomConfig.maxAisacs,1,55); GenIntField("Max Bus Sends", "Maximum number of Bus Sends.", ref initializer.atomConfig.maxBusSends,1,32); GenIntField("Max Sequence Events Per Frame", "Maximum number of sequence events that will be triggered in one application frame.", ref initializer.atomConfig.maxSequenceEventsPerFrame, 0, 64); GenIntField("Max Beat Sync Callbacks Per Frame", "Maximum number of beat synchronized callback that will be triggered in one application frame.", ref initializer.atomConfig.maxBeatSyncCallbacksPerFrame, 0, 64); GenIntField("Max Cue Link Callbacks Per Frame", "Maximum number of cue link callback that will be triggered in one application frame.", ref initializer.atomConfig.maxCueLinkCallbacksPerFrame, 0, 64); GenIntField("Categories per Playback", "Number of category references per playback.", ref initializer.atomConfig.categoriesPerPlayback, 0, 16); GenIntField("Max Faders", "Maximum number of faders.", ref initializer.atomConfig.maxFaders, 0, 1024); GenIntFieldWithUnit("Sampling Rate", "[Hz]", "Sound output sampling rate. " + "HCA-MX needs to set the sampling rate of HCA-MX data. " + "A value of 0 (the default value) means that the internal value will be applied.", ref initializer.atomConfig.outputSamplingRate, 0, 192000); GenPositiveFloatField("Server Frequency", "[Hz]", "", ref initializer.atomConfig.serverFrequency, 15.0f, 120.0f); int selected_output_mode = 0; foreach (int num_channnels in asrNumOutputChannels) { if (num_channnels == initializer.atomConfig.asrOutputChannels) { break; } selected_output_mode++; } selected_output_mode = EditorGUILayout.Popup("ASR Output Mode", selected_output_mode, asrOutputModes); initializer.atomConfig.asrOutputChannels = asrNumOutputChannels[selected_output_mode]; GenToggleField("Use Time For Seed", "", ref initializer.atomConfig.useRandomSeedWithTime); if (initializer.atomConfig.inGamePreviewMode == CriAtomConfig.InGamePreviewSwitchMode.Default) { initializer.atomConfig.inGamePreviewMode = initializer.atomConfig.usesInGamePreview ? CriAtomConfig.InGamePreviewSwitchMode.Enable : CriAtomConfig.InGamePreviewSwitchMode.Disable; initializer.atomConfig.usesInGamePreview = false; } int selected_ingamepreview_switch_mode = 0; foreach (CriAtomConfig.InGamePreviewSwitchMode mode in inGamePreviewSwitchModeValues) { if (mode == initializer.atomConfig.inGamePreviewMode) { break; } selected_ingamepreview_switch_mode++; } selected_ingamepreview_switch_mode = EditorGUILayout.Popup("In Game Preview", selected_ingamepreview_switch_mode, inGamePreviewSwitchModes); initializer.atomConfig.inGamePreviewMode = inGamePreviewSwitchModeValues[selected_ingamepreview_switch_mode]; if (initializer.atomConfig.inGamePreviewMode != CriAtomConfig.InGamePreviewSwitchMode.Disable) { EditorGUI.indentLevel += 1; GenIntField("Max Preview Objects", "", ref initializer.atomConfig.inGamePreviewConfig.maxPreviewObjects, 0, 1024); GenIntFieldWithUnit("Communication Buffer Size", "[KiB]", "Size of buffer for communication between library and tool.", ref initializer.atomConfig.inGamePreviewConfig.communicationBufferSize, 2048, int.MaxValue); GenIntFieldWithUnit("Update Interval", "[counts of server process]", "Interval to update playback position.", ref initializer.atomConfig.inGamePreviewConfig.playbackPositionUpdateInterval, 1, 8); EditorGUI.indentLevel -= 1; } /* @cond excludele */ if (initializer.atomConfig.inGamePreviewMode == CriAtomConfig.InGamePreviewSwitchMode.Enable || initializer.atomConfig.inGamePreviewMode == CriAtomConfig.InGamePreviewSwitchMode.FollowBuildSetting) { EditorGUI.indentLevel += 2; showAtomStandardVoicePoolConfig = EditorGUILayout.Foldout(showAtomStandardVoicePoolConfig, "Switch Monitor Config"); if (showAtomStandardVoicePoolConfig) { EditorGUI.indentLevel += 1; GenToggleField("Initialize Socket", "Initialize Socket library while CriWare Monitor initialization. Please turn off this flag if your project initializes Socket library.", ref initializer.atomConfig.switchInitializeSocket); EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel -= 2; } /* @endcond */ /* @cond excludele */ GenToggleField("VR Mode", "", ref initializer.atomConfig.vrMode); /* @endcond */ GenToggleField("Keep Playing Sound On Pause", "", ref initializer.atomConfig.keepPlayingSoundOnPause); showAtomStandardVoicePoolConfig = EditorGUILayout.Foldout(showAtomStandardVoicePoolConfig, "Standard Voice Pool Config"); if (showAtomStandardVoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.standardVoicePoolConfig.memoryVoices, 0, 1024); GenIntField("Streaming Voices", "", ref initializer.atomConfig.standardVoicePoolConfig.streamingVoices, 0, 1024); EditorGUI.indentLevel -= 1; } showAtomHcaMxVoicePoolConfig = EditorGUILayout.Foldout(showAtomHcaMxVoicePoolConfig, "HCA-MX Voice Pool Config"); if (showAtomHcaMxVoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.hcaMxVoicePoolConfig.memoryVoices, 0, 1024); GenIntField("Streaming Voices", "", ref initializer.atomConfig.hcaMxVoicePoolConfig.streamingVoices, 0, 1024); EditorGUI.indentLevel -= 1; } showAtomEditorConfig = EditorGUILayout.Foldout(showAtomEditorConfig, "Editor Config"); if (showAtomEditorConfig) { EditorGUI.indentLevel += 1; GenToggleField("Enable User PCM Out Mode", "For audio recording or manual output.", ref initializer.atomConfig.editorPcmOutputConfig.enable); GenIntField("PCM Buffer Length", "", ref initializer.atomConfig.editorPcmOutputConfig.bufferLength, 1024, 48000); EditorGUI.indentLevel -= 1; } showAtomPCConfig = EditorGUILayout.Foldout(showAtomPCConfig, "PC Config"); if (showAtomPCConfig) { EditorGUI.indentLevel += 1; GenIntFieldWithUnit("Buffering Time", "[msec]", "Sound buffering time in msec.", ref initializer.atomConfig.pcBufferingTime, 0, 2000); EditorGUI.indentLevel -= 1; } /* @cond excludele */ showAtomLINUXConfig = EditorGUILayout.Foldout(showAtomLINUXConfig, "Linux Config"); if (showAtomLINUXConfig) { EditorGUI.indentLevel += 1; initializer.atomConfig.linuxOutput = (CriAtomConfig.LinuxOutput)GenEnumField("Sound Output", "Sound output system (default is PulseAudio).", initializer.atomConfig.linuxOutput); GenIntFieldWithUnit("PulseAudio Latency", "[usec]", "Latency setting for PluseAudio.", ref initializer.atomConfig.linuxPulseLatencyUsec, 0, 200000); EditorGUI.indentLevel -= 1; } /* @endcond */ showAtomIOSConfig = EditorGUILayout.Foldout(showAtomIOSConfig, "iOS Config"); if (showAtomIOSConfig) { EditorGUI.indentLevel += 1; GenToggleField("Enable SonicSYNC", "", ref initializer.atomConfig.iosEnableSonicSync); EditorGUI.BeginDisabledGroup(initializer.atomConfig.iosEnableSonicSync); { GenIntFieldWithUnit("Buffering Time", "[msec]", "Sound buffering time in msec.", ref initializer.atomConfig.iosBufferingTime, 16, 200); } EditorGUI.EndDisabledGroup(); GenToggleField("Override iPod Music", "", ref initializer.atomConfig.iosOverrideIPodMusic); EditorGUI.indentLevel -= 1; } showAtomAndroidConfig = EditorGUILayout.Foldout(showAtomAndroidConfig, "Android Config"); if (showAtomAndroidConfig) { EditorGUI.indentLevel += 1; GenToggleField("Enable SonicSYNC", "", ref initializer.atomConfig.androidEnableSonicSync); EditorGUI.BeginDisabledGroup(initializer.atomConfig.androidEnableSonicSync); { /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */ if (initializer.atomConfig.androidBufferingTime == 0) { initializer.atomConfig.androidBufferingTime = (int)(4 * 1000.0 / initializer.atomConfig.serverFrequency); } if (initializer.atomConfig.androidStartBufferingTime == 0) { initializer.atomConfig.androidStartBufferingTime = (int)(3 * 1000.0 / initializer.atomConfig.serverFrequency); } } GenIntFieldWithUnit("Buffering Time", "[msec]", "Sound buffering time in msec.", ref initializer.atomConfig.androidBufferingTime, 50, 500); GenIntFieldWithUnit("Start Buffering", "[msec]", "Sound buffering time to start playing. This value will be applied when using the low latency voice pool.", ref initializer.atomConfig.androidStartBufferingTime, 50, 500); EditorGUI.EndDisabledGroup(); showAtomAndroidVoicePoolConfig = EditorGUILayout.Foldout(showAtomAndroidVoicePoolConfig, "Low Latency Standard Voice Pool Config"); if (showAtomAndroidVoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.androidLowLatencyStandardVoicePoolConfig.memoryVoices, 0, 32); GenIntField("Streaming Voices", "", ref initializer.atomConfig.androidLowLatencyStandardVoicePoolConfig.streamingVoices, 0, 32); EditorGUI.indentLevel -= 1; } GenToggleField("Use Android Fast Mixer", "", ref initializer.atomConfig.androidUsesAndroidFastMixer); GenToggleField("Use Asr For Default Playback", "", ref initializer.atomConfig.androidForceToUseAsrForDefaultPlayback); GenToggleField("[Beta] Use AAudio", "", ref initializer.atomConfig.androidUsesAAudio); EditorGUI.indentLevel -= 1; } /* @cond excludele */ showAtomVitaConfig = EditorGUILayout.Foldout(showAtomVitaConfig, "PS Vita Config"); if (showAtomVitaConfig) { EditorGUI.indentLevel += 1; showAtomVitaAtrac9VoicePoolConfig = EditorGUILayout.Foldout(showAtomVitaAtrac9VoicePoolConfig, "ATRAC9 Voice Pool Config"); if (showAtomVitaAtrac9VoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.vitaAtrac9VoicePoolConfig.memoryVoices, 0, 32); GenIntField("Streaming Voices", "", ref initializer.atomConfig.vitaAtrac9VoicePoolConfig.streamingVoices, 0, 32); EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel -= 1; } showAtomPs4Config = EditorGUILayout.Foldout(showAtomPs4Config, "PS4 Config"); if (showAtomPs4Config) { EditorGUI.indentLevel += 1; showAtomPs4Atrac9VoicePoolConfig = EditorGUILayout.Foldout(showAtomPs4Atrac9VoicePoolConfig, "ATRAC9 Voice Pool Config"); if (showAtomPs4Atrac9VoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.ps4Atrac9VoicePoolConfig.memoryVoices, 0, 256); GenIntField("Streaming Voices", "", ref initializer.atomConfig.ps4Atrac9VoicePoolConfig.streamingVoices, 0, 256); EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel -= 1; initializer.atomConfig.ps4Audio3dConfig.useAudio3D = EditorGUILayout.BeginToggleGroup("Object-Based Audio", initializer.atomConfig.ps4Audio3dConfig.useAudio3D); EditorGUI.indentLevel += 2; showAtomPs4Audio3dVoicePoolConfig = EditorGUILayout.Foldout(showAtomPs4Audio3dVoicePoolConfig, "Audio 3D Voice Pool Config"); if (showAtomPs4Audio3dVoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.ps4Audio3dConfig.voicePoolConfig.memoryVoices, 0, 256); GenIntField("Streaming Voices", "", ref initializer.atomConfig.ps4Audio3dConfig.voicePoolConfig.streamingVoices, 0, 256); EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel -= 2; EditorGUILayout.EndToggleGroup(); } showAtomSwitchConfig = EditorGUILayout.Foldout(showAtomSwitchConfig, "Switch Config"); if (showAtomSwitchConfig) { EditorGUI.indentLevel += 1; GenToggleField("Enable SonicSYNC", "", ref initializer.atomConfig.switchEnableSonicSync); showAtomSwitchOpusVoicePoolConfig = EditorGUILayout.Foldout(showAtomSwitchOpusVoicePoolConfig, "Opus Voice Pool Config"); if (showAtomSwitchOpusVoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Memory Voices", "", ref initializer.atomConfig.switchOpusVoicePoolConfig.memoryVoices, 0, 256); GenIntField("Streaming Voices", "", ref initializer.atomConfig.switchOpusVoicePoolConfig.streamingVoices, 0, 256); EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel -= 1; } showAtomWebGLConfig = EditorGUILayout.Foldout(showAtomWebGLConfig, "WebGL Config"); if (showAtomWebGLConfig) { EditorGUI.indentLevel += 1; showAtomWebGLWebAudioVoicePoolConfig = EditorGUILayout.Foldout(showAtomWebGLWebAudioVoicePoolConfig, "WebAudio Voice Pool Config"); if (showAtomWebGLWebAudioVoicePoolConfig) { EditorGUI.indentLevel += 1; GenIntField("Voices", "", ref initializer.atomConfig.webglWebAudioVoicePoolConfig.voices, 0, 32); EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel -= 1; } /* @endcond */ } EditorGUI.indentLevel -= 1; EditorGUILayout.EndToggleGroup(); /* @cond excludele */ // Mana Config initializer.initializesMana = EditorGUILayout.BeginToggleGroup("Initialize Mana", initializer.initializesMana); EditorGUI.indentLevel += 1; { GenIntField("Number Of Decoders", "The maximum number of CriMana.Player component at a time. NOTE: Count as 2 when playing a movie with alpha channel.", ref initializer.manaConfig.numberOfDecoders, 0, 128); GenIntField("Number Of Max Entries", "", ref initializer.manaConfig.numberOfMaxEntries, 0, 1024); showManaVitaConfig = EditorGUILayout.Foldout(showManaVitaConfig, "PS Vita Config"); if (showManaVitaConfig) { EditorGUI.indentLevel += 1; { initializer.manaConfig.vitaH264PlaybackConfig.useH264Playback = EditorGUILayout.BeginToggleGroup("H.264 Playback", initializer.manaConfig.vitaH264PlaybackConfig.useH264Playback); EditorGUI.indentLevel += 1; { GenIntField("Max Width", "", ref initializer.manaConfig.vitaH264PlaybackConfig.maxWidth, 64, 1280); GenIntField("Max Height", "", ref initializer.manaConfig.vitaH264PlaybackConfig.maxHeight, 64, 720); GenToggleField("Get Memory From CDRAM", "Let Mana H264 decoder use VRAM.\n" + "This significantly boost decoding and drawing of movie textures. " + "But It may takes longer to prepare the player depending movie size." , ref initializer.manaConfig.vitaH264PlaybackConfig.getMemoryFromTexture); } EditorGUI.indentLevel -= 1; EditorGUILayout.EndToggleGroup(); } EditorGUI.indentLevel -= 1; } showManaWebGLConfig = EditorGUILayout.Foldout(showManaWebGLConfig, "WebGL Config"); if (showManaWebGLConfig) { EditorGUI.indentLevel += 1; { GenStringField("WebWorker Path", "The directory path where sofdec2.worker.js is located.\n" + "sofdec2.worker.js is generated in StreamingAssets at build time." , ref initializer.manaConfig.webglConfig.webworkerPath); GenIntFieldWithUnit("Heap Size" ,"[MiB]" ,"Set heap size.\n" , ref initializer.manaConfig.webglConfig.heapSize , 32 , 512); } EditorGUI.indentLevel -= 1; } } EditorGUI.indentLevel -= 1; EditorGUILayout.EndToggleGroup(); /* @endcond */ /* @cond excludele */ // Decrypter Config initializer.useDecrypter = EditorGUILayout.BeginToggleGroup("Decrypter Settings", initializer.useDecrypter); EditorGUI.indentLevel += 1; { initializer.decrypterConfig.key = EditorGUILayout.TextField("Key Value", initializer.decrypterConfig.key); GenStringField("Auth File Name", "", ref initializer.decrypterConfig.authenticationFile); GenToggleField("Enable Atom Decryption", "", ref initializer.decrypterConfig.enableAtomDecryption); GenToggleField("Enable Mana Decryption", "", ref initializer.decrypterConfig.enableManaDecryption); } EditorGUI.indentLevel -= 1; EditorGUILayout.EndToggleGroup(); /* @endcond */ GenToggleField("Dont Initialize On Awake", "", ref initializer.dontInitializeOnAwake); GenToggleField("Dont Destroy On Load", "", ref initializer.dontDestroyOnLoad); } if (GUI.changed) { EditorUtility.SetDirty(initializer); } } } // end of class } //namespace CriWare /* end of file */