Skip to content

Instantly share code, notes, and snippets.

@cmann1
Last active August 27, 2021 23:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmann1/dfae3ef5defb265f04b3e5c7931a30ee to your computer and use it in GitHub Desktop.
Save cmann1/dfae3ef5defb265f04b3e5c7931a30ee to your computer and use it in GitHub Desktop.
  • General:
    • Fixed login spinner not spinning
    • Fixed wrong page showing when selecting your name on character leaderboards
    • Fixed leaderboards not loading after searching in a tome
    • Fixed interacting with score sheet when main menu is open
    • Fixed some score sheet elements rendering above main menu
    • Fixed slow downs after saving or loading state multiple times
  • Editor:
    • Fixed colour picker rendering behind other UI
    • Fixed clicking other UI through colour picker
    • Fixed dust/spike brush flickering with vsync off
    • Fixed dust/spike brush size changing when zooming in and out with space
    • Fixed menus not updating when changing script trigger/enemy type
    • Fixed not being able to reselect end flags
    • Fixed editor UI fading when a textbox has focus
    • Fixed entities added in on_level_start not being removed when restarting or entering edit mode on the first frame
    • Fixed drawing an off-screen quad deleting the last quad that was drawn
    • Prop scale displayed in bottom left while holding Ctrl + Alt
    • Added sublayer tooltips when hovering sublayer numbers
    • Moving end flags
    • Deathzones and checkpoints are now selectable with the selection tool
    • Increased editor trigger list height
    • Script enemies can be selected with the trigger tool
    • Colour inputs accept hex shorthand (RGB => RRGGBB)
    • Colour picker to change fog colour for all sublayers. (Shift to update all layers)
  • Tools:
    • Fixed camera paths not drawn when Show Camera is on
    • Fixed submitting multiple replays with frame advance level end key
    • Debug zoom disabled while the dustmod menu is open
    • Multiple save states
      • 0-9 to load, Alt + 0-9 to save
      • Save/load modifier + Mouse wheel to change save set for up to 100 save slots
      • It's possible to rebind the save and load modifiers in the tools menu
      • Save and load shortcuts operate on the last used slot
    • Added "Show AI" tool option
      • Visualises various aspects of enemy AI, such line of sight.
      • AI paths now use this option instead of "Show Hitboxes"
    • Debug drag camera - When frame advance is on
      • Use Right mouse to move, and Middle click to reset
    • Added custom key bindings for most Dustmod options
    • Notifications when saving/loading state, debug zoom or speed changes, or toggling tools
    • Checkpoint and proxy end flag areas shown when "Show Hitbox" is on
    • Hit box colour options in Tools/Colour
    • Added separate show super hitbox option
    • Tool symbol displayed when "don't send" or "don't validate" replays is on
    • The Dustmod menu is accessible while any debug tool is on
    • Settings (excluding mods and plugins) are not stored with save states anymore
    • Improved iteration order rendering - AI and hitboxes are prefixed, and rendered at different offsets to help avoid overlap
    • Skill combo shown in debug data
    • Allow using frame advance takeover during nexus script playback
    • Debug data frame counter incremented in nexus
  • Script API:
class editor_api {
	bool hide_panels_gui();
	void hide_panels_gui(bool hide);
	bool hide_toolbar_gui();
	void hide_toolbar_gui(bool hide);
	bool hide_layers_gui();
	void hide_layers_gui(bool hide);
	
	/* Returns the selected trigger. */
	entity@ get_selected_trigger();
	/* Returns the selected entity. */
	entity@ get_selected_entity();

	/* Returns the selected layer. */
	int get_selected_layer();
	/* Sets the selected layer. */
	void set_selected_layer(int layer);

	/* Returns true if the given layer is visible. */
	bool get_layer_visible(int layer);
	/* Sets the visibility of the given layer. */
	void set_layer_visible(int layer, bool visible);
	/* Returns true if the given layer is locked. */
	bool get_layer_locked(int layer);
	/* Sets the locked state of the given layer. */
	void set_layer_locked(int layer, bool visible);
	/* Returns true if the given layer is visible and not locked. */
	bool check_layer_filter(int layer);

	/* Polls the keyboard for one frame, blocking editor shortcuts such as
	 * frame advance */
	bool poll_keyboard();
	/* Force the editor to act as if the mouse is inside of the GUI menu for the
	* remainder of the frame */
	void force_mouse_in_gui();
}

class scene {
	/* Convenience method for get_entitiy_collision_index that tries to return a
	* controllable. */
	controllable@ get_controllable_collision_index(uint index);
	/* Convenience method for get_entitiy_collision_index that tries to return a
	* dustman. */
	dustman@ get_dustman_collision_index(uint index);
	/* Convenience method for get_entitiy_collision_index that tries to return a
	* hitbox. */
	hitbox@ get_hitbox_collision_index(uint index);
	/* Convenience method for get_entitiy_collision_index that tries to
	* return a script trigger. */
	scripttrigger@ get_scripttrigger_collision_index(uint index);
	/* Convenience method for get_entitiy_collision_index that tries to
	* return a script enemy. */
	scriptenemy@ get_scriptenemy_collision_index(uint index);
}

class user_script {
	/* Convenience method for entity_by_id that tries to return a controllable. */
	controllable@ controllable_by_id(uint id);
	/* Convenience method for entity_by_id that tries to return a dustman. */
	dustman@ dustman_by_id(uint id);
	/* Convenience method for entity_by_id that tries to return a hitbox. */
	hitbox@ hitbox_by_id(uint id);
	/* Convenience method for entity_by_id that tries to return a script
	* trigger. */
	scripttrigger@ scripttrigger_by_id(uint id);
	/* Convenience method for entity_by_id that tries to return a script
	* enemy. */
	scriptenemy@ scriptenemy_by_id(uint id);
	
	/* Get the current microseconds. */
	int get_time_us();
}

class entity {
	/* Has this entity been removed from the scene. */
	bool destroyed();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment