Upload project files

This commit is contained in:
Misaki
2024-09-16 00:08:10 +09:00
commit 0a4745662a
218 changed files with 13387 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using System;
using UnityEngine;
namespace Misaki.ArtToolEditor
{
[Serializable]
public struct LightPreset
{
public string Name;
public Light Light;
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 16f8cb4e99dddd247bf03b8f2aee13ec

View File

@@ -0,0 +1,15 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 50750c71618d3d844962a4aeb2d1f438, type: 3}
m_Name: LightPresetDatabase
m_EditorClassIdentifier:
lightPreset: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: abc9c872c1c7b3c49bcbadac3b973f93
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace Misaki.ArtToolEditor
{
[CreateAssetMenu(fileName = "LightPresetDatabase", menuName = "Lighting Tools/LightPresetDatabase")]
public class LightPresetDatabase : ScriptableObject
{
public List<LightPreset> lightPreset = new();
}
[CustomEditor(typeof(LightPresetDatabase))]
public class LightPresetDatabaseEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("Refresh Menu Item"))
{
LightPresetMenu.Initialize();
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 50750c71618d3d844962a4aeb2d1f438

View File

@@ -0,0 +1,102 @@
using System;
using System.Reflection;
using UnityEditor;
using UnityEngine;
namespace Misaki.ArtToolEditor
{
public static class LightPresetMenu
{
private const string DatabasePath = "Packages/com.misaki.art-tools/Editor/LightPreset/LightPresetDatabase.asset";
private static LightPresetDatabase database;
private readonly static Type menuType = typeof(Menu);
[InitializeOnLoadMethod]
public static void Initialize()
{
RemoveMenuItems();
database = AssetDatabase.LoadAssetAtPath<LightPresetDatabase>(DatabasePath);
if (database == null)
{
Debug.LogError("LightPresetDatabase not found at path: " + DatabasePath);
return;
}
var addMenuItemMethod = menuType.GetMethod("AddMenuItem", BindingFlags.NonPublic | BindingFlags.Static);
foreach (var lightPreset in database.lightPreset)
{
AddMenuItem(addMenuItemMethod, lightPreset);
}
}
private static void RemoveMenuItems()
{
var removeMenuItemMethod = menuType.GetMethod("RemoveMenuItem", BindingFlags.NonPublic | BindingFlags.Static);
if (removeMenuItemMethod == null)
{
return;
}
removeMenuItemMethod.Invoke(null, new object[] { "GameObject/Light/LightPreset" });
}
private static void AddMenuItem(MethodInfo addMenuItemMethod, LightPreset lightPreset)
{
if (addMenuItemMethod == null)
{
return;
}
var name = "GameObject/Light/LightPreset/" + lightPreset.Name;
var shortcut = "";
var @checked = false;
var priority = 100;
var execute = new Action(() => CreateLight(lightPreset));
var validate = new Func<bool>(() => true);
addMenuItemMethod.Invoke(null, new object[] { name, shortcut, @checked, priority, execute, validate });
}
private static void CreateLight(LightPreset lightPreset)
{
Light light;
if (Selection.activeGameObject == null)
light = UnityEngine.Object.Instantiate(lightPreset.Light, Vector3.zero, Quaternion.identity);
else
light = UnityEngine.Object.Instantiate(lightPreset.Light, Selection.activeGameObject.transform.position, Quaternion.identity, Selection.activeGameObject.transform);
var parent = light.transform.parent;
string[] nameArray;
UnityEngine.Object[] childrenArray;
if (parent == null)
{
childrenArray = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
nameArray = new string[childrenArray.Length];
}
else
{
nameArray = new string[parent.childCount];
childrenArray = new UnityEngine.Object[parent.childCount];
for (var i = 0; i < parent.childCount; i++)
{
childrenArray[i] = parent.GetChild(i).gameObject;
}
}
for (var i = 0; i < nameArray.Length; i++)
{
nameArray[i] = childrenArray[i].name;
}
light.name = ObjectNames.GetUniqueName(nameArray, lightPreset.Name);
Selection.activeGameObject = light.gameObject;
Undo.RegisterCreatedObjectUndo(light, "Create " + lightPreset.Name);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 96ed155eb747542469a93e5842969f10