Skip to content

Commit

Permalink
8.1.160
Browse files Browse the repository at this point in the history
  • Loading branch information
poiyomi committed Jan 18, 2023
1 parent 3e3986c commit 2d2218d
Show file tree
Hide file tree
Showing 9 changed files with 1,918 additions and 81 deletions.
2 changes: 1 addition & 1 deletion _PoiyomiShaders/Scripts/ThryEditor/Editor/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class Config
{
// consts
private const string PATH_CONFIG_FILE = "Thry/Config.json";
private const string VERSION = "2.30.0";
private const string VERSION = "2.30.5";

// static
private static Config config;
Expand Down
19 changes: 14 additions & 5 deletions _PoiyomiShaders/Scripts/ThryEditor/Editor/Drawers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ public override float GetPropertyHeight(MaterialProperty prop, string label, Mat

public class ThryRGBAPackerDrawer : MaterialPropertyDrawer
{

// TODO : Load lacale by property name in the future: propname_r, propname_g, propname_b, propname_a
class ThryRGBAPackerData
{
public Texture _previousTexture;
Expand Down Expand Up @@ -306,7 +306,10 @@ public ThryRGBAPackerDrawer(string label1, string label2, string label3, string
_defaultLabel2 = label2;
_defaultLabel3 = label3;
_defaultLabel4 = label4;
LoadLabels();
_label1 = label1;
_label2 = label2;
_label3 = label3;
_label4 = label4;
_makeSRGB = sRGB == 1;
}

Expand Down Expand Up @@ -923,11 +926,13 @@ public ThryToggleDrawer(string keyword, string left)

protected void SetKeyword(MaterialProperty prop, bool on)
{
if(ShaderOptimizer.IsMaterialLocked(prop.targets[0] as Material)) return;
SetKeywordInternal(prop, on, "_ON");
}

protected void CheckKeyword(MaterialProperty prop)
{
if(ShaderEditor.Active != null && ShaderOptimizer.IsMaterialLocked(prop.targets[0] as Material)) return;
if (prop.hasMixedValue)
{
foreach (Material m in prop.targets)
Expand Down Expand Up @@ -1655,10 +1660,11 @@ public override float GetPropertyHeight(MaterialProperty prop, string label, Mat
// Adapted from Unity interal MaterialEnumDrawer https://github.com/Unity-Technologies/UnityCsReference/
public class ThryWideEnumDrawer : MaterialPropertyDrawer
{
// TODO: Consider Load locale by property name in the future (maybe, could have drawbacks)
private GUIContent[] names;
private readonly string[] defaultNames;
private readonly float[] values;
private int _reloadCount;
private int _reloadCount = -1;
private static int _reloadCountStatic;

// internal Unity AssemblyHelper can't be accessed
Expand Down Expand Up @@ -1725,7 +1731,11 @@ public ThryWideEnumDrawer(string n1, float v1, string n2, float v2, string n3, f
public ThryWideEnumDrawer(string[] enumNames, float[] vals)
{
defaultNames = enumNames;
LoadNames();

// Init without Locale to prevent errors
names = new GUIContent[enumNames.Length];
for (int i = 0; i < enumNames.Length; ++i)
names[i] = new GUIContent(enumNames[i]);

values = new float[vals.Length];
for (int i = 0; i < vals.Length; ++i)
Expand All @@ -1740,7 +1750,6 @@ void LoadNames()
names[i] = new GUIContent(ShaderEditor.Active.Locale.Get(defaultNames[i], defaultNames[i]));
}
}

public static void Reload()
{
_reloadCountStatic++;
Expand Down
86 changes: 86 additions & 0 deletions _PoiyomiShaders/Scripts/ThryEditor/Editor/Localization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,15 @@ void Save()
AssetDatabase.SaveAssets();
}

void Clear()
{
_defaultKeys = new string[0];
_defaultValues = new string[0];
_keys = new string[0];
_values = new string[0];
Languages = new string[0];
}

[MenuItem("Assets/Thry/Shaders/Create Locale File", false)]
static void CreateLocale()
{
Expand Down Expand Up @@ -222,6 +231,71 @@ public class LocaleEditor : Editor
string _translateByValueOut = "";
string _autoTranslateLanguageShortCode = "EN";

string ToCSVString(string s)
{
return "\"" + s.Replace("\"", "“") + "\"";
}

string FromCSVString(string s)
{
return s.Trim('"').Replace("“", "\"");
}

void ExportAsCSV(Localization locale)
{
string path = EditorUtility.SaveFilePanel("Export as CSV", "", locale.name, "csv");
if (string.IsNullOrEmpty(path) == false)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (string language in locale.Languages)
{
sb.Append("," + ToCSVString(language));
}
sb.AppendLine();
for(int i = 0;i < locale._keys.Length; i++)
{
sb.Append(ToCSVString(locale._keys[i]));
for(int j = 0; j < locale.Languages.Length; j++)
{
sb.Append("," + ToCSVString(locale._values[i * locale.Languages.Length + j]));
}
sb.AppendLine();
}
File.WriteAllText(path, sb.ToString());
}
}

void LoadFromCSV(Localization locale)
{
string path = EditorUtility.OpenFilePanel("Load from CSV", "", "csv");
if (string.IsNullOrEmpty(path) == false)
{
string[] lines = File.ReadAllLines(path);
if (lines.Length > 0)
{
locale.Clear();
string[] languages = lines[0].Split(',');
for (int i = 1; i < languages.Length; i++)
{
locale.AddLanguage(FromCSVString(languages[i]));
}
for (int i = 1; i < lines.Length; i++)
{
string[] values = lines[i].Split(',');
if (values.Length > 0)
{
string key = FromCSVString(values[0]);
for (int j = 1; j < values.Length; j++)
{
locale._values[(i - 1) * (languages.Length - 1) + j - 1] = FromCSVString(values[j]);
}
}
}
locale.Save();
}
}
}

void UpdateMissing(Localization locale)
{
_missingKeys.Clear();
Expand Down Expand Up @@ -336,8 +410,16 @@ public override void OnInspectorGUI()
UpdateData(locale);
}

EditorGUILayout.Space(20);
EditorGUILayout.LabelField("Import / Export", EditorStyles.boldLabel);
if(GUILayout.Button("Import from CSV"))
LoadFromCSV(locale);

if(locale.Languages.Length == 0) return;

if(GUILayout.Button("Export to CSV"))
ExportAsCSV(locale);

EditorGUILayout.Space(20);
EditorGUILayout.LabelField("Missing Entries", EditorStyles.boldLabel);
int count = 0;
Expand Down Expand Up @@ -376,6 +458,10 @@ public override void OnInspectorGUI()
EditorGUILayout.LabelField("Automatic Translation using Google", EditorStyles.boldLabel);
_autoTranslateLanguageShortCode = EditorGUILayout.TextField("Language Short Code", _autoTranslateLanguageShortCode);
EditorGUILayout.HelpBox("Short code must be valid short code. See https://cloud.google.com/translate/docs/languages for a list of valid short codes.", MessageType.Info);
if(Event.current.type == EventType.MouseDown && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
{
Application.OpenURL("https://cloud.google.com/translate/docs/languages");
}
if(GUILayout.Button("Auto Translate"))
{
int _missingKeysCount = _missingKeys.Count;
Expand Down
2 changes: 2 additions & 0 deletions _PoiyomiShaders/Scripts/ThryEditor/Editor/ShaderOptimizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,7 @@ private static bool LockApplyShader(ApplyStruct applyStruct)
material.SetOverrideTag("RenderType", renderType);
material.renderQueue = renderQueue;

material.SetOverrideTag("OriginalKeywords", string.Join(" ", material.shaderKeywords));
// Remove ALL keywords
foreach (string keyword in material.shaderKeywords)
if(material.IsKeywordEnabled(keyword)) material.DisableKeyword(keyword);
Expand Down Expand Up @@ -1628,6 +1629,7 @@ private static UnlockSuccess UnlockConcrete (Material material)
material.shader = orignalShader;
material.SetOverrideTag("RenderType", renderType);
material.renderQueue = renderQueue;
material.shaderKeywords = material.GetTag("OriginalKeywords", false, string.Join(" ", material.shaderKeywords)).Split(' ');

// Delete the variants folder and all files in it, as to not orhpan files and inflate Unity project

Expand Down
Loading

0 comments on commit 2d2218d

Please sign in to comment.