From aeaad9dde0fc105f7ebd5f9913c06cdc4f0317fb Mon Sep 17 00:00:00 2001 From: AstrlJelly Date: Tue, 20 Feb 2024 02:54:09 -0500 Subject: [PATCH] ITS WORKING ITS WORKING ITS WORKING arbitrary animations, now accessible to those without prefab knowledge! and it's piss easy to use!! --- .../Sprites/Editor/GameIcons/advanced.png | Bin 0 -> 19427 bytes .../Editor/GameIcons/advanced.png.meta | 123 ++++++++++++++++++ .../PropertyPrefabs/DropdownPropertyPrefab.cs | 50 ++++--- .../Scripts/LevelEditor/Timeline/Timeline.cs | 4 - Assets/Scripts/Minigames.cs | 35 +++-- Assets/Scripts/Util/EntityTypes.cs | 22 ++-- 6 files changed, 191 insertions(+), 43 deletions(-) create mode 100644 Assets/Resources/Sprites/Editor/GameIcons/advanced.png create mode 100644 Assets/Resources/Sprites/Editor/GameIcons/advanced.png.meta diff --git a/Assets/Resources/Sprites/Editor/GameIcons/advanced.png b/Assets/Resources/Sprites/Editor/GameIcons/advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..fab114ee5e587e67208683af855f2d506dd1848a GIT binary patch literal 19427 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

uDVvzBZ zhmU_89zs3&0jDXPm?YWB=UG{p3LRV_X-|vU=ec7Q|3$IjrJAiDtJUi?J;3r{lI%_T zBM(C0OO|Gxu#?mNt+~{MXn*eiYUBLlna<-l{#_X1X67`%Cf0R!r6|j~XjXmoLp>IC z*DBK{`YEzvL%9vbD(d=m{ZQ1zLWNXEJC@B6j|WpbODI1|Gv>G1{Jzg}_t)K@pU)rf zKfZr_AD`Ec=R3b4K0rNX!H^v{*<2w@dRy1CoAN5Wz~w!K-6pb@jtux1Ro868;{^_S z?j2w24AlD915lhn7Xd>9!{sX=U8v&QtvOYZkWq6NFYSHV5tm>{rwz#hHgNYKT{c6Bcf)P&w>Ndw7;&xm`0%o~j;N(Ex z1R1{zO4z^~i6{{|U@Wt7Lg;mR3QpFBc>s_bTOwtPV~HOe1;lJDz9p%sTIDF3si)op z?qr#AcK*kBt$HWw9Dg_!!Sg;zZZ%N2kw-U$p_~TJaBR-^Za$p;F>DF{iIpGZjIXtO zf^cGl78?^!q0=yM8MH^?48rFy_o-r&)qz3XM!1Nep(cNoq+BNC;swQ^Pwn*dy_b5> zW#~@d=@R3hT^*jLA$DKZe+;LB7dos0ZQ$Hbk2pLHs!}fJv8r4ZQdHcmqrM=`}#;2H~ZC`qNYU5=?Qbe3fQ}(OW$mRRlt_GMd~TkjGK-o zqDprsyY`^v$VbUyMnaa-Y)pD22h%(Jr!`uJS};;Qlb>jxv2Q0swXW^C6KSmDSic7a zeE=9L*?z$<&5L)f?>O35xQG^en~i8Pp0#HQj)qpPez!H!f1bO8YPGEs;JSm$p4Tub z*H(fET_sXfq;%fw{jwDDvAO=!je~%!N-Fb?4i@(Bf4cocRFNLBJKG%Wt}hdChj|G+ zLI9v*7UVg}DO#6z=pgbGC>@N+ED; zpq2Mt5)IZ(Pv@FtD0?h`()D!FoL1C}%6wp^|>xJ5y6>*sUiS|LU zCa9N5dmW3EW0NO)fmnoH*B3*-vWYi++GhDqBwO zH_gXoA%>msRimrKfT%GxCpFixM#lletBy^iF*VOjXrLM6v$q~nx zDK_Pm_j|L=EPc-)oc0U4 z`wZNu4jDqi^YXDgyfexPhHvva=Wz_tXVbtqWcp;o_S50d3aJrl>HAh6 zt*Q(cKf?b$PxG9n=l}iQ{Wf#hHhzII-qae@Ks2PitqM5mOwY@k-(@f;*Vw8(0xEn< t4ptYiNC|}B_4cTBD&E-joMd#?z?QJ&R%GGeASf6@TYRbTll9ERzX3GCAO-*c literal 0 HcmV?d00001 diff --git a/Assets/Resources/Sprites/Editor/GameIcons/advanced.png.meta b/Assets/Resources/Sprites/Editor/GameIcons/advanced.png.meta new file mode 100644 index 000000000..a96298b84 --- /dev/null +++ b/Assets/Resources/Sprites/Editor/GameIcons/advanced.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: 5e8d7a42a8188ef42b113cab198f5aaa +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 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: Server + 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: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LevelEditor/EventSelector/PropertyPrefabs/DropdownPropertyPrefab.cs b/Assets/Scripts/LevelEditor/EventSelector/PropertyPrefabs/DropdownPropertyPrefab.cs index e445a89a5..e90f633e3 100644 --- a/Assets/Scripts/LevelEditor/EventSelector/PropertyPrefabs/DropdownPropertyPrefab.cs +++ b/Assets/Scripts/LevelEditor/EventSelector/PropertyPrefabs/DropdownPropertyPrefab.cs @@ -1,12 +1,14 @@ using System.Collections; using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; using System; using System.Linq; + +using UnityEngine; +using UnityEngine.UI; using TMPro; using HeavenStudio.Common; +using Jukebox; namespace HeavenStudio.Editor { @@ -15,9 +17,7 @@ namespace HeavenStudio.Editor [Header("Dropdown")] [Space(10)] public LeftClickTMP_Dropdown dropdown; - // private string[] values; - private List names; - private List<(int, string)> values; + private List keys; private int _defaultValue; @@ -34,21 +34,41 @@ namespace HeavenStudio.Editor // Can we assume non-holey enum? // If we can we can simplify to dropdown.value = (int) parameterManager.entity[propertyName] - // var currentlySelected = (int) parameterManager.entity[propertyName]; - // var selected = values - // .Cast() - // .ToList() - // .FindIndex(val => (int) val == currentlySelected); + // var currentlySelected = (int)parameterManager.entity[propertyName]; + RiqEntity entity = parameterManager.entity; + int selected = 0; - if (type is not EntityTypes.Dropdown dropdownEntity) return; + switch (type) + { + case EntityTypes.Dropdown dropdownEntity: + entity[propertyName].values = dropdownEntity.values; + selected = dropdownEntity.defaultValue; + break; + case Enum enumEntity: + var enumType = enumEntity.GetType(); + entity[propertyName] = Enum.GetNames(enumType).ToList(); + keys = Enum.GetValues(enumType).Cast().ToList(); + for (int i = 0; i < keys.Count; i++) { + print("key " + (i + 1) + " : " + keys[i]); + } + selected = keys.FindIndex(val => val == (int)entity[propertyName]); + break; + default: + break; + } + dropdown.AddOptions(entity[propertyName].values); + dropdown.value = selected; - names = dropdownEntity.values; - dropdown.AddOptions(names); - dropdown.value = (int)parameterManager.entity[propertyName]; + entity[propertyName].valueChanged = new Action>(newValues => + { + print(string.Join(", ", entity[propertyName].values)); + dropdown.ClearOptions(); + dropdown.AddOptions(newValues); + }); dropdown.onValueChanged.AddListener(newValue => { - parameterManager.entity[propertyName] = newValue; + parameterManager.entity[propertyName].currentIndex = newValue; Debug.Log("newValue : " + newValue); this.caption.text = (newValue != _defaultValue) ? (_captionText + "*") : _captionText; } diff --git a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs index d7394bbdb..4ce92be8f 100644 --- a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs @@ -898,10 +898,6 @@ namespace HeavenStudio.Editor.Track { returnVal = floatVal.val; } - else if (returnVal is EntityTypes.Dropdown dropdownVal) - { - returnVal = dropdownVal.defaultValue; - } else if (returnVal.GetType().IsEnum) { returnVal = (int)ep[i].parameter; diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs index b0356f201..458866618 100644 --- a/Assets/Scripts/Minigames.cs +++ b/Assets/Scripts/Minigames.cs @@ -5,7 +5,6 @@ using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.Networking; -using DG.Tweening; using HeavenStudio.Util; using HeavenStudio.Editor.Track; @@ -685,10 +684,7 @@ namespace HeavenStudio public Param(string propertyName, object parameter, string caption, string tooltip = "", List collapseParams = null) { this.propertyName = propertyName; - this.parameter = parameter switch { - // Enum param => new EntityTypes.Dropdown(param), - _ => parameter, - }; + this.parameter = parameter; this.caption = caption; this.tooltip = tooltip; this.collapseParams = collapseParams; @@ -1167,7 +1163,18 @@ namespace HeavenStudio Minigame game = gm.GetGameInfo(gm.currentGame); if (game != null) { var animators = gm.minigameObj.transform.GetComponentsInChildren(); - e["animator"] = string.Join(", ", animators.Select(anim => { + // e["animator"] = string.Join(", ", animators.Select(anim => { + // var obj = anim.gameObject; + // // string path = "/" + obj.name; + // List path = new() { obj.name }; + // while (obj.transform.parent != null && obj.transform.parent.name != game.name) + // { + // obj = obj.transform.parent.gameObject; + // path.Add(obj.name); + // } + // return string.Join('/', path); + // })); + e["animator"].ChangeValues(animators.Select(anim => { var obj = anim.gameObject; // string path = "/" + obj.name; List path = new() { obj.name }; @@ -1177,33 +1184,33 @@ namespace HeavenStudio path.Add(obj.name); } return string.Join('/', path); - })); + }).ToList()); } return game?.displayName ?? "No Game"; }), "Get Animators", "Get all the animators in the current minigame scene. (Make sure to have the minigame you want loaded!)"), - new Param("animator", "", "Animator", "Specify which animator in the scene to play an animation on."), + new Param("animator", new EntityTypes.Dropdown(0, "N/A"), "Animator", "Specify which animator in the scene to play an animation on."), new Param("getAnimations", new EntityTypes.Button("N/A", e => { var gm = GameManager.instance; Minigame game = gm.GetGameInfo(gm.currentGame); - var animObj = gm.minigameObj.transform.Find((string)e["animator"]); + var animObj = gm.minigameObj.transform.Find(((EntityTypes.Dropdown)e["animator"]).currentValue); Animator animator = null; - if (animObj != null && animObj.TryGetComponent(out animator)) { - e["animations"] = string.Join(", ", animator.runtimeAnimatorController.animationClips.Select(x => x.name)); + if (animObj != null && animObj.TryGetComponent(out animator) && animator != null) { + e["animation"].ChangeValues(animator.runtimeAnimatorController.animationClips.Select(x => x.name).ToList()); } return animator != null ? animator.name : "N/A"; }), "Get Animations", "Get all the animators in the current minigame scene. (Make sure to have the minigame you want loaded!)"), - new Param("animations", "", "Animation", "Specify the name of the animation to play."), + new Param("animation", new EntityTypes.Dropdown(0, "N/A"), "Animation", "Specify the name of the animation to play."), new Param("scale", new EntityTypes.Float(0, 5, 0.5f), "Animation Scale", "The time scale of the animation. Higher values are faster."), }, delegate { var e = eventCaller.currentEntity; - GameManager.instance.PlayAnimationArbitrary(e["animator"], e["animation"], e["scale"]); + GameManager.instance.PlayAnimationArbitrary(e["animator"].currentValue, e["animation"].currentValue, e["scale"]); } ), new GameAction("play sfx", "Play SFX", 0.5f, false, new List() { - new Param("game", "", "Which Game", "Specify the game's sfx to play. An empty input will play global sfx."), + new Param("game", new EntityTypes.Dropdown(0, EventCaller.instance.minigames.Values.Select(x => x.displayName).ToArray()), "Which Game", "Specify the game's sfx to play. An empty input will play global sfx."), new Param("sfxName", "", "SFX Name", "The name of the sfx to play."), new Param("pitch", new EntityTypes.Float(0, 5, 1), "Pitch", "The sfx's pitch."), new Param("offset", new EntityTypes.Float(-500, 500), "Offset (ms)", "The sfx's offset in milliseconds."), diff --git a/Assets/Scripts/Util/EntityTypes.cs b/Assets/Scripts/Util/EntityTypes.cs index c7f1a285b..3cc6a83d2 100644 --- a/Assets/Scripts/Util/EntityTypes.cs +++ b/Assets/Scripts/Util/EntityTypes.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using Jukebox; using UnityEngine; @@ -76,22 +77,23 @@ namespace HeavenStudio public struct Dropdown { + public void ChangeValues(List values) + { + this.values = values; + valueChanged?.Invoke(values); + } public int defaultValue; public List values; + public int currentIndex; + public readonly string currentValue => values[currentIndex]; + public Action> valueChanged; - public Dropdown(int defaultValue, List values) + public Dropdown(int defaultValue, params string[] values) { this.defaultValue = defaultValue; this.values = values.ToList(); - } - - public Dropdown(Enum value) - { - this.defaultValue = 0; - // Debug.Log(value); - // Debug.Log(value.GetType()); - // Debug.Log(value.GetType().DeclaringType); - this.values = Enum.GetNames(value.GetType()).ToList(); + currentIndex = 0; + valueChanged = null; } }