{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":497570733,"defaultBranch":"main","name":"avian","ownerLogin":"Jondolf","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-05-29T11:28:38.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/57632562?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1723424763.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"df65fc5720b628619a335b84688e0c8cc908b7a5","ref":"refs/heads/collide-and-slide-wip","pushedAt":"2024-08-12T01:06:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Remove unnecessary condition","shortMessageHtmlLink":"Remove unnecessary condition"}},{"before":"a2cdddbe11a82407de7e0ef4772a3ae28b5ad718","after":null,"ref":"refs/heads/fixed-update","pushedAt":"2024-08-11T17:26:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"}},{"before":"5041bea37bec4edde808bd472b0c00c82375c148","after":"4d082a79fd30078e5b536ae23656f690091ae285","ref":"refs/heads/main","pushedAt":"2024-08-11T17:23:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Use `FixedPostUpdate` by default and simplify scheduling (#457)\n\n# Objective\r\n\r\nCloses #263 (the removal detection issue should also already be fixed thanks to hooks and observers)\r\n\r\nSo far, Avian has run in `PostUpdate` by default, but with a custom fixed timestep solution. This has given us more control over scheduling and allowed working around some historical issues with Bevy's own `FixedUpdate`, but nowadays Bevy's fixed timestep schedules are much more usable.\r\n\r\nHaving two different fixed timesteps is confusing, annoying to maintain, and duplicates a lot of API surface area. The scheduling in Avian 0.1 also has other serious issues:\r\n\r\n- Physics slows down at lower frame rates, for example when the window is not focused.\r\n- Physics can be clearly indeterministic when running in `PostUpdate`, even with the built-in fixed timestep.\r\n\r\nFor a native experience, Avian should be using Bevy's own fixed timestep and scheduling.\r\n\r\n## Solution\r\n\r\nPhysics now runs in `FixedPostUpdate` by default. `TimestepMode` has been removed, and `Time` no longer has a custom timestep. Instead, it follows the clock of the schedule where physics is run in. In `FixedPostUpdate`, physics uses `Time`, but if physics is instead configured to run in a schedule like `PostUpdate`, it will use `Time`.\r\n\r\nPreviously, the physics timestep could be configured like this:\r\n\r\n```rust\r\napp.insert_resource(Time::new_with(Physics::fixed_hz(60.0)));\r\n```\r\n\r\nIn schedules with a fixed timestep, you even needed to use `fixed_once_hz`, which was rather confusing and footgunny:\r\n\r\n```rust\r\napp.insert_resource(Time::new_with(Physics::fixed_once_hz(60.0)));\r\n```\r\n\r\nNow, if you are running physics in `FixedPostUpdate`, you should simply configure `Time` directly:\r\n\r\n```rust\r\napp.insert_resource(Time::::from_hz(60.0)));\r\n```\r\n\r\n`Time` still exists to allow people to configure the simulation speed, pause and unpause the simulation independently of the schedule's default clock, and set up their own custom scheduling for physics.\r\n\r\nRunning physics with Bevy's fixed timestep has also fixed the other issues mentioned earlier: physics no longer runs slower at lower frame rates, and behavior seems a lot more deterministic (at least without the `parallel` feature). More testing is required to determine if we have full cross-platform determinism though.\r\n\r\n## Why `FixedPostUpdate` instead of `FixedUpdate`?\r\n\r\n`FixedUpdate` is very often used for gameplay logic and various kinds of simulations. It is also commonly used for applying physics logic, like character movement, explosions, moving platforms, effects that apply forces/impulses, custom gravity, and so on.\r\n\r\nFor a lot of these use cases, it is important to run logic before physics, and if physics was run in `FixedUpdate`, systems would need to be ordered explicitly, which would not be a good experience. And if you didn't do that, you could get determinism issues caused by system ordering ambiguities, along with frame delay issues.\r\n\r\nAnd as for `FixedPreUpdate`: if we ran physics *before* gameplay logic in `FixedUpdate`, movement and anything else that affects physics could have an additional delay of one or more frames.\r\n\r\nI believe that using `FixedPostUpdate` is the sensible default, and it is also in line with engines like Unity and Godot, where internal physics is run near the end of the fixed update/process step. People can also always configure the ordering in their own applications if needed.\r\n\r\n## Caveats\r\n\r\nBevy's fixed timestep is 64 Hz by default, unlike our old default of 60 Hz. This can lead to noticeable jitter on 60 Hz displays, as physics is sometimes run twice within a single frame. This can be partially worked around by configuring `Time`, but I am also implementing transform interpolation and extrapolation, which should make it possible to fix the issue properly by smoothing out the visual result.\r\n\r\nAnother change to the old scheduling is that physics no longer runs during the first frame. This is because Bevy's `FixedUpdate` and other fixed timestep schedules don't seem to run until the second update.\r\n\r\n---\r\n\r\n## Migration Guide\r\n\r\nPreviously, physics was run in `PostUpdate` with a custom fixed timestep by default. The primary purpose of the fixed timestep is to make behavior consistent and frame rate independent.\r\n\r\nThis custom scheduling logic has been removed, and physics now runs in Bevy's `FixedFixedUpdate` by default. This further unifies physics with Bevy's own APIs and simplifies scheduling. However, it also means that physics now runs before `Update`, unlike before.\r\n\r\nFor most users, no changes should be necessary, and systems that were running in `Update` can remain there. If you want to run systems at the same fixed timestep as physics, consider using `FixedUpdate`.\r\n\r\nThe `Time` clock now automatically follows the clock used by the schedule that physics is run in. In `FixedPostUpdate` and other schedules with a fixed timestep, `Time` is used, but if physics is instead configured to run in a schedule like `PostUpdate`, it will use `Time`.\r\n\r\nPreviously, the physics timestep could be configured like this:\r\n\r\n```rust\r\napp.insert_resource(Time::new_with(Physics::fixed_hz(60.0)));\r\n```\r\n\r\nNow, if you are running physics in `FixedPostUpdate`, you should simply configure `Time` directly:\r\n\r\n```rust\r\napp.insert_resource(Time::::from_hz(60.0)));\r\n```\r\n\r\nThe following types and methods have also been removed as a part of this rework:\r\n\r\n- `TimestepMode`\r\n- `Physics::from_timestep`\r\n- `Physics::fixed_hz`\r\n- `Physics::fixed_once_hz`\r\n- `Physics::variable`\r\n- `Time::::from_timestep`\r\n- `Time::::timestep_mode`\r\n- `Time::::timestep_mode_mut`\r\n- `Time::::set_timestep_mode`","shortMessageHtmlLink":"Use FixedPostUpdate by default and simplify scheduling (#457)"}},{"before":"40adf2998a7179c9751d4ba7f06665f00a2a7ce5","after":"a2cdddbe11a82407de7e0ef4772a3ae28b5ad718","ref":"refs/heads/fixed-update","pushedAt":"2024-08-11T16:55:18.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Merge branch 'main' into fixed-update","shortMessageHtmlLink":"Merge branch 'main' into fixed-update"}},{"before":"78051815da8a603b02f3d5bf4d239598c723e2d9","after":null,"ref":"refs/heads/better-component-initialization","pushedAt":"2024-08-10T19:19:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"}},{"before":"73fe6c71b7f01f268cd98bd86da5eee5a72998ed","after":"5041bea37bec4edde808bd472b0c00c82375c148","ref":"refs/heads/main","pushedAt":"2024-08-10T19:19:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Use hooks for component initialization (#483)\n\n# Objective\r\n\r\nFixes #475.\r\n\r\nMissing components for rigid bodies, colliders, etc. are currently added at specific points in the physics shedule. This means that the world is momentarily in an invalid state before those systems are run, which can even lead to confusing crashes when using methods like `query.single()` for queries that expect those components to exist.\r\n\r\n## Solution\r\n\r\nUse component hooks for initializing missing components with minimal delay. This also meaningfully simplifies scheduling.\r\n\r\nWhen Bevy gets required components (Soon™), those could be used instead.\r\n\r\n### Performance\r\n\r\nUsing hooks appears to be as fast if not *faster* than the old initialization systems.\r\n\r\n---\r\n\r\n## Migration Guide\r\n\r\n`PrepareSet::PreInit` has been renamed to `PrepareSet::First`, and `PrepareSet::InitRigidBodies`, `PrepareSet::InitColliders`, and `PrepareSet::InitMassProperties` have been removed. Most missing components are now initialized by component lifecycle hooks.\r\n\r\n`CcdPlugin` and `SpatialQueryPipeline` no longer store a schedule and are now unit structs. Instead of `SpatialQueryPlugin::new(my_schedule)` or `SpatialQueryPlugin::default()`, just use `SpatialQueryPlugin`.","shortMessageHtmlLink":"Use hooks for component initialization (#483)"}},{"before":"bdc4e8b3d7f75ca0eac24fe50171019480570bdf","after":null,"ref":"refs/heads/query-filter-by-reference","pushedAt":"2024-08-10T19:16:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"}},{"before":"8479826457066cf5266fc0df00e434f7c33fe11b","after":"73fe6c71b7f01f268cd98bd86da5eee5a72998ed","ref":"refs/heads/main","pushedAt":"2024-08-10T19:16:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Take `SpatialQueryFilter` by reference in spatial queries (#402)\n\n# Objective\r\n\r\nSpatial queries currently take `SpatialQueryFilter` by value and clone it several times. This could sometimes be cloning a pretty hefty amount of data if the `HashSet` of excluded entities is large.\r\n\r\n## Solution\r\n\r\nTake spatial query filters by reference and reduce the amount of cloning.\r\n\r\n## Future Work\r\n\r\nShapecasting with multiple hits should be optimized to only traverse once instead of doing best-first traversals in a loop. See #403.\r\n\r\n---\r\n\r\n## Migration Guide\r\n\r\nSpatial queries performed through `SpatialQuery` now take `SpatialQueryFilter` by reference.","shortMessageHtmlLink":"Take SpatialQueryFilter by reference in spatial queries (#402)"}},{"before":"3dee0c059adc5b159acc3670dc108243e17156da","after":"8479826457066cf5266fc0df00e434f7c33fe11b","ref":"refs/heads/main","pushedAt":"2024-08-10T18:54:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Release 0.1.2","shortMessageHtmlLink":"Release 0.1.2"}},{"before":"5c95c21e3d6dfb76b47ab991c38e7775b1fbe67e","after":null,"ref":"refs/heads/fix-locked-axes-inertia","pushedAt":"2024-08-10T18:17:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"}},{"before":"b620e2b099ebaf2638da86803655bf90435bb3ab","after":"3dee0c059adc5b159acc3670dc108243e17156da","ref":"refs/heads/main","pushedAt":"2024-08-10T18:14:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix angular locked axes in gyroscopic torque computation (#485)\n\n# Objective\r\n\r\nFixes #474.\r\n\r\nThe angular locked axes are applied to the inertia instead of the inverse inertia in gyroscopic torque computations introduced in #420, causing incorrect behavior.\r\n\r\n## Solution\r\n\r\nApply the locked axes correctly.","shortMessageHtmlLink":"Fix angular locked axes in gyroscopic torque computation (#485)"}},{"before":null,"after":"5c95c21e3d6dfb76b47ab991c38e7775b1fbe67e","ref":"refs/heads/fix-locked-axes-inertia","pushedAt":"2024-08-10T17:40:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix angular locked axes in gyroscopic torque computation","shortMessageHtmlLink":"Fix angular locked axes in gyroscopic torque computation"}},{"before":"80cf108ca308513c6ae83e9c6d16610953bff709","after":"78051815da8a603b02f3d5bf4d239598c723e2d9","ref":"refs/heads/better-component-initialization","pushedAt":"2024-08-09T23:32:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Use hooks and fix system ordering","shortMessageHtmlLink":"Use hooks and fix system ordering"}},{"before":null,"after":"80cf108ca308513c6ae83e9c6d16610953bff709","ref":"refs/heads/better-component-initialization","pushedAt":"2024-08-09T20:17:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Use hooks and observers for component initialization","shortMessageHtmlLink":"Use hooks and observers for component initialization"}},{"before":"e2a16959ea7bc8c0ba37b7c757fcfa8858ba6392","after":"b620e2b099ebaf2638da86803655bf90435bb3ab","ref":"refs/heads/main","pushedAt":"2024-08-07T16:21:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Remove duplicate code (#482)","shortMessageHtmlLink":"Remove duplicate code (#482)"}},{"before":"76a0a792531c7d3fa112949801e626dc611619c4","after":"bdc4e8b3d7f75ca0eac24fe50171019480570bdf","ref":"refs/heads/query-filter-by-reference","pushedAt":"2024-08-03T22:30:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix CI","shortMessageHtmlLink":"Fix CI"}},{"before":"1c8ece69b9b93204b1fb3d472307212b41e785e4","after":"76a0a792531c7d3fa112949801e626dc611619c4","ref":"refs/heads/query-filter-by-reference","pushedAt":"2024-08-03T21:48:12.000Z","pushType":"push","commitsCount":19,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Merge branch 'main' into query-filter-by-reference","shortMessageHtmlLink":"Merge branch 'main' into query-filter-by-reference"}},{"before":"bc390a30ce121b22f07cf60b3e7338ed9e11cedc","after":"40adf2998a7179c9751d4ba7f06665f00a2a7ce5","ref":"refs/heads/fixed-update","pushedAt":"2024-08-03T21:46:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Turn type in docs to intra-doc link\n\nCo-authored-by: Jan Hohenheim ","shortMessageHtmlLink":"Turn type in docs to intra-doc link"}},{"before":"5c2188c5f3672f234749f70cd6bf4ebbec5a47ee","after":"e2a16959ea7bc8c0ba37b7c757fcfa8858ba6392","ref":"refs/heads/main","pushedAt":"2024-08-03T19:07:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix usage without Parry (#477)","shortMessageHtmlLink":"Fix usage without Parry (#477)"}},{"before":"2996399269a9741223cc17d0c49e9e16330b56c7","after":"4e14e4ae8f95a45390b043b837a80dbeeb7a5214","ref":"refs/heads/fix-usage-without-parry","pushedAt":"2024-08-03T15:36:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Make CI happy","shortMessageHtmlLink":"Make CI happy"}},{"before":null,"after":"2996399269a9741223cc17d0c49e9e16330b56c7","ref":"refs/heads/fix-usage-without-parry","pushedAt":"2024-08-03T15:18:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix usage without Parry","shortMessageHtmlLink":"Fix usage without Parry"}},{"before":"1563a0fa6068f4c590b6f0e4b472f2775a382430","after":null,"ref":"refs/heads/fix-scaling","pushedAt":"2024-07-28T17:39:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"}},{"before":"fb9912965bba96700d95a4d8ea6dd1f010181492","after":"5c2188c5f3672f234749f70cd6bf4ebbec5a47ee","ref":"refs/heads/main","pushedAt":"2024-07-28T17:39:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix collider scale propagation issues (#472)\n\n# Objective\r\n\r\nFixes #287 and part of #471.\r\n\r\nScale is currently not propagated correctly for colliders if the rigid body is not the root entity. Additionally, negative scale is prohibited for child colliders: scale is clamped to be greater than zero.\r\n\r\n## Solution\r\n\r\nFix scale propagation and allow negative scale.\r\n\r\nNote that mirroring is *not* handled properly for child colliders and some shapes yet. That will be fixed later.","shortMessageHtmlLink":"Fix collider scale propagation issues (#472)"}},{"before":"84c565f63b7803e8fdf4b0dc05bfe2e7aa18934d","after":"1563a0fa6068f4c590b6f0e4b472f2775a382430","ref":"refs/heads/fix-scaling","pushedAt":"2024-07-28T13:01:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix new Clippy lint","shortMessageHtmlLink":"Fix new Clippy lint"}},{"before":"64c3a7e633c17ee1d6bb648535da7e3e0951a83d","after":"84c565f63b7803e8fdf4b0dc05bfe2e7aa18934d","ref":"refs/heads/fix-scaling","pushedAt":"2024-07-28T12:26:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix negative scale for some collider shapes","shortMessageHtmlLink":"Fix negative scale for some collider shapes"}},{"before":null,"after":"64c3a7e633c17ee1d6bb648535da7e3e0951a83d","ref":"refs/heads/fix-scaling","pushedAt":"2024-07-28T11:59:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Fix collider scale propagation issues","shortMessageHtmlLink":"Fix collider scale propagation issues"}},{"before":"a404afd90be13fbc7de92e4b7c4fd54e7b96f654","after":"bc390a30ce121b22f07cf60b3e7338ed9e11cedc","ref":"refs/heads/fixed-update","pushedAt":"2024-07-24T23:15:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Change `FixedUpdate` to `FixedPostUpdate`","shortMessageHtmlLink":"Change FixedUpdate to FixedPostUpdate"}},{"before":"5ecfd5ae1be43c539a9c5e957a0ab4d8847761bd","after":"fb9912965bba96700d95a4d8ea6dd1f010181492","ref":"refs/heads/main","pushedAt":"2024-07-24T10:00:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"[+]Avian(Backend) - GravityScale::Default changed to 1.0f32 (#464)\n\n# Objective\r\n\r\nFixes #463 \r\n\r\n## Solution\r\n\r\nDefault implemented with 1.0\n\n---------\n\nCo-authored-by: Joona Aalto ","shortMessageHtmlLink":"[+]Avian(Backend) - GravityScale::Default changed to 1.0f32 (#464)"}},{"before":"e572188aa3a6504e99ff744260e83b52eaeaca77","after":null,"ref":"refs/heads/ancestor-marker-reflect","pushedAt":"2024-07-21T21:01:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"}},{"before":"47bf6990e4736bfcee6d488acac10efcc9e4d56b","after":"5ecfd5ae1be43c539a9c5e957a0ab4d8847761bd","ref":"refs/heads/main","pushedAt":"2024-07-21T21:01:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Jondolf","name":"Joona Aalto","path":"/Jondolf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57632562?s=80&v=4"},"commit":{"message":"Add `#[reflect(Component)]` for `AncestorMarker` and register the type (#461)\n\n# Objective\r\n\r\nFixes #460.\r\n\r\n## Solution\r\n\r\nAdd `#[reflect(Component)]` for `AncestorMarker` and register the type.","shortMessageHtmlLink":"Add #[reflect(Component)] for AncestorMarker and register the type ("}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEl6Db2gA","startCursor":null,"endCursor":null}},"title":"Activity · Jondolf/avian"}