void Update() { if (spriteDeformer == null) { return; } if (Application.isEditor && !Application.isPlaying) { FillPoints(); } if (points.Count == 0) { return; } Vector2 rL = Vector2.zero; for (int i = 0; i < points.Count; i++) { SpritePoint p = points[i]; rL += spriteDeformer.SpritePositionToLocal(p.spritePosition + p.offset2d); } rL /= (float)points.Count; rL += localOffset; Vector3 rG = spriteDeformer.transform.TransformPoint(rL); rG.z = transform.position.z; transform.position = rG; }
private void recalculeteBounds() { if (Application.isPlaying) { return; } Bounds b = spriteDeformer.bounds; switch (spriteDeformer.editorProps.boundsEditorMode) { case SpriteDeformerEditorSaver.BoundsEditorMode.USER: break; case SpriteDeformerEditorSaver.BoundsEditorMode.CROPE: b.size = new Vector3(0, 0, 1); foreach (var item in spriteDeformer.points) { foreach (var offset in item.offsets) { Vector3 v3 = spriteDeformer.SpritePositionToLocal((Vector3)item.spritePosition + offset); b.Encapsulate((Vector3)v3); } } break; case SpriteDeformerEditorSaver.BoundsEditorMode.Encapsulate: foreach (var item in spriteDeformer.points) { foreach (var offset in item.offsets) { Vector3 v3 = spriteDeformer.SpritePositionToLocal((Vector3)item.spritePosition + offset); b.Encapsulate((Vector3)v3); } } break; default: break; } if (!Application.isPlaying) { spriteDeformer.bounds = b; } }