任务:搭建基本的系统

1.实现挥动锤子功能
(1.有一个挥动过程(DoTween)
(2.判定随着锤子挥动动画进行
(3.挥动起始锤子显现
(4.挥动结束锤子消失
(5.CD之内无法再次挥动(不作反应
(6.挥动过程只能进行UI操作
(7.目前判定范围用sprite表示
(8.只有挥动动画时间内有攻击判定

2.引入Odin插件
This commit is contained in:
Roman 2021-11-23 00:22:17 +08:00
parent c9e34f623c
commit 07ea6e771c
137 changed files with 41951 additions and 28 deletions

View File

@ -6,7 +6,7 @@ TextureImporter:
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
@ -32,13 +32,13 @@ TextureImporter:
maxTextureSize: 1024
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
@ -50,9 +50,9 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureType: 2
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
@ -65,11 +65,11 @@ TextureImporter:
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 1024
maxTextureSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0

View File

@ -33,6 +33,14 @@ public class @Player : IInputActionCollection, IDisposable
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Wave"",
""type"": ""Button"",
""id"": ""a8c8071a-3441-4efd-919d-6bf31d7c6e65"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
}
],
""bindings"": [
@ -123,6 +131,28 @@ public class @Player : IInputActionCollection, IDisposable
""action"": ""Jump"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""1dcf7891-85dd-45b2-978c-103548a0da96"",
""path"": ""<Gamepad>/buttonWest"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Wave"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""68b1b15c-87ae-4596-87d6-19744a830390"",
""path"": ""<Keyboard>/j"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Wave"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
}
@ -150,6 +180,7 @@ public class @Player : IInputActionCollection, IDisposable
m_Normal = asset.FindActionMap("Normal", throwIfNotFound: true);
m_Normal_Move = m_Normal.FindAction("Move", throwIfNotFound: true);
m_Normal_Jump = m_Normal.FindAction("Jump", throwIfNotFound: true);
m_Normal_Wave = m_Normal.FindAction("Wave", throwIfNotFound: true);
}
public void Dispose()
@ -201,12 +232,14 @@ public class @Player : IInputActionCollection, IDisposable
private INormalActions m_NormalActionsCallbackInterface;
private readonly InputAction m_Normal_Move;
private readonly InputAction m_Normal_Jump;
private readonly InputAction m_Normal_Wave;
public struct NormalActions
{
private @Player m_Wrapper;
public NormalActions(@Player wrapper) { m_Wrapper = wrapper; }
public InputAction @Move => m_Wrapper.m_Normal_Move;
public InputAction @Jump => m_Wrapper.m_Normal_Jump;
public InputAction @Wave => m_Wrapper.m_Normal_Wave;
public InputActionMap Get() { return m_Wrapper.m_Normal; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
@ -222,6 +255,9 @@ public class @Player : IInputActionCollection, IDisposable
@Jump.started -= m_Wrapper.m_NormalActionsCallbackInterface.OnJump;
@Jump.performed -= m_Wrapper.m_NormalActionsCallbackInterface.OnJump;
@Jump.canceled -= m_Wrapper.m_NormalActionsCallbackInterface.OnJump;
@Wave.started -= m_Wrapper.m_NormalActionsCallbackInterface.OnWave;
@Wave.performed -= m_Wrapper.m_NormalActionsCallbackInterface.OnWave;
@Wave.canceled -= m_Wrapper.m_NormalActionsCallbackInterface.OnWave;
}
m_Wrapper.m_NormalActionsCallbackInterface = instance;
if (instance != null)
@ -232,6 +268,9 @@ public class @Player : IInputActionCollection, IDisposable
@Jump.started += instance.OnJump;
@Jump.performed += instance.OnJump;
@Jump.canceled += instance.OnJump;
@Wave.started += instance.OnWave;
@Wave.performed += instance.OnWave;
@Wave.canceled += instance.OnWave;
}
}
}
@ -249,5 +288,6 @@ public class @Player : IInputActionCollection, IDisposable
{
void OnMove(InputAction.CallbackContext context);
void OnJump(InputAction.CallbackContext context);
void OnWave(InputAction.CallbackContext context);
}
}

View File

@ -20,6 +20,14 @@
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Wave",
"type": "Button",
"id": "a8c8071a-3441-4efd-919d-6bf31d7c6e65",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
}
],
"bindings": [
@ -110,6 +118,28 @@
"action": "Jump",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "1dcf7891-85dd-45b2-978c-103548a0da96",
"path": "<Gamepad>/buttonWest",
"interactions": "",
"processors": "",
"groups": "",
"action": "Wave",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "68b1b15c-87ae-4596-87d6-19744a830390",
"path": "<Keyboard>/j",
"interactions": "",
"processors": "",
"groups": "",
"action": "Wave",
"isComposite": false,
"isPartOfComposite": false
}
]
}

8
Assets/Plugins.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1195f2441cd2f204e9cc442c78a75743
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f8b16eeee739e52448b12de8c6e054fd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 416c9d29fc2bc8b459b3c1a31c21726d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ae929bb4182e1e14088a265e67328195
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5651992cdad94894a3af7dc3f1da086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,80 @@
fileFormatVersion: 2
guid: 5651992cdad94894a3af7dc3f1da9170
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 1
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude N3DS: 0
Exclude OSXIntel: 1
Exclude OSXIntel64: 1
Exclude OSXUniversal: 1
Exclude PS4: 0
Exclude PSM: 0
Exclude PSP2: 0
Exclude SamsungTV: 0
Exclude Tizen: 0
Exclude WebGL: 0
Exclude WiiU: 0
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 0
Exclude XboxOne: 0
Exclude iOS: 0
Exclude tvOS: 0
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
N3DS:
enabled: 1
settings: {}
PS4:
enabled: 1
settings: {}
PSM:
enabled: 1
settings: {}
PSP2:
enabled: 1
settings: {}
SamsungTV:
enabled: 1
settings: {}
Tizen:
enabled: 1
settings: {}
WebGL:
enabled: 1
settings: {}
WiiU:
enabled: 1
settings: {}
WindowsStoreApps:
enabled: 1
settings:
CPU: AnyCPU
XboxOne:
enabled: 1
settings: {}
iOS:
enabled: 1
settings: {}
tvOS:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5978f8f3dd274e848fbb7a123bde086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,80 @@
fileFormatVersion: 2
guid: 5978f8f3dd274e848fbb7a123bde1fb9
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 1
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude N3DS: 0
Exclude OSXIntel: 1
Exclude OSXIntel64: 1
Exclude OSXUniversal: 1
Exclude PS4: 0
Exclude PSM: 0
Exclude PSP2: 0
Exclude SamsungTV: 0
Exclude Tizen: 0
Exclude WebGL: 0
Exclude WiiU: 0
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 0
Exclude XboxOne: 0
Exclude iOS: 0
Exclude tvOS: 0
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
N3DS:
enabled: 1
settings: {}
PS4:
enabled: 1
settings: {}
PSM:
enabled: 1
settings: {}
PSP2:
enabled: 1
settings: {}
SamsungTV:
enabled: 1
settings: {}
Tizen:
enabled: 1
settings: {}
WebGL:
enabled: 1
settings: {}
WiiU:
enabled: 1
settings: {}
WindowsStoreApps:
enabled: 1
settings:
CPU: AnyCPU
XboxOne:
enabled: 1
settings: {}
iOS:
enabled: 1
settings: {}
tvOS:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c6a4f09709a7f854eb914fa0dbd70c80
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d2a8f0021d6b47c5923d8972dfb8086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,77 @@
fileFormatVersion: 2
guid: d2a8f0021d6b47c5923d8972dfb81ef1
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Android:
enabled: 1
settings: {}
Any:
enabled: 0
settings:
Exclude Android: 0
Exclude Editor: 1
Exclude Linux: 0
Exclude Linux64: 0
Exclude LinuxUniversal: 0
Exclude N3DS: 1
Exclude OSXIntel: 0
Exclude OSXIntel64: 0
Exclude OSXUniversal: 0
Exclude PS4: 1
Exclude PSM: 1
Exclude PSP2: 1
Exclude SamsungTV: 1
Exclude Tizen: 1
Exclude WebGL: 1
Exclude WiiU: 1
Exclude Win: 0
Exclude Win64: 0
Exclude WindowsStoreApps: 1
Exclude XboxOne: 1
Exclude iOS: 1
Exclude tvOS: 1
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
Linux:
enabled: 1
settings: {}
Linux64:
enabled: 1
settings: {}
LinuxUniversal:
enabled: 1
settings: {}
OSXIntel:
enabled: 1
settings: {}
OSXIntel64:
enabled: 1
settings: {}
OSXUniversal:
enabled: 1
settings: {}
PSM:
enabled: 0
settings: {}
Win:
enabled: 1
settings: {}
Win64:
enabled: 1
settings: {}
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1e0a9643dc0d4b46bf2321f72c4e086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,77 @@
fileFormatVersion: 2
guid: 1e0a9643dc0d4b46bf2321f72c4e503e
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Android:
enabled: 1
settings: {}
Any:
enabled: 0
settings:
Exclude Android: 0
Exclude Editor: 1
Exclude Linux: 0
Exclude Linux64: 0
Exclude LinuxUniversal: 0
Exclude N3DS: 1
Exclude OSXIntel: 0
Exclude OSXIntel64: 0
Exclude OSXUniversal: 0
Exclude PS4: 1
Exclude PSM: 1
Exclude PSP2: 1
Exclude SamsungTV: 1
Exclude Tizen: 1
Exclude WebGL: 1
Exclude WiiU: 1
Exclude Win: 0
Exclude Win64: 0
Exclude WindowsStoreApps: 1
Exclude XboxOne: 1
Exclude iOS: 1
Exclude tvOS: 1
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
Linux:
enabled: 1
settings: {}
Linux64:
enabled: 1
settings: {}
LinuxUniversal:
enabled: 1
settings: {}
OSXIntel:
enabled: 1
settings: {}
OSXIntel64:
enabled: 1
settings: {}
OSXUniversal:
enabled: 1
settings: {}
PSM:
enabled: 0
settings: {}
Win:
enabled: 1
settings: {}
Win64:
enabled: 1
settings: {}
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 47a84ebde4ec47fabb620b30cc7a086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 47a84ebde4ec47fabb620b30cc7a3e5c
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 1
settings:
Exclude Android: 0
Exclude Editor: 0
Exclude Linux: 0
Exclude Linux64: 0
Exclude LinuxUniversal: 0
Exclude N3DS: 0
Exclude OSXIntel: 0
Exclude OSXIntel64: 0
Exclude OSXUniversal: 0
Exclude PS4: 0
Exclude PSM: 0
Exclude PSP2: 0
Exclude SamsungTV: 0
Exclude Tizen: 0
Exclude WebGL: 0
Exclude WiiU: 0
Exclude Win: 0
Exclude Win64: 0
Exclude WindowsStoreApps: 0
Exclude XboxOne: 0
Exclude iOS: 0
Exclude tvOS: 0
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 47a84ebde4ec47fabb620b30cc7a096f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a4865f1ab4504ed8a368670db22f086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: a4865f1ab4504ed8a368670db22f409c
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude N3DS: 1
Exclude OSXIntel: 1
Exclude OSXIntel64: 1
Exclude OSXUniversal: 1
Exclude PS4: 1
Exclude PSM: 1
Exclude PSP2: 1
Exclude SamsungTV: 1
Exclude Tizen: 1
Exclude WebGL: 1
Exclude WiiU: 1
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 1
Exclude XboxOne: 1
Exclude iOS: 1
Exclude tvOS: 1
Editor:
enabled: 1
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a4865f1ab4504ed8a368670db22f096f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 74721b9f0af448f5ae2e91102a1a086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 74721b9f0af448f5ae2e91102a1a5edd
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 1
settings:
Exclude Android: 0
Exclude Editor: 0
Exclude Linux: 0
Exclude Linux64: 0
Exclude LinuxUniversal: 0
Exclude N3DS: 0
Exclude OSXIntel: 0
Exclude OSXIntel64: 0
Exclude OSXUniversal: 0
Exclude PS4: 0
Exclude PSM: 0
Exclude PSP2: 0
Exclude SamsungTV: 0
Exclude Tizen: 0
Exclude WebGL: 0
Exclude WiiU: 0
Exclude Win: 0
Exclude Win64: 0
Exclude WindowsStoreApps: 0
Exclude XboxOne: 0
Exclude iOS: 0
Exclude tvOS: 0
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,202 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Sirenix.Serialization.Config</name>
</assembly>
<members>
<member name="T:Sirenix.Serialization.CustomLogger">
<summary>
A helper class for quickly and easily defining custom loggers.
</summary>
<seealso cref="T:Sirenix.Serialization.ILogger" />
</member>
<member name="M:Sirenix.Serialization.CustomLogger.#ctor(System.Action{System.String},System.Action{System.String},System.Action{System.Exception})">
<summary>
Not yet documented.
</summary>
</member>
<member name="M:Sirenix.Serialization.CustomLogger.LogWarning(System.String)">
<summary>
Not yet documented.
</summary>
</member>
<member name="M:Sirenix.Serialization.CustomLogger.LogError(System.String)">
<summary>
Not yet documented.
</summary>
</member>
<member name="M:Sirenix.Serialization.CustomLogger.LogException(System.Exception)">
<summary>
Not yet documented.
</summary>
</member>
<member name="T:Sirenix.Serialization.DataFormat">
<summary>
Specifies a data format to read and write in.
</summary>
</member>
<member name="F:Sirenix.Serialization.DataFormat.Binary">
<summary>
A custom packed binary format. This format is most efficient and almost allocation-free,
but its serialized data is not human-readable.
</summary>
</member>
<member name="F:Sirenix.Serialization.DataFormat.JSON">
<summary>
A JSON format compliant with the json specification found at "http://www.json.org/".
<para />
This format has rather sluggish performance and allocates frightening amounts of string garbage.
</summary>
</member>
<member name="F:Sirenix.Serialization.DataFormat.Nodes">
<summary>
A format that does not serialize to a byte stream, but to a list of data nodes in memory
which can then be serialized by Unity.
<para />
This format is highly inefficient, and is primarily used for ensuring that Unity assets
are mergeable by individual values when saved in Unity's text format. This makes
serialized values more robust and data recovery easier in case of issues.
<para />
This format is *not* recommended for use in builds.
</summary>
</member>
<member name="T:Sirenix.Serialization.DefaultLoggers">
<summary>
Defines default loggers for serialization and deserialization. This class and all of its loggers are thread safe.
</summary>
</member>
<member name="P:Sirenix.Serialization.DefaultLoggers.DefaultLogger">
<summary>
Not yet documented.
</summary>
</member>
<member name="P:Sirenix.Serialization.DefaultLoggers.UnityLogger">
<summary>
Not yet documented.
</summary>
</member>
<member name="T:Sirenix.Serialization.ErrorHandlingPolicy">
<summary>
The policy for handling errors during serialization and deserialization.
</summary>
</member>
<member name="F:Sirenix.Serialization.ErrorHandlingPolicy.Resilient">
<summary>
Attempts will be made to recover from errors and continue serialization. Data may become invalid.
</summary>
</member>
<member name="F:Sirenix.Serialization.ErrorHandlingPolicy.ThrowOnErrors">
<summary>
Exceptions will be thrown when errors are logged.
</summary>
</member>
<member name="F:Sirenix.Serialization.ErrorHandlingPolicy.ThrowOnWarningsAndErrors">
<summary>
Exceptions will be thrown when warnings or errors are logged.
</summary>
</member>
<member name="T:Sirenix.Serialization.GlobalSerializationConfig">
<summary>
Not yet documented.
</summary>
</member>
<member name="F:Sirenix.Serialization.GlobalSerializationConfig.ODIN_SERIALIZATION_CAUTIONARY_WARNING_TEXT">
<summary>
Text for the cautionary serialization warning shown in the inspector.
</summary>
</member>
<member name="F:Sirenix.Serialization.GlobalSerializationConfig.ODIN_SERIALIZATION_CAUTIONARY_WARNING_BUTTON_TEXT">
<summary>
Text for the hide button for the cautionary serialization warning shown in the inspector.
</summary>
</member>
<member name="F:Sirenix.Serialization.GlobalSerializationConfig.ODIN_PREFAB_CAUTIONARY_WARNING_BUTTON_TEXT">
<summary>
Text for the hide button for the cautionary prefab warning shown in the inspector.
</summary>
</member>
<member name="F:Sirenix.Serialization.GlobalSerializationConfig.HideSerializationCautionaryMessage">
<summary>
Whether the user has chosen to hide the cautionary serialization warning.
</summary>
</member>
<member name="F:Sirenix.Serialization.GlobalSerializationConfig.HideOdinSerializeAttributeWarningMessages">
<summary>
Whether the user has chosen to hide the warning messages related to the OdinSerialize attribute.
</summary>
</member>
<member name="F:Sirenix.Serialization.GlobalSerializationConfig.HideNonSerializedShowInInspectorWarningMessages">
<summary>
Whether the user has chosen to hide the warning messages related to the SerializeField and ShowInInspector attributes on non-serialized members.
</summary>
</member>
<member name="P:Sirenix.Serialization.GlobalSerializationConfig.Logger">
<summary>
Not yet documented.
</summary>
</member>
<member name="P:Sirenix.Serialization.GlobalSerializationConfig.EditorSerializationFormat">
<summary>
Not yet documented.
</summary>
</member>
<member name="P:Sirenix.Serialization.GlobalSerializationConfig.BuildSerializationFormat">
<summary>
Not yet documented.
</summary>
</member>
<member name="P:Sirenix.Serialization.GlobalSerializationConfig.LoggingPolicy">
<summary>
Not yet documented.
</summary>
</member>
<member name="P:Sirenix.Serialization.GlobalSerializationConfig.ErrorHandlingPolicy">
<summary>
Not yet documented.
</summary>
</member>
<member name="T:Sirenix.Serialization.ILogger">
<summary>
Implements methods for logging warnings, errors and exceptions during serialization and deserialization.
</summary>
</member>
<member name="M:Sirenix.Serialization.ILogger.LogWarning(System.String)">
<summary>
Logs a warning.
</summary>
<param name="warning">The warning to log.</param>
</member>
<member name="M:Sirenix.Serialization.ILogger.LogError(System.String)">
<summary>
Logs an error.
</summary>
<param name="error">The error to log.</param>
</member>
<member name="M:Sirenix.Serialization.ILogger.LogException(System.Exception)">
<summary>
Logs an exception.
</summary>
<param name="exception">The exception to log.</param>
</member>
<member name="T:Sirenix.Serialization.LoggingPolicy">
<summary>
The policy for which level of logging to do during serialization and deserialization.
</summary>
</member>
<member name="F:Sirenix.Serialization.LoggingPolicy.LogErrors">
<summary>
Not yet documented.
</summary>
</member>
<member name="F:Sirenix.Serialization.LoggingPolicy.LogWarningsAndErrors">
<summary>
Not yet documented.
</summary>
</member>
<member name="F:Sirenix.Serialization.LoggingPolicy.Silent">
<summary>
Not yet documented.
</summary>
</member>
</members>
</doc>

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 74721b9f0af448f5ae2e91102a1a096f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5f3147f7af4c49739579b966c458086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 5f3147f7af4c49739579b966c458f5e4
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude N3DS: 1
Exclude OSXIntel: 1
Exclude OSXIntel64: 1
Exclude OSXUniversal: 1
Exclude PS4: 1
Exclude PSM: 1
Exclude PSP2: 1
Exclude SamsungTV: 1
Exclude Tizen: 1
Exclude WebGL: 1
Exclude WiiU: 1
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 1
Exclude XboxOne: 1
Exclude iOS: 1
Exclude tvOS: 1
Editor:
enabled: 1
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5f3147f7af4c49739579b966c458096f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5c65184932ff4fd48a343e236025086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 5c65184932ff4fd48a343e2360256baf
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude N3DS: 1
Exclude OSXIntel: 1
Exclude OSXIntel64: 1
Exclude OSXUniversal: 1
Exclude PS4: 1
Exclude PSM: 1
Exclude PSP2: 1
Exclude SamsungTV: 1
Exclude Tizen: 1
Exclude WebGL: 1
Exclude WiiU: 1
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 1
Exclude XboxOne: 1
Exclude iOS: 1
Exclude tvOS: 1
Editor:
enabled: 1
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5c65184932ff4fd48a343e236025096f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4873f2a8bdae42baa0406e8a6136086f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 4873f2a8bdae42baa0406e8a61366ca1
timeCreated: 1488828285
licenseType: Store
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
isOverridable: 0
platformData:
Any:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude N3DS: 1
Exclude OSXIntel: 1
Exclude OSXIntel64: 1
Exclude OSXUniversal: 1
Exclude PS4: 1
Exclude PSM: 1
Exclude PSP2: 1
Exclude SamsungTV: 1
Exclude Tizen: 1
Exclude WebGL: 1
Exclude WiiU: 1
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 1
Exclude XboxOne: 1
Exclude iOS: 1
Exclude tvOS: 1
Editor:
enabled: 1
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4873f2a8bdae42baa0406e8a6136096f
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,6 @@
<linker>
<assembly fullname="Sirenix.OdinInspector.Attributes" preserve="all"/>
<assembly fullname="Sirenix.Serialization.Config" preserve="all"/>
<assembly fullname="Sirenix.Serialization" preserve="all"/>
<assembly fullname="Sirenix.Utilities" preserve="all"/>
</linker>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2373d9909155cae468605be57f69461c
timeCreated: 1613046886
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ea9123c061588dc47b848832fb85817b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f597f19f656ba56eae4f6a3a7cc528f4
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 48e08dc33330d11e9d4a1b246c52e4f6
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ed09910c0094cb27be8f3ca264680da3
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cc355dd4cf1e6173beaeb22c2858cbe1
timeCreated: 1488828285
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: abce34fc4c84f7e40a26a9d11d1c578a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3d38ee25ee419b24f8af63a1c81d4b5e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00f94164baa814b40a7ec8a589114511
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 90eaa0dc28c1934408dc1c02e13a507f
timeCreated: 1628274352
licenseType: Store
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,57 @@
fileFormatVersion: 2
guid: a78bffbeb81b48ae9ec71ad7969613e5
timeCreated: 1493397482
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 1
correctGamma: 1
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 1
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: 1
aniso: 16
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,13 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -262940062, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: OdinPathLookup
m_EditorClassIdentifier:

View File

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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3dd9d00e7dbc755439acdd1f13d7c9ab
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8471bd44e2921404293cec616a456f7a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%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: -645759843, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: GeneralDrawerConfig
m_EditorClassIdentifier:

View File

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

View File

@ -0,0 +1,19 @@
%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: 1137305049, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: InspectorConfig
m_EditorClassIdentifier:
enableOdinInInspector: 1
defaultEditorBehaviour: 11
processMouseMoveInInspector: 1
drawingConfig:
configs: []

View File

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

View File

@ -0,0 +1,19 @@
%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: -228747253, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: OdinModuleConfig
m_EditorClassIdentifier:
configurations:
- ID: Unity.Mathematics
ActivationSettings: 0
ModuleTogglingSettings: 1
ModuleUpdateSettings: 0

View File

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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cfadab067a1de6145b2ef8a534d57ac5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2ac6f098e2968ca41b0e6d0f0edb5adf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,22 @@
%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: 1549551891, guid: 74721b9f0af448f5ae2e91102a1a5edd, type: 3}
m_Name: GlobalSerializationConfig
m_EditorClassIdentifier:
HideSerializationCautionaryMessage: 0
HidePrefabCautionaryMessage: 0
HideOdinSerializeAttributeWarningMessages: 0
HideNonSerializedShowInInspectorWarningMessages: 0
buildSerializationFormat: 0
editorSerializationFormat: 2
loggingPolicy: 0
errorHandlingPolicy: 0

View File

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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 15c43f6258d5e2744a11580fe86101e6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 728df0e3465c1a148b83053a3f31d489
timeCreated: 1573836981
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4866e740a22eb1e49b1603b051e4d92c
timeCreated: 1573836980
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 89ebcbe6da115a34ba0100ad4223f742
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,883 @@
//-----------------------------------------------------------------------
// <copyright file="MathematicsDrawers.cs" company="Sirenix IVS">
// Copyright (c) Sirenix IVS. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace Sirenix.OdinInspector.Modules.UnityMathematics.Editor
{
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using System.Reflection;
using Sirenix.OdinInspector.Editor;
using Sirenix.Utilities;
using Sirenix.Utilities.Editor;
using Unity.Mathematics;
using UnityEditor;
using UnityEngine;
public sealed class MatrixFloat2x2Processor : MatrixProcessor<float2x2> { }
public sealed class MatrixFloat3x2Processor : MatrixProcessor<float3x2> { }
public sealed class MatrixFloat4x2Processor : MatrixProcessor<float4x2> { }
public sealed class MatrixFloat2x3Processor : MatrixProcessor<float2x3> { }
public sealed class MatrixFloat3x3Processor : MatrixProcessor<float3x3> { }
public sealed class MatrixFloat4x3Processor : MatrixProcessor<float4x3> { }
public sealed class MatrixFloat2x4Processor : MatrixProcessor<float2x4> { }
public sealed class MatrixFloat3x4Processor : MatrixProcessor<float3x4> { }
public sealed class MatrixFloat4x4Processor : MatrixProcessor<float4x4> { }
public sealed class MatrixDouble2x2Processor : MatrixProcessor<double2x2> { }
public sealed class MatrixDouble3x2Processor : MatrixProcessor<double3x2> { }
public sealed class MatrixDouble4x2Processor : MatrixProcessor<double4x2> { }
public sealed class MatrixDouble2x3Processor : MatrixProcessor<double2x3> { }
public sealed class MatrixDouble3x3Processor : MatrixProcessor<double3x3> { }
public sealed class MatrixDouble4x3Processor : MatrixProcessor<double4x3> { }
public sealed class MatrixDouble2x4Processor : MatrixProcessor<double2x4> { }
public sealed class MatrixDouble3x4Processor : MatrixProcessor<double3x4> { }
public sealed class MatrixDouble4x4Processor : MatrixProcessor<double4x4> { }
public sealed class MatrixBool2x2Processor : MatrixProcessor<bool2x2> { }
public sealed class MatrixBool3x2Processor : MatrixProcessor<bool3x2> { }
public sealed class MatrixBool4x2Processor : MatrixProcessor<bool4x2> { }
public sealed class MatrixBool2x3Processor : MatrixProcessor<bool2x3> { }
public sealed class MatrixBool3x3Processor : MatrixProcessor<bool3x3> { }
public sealed class MatrixBool4x3Processor : MatrixProcessor<bool4x3> { }
public sealed class MatrixBool2x4Processor : MatrixProcessor<bool2x4> { }
public sealed class MatrixBool3x4Processor : MatrixProcessor<bool3x4> { }
public sealed class MatrixBool4x4Processor : MatrixProcessor<bool4x4> { }
public sealed class MatrixInt2x2Processor : MatrixProcessor<int2x2> { }
public sealed class MatrixInt3x2Processor : MatrixProcessor<int3x2> { }
public sealed class MatrixInt4x2Processor : MatrixProcessor<int4x2> { }
public sealed class MatrixInt2x3Processor : MatrixProcessor<int2x3> { }
public sealed class MatrixInt3x3Processor : MatrixProcessor<int3x3> { }
public sealed class MatrixInt4x3Processor : MatrixProcessor<int4x3> { }
public sealed class MatrixInt2x4Processor : MatrixProcessor<int2x4> { }
public sealed class MatrixInt3x4Processor : MatrixProcessor<int3x4> { }
public sealed class MatrixInt4x4Processor : MatrixProcessor<int4x4> { }
public sealed class MatrixUInt2x2Processor : MatrixProcessor<uint2x2> { }
public sealed class MatrixUInt3x2Processor : MatrixProcessor<uint3x2> { }
public sealed class MatrixUInt4x2Processor : MatrixProcessor<uint4x2> { }
public sealed class MatrixUInt2x3Processor : MatrixProcessor<uint2x3> { }
public sealed class MatrixUInt3x3Processor : MatrixProcessor<uint3x3> { }
public sealed class MatrixUInt4x3Processor : MatrixProcessor<uint4x3> { }
public sealed class MatrixUInt2x4Processor : MatrixProcessor<uint2x4> { }
public sealed class MatrixUInt3x4Processor : MatrixProcessor<uint3x4> { }
public sealed class MatrixUInt4x4Processor : MatrixProcessor<uint4x4> { }
public sealed class DisableUnityMatrixDrawerAttribute : Attribute { }
public abstract class MatrixProcessor<T> : OdinAttributeProcessor<T>
{
public override void ProcessSelfAttributes(InspectorProperty property, List<Attribute> attributes)
{
attributes.GetOrAddAttribute<InlinePropertyAttribute>();
attributes.GetOrAddAttribute<DisableUnityMatrixDrawerAttribute>();
}
public override void ProcessChildMemberAttributes(InspectorProperty parentProperty, MemberInfo member, List<Attribute> attributes)
{
attributes.Add(new HideLabelAttribute());
attributes.Add(new MatrixChildAttribute());
}
}
public class DisableUnityMatrixDrawerAttributeDrawer : OdinAttributeDrawer<DisableUnityMatrixDrawerAttribute>
{
protected override void Initialize()
{
this.SkipWhenDrawing = true;
var chain = this.Property.GetActiveDrawerChain().BakedDrawerArray;
for (int i = 0; i < chain.Length; i++)
{
var type = chain[i].GetType();
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(UnityPropertyDrawer<,>) && type.GetGenericArguments()[0].Name == "MatrixDrawer")
{
chain[i].SkipWhenDrawing = true;
break;
}
}
}
}
public class MatrixChildAttribute : Attribute { }
public class Bool2Drawer : OdinValueDrawer<bool2>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 100;
if (label != null)
{
GUILayout.Space(3); // Ugh, better than nothing
}
var options = GUILayoutOptions.Height(EditorGUIUtility.singleLineHeight);
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
EditorGUILayout.EndVertical();
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
EditorGUILayout.EndVertical();
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class Bool3Drawer : OdinValueDrawer<bool3>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 100;
if (label != null)
{
GUILayout.Space(3); // Ugh, better than nothing
}
var options = GUILayoutOptions.Height(EditorGUIUtility.singleLineHeight);
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
EditorGUILayout.EndVertical();
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
EditorGUILayout.EndVertical();
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
EditorGUILayout.EndVertical();
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class Bool4Drawer : OdinValueDrawer<bool4>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 100;
if (label != null)
{
GUILayout.Space(3); // Ugh, better than nothing
}
var options = GUILayoutOptions.Height(EditorGUIUtility.singleLineHeight);
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
EditorGUILayout.EndVertical();
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
EditorGUILayout.EndVertical();
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
EditorGUILayout.EndVertical();
EditorGUILayout.BeginVertical(options);
this.ValueEntry.Property.Children[3].Draw(showLabels ? GUIHelper.TempContent("W") : null);
EditorGUILayout.EndVertical();
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class Float2Drawer : OdinValueDrawer<float2>, IDefinesGenericMenuItems
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
// Slide rect
{
var val = this.ValueEntry.SmartValue;
EditorGUI.BeginChangeCheck();
var vec = SirenixEditorFields.VectorPrefixSlideRect(labelRect, new Vector2(val.x, val.y));
val = new float2(vec.x, vec.y);
if (EditorGUI.EndChangeCheck())
{
this.ValueEntry.SmartValue = val;
}
}
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
/// <summary>
/// Populates the generic menu for the property.
/// </summary>
public void PopulateGenericMenu(InspectorProperty property, GenericMenu genericMenu)
{
float2 value = (float2)property.ValueEntry.WeakSmartValue;
var vec = new Vector2(value.x, value.y);
if (genericMenu.GetItemCount() > 0)
{
genericMenu.AddSeparator("");
}
genericMenu.AddItem(new GUIContent("Normalize"), Mathf.Approximately(vec.magnitude, 1f), () => NormalizeEntries(property));
genericMenu.AddItem(new GUIContent("Zero", "Set the vector to (0, 0)"), vec == Vector2.zero, () => SetVector(property, Vector2.zero));
genericMenu.AddItem(new GUIContent("One", "Set the vector to (1, 1)"), vec == Vector2.one, () => SetVector(property, Vector2.one));
genericMenu.AddSeparator("");
genericMenu.AddItem(new GUIContent("Right", "Set the vector to (1, 0)"), vec == Vector2.right, () => SetVector(property, Vector2.right));
genericMenu.AddItem(new GUIContent("Left", "Set the vector to (-1, 0)"), vec == Vector2.left, () => SetVector(property, Vector2.left));
genericMenu.AddItem(new GUIContent("Up", "Set the vector to (0, 1)"), vec == Vector2.up, () => SetVector(property, Vector2.up));
genericMenu.AddItem(new GUIContent("Down", "Set the vector to (0, -1)"), vec == Vector2.down, () => SetVector(property, Vector2.down));
}
private void SetVector(InspectorProperty property, Vector2 value)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = new float2(value.x, value.y);
}
});
}
private void NormalizeEntries(InspectorProperty property)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = math.normalizesafe((float2)property.ValueEntry.WeakValues[i]);
}
});
}
}
public class Float3Drawer : OdinValueDrawer<float3>, IDefinesGenericMenuItems
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
// Slide rect
{
var val = this.ValueEntry.SmartValue;
EditorGUI.BeginChangeCheck();
var vec = SirenixEditorFields.VectorPrefixSlideRect(labelRect, new Vector3(val.x, val.y, val.z));
val = new float3(vec.x, vec.y, vec.z);
if (EditorGUI.EndChangeCheck())
{
this.ValueEntry.SmartValue = val;
}
}
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
/// <summary>
/// Populates the generic menu for the property.
/// </summary>
public void PopulateGenericMenu(InspectorProperty property, GenericMenu genericMenu)
{
float3 value = (float3)property.ValueEntry.WeakSmartValue;
var vec = new Vector3(value.x, value.y, value.z);
if (genericMenu.GetItemCount() > 0)
{
genericMenu.AddSeparator("");
}
genericMenu.AddItem(new GUIContent("Normalize"), Mathf.Approximately(vec.magnitude, 1f), () => NormalizeEntries(property));
genericMenu.AddItem(new GUIContent("Zero", "Set the vector to (0, 0, 0)"), vec == Vector3.zero, () => SetVector(property, Vector3.zero));
genericMenu.AddItem(new GUIContent("One", "Set the vector to (1, 1, 1)"), vec == Vector3.one, () => SetVector(property, Vector3.one));
genericMenu.AddSeparator("");
genericMenu.AddItem(new GUIContent("Right", "Set the vector to (1, 0, 0)"), vec == Vector3.right, () => SetVector(property, Vector3.right));
genericMenu.AddItem(new GUIContent("Left", "Set the vector to (-1, 0, 0)"), vec == Vector3.left, () => SetVector(property, Vector3.left));
genericMenu.AddItem(new GUIContent("Up", "Set the vector to (0, 1, 0)"), vec == Vector3.up, () => SetVector(property, Vector3.up));
genericMenu.AddItem(new GUIContent("Down", "Set the vector to (0, -1, 0)"), vec == Vector3.down, () => SetVector(property, Vector3.down));
genericMenu.AddItem(new GUIContent("Forward", "Set the vector property to (0, 0, 1)"), vec == Vector3.forward, () => SetVector(property, Vector3.forward));
genericMenu.AddItem(new GUIContent("Back", "Set the vector property to (0, 0, -1)"), vec == Vector3.back, () => SetVector(property, Vector3.back));
}
private void SetVector(InspectorProperty property, Vector3 value)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = new float3(value.x, value.y, value.z);
}
});
}
private void NormalizeEntries(InspectorProperty property)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = math.normalizesafe((float3)property.ValueEntry.WeakValues[i]);
}
});
}
}
public class Float4Drawer : OdinValueDrawer<float4>, IDefinesGenericMenuItems
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
// Slide rect
{
var val = this.ValueEntry.SmartValue;
EditorGUI.BeginChangeCheck();
var vec = SirenixEditorFields.VectorPrefixSlideRect(labelRect, new Vector4(val.x, val.y, val.z, val.w));
val = new float4(vec.x, vec.y, vec.z, vec.w);
if (EditorGUI.EndChangeCheck())
{
this.ValueEntry.SmartValue = val;
}
}
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
this.ValueEntry.Property.Children[3].Draw(showLabels ? GUIHelper.TempContent("W") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
/// <summary>
/// Populates the generic menu for the property.
/// </summary>
public void PopulateGenericMenu(InspectorProperty property, GenericMenu genericMenu)
{
float4 value = (float4)property.ValueEntry.WeakSmartValue;
var vec = new Vector4(value.x, value.y, value.z, value.w);
if (genericMenu.GetItemCount() > 0)
{
genericMenu.AddSeparator("");
}
genericMenu.AddItem(new GUIContent("Normalize"), Mathf.Approximately(vec.magnitude, 1f), () => NormalizeEntries(property));
genericMenu.AddItem(new GUIContent("Zero", "Set the vector to (0, 0, 0, 0)"), vec == Vector4.zero, () => SetVector(property, Vector3.zero));
genericMenu.AddItem(new GUIContent("One", "Set the vector to (1, 1, 1, 1)"), vec == Vector4.one, () => SetVector(property, Vector4.one));
genericMenu.AddSeparator("");
genericMenu.AddItem(new GUIContent("Right", "Set the vector to (1, 0, 0, 0)"), (Vector3)vec == Vector3.right, () => SetVector(property, Vector3.right));
genericMenu.AddItem(new GUIContent("Left", "Set the vector to (-1, 0, 0, 0)"), (Vector3)vec == Vector3.left, () => SetVector(property, Vector3.left));
genericMenu.AddItem(new GUIContent("Up", "Set the vector to (0, 1, 0, 0)"), (Vector3)vec == Vector3.up, () => SetVector(property, Vector3.up));
genericMenu.AddItem(new GUIContent("Down", "Set the vector to (0, -1, 0, 0)"), (Vector3)vec == Vector3.down, () => SetVector(property, Vector3.down));
genericMenu.AddItem(new GUIContent("Forward", "Set the vector property to (0, 0, 1, 0)"), (Vector3)vec == Vector3.forward, () => SetVector(property, Vector3.forward));
genericMenu.AddItem(new GUIContent("Back", "Set the vector property to (0, 0, -1, 0)"), (Vector3)vec == Vector3.back, () => SetVector(property, Vector3.back));
}
private void SetVector(InspectorProperty property, Vector4 value)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = new float4(value.x, value.y, value.z, value.w);
}
});
}
private void NormalizeEntries(InspectorProperty property)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = math.normalizesafe((float4)property.ValueEntry.WeakValues[i]);
}
});
}
}
public class Double2Drawer : OdinValueDrawer<double2>, IDefinesGenericMenuItems
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
// Slide rect
{
var val = this.ValueEntry.SmartValue;
EditorGUI.BeginChangeCheck();
var vec = SirenixEditorFields.VectorPrefixSlideRect(labelRect, new Vector2((float)val.x, (float)val.y));
val = new double2(vec.x, vec.y);
if (EditorGUI.EndChangeCheck())
{
this.ValueEntry.SmartValue = val;
}
}
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
/// <summary>
/// Populates the generic menu for the property.
/// </summary>
public void PopulateGenericMenu(InspectorProperty property, GenericMenu genericMenu)
{
double2 value = (double2)property.ValueEntry.WeakSmartValue;
var vec = new Vector2((float)value.x, (float)value.y);
if (genericMenu.GetItemCount() > 0)
{
genericMenu.AddSeparator("");
}
genericMenu.AddItem(new GUIContent("Normalize"), Mathf.Approximately(vec.magnitude, 1f), () => NormalizeEntries(property));
genericMenu.AddItem(new GUIContent("Zero", "Set the vector to (0, 0)"), vec == Vector2.zero, () => SetVector(property, Vector2.zero));
genericMenu.AddItem(new GUIContent("One", "Set the vector to (1, 1)"), vec == Vector2.one, () => SetVector(property, Vector2.one));
genericMenu.AddSeparator("");
genericMenu.AddItem(new GUIContent("Right", "Set the vector to (1, 0)"), vec == Vector2.right, () => SetVector(property, Vector2.right));
genericMenu.AddItem(new GUIContent("Left", "Set the vector to (-1, 0)"), vec == Vector2.left, () => SetVector(property, Vector2.left));
genericMenu.AddItem(new GUIContent("Up", "Set the vector to (0, 1)"), vec == Vector2.up, () => SetVector(property, Vector2.up));
genericMenu.AddItem(new GUIContent("Down", "Set the vector to (0, -1)"), vec == Vector2.down, () => SetVector(property, Vector2.down));
}
private void SetVector(InspectorProperty property, Vector2 value)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = new double2(value.x, value.y);
}
});
}
private void NormalizeEntries(InspectorProperty property)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = math.normalizesafe((double2)property.ValueEntry.WeakValues[i]);
}
});
}
}
public class Double3Drawer : OdinValueDrawer<double3>, IDefinesGenericMenuItems
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
// Slide rect
{
var val = this.ValueEntry.SmartValue;
EditorGUI.BeginChangeCheck();
var vec = SirenixEditorFields.VectorPrefixSlideRect(labelRect, new Vector3((float)val.x, (float)val.y, (float)val.z));
val = new double3(vec.x, vec.y, vec.z);
if (EditorGUI.EndChangeCheck())
{
this.ValueEntry.SmartValue = val;
}
}
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
/// <summary>
/// Populates the generic menu for the property.
/// </summary>
public void PopulateGenericMenu(InspectorProperty property, GenericMenu genericMenu)
{
double3 value = (double3)property.ValueEntry.WeakSmartValue;
var vec = new Vector3((float)value.x, (float)value.y, (float)value.z);
if (genericMenu.GetItemCount() > 0)
{
genericMenu.AddSeparator("");
}
genericMenu.AddItem(new GUIContent("Normalize"), Mathf.Approximately(vec.magnitude, 1f), () => NormalizeEntries(property));
genericMenu.AddItem(new GUIContent("Zero", "Set the vector to (0, 0, 0)"), vec == Vector3.zero, () => SetVector(property, Vector3.zero));
genericMenu.AddItem(new GUIContent("One", "Set the vector to (1, 1, 1)"), vec == Vector3.one, () => SetVector(property, Vector3.one));
genericMenu.AddSeparator("");
genericMenu.AddItem(new GUIContent("Right", "Set the vector to (1, 0, 0)"), vec == Vector3.right, () => SetVector(property, Vector3.right));
genericMenu.AddItem(new GUIContent("Left", "Set the vector to (-1, 0, 0)"), vec == Vector3.left, () => SetVector(property, Vector3.left));
genericMenu.AddItem(new GUIContent("Up", "Set the vector to (0, 1, 0)"), vec == Vector3.up, () => SetVector(property, Vector3.up));
genericMenu.AddItem(new GUIContent("Down", "Set the vector to (0, -1, 0)"), vec == Vector3.down, () => SetVector(property, Vector3.down));
genericMenu.AddItem(new GUIContent("Forward", "Set the vector property to (0, 0, 1)"), vec == Vector3.forward, () => SetVector(property, Vector3.forward));
genericMenu.AddItem(new GUIContent("Back", "Set the vector property to (0, 0, -1)"), vec == Vector3.back, () => SetVector(property, Vector3.back));
}
private void SetVector(InspectorProperty property, Vector3 value)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = new double3(value.x, value.y, value.z);
}
});
}
private void NormalizeEntries(InspectorProperty property)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = math.normalizesafe((double3)property.ValueEntry.WeakValues[i]);
}
});
}
}
public class Double4Drawer : OdinValueDrawer<double4>, IDefinesGenericMenuItems
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
// Slide rect
{
var val = this.ValueEntry.SmartValue;
EditorGUI.BeginChangeCheck();
var vec = SirenixEditorFields.VectorPrefixSlideRect(labelRect, new Vector4((float)val.x, (float)val.y, (float)val.z, (float)val.w));
val = new double4(vec.x, vec.y, vec.z, vec.w);
if (EditorGUI.EndChangeCheck())
{
this.ValueEntry.SmartValue = val;
}
}
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
this.ValueEntry.Property.Children[3].Draw(showLabels ? GUIHelper.TempContent("W") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
/// <summary>
/// Populates the generic menu for the property.
/// </summary>
public void PopulateGenericMenu(InspectorProperty property, GenericMenu genericMenu)
{
double4 value = (double4)property.ValueEntry.WeakSmartValue;
var vec = new Vector4((float)value.x, (float)value.y, (float)value.z, (float)value.w);
if (genericMenu.GetItemCount() > 0)
{
genericMenu.AddSeparator("");
}
genericMenu.AddItem(new GUIContent("Normalize"), Mathf.Approximately(vec.magnitude, 1f), () => NormalizeEntries(property));
genericMenu.AddItem(new GUIContent("Zero", "Set the vector to (0, 0, 0, 0)"), vec == Vector4.zero, () => SetVector(property, Vector3.zero));
genericMenu.AddItem(new GUIContent("One", "Set the vector to (1, 1, 1, 1)"), vec == Vector4.one, () => SetVector(property, Vector4.one));
genericMenu.AddSeparator("");
genericMenu.AddItem(new GUIContent("Right", "Set the vector to (1, 0, 0, 0)"), (Vector3)vec == Vector3.right, () => SetVector(property, Vector3.right));
genericMenu.AddItem(new GUIContent("Left", "Set the vector to (-1, 0, 0, 0)"), (Vector3)vec == Vector3.left, () => SetVector(property, Vector3.left));
genericMenu.AddItem(new GUIContent("Up", "Set the vector to (0, 1, 0, 0)"), (Vector3)vec == Vector3.up, () => SetVector(property, Vector3.up));
genericMenu.AddItem(new GUIContent("Down", "Set the vector to (0, -1, 0, 0)"), (Vector3)vec == Vector3.down, () => SetVector(property, Vector3.down));
genericMenu.AddItem(new GUIContent("Forward", "Set the vector property to (0, 0, 1, 0)"), (Vector3)vec == Vector3.forward, () => SetVector(property, Vector3.forward));
genericMenu.AddItem(new GUIContent("Back", "Set the vector property to (0, 0, -1, 0)"), (Vector3)vec == Vector3.back, () => SetVector(property, Vector3.back));
}
private void SetVector(InspectorProperty property, Vector4 value)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = new double4(value.x, value.y, value.z, value.w);
}
});
}
private void NormalizeEntries(InspectorProperty property)
{
property.Tree.DelayActionUntilRepaint(() =>
{
for (int i = 0; i < property.ValueEntry.ValueCount; i++)
{
property.ValueEntry.WeakValues[i] = math.normalizesafe((double4)property.ValueEntry.WeakValues[i]);
}
});
}
}
public class Int2Drawer : OdinValueDrawer<int2>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class Int3Drawer : OdinValueDrawer<int3>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class Int4Drawer : OdinValueDrawer<int4>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
this.ValueEntry.Property.Children[3].Draw(showLabels ? GUIHelper.TempContent("W") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class UInt2Drawer : OdinValueDrawer<uint2>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class UInt3Drawer : OdinValueDrawer<uint3>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
public class UInt4Drawer : OdinValueDrawer<uint4>
{
private bool isMatrixChild;
protected override void Initialize()
{
this.isMatrixChild = this.Property.GetAttribute<MatrixChildAttribute>() != null;
}
protected override void DrawPropertyLayout(GUIContent label)
{
Rect labelRect;
Rect contentRect = SirenixEditorGUI.BeginHorizontalPropertyLayout(label, out labelRect);
{
var showLabels = !this.isMatrixChild && SirenixEditorFields.ResponsiveVectorComponentFields && contentRect.width >= 185;
GUIHelper.PushLabelWidth(SirenixEditorFields.SingleLetterStructLabelWidth);
this.ValueEntry.Property.Children[0].Draw(showLabels ? GUIHelper.TempContent("X") : null);
this.ValueEntry.Property.Children[1].Draw(showLabels ? GUIHelper.TempContent("Y") : null);
this.ValueEntry.Property.Children[2].Draw(showLabels ? GUIHelper.TempContent("Z") : null);
this.ValueEntry.Property.Children[3].Draw(showLabels ? GUIHelper.TempContent("W") : null);
GUIHelper.PopLabelWidth();
}
SirenixEditorGUI.EndHorizontalPropertyLayout();
}
}
#endif
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 74718b273a32d874a9dc3c58269c36b3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,11 @@
{
"name": "Sirenix.OdinInspector.Modules.UnityMathematics",
"references": [ "Unity.Mathematics", "Sirenix.OdinInspector.Attributes", "Sirenix.OdinInspector.Editor", "Sirenix.Utilities", "Sirenix.Utilities.Editor" ],
"includePlatforms": [ "Editor" ],
"excludePlatforms": [],
"allowUnsafeCode": true,
"autoReferenced": true,
"overrideReferences": false,
"precompiledReferences": [ "Sirenix.Utilities.dll", "Sirenix.Utilities.Editor.dll", "Sirenix.OdinInspector.Attributes.dll", "Sirenix.OdinInspector.Editor.dll", "Sirenix.Serialization.dll" ],
"defineConstraints": []
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ad968d605628d06499b62cdc30f11cf8
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
ManifestVersion: 1
ModuleID: Unity.Mathematics
ModuleVersion: 1.0.1.0
ModuleFiles:
MathematicsDrawers.cs
MathematicsDrawers.cs.meta
Sirenix.OdinInspector.Modules.UnityMathematics.asmdef
Sirenix.OdinInspector.Modules.UnityMathematics.asmdef.meta

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 20a5da37e6793fe48a62bf15361324a2
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More