Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Copyright (c) 2025 Kai Clavier [kaiclavier.com] Do Not Distribute
- using UnityEngine;
- #if UNITY_EDITOR
- using UnityEditor;
- #endif
- #if UNITY_EDITOR
- [CustomEditor(typeof(STMPreset))]
- [CanEditMultipleObjects]
- public class STMPresetEditor : Editor
- {
- private STMPreset preset;
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- preset = target as STMPreset;
- EditorGUILayout.PropertyField(serializedObject.FindProperty("font"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("size"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("quality"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("filterMode"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("lineSpacing"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("textMaterial"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("useBaseOffset"));
- EditorGUI.BeginDisabledGroup(!preset.useBaseOffset);
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(serializedObject.FindProperty("baseOffset"));
- EditorGUILayout.PropertyField(serializedObject.FindProperty("relativeBaseOffset"));
- EditorGUI.indentLevel--;
- EditorGUI.EndDisabledGroup();
- serializedObject.ApplyModifiedProperties();
- }
- }
- #endif
- [CreateAssetMenu(fileName = "STM Preset", menuName = "Super Text Mesh/Preset", order = 1)]
- public class STMPreset : ScriptableObject
- {
- public Font font; //font that will be used.
- public float size = 0.16f; //size. quality divided by scene's pixel ratio, unless you want it double sized
- public int quality = 16; //point size
- public float lineSpacing = 1f; //linespacing to use
- public bool useBaseOffset = true;
- public Vector3 baseOffset = Vector3.zero;
- public bool relativeBaseOffset = true;
- public FilterMode filterMode = FilterMode.Point;
- public Material textMaterial;
- internal void CopySettingsFrom(SuperTextMesh stm)
- {
- #if UNITY_EDITOR
- Undo.RecordObject(stm, "Settings Copied to STM");
- PrefabUtility.RecordPrefabInstancePropertyModifications(stm);
- #endif
- this.font = stm.font;
- this.quality = stm.quality;
- this.size = stm.size;
- this.lineSpacing = stm.lineSpacing;
- if(useBaseOffset)
- {
- this.baseOffset = stm.baseOffset;
- this.relativeBaseOffset = stm.relativeBaseOffset;
- }
- this.filterMode = stm.filterMode;
- this.textMaterial = stm.textMaterial;
- }
- internal void CopySettingsTo(SuperTextMesh stm)
- {
- //copy settings from subscription.
- stm.font = this.font;
- stm.quality = this.quality;
- stm.size = this.size;
- stm.lineSpacing = this.lineSpacing;
- if(useBaseOffset)
- {
- stm.baseOffset = this.baseOffset;
- stm.relativeBaseOffset = this.relativeBaseOffset;
- }
- stm.filterMode = this.filterMode;
- stm.textMaterial = this.textMaterial;
- }
- public string DescriptiveName
- {
- get
- {
- return font.name + "_" + quality + "px";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment