KaiClavier

STMPreset.cs

Jul 22nd, 2025
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.91 KB | None | 0 0
  1. //Copyright (c) 2025 Kai Clavier [kaiclavier.com] Do Not Distribute
  2. using UnityEngine;
  3. #if UNITY_EDITOR
  4. using UnityEditor;
  5. #endif
  6. #if UNITY_EDITOR
  7. [CustomEditor(typeof(STMPreset))]
  8. [CanEditMultipleObjects]
  9. public class STMPresetEditor : Editor
  10. {
  11.     private STMPreset preset;
  12.     public override void OnInspectorGUI()
  13.     {
  14.         serializedObject.Update();
  15.         preset = target as STMPreset;
  16.  
  17.  
  18.         EditorGUILayout.PropertyField(serializedObject.FindProperty("font"));
  19.         EditorGUILayout.PropertyField(serializedObject.FindProperty("size"));
  20.         EditorGUILayout.PropertyField(serializedObject.FindProperty("quality"));
  21.         EditorGUILayout.PropertyField(serializedObject.FindProperty("filterMode"));
  22.         EditorGUILayout.PropertyField(serializedObject.FindProperty("lineSpacing"));
  23.         EditorGUILayout.PropertyField(serializedObject.FindProperty("textMaterial"));
  24.        
  25.         EditorGUILayout.PropertyField(serializedObject.FindProperty("useBaseOffset"));
  26.         EditorGUI.BeginDisabledGroup(!preset.useBaseOffset);
  27.         EditorGUI.indentLevel++;
  28.         EditorGUILayout.PropertyField(serializedObject.FindProperty("baseOffset"));
  29.         EditorGUILayout.PropertyField(serializedObject.FindProperty("relativeBaseOffset"));
  30.         EditorGUI.indentLevel--;
  31.         EditorGUI.EndDisabledGroup();
  32.        
  33.         serializedObject.ApplyModifiedProperties();
  34.     }
  35. }
  36. #endif
  37.  
  38. [CreateAssetMenu(fileName = "STM Preset", menuName = "Super Text Mesh/Preset", order = 1)]
  39. public class STMPreset : ScriptableObject
  40. {
  41.     public Font font; //font that will be used.
  42.     public float size = 0.16f; //size. quality divided by scene's pixel ratio, unless you want it double sized
  43.     public int quality = 16; //point size
  44.     public float lineSpacing = 1f; //linespacing to use
  45.     public bool useBaseOffset = true;
  46.     public Vector3 baseOffset = Vector3.zero;
  47.     public bool relativeBaseOffset = true;
  48.     public FilterMode filterMode = FilterMode.Point;
  49.     public Material textMaterial;
  50.    
  51.     internal void CopySettingsFrom(SuperTextMesh stm)
  52.     {
  53.         #if UNITY_EDITOR
  54.         Undo.RecordObject(stm, "Settings Copied to STM");
  55.         PrefabUtility.RecordPrefabInstancePropertyModifications(stm);
  56.         #endif
  57.         this.font = stm.font;
  58.         this.quality = stm.quality;
  59.         this.size = stm.size;
  60.         this.lineSpacing = stm.lineSpacing;
  61.         if(useBaseOffset)
  62.         {
  63.             this.baseOffset = stm.baseOffset;
  64.             this.relativeBaseOffset = stm.relativeBaseOffset;
  65.         }
  66.        
  67.         this.filterMode = stm.filterMode;
  68.         this.textMaterial = stm.textMaterial;
  69.        
  70.     }
  71.     internal void CopySettingsTo(SuperTextMesh stm)
  72.     {
  73.         //copy settings from subscription.
  74.         stm.font = this.font;
  75.         stm.quality = this.quality;
  76.         stm.size = this.size;
  77.         stm.lineSpacing = this.lineSpacing;
  78.         if(useBaseOffset)
  79.         {
  80.             stm.baseOffset = this.baseOffset;
  81.             stm.relativeBaseOffset = this.relativeBaseOffset;
  82.         }
  83.         stm.filterMode = this.filterMode;
  84.         stm.textMaterial = this.textMaterial;
  85.     }
  86.  
  87.     public string DescriptiveName
  88.     {
  89.         get
  90.         {
  91.             return font.name + "_" + quality + "px";
  92.         }
  93.     }
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment