All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Update Bevy version to 0.15 and bevy_egui version to 0.31.
- Upgrade Bevy to 0.14 (and bevy_egui to 0.28)
- Update bevy_egui version to 0.27.
- Enable bevy_egui's
render
feature, so that users won't need to load it explicitly and can use the one reexported from Yoleck (fixes #39)
- Update bevy_egui version to 0.26.
- Update Bevy version to 0.13 and bevy_egui version to 0.25.
- [BREAKING] Changed some API types to use Bevy's new math types. See the migration guide.
- Upgrade bevy_egui to 0.24.
- [BREAKING] Typo -
Rotatation
->Rotation
in Vpeol.
- Use a proper
OR
syntax for the dual license.
- [BREAKING] The
YoleckLoadingCommand
resource is removed, in favor of aYoleckLoadLevel
component. See the migration guide.- Note that unlike
YoleckLoadingCommand
that could load the level from either an asset or a value,YoleckLoadLevel
can only load from an asset. If it is necessary to load a level from memory, add it toResMut<Assets<YoleckRawLevel>>
first and pass the handle toYoleckLoadLevel
.
- Note that unlike
- [BREAKING] The
yoleck_populate_schedule_mut
method (which Yoleck was adding as an extension on Bevy'sApp
) is removed in favor of just usingYoleckSchedule::Populate
directly.
YoleckEditableLevels
resource (accessible only from edit systems) that provides the list of level file names.- Entity reference with
YoleckEntityUuid
andYoleckUuidRegistry
.- Some picking helpers for handling entity references in the editor:
vpeol_read_click_on_entity
,yoleck_map_entity_to_uuid
andyoleck_exclusive_system_cancellable
.
- Some picking helpers for handling entity references in the editor:
- Load multiple levels with
YoleckLoadLevel
(which is a component, that can be placed on multiple entities) - Unload levels by removing the
YoleckKeepLevel
component from the entity that was used to load the level - or by despawning that entity entirely. YoleckSchedule::LevelLoaded
schedule for interfering with levels before populating their entities.VpeolRepositionLevel
component.
YoleckBelongsToLevel
now points to a level entity.YoleckDirective::spawn_entity
needs to know which level entity to create the component on.
- Upgrade Bevy to 0.12 (and bevy_egui to 0.23)
- Upgrade bevy_egui to 0.22
- [BREAKING]
YoleckUi
is a regular resource again. See the migration guide.
-
Vpeol2dCameraControl
reversing the Y axis when panning and zooming.Note that the implementation of this fix requires that the camera entity will have the
VpeolCameraState
component - without itVpeol2dCameraControl
will not work at all. I do not consider it a breaking change though, because:- The documentation do imply that you need
VpeolCameraState
. Vpeol3dCameraControl
was already requiringVpeolCameraState
, and they are supposed to be equivalent.vpeol_2d
is useless withoutVpeolCameraState
, so I'm not expecting anyone to not be using it just so that they can use the camera controls.
So having
Vpeol2dCameraControl
work withoutVpeolCameraState
was an undocumented feature, and I'm going to release this as a bugfix version, not a minor version. - The documentation do imply that you need
-
#[derive(Reflect)]
to several components. Requires thebevy_reflect
flag. -
[BREAKING] Rename
YoleckRouteClickTo
toVpeolRouteClickTo
.
- Upgrade Bevy to 0.11 (and bevy_egui to 0.21)
- [BREAKING]
YoleckUi
is now a non-Send
resource. See the migration guide.
- An exclusive systems mechanism for edit systems that operate alone and can thus assume control over the input (e.g. mouse motion and clicks)
- Multiple selection with the Shift key, and
YoleckEdit
methods for editing multiple entities.
- When creating a new entity that uses
Vpeol*dPosition
, an exclusive system will kick in to allow placing the entity with the mouse (instead of just placing it in the origin and letting the user drag it from there)
YoleckBelongsToLevel
for deciding which entities to despawn when the level unloads/restarts. This is added automatically by Yoleck, but should also be added to entities created by the game.
- Model detection now raycasts against the meshes in addition to the AABB.
- Supported for 2D meshes in vpeol_2d.
- [BREAKING] This entire release is a huge breaking change. See the migration guide.
- [BREAKING] Move to a new model, where each Yoleck entity can be composed
of multiple
YoleckComponent
s. - [BREAKING] The syntax of edit systems and populate systems has drastically changed.
- A mechanism for upgrading entity's data when their layout changes. See
YoleckEntityUpgradingPlugin
. This can be used to upgrade old games to use the new semantics introduced in this version. vpeol_3d
is back in, without the dependencies and with better dragging.yoleck::prelude
yoleck::vpeol::prelude
vpeol_position_edit_adapter
andVpeolTransform2dProjection
. UseVpeol2dPosition
instead.
- Add scroll area to editor window.
- Panic that happens sometimes when dragging an entity with children.
YoleckDirective::spawn_entity
for spawning entities from user code (e.g. for creating entity duplication buttons)
- Upgrade Bevy to 0.10 (and bevy_egui to 0.20)
- [BREAKING]
VpeolSystemLabel
becomesVpeolSystemSet
, and uses Bevy's new system set semantics instead of the removed system label semantics. All sets of that system are configured to run during theEditorActive
state.
Anchor
is taken into account when vpeol_2d checks clicks on text (previous to Bevy 0.10 it did not have anAnchor
component, and just used top-left)
- [BREAKING] Vpeol names no longer container the "yoleck" prefix - so
YoleckVpeolXYZ
becomesVpeolXYZ
andyoleck_vpeol_xyz
becomesvpeol_xyz
. Vpeol is enough to avoid conflicts. - [BREAKING]
vpeol_2d
sends drag coordinates asVec3
, notVec2
. - [BREAKING]
YoleckWillContainClickableChildren
is renamed toVpeolWillContainClickableChildren
and is no longer reexported byvpeol_2d
.
- [BREAKING]
VpeolCameraState
- must be placed on a camera in order for vpoel to work. - [BREAKING]
Vpeol2dCameraControl
- must be placed on a camera in order for vpoel_2d to apply camera panning and scrolling.
- Update bevy-egui version to 0.19.
- Update Bevy version to 0.9 and bevy-egui version to 0.17.
- Ability to revert levels to their initial state:
Wipe Level
button for ne` levels.REVERT
button for existing levels- This is important because otherwise the only ways to select a different level are to save the changes or restart the editor.
- Knobs remaining during playtest.
- Update Bevy version to 0.8 and bevy-egui version to 0.15.
- REGRESSION: Removed
vpeol_3d
andexample3d
. They were depending on crates that were slow to migrate to Bevy 0.8 (one of then has still not released its Bevy 0.8 version when this changelog entry was written). Sincevpeol_3d
was barely usable to begin with (the gizmo is not a good way to move objects around - we need proper dragging! - andbevy_mod_pickling
required lots of hacks to play nice with Yoleck) it has been removed for now and will be re-added in the future with less dependencies and better interface.
- Use the correct transform when dragging child entities (#11)
- Knobs!
YoleckVpeolSelectionCuePlugin
for adding a pulse effect to show the selected entity in the viewport.
vpeol_3d
: Entities sometimes getting deselected when cursor leaves egui area.vpeol_3d
: Freshly created entities getting selected in Yoleck but Gizmo is not shown.
- Building
YoleckTypeHandler
s to define the entity types. - Editing entity structs with egui.
- Populating entities with components based on entity structs.
- Editor file manager.
- Level loading from files.
- Level index loading.
vpeol_2d
andvpeol_3d
.