diff --git a/Assembly-CSharp-Editor.csproj.DotSettings b/Assembly-CSharp-Editor.csproj.DotSettings index 12ac1b1..38dfe0a 100644 --- a/Assembly-CSharp-Editor.csproj.DotSettings +++ b/Assembly-CSharp-Editor.csproj.DotSettings @@ -1,4 +1,8 @@  True True + True + True + True + True True \ No newline at end of file diff --git a/Assets/DialogueSystem/Demo/SampleScene.unity b/Assets/DialogueSystem/Demo/SampleScene.unity index 3355275..1c4fd85 100644 --- a/Assets/DialogueSystem/Demo/SampleScene.unity +++ b/Assets/DialogueSystem/Demo/SampleScene.unity @@ -38,13 +38,13 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} - m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641258, b: 0.574817, a: 1} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 11 - m_GIWorkflowMode: 0 + m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -294,20 +294,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 922203892} m_OnClick: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8786771133028197972} - m_MethodName: PlayDialogue - m_Mode: 2 - m_Arguments: - m_ObjectArgument: {fileID: 11400000, guid: dd801a633ca8cda42b8ae8d25e17e64a, - type: 2} - m_ObjectArgumentAssemblyTypeName: lastmilegames.DialogueSystem.DialogueContainer, - Assembly-CSharp - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] --- !u!114 &922203892 MonoBehaviour: m_ObjectHideFlags: 0 @@ -741,7 +728,7 @@ PrefabInstance: - target: {fileID: 8786771132893712695, guid: 4d8914cb6b33dc34e86ba2b8caea414c, type: 3} propertyPath: m_AnchoredPosition.y - value: 0.000018605962 + value: -0.00007994529 objectReference: {fileID: 0} - target: {fileID: 8786771132936344443, guid: 4d8914cb6b33dc34e86ba2b8caea414c, type: 3} @@ -751,7 +738,7 @@ PrefabInstance: - target: {fileID: 8786771132936344443, guid: 4d8914cb6b33dc34e86ba2b8caea414c, type: 3} propertyPath: m_AnchoredPosition.y - value: -0.00009074141 + value: -0.000049769158 objectReference: {fileID: 0} - target: {fileID: 8786771132947378257, guid: 4d8914cb6b33dc34e86ba2b8caea414c, type: 3} @@ -1023,17 +1010,6 @@ PrefabInstance: propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - m_RemovedComponents: [] + m_RemovedComponents: + - {fileID: 7560019262726077265, guid: 4d8914cb6b33dc34e86ba2b8caea414c, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 4d8914cb6b33dc34e86ba2b8caea414c, type: 3} ---- !u!114 &8786771133028197972 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7560019262726077265, guid: 4d8914cb6b33dc34e86ba2b8caea414c, - type: 3} - m_PrefabInstance: {fileID: 8786771133028197971} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 661418d3488d423caf0369b884804cd9, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/DialogueSystem/Scripts/Editor/DialogueGraphEditor.meta b/Assets/DialogueSystem/Images.meta similarity index 77% rename from Assets/DialogueSystem/Scripts/Editor/DialogueGraphEditor.meta rename to Assets/DialogueSystem/Images.meta index 03cfd6e..2e3eaaa 100644 --- a/Assets/DialogueSystem/Scripts/Editor/DialogueGraphEditor.meta +++ b/Assets/DialogueSystem/Images.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c05fd86c27504e46b184e91f7f07d7ca +guid: f98a35686ea618d42be5ba2ab81f41d5 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/DialogueSystem/Scripts/Editor/DialogueGraphEditor/Nodes.meta b/Assets/DialogueSystem/Images/GameIcons.meta similarity index 77% rename from Assets/DialogueSystem/Scripts/Editor/DialogueGraphEditor/Nodes.meta rename to Assets/DialogueSystem/Images/GameIcons.meta index ba83f90..23d7211 100644 --- a/Assets/DialogueSystem/Scripts/Editor/DialogueGraphEditor/Nodes.meta +++ b/Assets/DialogueSystem/Images/GameIcons.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b083094664f84e65805d8cd8f8d1f0c7 +guid: 3d6eb8f53eb3ceb4998df810778a713e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/DialogueSystem/Images/GameIcons/Attributions.md b/Assets/DialogueSystem/Images/GameIcons/Attributions.md new file mode 100644 index 0000000..113af6a --- /dev/null +++ b/Assets/DialogueSystem/Images/GameIcons/Attributions.md @@ -0,0 +1 @@ +"Hazard sign icon" (hazard-sign.png) by (Lorc)[https://lorcblog.blogspot.com/] under CC BY 3.0 \ No newline at end of file diff --git a/Assets/DialogueSystem/Images/GameIcons/Attributions.md.meta b/Assets/DialogueSystem/Images/GameIcons/Attributions.md.meta new file mode 100644 index 0000000..82e38f0 --- /dev/null +++ b/Assets/DialogueSystem/Images/GameIcons/Attributions.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a5aaf5a67104a5a49952250f1dc756c7 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DialogueSystem/Images/GameIcons/hazard-sign.png b/Assets/DialogueSystem/Images/GameIcons/hazard-sign.png new file mode 100644 index 0000000..a736b18 Binary files /dev/null and b/Assets/DialogueSystem/Images/GameIcons/hazard-sign.png differ diff --git a/Assets/DialogueSystem/Images/GameIcons/hazard-sign.png.meta b/Assets/DialogueSystem/Images/GameIcons/hazard-sign.png.meta new file mode 100644 index 0000000..7bab909 --- /dev/null +++ b/Assets/DialogueSystem/Images/GameIcons/hazard-sign.png.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 31c96553f1619ae429459f237e6aad5b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DialogueSystem/Scripts/Characters.meta b/Assets/DialogueSystem/Scripts/Characters.meta new file mode 100644 index 0000000..47fe125 --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eec5443e206c479aa625452e0d66e7e1 +timeCreated: 1607017854 \ No newline at end of file diff --git a/Assets/DialogueSystem/Scripts/Characters/Character.cs b/Assets/DialogueSystem/Scripts/Characters/Character.cs new file mode 100644 index 0000000..e295b86 --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters/Character.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace lastmilegames.DialogueSystem.Characters +{ + [CreateAssetMenu(fileName = "New Character", menuName = "Dialogue System/New Character", order = 0)] + public class Character : ScriptableObject + { + [SerializeField] private List characterSprites = new List(); + + public IEnumerable GetCharacterSprites() + { + return characterSprites; + } + + public void AddSprite(CharacterSprite cSprite) + { + characterSprites.Add(cSprite); + AssetDatabase.AddObjectToAsset(cSprite, this); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + public void RemoveSprite(CharacterSprite cSprite) + { + AssetDatabase.RemoveObjectFromAsset(cSprite); + characterSprites.Remove(cSprite); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + public void RemoveAllSprites() + { + for (int i = characterSprites.Count - 1; i >= 0; i--) + { + AssetDatabase.RemoveObjectFromAsset(characterSprites[i]); + characterSprites.RemoveAt(i); + } + + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + public void RenameSubAsset(CharacterSprite cSprite) + { + // Remove the old object + AssetDatabase.RemoveObjectFromAsset(cSprite); + AssetDatabase.SaveAssets(); + + // Add the new object + AssetDatabase.AddObjectToAsset(cSprite, this); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + } +} \ No newline at end of file diff --git a/Assets/DialogueSystem/Scripts/Characters/Character.cs.meta b/Assets/DialogueSystem/Scripts/Characters/Character.cs.meta new file mode 100644 index 0000000..362291b --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters/Character.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 27075574afdb479fb0694373243e6c78 +timeCreated: 1606948476 \ No newline at end of file diff --git a/Assets/DialogueSystem/Scripts/Characters/CharacterSprite.cs b/Assets/DialogueSystem/Scripts/Characters/CharacterSprite.cs new file mode 100644 index 0000000..f4dbea4 --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters/CharacterSprite.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace lastmilegames.DialogueSystem.Characters +{ + public class CharacterSprite : ScriptableObject + { + public Sprite sprite; + } +} \ No newline at end of file diff --git a/Assets/DialogueSystem/Scripts/Characters/CharacterSprite.cs.meta b/Assets/DialogueSystem/Scripts/Characters/CharacterSprite.cs.meta new file mode 100644 index 0000000..005d62c --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters/CharacterSprite.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 20a78fb41e41499188727b72bb6a083d +timeCreated: 1607017880 \ No newline at end of file diff --git a/Assets/DialogueSystem/Scripts/Characters/Editor.meta b/Assets/DialogueSystem/Scripts/Characters/Editor.meta new file mode 100644 index 0000000..7edec87 --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 378ce32d46c641e2abcfd4f77f00274b +timeCreated: 1607120834 \ No newline at end of file diff --git a/Assets/DialogueSystem/Scripts/Characters/Editor/CharacterEditor.cs b/Assets/DialogueSystem/Scripts/Characters/Editor/CharacterEditor.cs new file mode 100644 index 0000000..ae9752e --- /dev/null +++ b/Assets/DialogueSystem/Scripts/Characters/Editor/CharacterEditor.cs @@ -0,0 +1,124 @@ +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.UIElements; + +namespace lastmilegames.DialogueSystem.Characters +{ + [CustomEditor(typeof(Character))] + public class CharacterEditor : Editor + { + private Character character; + private VisualElement cSpriteList; + private VisualElement rootElement; + + private void OnEnable() + { + rootElement = new VisualElement(); + character = (Character) target; + + var visualTree = AssetDatabase.LoadAssetAtPath( + "Assets/DialogueSystem/Scripts/AssetCreators/Editor/CharacterEditor.uxml"); + visualTree.CloneTree(rootElement); + + var styleSheet = AssetDatabase.LoadAssetAtPath( + "Assets/DialogueSystem/Scripts/AssetCreators/Editor/CharacterEditor.uss"); + rootElement.styleSheets.Add(styleSheet); + } + + public override VisualElement CreateInspectorGUI() + { + #region Fields + + var characterName = rootElement.Q("characterName"); + characterName.isDelayed = true; + characterName.value = character.name; + characterName.RegisterCallback>(evt => + { + character.name = evt.newValue; + Utilities.RenameAsset(character, evt.newValue); + + + EditorUtility.SetDirty(character); + }); + + #endregion + + #region Diaplay Sprite List + + cSpriteList = rootElement.Q("spriteList"); + UpdateSpriteList(); + + #endregion + + #region Buttons + + var btnAddSprite = rootElement.Q