private PiecewiseRender NewPiecewise(StandLocation rootSR, DialogueSprite sprite) { if (renders.TryGetValue(rootSR, out var pr)) { pr.DestroySpawned(); } else { renders[rootSR] = pr = new PiecewiseRender(); } pr.Restructure(Target(rootSR), sprite); return(pr); }
public void Restructure(SpriteRenderer rootSR, DialogueSprite sprite) { var tr = rootSR.transform; var rootOrder = rootSR.sortingOrder; var layer = rootSR.gameObject.layer; spriteRenders = sprite.sprites.Where(x => x.sprite != null).Select(s => { var go = new GameObject { layer = layer }; go.transform.SetParent(tr, false); go.transform.localPosition = s.offset * (1 / s.sprite.pixelsPerUnit) + new Vector2(0f, lastBop); var sr = go.AddComponent <SpriteRenderer>(); sr.sprite = s.sprite; sr.sortingOrder = ++rootOrder; sr.maskInteraction = rootSR.maskInteraction; sr.sortingLayerID = rootSR.sortingLayerID; return(sr); }).ToArray(); }