static void Postfix(ref string ___debugName, ref CharacterUIMeshBase ____characterMesh, ref CharacterState characterState) { if (___debugName.StartsWith("Character_TrainSteward")) { OverlayImage = CreateFaceObject(____characterMesh.GetSortingLayer().LayerID()); (____characterMesh as CharacterUIMeshSpine).OrNull()?.AttachToBone(OverlayImage.transform, VfxAtLoc.Location.BoneStatusEffectSlot1); } }
static void Postfix(ref CharacterUIMeshBase ____characterMesh, ref int ___TopAllMeshSortingOrder, ref SpriteRenderer ___spriteRenderer) { CharacterOverlayImage overlayImage = ___spriteRenderer.GetComponentInChildren <CharacterOverlayImage>(); if (overlayImage != null) { overlayImage.SetSortingOrder(____characterMesh.GetSortingLayer().LayerID(), ___TopAllMeshSortingOrder); } }
private static CharacterOverlayImage CreateFaceObject(int sortingLayerID) { GameObject parent = new GameObject("Face"); GameObject child = new GameObject("Face_Image"); child.transform.SetParent(parent.transform); CharacterOverlayImage overlayImage = parent.AddComponent <CharacterOverlayImage>(); SpriteRenderer spriteRenderer = child.AddComponent <SpriteRenderer>(); spriteRenderer.transform.localPosition += new Vector3(-.65f, -.65f, -.1f); spriteRenderer.transform.localScale = new Vector3(.456f, .456f); string path = SpookyStewards.SpriteFilePaths[RandomManager.Range(0, SpookyStewards.SpriteFilePaths.Length, RngId.NonDeterministic)]; spriteRenderer.sprite = LoadNewSprite(path); spriteRenderer.sortingLayerID = sortingLayerID; spriteRenderer.sortingOrder = 1; overlayImage.SetSpriteRenderer(spriteRenderer); return(overlayImage); }