)]}'
{
  "commit": "c6d407a9980bd875930f1e105a8cb0f809fbe168",
  "tree": "19ec4db4a6ac7406befa42fceba735776ef50229",
  "parents": [
    "a040296117c5dbdfce2819c30e2f39b8b5327d6c"
  ],
  "author": {
    "name": "luigi-rosso",
    "email": "hello@rive.app",
    "time": "Tue Feb 20 03:13:41 2024 +0000"
  },
  "committer": {
    "name": "luigi-rosso",
    "email": "hello@rive.app",
    "time": "Tue Feb 20 03:13:41 2024 +0000"
  },
  "message": "Unity compute bounds\n\nThis is something that the Pocketwatch team requested but I found myself needing it when doing a Unity test this weekend.\n\nIt adds the ability to dynamically retrieve the dimensions of any Shape from C++.\n\nIn Unity, it uses a similar API to GameKit where it exposes elements of the Artboard as \"Components\" and then you can call different methods that will only function on certain types but it hides needing to expose all different kinds of types to the end user.\n\nI also added the ability to change a run\u0027s value so I could check that the shape was resizing properly from Unity. @HayesGordon we really should land your text run api too, but we should modify it to use the same component logic (might require changing from the base TransformComponent to just Component in the C++ plugin code).\n\nThe Unity Artboard Components are wrapped and track the owning Artboard. This is to make sure that if the C# code releases all references of Artboard while someone is still holding a Component, Artboard will still be available at the C++ level (so you can\u0027t accidentally create a race condition that causes a crash in native). I didn\u0027t need to do this for the Text Runs as I just have a set api that doesn\u0027t store the TextValueRun reference in Unity yet.\n\nDiffs\u003d\n5cb42a9b0 Unity compute bounds (#6649)\n\nCo-authored-by: Luigi Rosso \u003cluigi-rosso@users.noreply.github.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "333526337cf9461dc4f6436d1b1dcfb91ef9d70b",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "2804470530c0edc0da6ad855606e676f22aff647",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "b44bfc3b4f468c03e86b948a2bb2036d161b6c1e",
      "old_mode": 33188,
      "old_path": "include/rive/shapes/shape.hpp",
      "new_id": "3f2c6869456eb399fdba1bc4aacde604e1951adf",
      "new_mode": 33188,
      "new_path": "include/rive/shapes/shape.hpp"
    },
    {
      "type": "modify",
      "old_id": "869410525ac7df28a53ef4269ec97680982a74d2",
      "old_mode": 33188,
      "old_path": "src/shapes/shape.cpp",
      "new_id": "820b5b1fccf89ef02dddedbc79c6fce2073cfbe9",
      "new_mode": 33188,
      "new_path": "src/shapes/shape.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7fe885f02f4d10c9f21a302e6ecefeddd4ab7326",
      "new_mode": 33188,
      "new_path": "test/assets/background_measure.riv"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "99afa1e06425dec2cd34dd4c44dca57f9cbba9a5",
      "new_mode": 33188,
      "new_path": "test/bounds_test.cpp"
    }
  ]
}
