Skip to content

CometEngine_2.0-rc.11

Pre-release
Pre-release

Choose a tag to compare

@OriolCS2 OriolCS2 released this 20 Apr 23:03
· 5 commits to main since this release
28660db

[2.0-rc.11] - 2026-04-21

Breaking Change

  • Removed C# scripting support. AngelScript is now the only supported scripting language.

Added

  • Project manager new functionalities:
    • Added a search bar to the top menu for finding projects.
    • Added "Scan" button to search for projects inside a folder recursively.
    • Added a favourite button for every project in order to show it at the top.
    • Added the current version of a project.
    • Added the last modification date for a project.
  • Support for exporting projects to Android and Web.
  • Each project now includes a project.cometProject file at its root to mark the folder as the project's entry point.
  • Opening the engine when the scripts project does not compile now can trigger two new popups:
    • Just once when the engine is opened, a popup saying that the scripts do not compile and that they should be fixed before anything else is triggered.
    • When the scripts now compile correctly (only once and just if the engine was opened when they did not compile correctly) a new popup saying that it is better to reload the project is triggered.
  • Support for playing videos:
    • VideoClip: New resource that can read video files.
    • VideoPlayer: New behaviour class that is used to display a video clip in some different modes.
  • The .fnt files can now be imported and used as BitmapFont to render using BehaviourText.
  • Slider to modify the volume when previsualizing an audio on the AudioSample inspector.
  • A text box explaining what is happening is now displayed in any collider inspector when an instanciable entity is selected, instead of showing nothing.
  • In a CometEvent, clicking an entity that owns a callback now highlights it in the hierarchy.
  • A behaviour can also be dropped inside a CometEvent and its Entity will be taken as reference.
  • Added the tag "Overriding" for the platform export options tab of the textures and texture atlas that are enabled.
  • The BehaviourText now uses the kerning of the font.
  • Now the inspector of a Font shows its texture and all the available glyphs.
  • Some AudioEffect parameters:
    • AudioEffectEcho: filter.
    • AudioEffectReverb: width, damp, roomSize, freeze, wetMix.
  • Script logs are now shown in the console panel with their script path, function name, and line number. Double-clicking a log entry opens and focuses the corresponding code in the editor.
  • AssetIcon now always shows the icon, even if the asset is not loaded.
  • Scenes referenced in the inspector of a Script or CometObject are now automatically included in the build.
  • New metadata attributes:
    • TreeNode: Makes a group with all the fields that has the same tree node name and shows them as a tree.
    • Tab: Makes a group with all consecutive fields that has a Tab attribute and shows them with tabs.
  • The BehaviourText now has a font by default.
  • Added a new (+) button in the Animation Event Inspector that allows adding a new event at the currently selected frame.
  • Added support for 9-sliced sprites using configurable borders to maintain correct aspect ratios. Borders have to be set using the SpriteEditor panel.
  • Added render modes for the SpriteRenderer and Image:
    • Simple: Renders the sprite normally (same as in previous versions).
    • Sliced: Uses the sprite’s borders for 9-sliced rendering, preventing distortion and preserving aspect ratio.
    • Tiled: Repeats the sprite using 9-sliced rendering, preserving the corners while tiling the edges and center.
  • Added an option to add a UI background panel when right-clicking the hierarchy.
  • New UI Behaviours added:
    • Raw Image: New behaviour that allows rendering a RenderTexture inside a Canvas.
    • RectMask: It allows to create a rect zone for the UI where only there it will be rendered.
    • Mask: Creates a mask based on the image attached to the same entity, allowing rendering only within that area.
    • HorizontalLayout: Organizes all children horizontally.
    • VerticalLayout: Organizes all children vertically.
    • GridLayout: Organizes all children into a grid.
    • LayoutElementConstraints: Defines the preferred, minimum, and flexible sizes of an element.
    • ContentSizeController: Adjusts the transform’s size to fit all its children.
    • ScrollRect: Allows a rect’s content to be scrolled inside another rect.
    • Scrollbar: Interactable bar that allows scrolling a ScrollRect.
    • Toggle: Interactable that maintains an on/off state.
    • ToggleGroup: Groups multiple toggles so they behave as a unified set.
    • Slider: Interactable that holds a bar with a value between the minimum and maximum.
    • InputField: Interactable that captures keyboard input to update a Text with what the user types.
    • UIParticleSystem: Allows rendering the entity’s particle system directly inside the canvas.
    • DropDown: Interactable that opens a popup options menu when clicked.
  • The UI Interactable color transition now includes a “Use Scaled Time” property to determine whether the fade duration uses scaled time.
  • The UI Interactable color/sprite transition now takes by default the self image as a target.
  • Added "Ignore Mouse" property to CanvasGroup, allowing it and all its children to ignore mouse interactions.
  • Added "Mouse Filter" property to UI Graphics, allowing control over how mouse events interact with them:
    • PROPAGATE: Mouse events propagate upward until handled.
    • STOP: Mouse events are handled only by this entity.
    • IGNORE: Mouse completely ignores this graphic.
    • BLOCK: Mouse events stop when reaching this graphic.
  • Text now has a property to auto set the font size to the biggest possible.
  • Added sortingLayout and sortingLayoutOrder to the Canvas Screen Mode Camera.
  • Added sortingOrder to the Canvas Screen Mode Overlay.
  • Nested canvases can override sorting and be rendered independently from their parent canvas.
  • ShowNavigation option for selectables now saves the state when closing the app and recovers it when opening.
  • Added GetPosition/SetPosition methods at the Window namespace.
  • Added an options button to the instantiable entity header in the scene view, allowing changes to be saved or discarded.
  • New window configuration properties:
    • Initial Position Mode: An enumeration that defines how the initial position of the window is determined. The possible values are:
      • ABSOLUTE: The window position is set using the InitialPosition value.
      • CENTERED_PRIMARY_SCREEN: The window is centered on the primary display.
      • PRIMARY_SCREEN: The window position is set relative to the top-left corner of the primary display using the InitialPosition value.
      • CENTERED_OTHER_SCREEN: The window is centered on a non-primary display specified by InitialScreenIndex.
      • OTHER_SCREEN: The window position is set relative to the top-left corner of a non-primary display specified by InitialScreenIndex using the InitialPosition value.
      • CENTERED_SCREEN_WITH_MOUSE: The window is centered on the display where the mouse cursor is currently located.
      • SCREEN_WITH_MOUSE: The window position is set relative to the top-left corner of the display where the mouse cursor is currently located using the InitialPosition value.
    • Initial Position: Value specifying the X and Y coordinates for window placement, used in conjunction with certain InitialPositionMode settings.
    • Initial Screen Index: An integer specifying which display to use for positioning when certain InitialPositionMode settings are selected.
    • Always On Top: Flag that indicates whether the window should always stay on top of other windows.
    • Viewport Aspect Ratio: An enumeration that defines the aspect ratio of the game viewport.
      • Free Aspect: The viewport will resize freely.
      • 16:9, 4:3, 21:9, 16:10, 3:2, 5:4: The viewport will maintain the selected aspect ratio.
      • Custom: The viewport will maintain the custom aspect ratio defined in Custom Aspect Ratio.
    • Custom Aspect Ratio: Value specifying the custom width and height ratio when Viewport Aspect Ratio is set to Custom.
    • Keep Aspect Ratio On FullScreen: Flag that indicates if the aspect ratio should be maintained when in FullScreen mode.
    • Keep Aspect Ratio On FullScreen Desktop: Flag that indicates if the aspect ratio should be maintained when in FullScreenDesktop mode.
    • New SplashScreen settings: enable or disable the splash screen, change its size, and assign a new texture.
  • Closing the Editor while the SpriteEditor has unsaved changes now triggers a popup asking the user whether to save or discard them.
  • Added support for Undo/Redo when editing a sprite in the Sprite Editor.
  • If the editor engine crashes, it will generate a .txt with the report of the crash.
  • The panel that displays information about the selected sprite in the SpriteEditor can now be minimized and maximized.
  • Added an option for the scene camera to simulate the culling view of another game camera.
  • AudioClip now has platform-independent properties, such as Streaming Enabled.
  • Creating a new project with the project manager now adds a basic gitignore with all files that Comet generates that should not be uploaded.
  • New default resolutions available for the Game panel.
  • Added a menu to customize Game panel resolutions.
  • Added touch and pinch input information at Input AngelScript class:
    • GetTouchCount(): Returns the number of currently active touches.
    • GetTouchById(uint64 id): Returns the touch data for a specific touch ID.
    • GetTouchByIndex(uint64 index): Returns the touch data for a specific index.
    • IsPinching(): Returns true if a pinch gesture is active.
    • GetPinchZoom(): Returns the pinch zoom scale.
    • onTouchStarted: Event called when a touch starts.
    • onTouchMoved: Event called when a touch moves.
    • onTouchEnded: Event called when a touch ends.
    • onPinchStarted: Event called when a pinch gesture starts.
    • onPinchMoved: Event called when a pinch gesture moves.
    • onPinchEnded: Event called when a pinch gesture ends.
  • Network support with TCP sockets (Not valid on Web builds):
    • SocketClient: TCP client socket for connecting to remote servers. Supports asynchronous connection, sending/receiving data, and connection events (onConnected, onDisconnected, onConnectionFailed, onNewData).
    • SocketServer: TCP server socket for listening to incoming client connections. Supports accepting multiple clients, sending/receiving data to specific clients, broadcasting to all connected clients, and client management events (onClientConnected, onClientDisconnected, onNewData).
  • SubResources in PanelAnimationTimeline can now be set all together and not one by one.
  • Deselect the current selected sprite on Panel Sprite editor when pressing ESC or clicking outside the sprite.
  • Save shortcut (Ctrl + S) can now be used to save the current changes on the Panel Sprite Editor.
  • Double-click the name of a folder or asset in PanelProject to rename it.
  • Popup Select Resource/Entity now can be auto accepted double clicking the desired item.
  • Panel Console now shows the amount of logs of each type.
  • BehaviourTextureRectRenderer: Renders a texture within a specified rect.
  • BehaviourImageRect: Renders a texture within a specified rect for UI.
  • AnimatorStates can now be configured with exit time in order to ensure a minimum time of the animation has been played before transitioning.
  • Inspector has a new option to set debug mode to show private variables.
  • InputAction onStarted and onCancelled events added.
  • GraphNode support:
    • GraphNode editor window: Window that manages the visual graph.
    • GraphNode: Base class that manages the flow and execution of the nodes attached to it. Must be inherited to implement custom graph behaviours.
    • Node: Base class that must be inherited to implement custom node behaviours.
    • GraphUpdater: Behaviour that receives a GraphNode and executes its logic.
  • Text now has a new property called autoContentSizeMode that allows the text to modify the RectTransform size to fit in width, height, or both.
  • New system for the InstanciableEntities:
    • Nested Entities: Full support for nesting InstanciableEntities within other InstanciableEntities, enabling complex hierarchical structures.
    • Variants & Overrides: Support for creating InstanciableEntity variants with property overrides, allowing inherited changes from the base entity while maintaining unique modifications.
  • Project Selector now has a new button called "Open Folder" in order to open the file explorer with the selected project.
  • New OnEdited callback for Script behaviours: called in the editor whenever inspector properties are modified (including after undo/redo), when the behaviour is loaded, or when it is pasted. Useful for reacting to inspector changes at edit time.
  • New DataAsset resource type for importing text-based files directly into the project. Files with extensions .bytes, .csv, .htm, .html, .json, .md, .txt, .xml, and .yaml are now recognized as Data Assets and can be placed in the RuntimeAssets folder to be loaded at runtime. The CometEngine::DataAsset AngelScript class exposes a data string property to read the file's raw content (e.g. a JSON string).
  • Added ResetTrigger() method to Animator, allowing scripts to manually reset a trigger parameter by name or by parameter ID.
  • Added new AngelScript RuntimeAssets API methods for runtime loading and directory queries: LoadAllResources(), LoadAllEntities(), LoadAllScenes(), GetFilesAtDirectory(), and GetDirectoriesAtDirectory().
  • Text from the Panel Console now can be copied.
  • Added worldMin and worldMax read-only properties to Camera to retrieve world-space camera bounds.
  • Added scalar constructors to Vector2, Vector2i, Vector3 and Vector3i, allowing creation from a single value (e.g. Vector3(5) creates (5,5,5)).
  • Added namespace CometEditor::Shell with two new methods:
    • ExecuteCommand: Allows the execution of a system command and returns the exit code.
    • ExecuteWithOutput: Allows the execution of a system command and captures the output.

Changed

  • Editor font is now OpenSans. It is bigger and clearer.
  • Project manager reorganization:
    • Buttons "New" and "Import" have been moved to the top menu bar.
    • Button "Delete Missing" has been moved to the bottom utility bar.
    • Version has been moved to the top right menu bar.
  • The popup "InstanciableEntity has been modified" its title has been renamed to "InstanciableEntity modified".
  • Right-clicking an animation event on the timeline now shows individual options for each event instead of only removing all events at the current frame.
  • The Sprite Editor tool gizmo now uses an improved handler.
  • The default button texture has been updated to one with rounded borders.
  • Behaviour image now has by default a white quad as a sprite.
  • Creating a UI Behaviour via right-click on the hierarchy will now look for an existing canvas, or create one if none is found, and then create the entity there.
  • Clicking in the scene now cycles through overlapping objects one by one, instead of always selecting the first one.
  • The Canvas and CanvasGroup options under the Inspector's "UI" → "Add Behaviour" menu have been moved to the "Layout" category. The same change applies to the Main Menu Bar under "Behaviour".
  • The UI interfaces IBeginDragAction, IDragAction, IEndDragAction, IPointerClickAction, IPointerDownAction, IPointerEnterAction, IPointerExitAction, IPointerUpAction and IPointerUpOutsideAction now have their methods receive a PointerEvent parameter that contains information about the event.
  • FullScreenMode::SIZE has been renamed to FullScreenMode::WINDOWED.
  • The AudioClip Preload Data property is now platform-independent, allowing it to be configured per platform.
  • "Build and Run" option now is only available if the selected platform is the current user platform.
  • Windows: The Open Folder popup now uses the system’s default folder selection dialog.
  • Platform settings for Windows and Linux are now unified under Standalone settings.
  • Compilation script error logs now never disappear until the error is solved.
  • SaveProject option now saves everything instead of just saving the assets.
  • Selecting a directory from the tree no longer deselects the currently selected item.
  • It is not needed to press enter to confirm a new name for an InputGroup or InputAction.
  • Creating a new Scene asset now pre-populates it with a Main Camera entity (and a Global Light entity if the default lighting is enabled in Graphics Settings), instead of an empty scene.

Removed

  • Some AudioEffect parameters:
    • AudioEffectEcho: dryMix.
    • AudioEffectReverb: referenceLF, gain, roomRolloffFactor, decayTime, decayHFRatio, reflectionsLevel, reflectionsDelay, wetLevel, dryLevel, reverbDelay, diffusion, density, referenceHF.
  • Some AudioEffects: Chorus, Compressor, Fader.
  • Removed the support for the external code editor for VisualStudio. Now VSCode is the only one supported.
  • Removed the version.cometVersion file from the Library folder.
  • Selectable SpriteTransition no longer includes the Normal Sprite property, as the normal state now uses the attached image by default.
  • Canvas Screen Mode sortingOrder property has been removed.

Fixed

  • Default input bindings for UI Left and Right for controller were inverted.
  • Switching the window to fullscreen or fullscreendesktop made it impossible to exit it.
  • Executing CometEngine with a console on Windows now will show the logs.
  • Modifying a canvas with the screen space render mode was causing a crash when an undo action was performed.
  • BehaviourText now can render characters with accents correctly.
  • Copying and pasting a canvas that had ScaleWithScreenSizeScaleMode was causing a crash.
  • Closing Comet with a copied canvas in the cache that had a camera attached on the WorldSpace or ScreenSpace was causing a crash.
  • Closing Comet with a copied script behaviour after play and stop a game was causing a crash.
  • Cameras that were rendering to a render texture were rendering to the game view as well.
  • Once an AudioMixerGroup was set to an AudioSource, it was not possible to remove it again.
  • Changing the 'Max Size' of a texture with no RGBA format in its inspector to a size that is smaller than the original was causing the texture to lose its alpha.
  • Some fonts were not positioned correctly when rendering them using BehaviourText.
  • When using the search in the panel project sometimes textures appeared black.
  • If the pc crashed (blue windows) while CometEngine was opened, the next time Comet is opened it crashes.
  • Selecting a tile and setting the desired tile object via the inspector was not rendering correctly the tile.
  • The properties for the PanelAnimatorTimeline that were from a script were not showing the name of the behaviour.
  • When the InputWrapper script was deleted using the internal CometEngine filesystem or an external one, ProjectSettings/Input was incorrectly indicating that the InputWrapper already existed.
  • The "InstanciableEntity modified" popup text now fits correctly.
  • Importing a folder that already exists, now will overwrite file per file and import them again.
  • Clicking a mixer or a layout at the project was not focusing the correct one at the mixer panel.
  • Custom shaders were not able to use sprite renderer sprite texture.
  • Closing Comet while playmode was active caused the current scenes to be saved as the last opened. As a result, the next time Comet started, those scenes were reopened instead of the original ones from before entering playmode.
  • Tilemap brushes are now disabled when the panel is hidden.
  • Dropping a texture with single sprite mode to the inspector script field variable was not reacting. Now it is possible to set it.
  • Inspector script sprite fields now correctly accept textures in single sprite mode (previously dropping them had no effect).
  • The renaming input box for sub-assets was incorrectly positioned at the start of the next asset.
  • The renaming resource input box sometimes never disappeared, depending on the first action after requesting the rename.
  • An animator state node was sometimes not deselected when another item was selected, requiring a double-click to select it again.
  • Using the AssetIcon attribute on a Texture or Sprite field for a CometObject displayed the icon in the project file nodes as expected, but if later it was set to null, the icon remained visible.
  • TextEditor was not capturing the keyboard so it was impossible to write.
  • Animator nodes showing animation progress no longer grow in size.
  • Scripts dropped onto hierarchy entities that are not selected now correctly attach even when another entity is selected.
  • Dropping a script onto an entity in the hierarchy was deselecting everything.
  • When the window was in fulldesktop mode and the focus was gained/lost then it turned to black for one second.
  • The pref directory was not working on Linux.
  • Default build platform was always Windows, now the default platform is the platform where Comet is running on.
  • Joysticks and haptics were not working on Linux.
  • Switching from fullscreen to windowed mode could cause parts of the screen that were outside the new resolution to retain old frame data instead of being properly cleared to black.
  • Filtering a resource by type in the project panel could cause multiple resource types to appear selected at once.
  • Filtering by instantiable entities in the project panel did not detect any, even when they were present.
  • Undoing after modifying a Rect Transform was not restoring the entity to its correct position.
  • Undoing after deleting an entity could crash the engine.
  • Adding a canvas to an entity when that entity was already inside another canvas was scaling the current entity incorrectly.
  • Nested canvases were not rendering according to their hierarchy, which sometimes caused incorrect render layouts.
  • Nested canvases are now refreshed and adjusted correctly when the main canvas changes its render mode.
  • Editing a draggable number field with the mouse, confirming with Enter, and then editing a different field caused Undo to revert both edits instead of just the last one.
  • Disabling a CanvasGroup now stops applying its properties.
  • Fixed some issues when rendering a text with truncate activated.
  • Huge performance improvements when moving a RectTransform within large hierarchies.
  • Fixed an issue where adding an AudioListener after some audios had already started caused them to still be inaudible.
  • Fixed an issue where opening a prefab containing UI elements would not render them.
  • Loading scenes asynchronously could sometimes duplicate some entities.
  • Double-clicking a folder in the Project panel would select another file or folder occupying the same position after entering it.
  • Fixed error of Pivot/Center and Bounds transformation tool for sprite renderers when using the tool if that sprite had a pivot.
  • Launching the engine using a shortcut (such as the Windows taskbar) could cause unexpected behavior.
  • Closing the engine while Play Mode was active with the Play view maximized caused it to remain maximized the next time the engine was opened.
  • Selected entities and resources were sometimes deselected unexpectedly.
  • World Canvases were not sorted as expected.
  • The cursor could become stuck when hovering the Game view and not return to normal.
  • Crash when the panel animation was playing an animation and then another entity clicked to select it.
  • Panel Project mode list various fixes.
  • Painting a tilemap could sometimes freeze the entire editor.
  • Shift-selecting assets did not preserve the correct order.
  • Controller Axis Y was inverted.
  • The version label in the Project Manager menu bar is now correctly positioned regardless of window width or version string length.
  • Opening a project when the engine executable cannot be found now shows a clear error popup instead of failing silently.
  • OnDrawGizmos and OnDrawGizmosSelected are no longer rendered if the "Gizmos" option in the scene view is deactivated.
  • BehaviourUISelectable animation transitions now reset all trigger parameters before applying a new state, preventing stale triggers from causing unintended transitions.
  • AudioSource method PlayOnce was playing the AudioSample with loop instead of single.
  • Stopping playmode no longer leaves audio sounds playing in the background
  • Script variable names in the inspector now format correctly when containing consecutive uppercase letters.
  • Clicking a field in the Behavior Inspector that references an InstantiableEntity was not highlighting the actual asset.
  • Popup Select Entity now only shows the valid Entities instead of all Entities.
  • The editor was not closed if the was a window outside the main editor.
  • The Mute Audio option in PanelGame was not persisting after restarting the engine if it had been activated.
  • Shortcut profiles could not be changed because the UI was unresponsive.