PowerQuest 0.19.4
Loading...
Searching...
No Matches
Version History

Latest Stable: v0.19.4

To Update

  • Back up first! Things shouldn't break between versions, but always backup. Better still, use source control like git/svn. You only need to backup the Assets folder really.
  • Download The new version. (can use the link below)
  • Import over your existing project-
    • With unity open, double click the package.
    • Or click Assets -> Import Package -> Custom Package

Stable v0.19.4

Main Changes: (since v0.18)

  • Background Sequences:
    • Start sequences that run in the background, for background conversations, etc!
    • See E.StartBackgroundSequence(), E.StopBackgroundSequence()
    • If you previously added this as an extention you'll need to remove it, and note that StartCustomBackgroundSequence has been shortened to StartBackgroundSequence
  • Simpler Puzzle Scripting with Enums:
    • New functions that simplify enums for scripting puzzle logic in this style:
      if ( E.Is(eDoor.Unlocked) && E.Before(ePlanet.Exploded) )
      E.Set(eDoor.Open);
    • See E.Set() for documentation. (and also E.Is(), E.Before(), E.Reached() E.After() )
    • If you previously added this as an extention you'll need to remove it. (And note the Between and At functions are removed)
  • Lots of editor and runtime fixes and tweaks. See the full list below.

v0.19.4 (17 Dec 2024)

  • Tweaks/Fixes:
    • Fix for Gui buttons not updating hotspot correctly
    • Fix for => Globals.MyBlockingFunction not working in quest script editor.
    • StopSound anim event now works for props/gui

v0.19.3 - Beta (5 Dec 2024)

  • Tweaks/Fixes:
    • E.WaitForTimer() now working in bg sequences
    • Added comments regarding WaitFor not being compatible with Background Sequences.
    • Sprite importer cleanup
    • Fix for IButton.Show not working if started hidden
    • Removed debug log

v0.19.2 - Beta (29 Nov 2024)

  • Editor:
    • No longer switching to polygon tool automatically for regions/walkable areas any more (it was annoying)
    • Warning in walkable editor when there's multiple polygons since it doesn't actually work
    • Regions show bounds when selected but not editing them
    • Hot compile now compiles even when game is in blocking sequence, but waits until non-blocking to swap assembly.
      • Consequently "Restore" and "Restart" can now be called even during blocking sequences.
    • LipSync: Added tickbox to skip existing lipsync data when processing it rather than doing it all over again
    • LipSync: Skips through lines that don't need lipsync faster
    • Import settings for music clips (sets to streaming) and VO clips (sets compressed to 64, no pre-load)
    • Script export- Ids are now hyperlinks, clicking plays the line, if its in a VO folder. (eg. if script's in resources folder) Just trying this out really...
    • Script export- Functions now italicized.
    • Sprite importer: Added "reimport sprites" button to import editor. Might make this only visible if an option in advanced dropdown.
  • Scripting:
    • Region game obejcts now set active when they're enabled in script.
    • PlayFrom functions now work outside of developer mode, for E.Restart() with playfrom function specified.
    • Wait(0) now waits 2 frames which is useful for ensuring anims are stopped or transitions skipped.
    • Added quick 'BagOf' class to Utils for shuffled items
    • Added general properties to IGuiControl: Text, Color, Anim, Description, Cursor. So you don't need to cast to Image/Text/Button for these common cases.
    • Added IGuiControl.DuplicateControl() function. Useful for creating guis with dynamic buttons, etc.
    • Exposed IGui.VisibleInCutscenes
    • IGui.VisibleInCutscenes should now show gui immediately when set true
      • Gui dropdown HighlightForTime works while in blocking sequence
    • 9-verb: enum example uses new enum stuff
    • 9-verb: Exposed DefaultVerb in 9-Verb interface. Eg. P.Door.DefaultVerb = eVerb.Open;
    • Some code cleanup
  • Fixes/Tweaks:
    • Removed 0.1 sec adjustment for latency on lip-sync. Seemed more accurate without it, or at least, it wasn't helping :P
    • Fix: When loading earlier game that didn't have save data set for an object, it wouldn't reset the object
      • Eg: Save game, make progress, then load the save. Some things would keep data from the progress that was made.
    • Fix for clicking on props with BaselineFixed ticked
    • Fix for error loading save made with less characters
    • PQ sprite animator autocomplete fix for duplicates being added (hopefully)
    • Fix for sprite importer error when game is running
    • Fix for Loading game where Dialog Options have been added/removed in a patch. Should test more thoroughly
    • Fixed Quick-search quick load rooms with up/down/enter not working for rooms that weren't in folders

v0.19.1 - Beta (2 Oct 2024)

  • Added Preview Character button to character inspector. Creates a sprite you can move around in the scene to test tint/scale, etc.
  • Tweaks/Fixes:
    • Typing text is now skippable on Speech box guis.
      • Note: Set "Text No Skip Time" to zero in PowerQuest settings for best effect.
    • Camera: Fixes for smoothly moving between zoom levels and position overrides.
    • Camera: Parallax smoothness tweaks.
    • Added missing IProp.SetPosition(Vector3 position) function.
    • Tweaks to being able to cancel out of sequences while walking there. (Cancellable period now ends only when player finishes walking, instead of any character.
    • Sprite importer: Importing tags no longer overrides existing Loop or Full Rect options.

v0.19.0 - Beta (19 Sep 2024)

  • Background Sequences
    • Moved Custom Background Sequence extention to core PowerQuest.
    • Now supports multiple background sequences at once.
    • See E.StartBackgroundSequence, E.StopBackgroundSequence
    • If you previously used this extention you'll need to remove the duplicate functions. Note the names of start/stop functions have changed from the extention.
  • Enum Functions:
    • Moved "magic enum states" extention to core PowerQuest.
    • See E.Set() for documentation. (and also E.Is(), E.Before(), E.Reached() E.After() )
    • This simplifies using enums for puzzles in this style:
      if ( E.Is(eDoor.Unlocked) && E.Before(ePlanet.Exploded) )
      E.Set(eDoor.Open);
    • If you already have this extention you'll need to remove it. (And note the Between and At functions are removed)
  • Small things:
    • Character preview component: Allows you to drag around character sprite in the scene to preview scaling and tinting. (Need to add buttons to add these to the scene easily)
    • Added IPowerQuest.Shuffle(int min, int max).
    • Added "NextVoiceClipAffix" to SystemText so can switch between alternate VO takes.
  • Fixes:
    • Script editor function list is now a bit more robust. It reads the cs file for functions rather than only depending on reflection (which fell apart when the code wasn't compiled)
    • Fixed ShadowOff anim tag not resetting itself at end of animation.
    • Fix for null ref console error in QuestPolyTool
    • Fix for error creating new dialog script with OnStart button

Stable v0.18.12

Main New Features: (since v0.17)

  • PowerQuest polygon tool! (See video)
  • Text Parser Sytem with parser template game. (See video)
  • Script buttons highlight when they have a script associated with them.
  • Quick toggling between Scenes (Ctrl-Q, type and arrow keys then enter to jump to a scene.
  • Global and Room script function quick access. (Press the [...] button next to Global script/room).
  • Audio system updates. eg. Can now preview clips/cues from project window.
  • Improvements to Character inspector- Edit prefab button, Edit hotspot and pivot from character component.
  • Save system optimisation.
  • Loads of tweaks and fixes as usual, see the full changelist below.

Notes for updating:

  • If you're game's released, note that old save games won't load, so don't update for released games.
  • Renamed some advanced functions: eg. GetCharacters() to GetCharacters_SaveFlagNotDirtied()
    • Same for GetDialogTrees(), GetInventoryItems(), GetProps(), GetHotspots(), GetRegions()
    • If you're using these, you'll need to add "_SaveFlagNotDirtied" to the function name.
    • This is to make it super clear if using them that you have to be careful, since save dirty flag isn't set automatically. So changes won't be saved.

v0.18.12 (22 Aug 2024)

  • Fix for Parser - Consume keyword wasn't working in look interactions.

v0.18.11 - Beta (13 Aug 2024)

  • Fix for Parser data not saving in unity v2021+

v0.18.10 - Beta (07 Aug 2024)

  • Scripting functions:
    • Added E.FirstOption(int count) and E.NextOption and E.NextOccurrence.
      • These give a simple way to chain if-else statements with a shuffled or ordered list of responses. Eg.
          if ( E.FirstOption(3) )
              Display: Can't do that
          else if ( E.NextOption )
              Display: Won't Work
          else if ( E.NextOption )
              Display: Nope
        
      • See: IPowerQuest.FirstOption & IPowerQuest.NextOccurrence
    • Added QuestScript Editor shortcut => for E.WaitFor() functions.
      • Now when you want to wait for a custom function, you can use => at the start of the line.
      • Eg => OpenDoor(2) instead of E.WaitFor(()=> OpenDoor(2) );
    • Added Character WalkToBG(float x, float y, eFace faceAfterWalk); functions. (Just a shorter version of the existing one I was using a lot on Drifter.)
  • Fixes:
    • Open Editor Manual button now takes you to online docs
    • Removed old pdf manual for new projects
    • Fix for line-endings getting messed up when removing empty function/play from function
    • Fix for log error spam when quick switching scenes (not sure this worked))
    • Platform agnostic path separators in PowerSprite importer
    • Null ref fix in AudioSystem when restoring game
    • Fixed "Remove Empty Script" button in Headers
    • Moved save manager OnPostRestore to after room is loaded. Fixes BackgroundSequence extension
    • Fix for QuestDontSave attribute in custom save data (Eg. BackgroundSequences)

v0.18.9 (11 July 2024)

  • PowerQuest polygon tool! (See video)
    • Quickly draw out polygons for walkable areas, hotspots, regions, etc with a brush!
    • Right click to "erase".
    • Hold shift to add/edit points right click to remove them.
    • Ctrl-Scroll to change brush size.
    • No longer need to add "holes" for walkable areas, you can just hollow out section in the polygon
    • Easily add multiple clickable polygons on a single hotspot/prop.
    • Easily add holes in a hotspot/prop!
    • Tool opens automatically when selecting walkable area or region
    • "Edit Hotspot Shape" Button to open the tool for hotspots/props/characters
  • Character inspector updates
    • To make it less confusing for new users...
    • Added "Edit prefab" button to character.
    • Added a warning message to character inspector when editing them in the scene so you know changes won't be applied automatically.
    • Added Sprite offset field and Edit Collider button to top of character inspector.
  • Other tweaks/fixes:
    • Added extention function PowerQuest.ExOnRoomLoad() - when room scene loaded, before first Update and any script functions are called
    • Fix for gui navigation being consumed when it shouldn't be
    • Gui tweak for navigation in on button press
    • Trying async save strategy for pc. Disabled for now since extra complexity isn't actually saving much when files are only 20kb

v0.18.6 (18 June 2024)

  • Editor script button highlighting:
    • Added 13x666's code for highlighting script interactions that have functions already.
    • You can set a highlight color in PowerQuest tools -> Editor Settings.
    • Character list in rooms now only shows characters that have script interactions in the room (unless unfolded).
    • Room component now highlights buttons for functions that exist too.
    • Added "Remove Empty Script" buttton to Quest Script Editor when the current script function is empty, so you can delete it easily.
  • Save system:
    • Now only saving stuff that was ever marked dirty
      • Including hotspots,props,regions
      • Reduces Drifter saves from 1mb to 200k (though this would grow to 800 if you've interacted with eeeverything).
      • Speeds them up significantly as well
    • Compressing saves now too
      • Reduces 200k down to 20k at fastest
    • Change to use byte array buffer and memory stream rather than serializeing straight to file (useful for porting)
    • Refactor so file io strategy is seperated for porting
    • PowerQuest.TakeSaveScreenshot() function, for if you want to take a save screenshot at a particular time to pass to the NextSave
    • Save system no longer loads slot data from file after saving to save more time
    • Enabled [DontSave] attribute again (its useful and time cost is negligible)
  • Fixes:
    • Fix for characters not snapping to pixel on walk to. Causing potential visual glitches.
    • Fix for ICharacter.MoveTo so it doesn't turn to face
    • Fix for QuestText borders not rotationg
    • Fix: For error when adding/removing PQ items from the context menu
    • Fix: Can now cancel out of deleting default PQ items
    • Fixed Plr.ChangeRoom not having yield return added
    • Fix for Quest Gui sprites not updating immediately when change sprite name
    • Fix for text export section ordering (was completely not working before ha ha)
    • Fix: Room context menus were broken if not in folder
  • Tweaks:
    • Added context menu to gui controls in gui editor, but can't rename them (staged prefab making it a pita)
    • Renamed some context menu function items to better reflect their actual function names
    • Exposed atlas callbacks so loading screen can add callbacks if necessary
    • Removed ifdefs for video player functions on switch
    • Added E.WaitForDialogSkip(); - Waits until the current dialog has finished, allowing it to be skipped. Useful when you start a SayBG, do a bunch of other things, then want to be able to skip the rest of the SayBG()
    • Added tweaked version of 3rd party Unity2dPixelCollider tool. Tweaked for optimisation and powerquest specific stuff. licence included.
    • Refactored how GuiNavigation works
    • Can now use E.ConsumeGuiKey() and Gui.ConsumeGuiKey() to check and use a gui navigation key. Useful if you want to back out of a menu, etc. Only returns true if the input event wasn't consumed by a gui control. and in the case of the Gui version, if the gui is currently focused.
    • Added GuiNavigation component for overriding default contorller/kb navigation in menues
    • Gui controls now call up to base with Start() function
    • Sprite Anim: removed warning about attempting to play anim before object was awake
    • RectCentered function to clamp vector inside it
    • Gui: Alpha property can now be set in Gui Labels/Images/Buttons
    • Tweaks to PlayMusicSynced but they're edge case stuff that probably won't do nothin'.

v0.18.1 (10 May 2024)

  • Script Export:
    • You can now specify order for sections of dialog text to appear in scripts for voice actors.
    • Its pretty basic- Basically spits out a textbox with a section on each line, for you to re-order how you want. Missing ones go at the end in original order
  • Tweaks:
    • Plr.StartFacingCharacter(...) is automatically canceled when player leaves room
    • Prop collider must be in prop gameobj itself to be considered "clickable". Previously nested colliders would count when they shouldnt...
  • Fixes:
    • When using StartFacingCharacter, no longer faces characters that aren't in room
    • Added missing audio system properties (MusicHandle and FalloffMultiplier) to QuestScript autocomplete
    • Fix for HandleInteract() bug intruduced in last beta

v0.18.0 (30 April 2024)

  • Text Parser Sytem with parser template game. (See video)
  • PlayFrom testing feature improvements. (Thanks 13x666)
    • Select/Add/edit "PlayFrom" functions from the dropdown at the top of the Room tab
  • Global and Room script function quick access.
    • New [...] button next to the script buttons.
    • Shows a dropdown of the main functions to jump to.
  • Quick toggling between scenes (Thanks 13x666)
    • When quick-searching with Ctrl-Q you can now use arrow keys to select room, and enter to open that scene.
  • Audio:
    • Added reverb level to audiocue
    • Added Fade In Time to audio cues
    • Added StartDelay property and AfterDelay() function to Audio handles.
      • So you can do Audio.Play("Gunshot").AfterDelay(0.5f); to make it play gunshot in half a sec's time.
    • Audio cue and Audio Clip fields now have a "play" button next to them for previewing cues/clips
    • Added custom property drawer for strings with [AudioCueName] attribute- adds audio cue field and play button
    • Footstep Sound field now has optional audio cue reference and play button
    • System audio now updates active clip immediate when SetVolume is called rather than next frame
    • SystemAudio UpdateCustomFalloff function now updates all matching handles (fix for using it when entering/leaving rooms with same ambient quickly)
    • Fix for SystemAudio not playing same clip even if triggered from different cue
    • SoundStop tag added to CharacterComponent- So you can start/stop looping sounds within the same animation. Fades sound out over 0.1 sec.
  • Tweaks/Fixes:
    • Removed "Checking for version" debug log
    • Fix for script breaking when using a dialog option that wasn't found.
    • Added partial funcs to QuestScript editor: ExPostProcessOnSave, ExPostProcessOnLoad
    • Added partial func to Room ExInitialise(Gameobject prefab)
    • PQ: more informative comment when character missing anim
    • Tweak to script style to be nicer on phones
    • E.DebugSetLastRoom() now sets that room as having been visited
    • Added GizmosEx to util class, hasd GizmosEx.DrawText and GizmosEx.DrawCircle funcs
    • Sprite importer highlights notes at top now
    • SetBaselineInFrontOf fix
    • Fix: Weird combo of anim prefix and transition anim and idle set same as talk anim stopping transition from playing.
    • Setting Gui Button or Gui Image Anim properties now works even if there's no SpriteAnim component.
    • Fix for Sprite animator stealing focus constantly
    • Trialing autocomplete allowing :: to show animation lists of player, and :CharName: to show anims of character, for custom script functions
    • Maybe fixed an atlas error (but needs testing so may remove again)
    • Fixed script editor auto-load when using 'handle' functions like HandleInteract, HandleLookAt, etc

v0.17

Main features since v0.16.12:

  • HD Game Template: Makes it easier for high-res games (See gif);
  • New features in script exporter, and csv import/export.
  • Interruptable dialog. (See gif) Call E.InterruptNextLine(float time) to have characters interupt each other
  • Built in typewriter effect for text. (See vid)
  • QuickSearch tweaks for easy room switching in editor.
  • Lots of others, check the list below!

v0.17.3 (7 December 2023)

  • Fix for error when starting an audio clip from right near the end.

v0.17.2 (4 December 2023)

  • Tweaks:
    • "Facing Segment Angle" can now be set in PowerQuest project settings. Lets you tweak the angle that up/down or diagonals are used. (Defaults to 45 deg)
  • Exposed functions for PowerQuest extentions:
    • In PowerQuest
      • partial void ExOnCharacterEnterRegion(Character character, RegionComponent region);
      • partial void ExOnCharacterExitRegion(Character character, RegionComponent region);
    • In QuestClickableEditorUtils:
      • static partial void ExOnSceneGui(MonoBehaviour component, IQuestClickable clickable);
    • In Character:
      • partial void ExOnActiveInventorySet(IInventory newInventory);
    • In SpriteAnim:
      • partial void ExAwake();
      • partial void ExPlayStart(AnimationClip clip, float speed);
      • partial void ExPlay(AnimationClip clip, float speed);
      • partial void ExStop();

v0.17.1 (27 November 2023)

  • PowerSprite Animator:
    • Can now drag audio cues into animation timeline to quickly add sounds to them!
    • Capped editor framerate at 120 so it doesn't push your cpu fans so hard!
  • Tweaks/Fixes:
    • Calling Shake() with a lower intensity no longer overrides existing shaking (unless 0 is specified, which stops it)
    • Fix for recently broken audio panning

v0.17.0 (24 November 2023)

  • Fixes:
    • SystemAudio cleanup
    • Tweak to Utils.Interpolate variable names
    • Music with loop points wouldn't stop unless fadeout time was set
    • Fix for ScriptEditor selecting an if-statement that used a function name instead of the function itself
    • Fix for panned sfx pan getting blatted
    • Fix for sprite anim error when object param was null
    • Fixed pan set in cue being ignored for character animation sound events
    • Anim event with object param no longer trigger twice when on first frame
    • Setting room's PlayerVisible in script now updates player visibility
    • Null check for cameras (for custom camera stuff)

v0.16.17 (8 November 2023)

  • New HD Game Template!
  • NB: Save game version increased to 4. So old save games wont load if you update to this version. (Let me know if this is an issue)
  • Tweaks:
    • QuestText border now updates when font setup changes
    • Tweaked comment on region tint
    • Tweak for Autocomplete for strings in quotes tp better order them when starting quote hasn't been typed
    • Added notes section to Sprite Importer
    • Added Utils.ColorFromHex()
    • Added QuestText.SetTextSpritePlatform() so you can have the same sprite tag (like [A]) map to different buttons depending on platform/controller.
    • EnteredFromEditor now works if QUESTDEBUG define is set in project settings even if not a debug build
  • Fixes:
    • Verbs template fixes
    • Added some null checks when processing text in SystemTextEditor
    • Fix for exception when calling functions via reflection that have the wrong number of parameters
    • Fix for Walk call not working when "anywhere" set, if was already walking
    • Fix for possible infinite loop.
    • Fixes for turning anims when going from Down (but slightly left) to Down (but slightly right).
    • Cleanup of character variables. (Incremented save manager version since stuff's changed in Character)
    • Facing fallback no longer set twice when call FaceDirection (was breaking turn anims, going from different sides of same up direction. Though it is more accurate...)
    • Fix for skipping cutscene during character animation where they were hidden/shown again ending with them not returning to idle anim
    • Fix for skipping cutscene when character walking in bg leaving them walking on the spot sometimes.
    • SystemTextEditor extra mouth shapes field was missing
    • Some fixes for Unity v2022

v0.16.16 (13 September 2023)

  • Tweaks:
    • Turn animation system now uses the directions of animations rather than the internal direction. So if they only have a right facing anim, you don't have to worry about transitions from up, down, etc
    • Added 'Text Auto Advance Delay' option to PowerQuest Settings. Adds an extra delay after audio finishes before going to next line.
    • Renamed InterruptNextDialogLineEarly to InterruptNextLine
    • InterruptNextLine() function refactored so lines are still skippable
    • Tweaked comment for DialogOption.TimesUsed to make it clear it'll return 1 the first time the option's script function is called
  • Audio system stuff:
    • Made SystemAudio a partial class for extentions
    • Added NarratorMixerGroup to SystemAudio- Set this to override the mixer group used for narrated dialog speech
    • Added To/FromDecibel util functions to SystemAudio
    • SystemText PlayAudio function now takes an optional mixer group
    • Fix for null ref if audioListener not set
  • Fixes:
    • Adding or removing rooms/characters/etc adds/removes them in the lists again!
    • Fix for error when deleting characters, etc
    • Fix for crash when using PauseAllSounds when track with loop section is playing
    • ICharacter.ClearInventory() now also clears any active item again
    • Characters now handle LoopStart tags with no LoopEnd tag (so will loop back at end of animation)
    • DialogOption.TimesUsed now returns correct value in option script.
    • Latest "main branch" csvfile dll was crashing on import. Went back to Dom's version.
    • Fix for callbackOnEndSay not getting called when Auto-advance delay in use

v0.16.15 (23 August 2023)

  • Support for multiple ISpeechGui components in speech guis
  • When game cursor is hidden, cursor is now shown when testing in editor
  • For portrait speech style, SayBG dialog is now displayed above characters head (Like AGS does it)
  • Game text tools layout reorganised and split into dropdowns
  • Region tweaks
    • Added OnEnterRegionBG and OnExitRegionBG functions- Similar to OnEnterRegion, but is non-blocking and called even during blocking sequences
    • Added PlayerOnly tickbox. When ticked, OnEnter/Exit region functions are only called for the player character.
    • AfterAnyClick function should no longer be triggered by entering/exiting regions
  • Transitions should be more robust now. I tried to fix lots of edge cases when switching anims muliple times in same frame when there's loop tags and/or transition animations.
  • Fixes:
    • Talk anim was not being played
    • Gui control descriptions are now processed for localisation
    • Text Only Dialog Display now works when there's speech. (now plays audio line silently to preserve timing and lip sync)
    • Music volume was breaking when set to zero, then turned up again
    • for camera breaking when Time.deltaTime was zero at any point

v0.16.14 (4 August 2023)

  • Interruptable dialog lines
    • Function to allow characters interrupting each other, talking over the end of the last line of dialog
    • Call E.InterruptNextDialogLineEarly(float bySeconds) to make the next line get cut off short
    • This pushes the line into the "Background" x seconds before it ends, allowing characters to talk over it, (or play anims, etc)
    • Thanks Dom (Irreverent Pixel) for this feature
  • Quick search improvements
    • Ctrl+Q jumps to powerquest Quick Search, even from other tabs
    • So can press ctrl+q and start typing name of room/character, etc you're looking for
    • Clicking a scene from quickserach now clears the serach and switches to room tab
    • Quick search expands all matching folders automatically
  • OnPostRestore changes
    • OnPostRestore is now called on scripts after the room scene is loaded
    • OnPostRestore in Rooms is now only called for the current room
  • Added typewriter effect to QuestText component
    • Set TypeSpeed to the characters per sec you want in QuestText components to enable it.
    • If typewriter effect is enabled on dialog text or Display gui text, clicking while its typing will show the complete line, and then clicking again skips.
  • Fixes/tweaks:
    • When start or end talking during turn anim, it now completes the turn anim (if talk anim is same as idle)
    • Re-ordered some things in System Text Editor for more logical grouping
    • 'All' button now just toggles between 'highlighted' and 'all', no longer shows filter (for now).
    • Fixed tooltips in SystemTextEditor
    • Fix for unity spitting out 'Invalid GUILayout state' error when changing functions in script editor in unity 2021
    • Transition outs will work for Loop/StartLoop tags even if anim is stopped before tag is hit.
    • Fixes for SkipTransition. Should skip even if multiple changes of anim in 1 frame (due to talk, state changes, etc)
    • Users should no longer have to remove VisualScripting package for new projects in unity v2021+ (Thanks Dom)
    • Object and subfolder order is now saved again
    • Removed 'refresh' button from main view added in last update
    • Fix for error removing unused ids in System text
  • Thanks again to Irreverent Pixel for helping with a bunch of these improvements!

v0.16.13 (19 July 2023)

  • Fix for error importing PowerQuest when VisualScripting package is in project, for unity 2021 and greater.
  • Lists of Rooms/Characters, etc now show foldable-subfolders if there are any.
  • Script Exporter:
    • Script exporter can now optionally highlight the text of the characters listed in the "From Characters" field.
    • Can now skip dialog lines which have already been recorded.
    • When skipping recorded dialog, sections with some recoreded dialog are not highlighted and/or greyed out
    • Moved gui script data into same section as gui descriptions
    • Replaced 'From Rooms' with 'From Scripts'. Only sections of script specified will be included.
      • Can be specific. Eg. "GlobalScripts, Barney, Forest, Bucket", etc
      • Or general. Eg. "Rooms, Characters, Items, Guis", etc
      • Or a mix. There's a tooltip for more examples
    • Added min-width property to script html, trying to get it to render better on phones. Still better to save as pdf from a browser though...
    • Default csv encoding set to excel for my own benefit...
    • Tweaked "asset database requires import" message to suggest start/stopping game as a fix.
  • Audio:
    • Disabled Musicloop preview when games not running, since it doesn't work. (Also fixed related editor crash)
    • Clicking Play on a clip in the project window stops other clips first.
  • Exposed AntiGlide property in ICharacter
  • Thanks to Irreverent Pixel for helping with a bunch of these improvements!

v0.16

Main 0.16 features:

  • Editor organisation: Object type filter buttons, quick search and sub-folder support for quest objects
  • Automatic letterboxing to handle unsupported aspect ratios. Just set the range of Horizontal sizes supported in PowerQuest tools.
  • GUI: Text field control and keyboard/controller navigation support
  • Characters: Anti-Glide mode
  • Audio: Music loop points, play cues from project window and preview in animation editor
  • More Text tools for CSV export/import
  • Another gorllian fixes and tweaks

v0.16.12 (21 June 2023)

  • Renamed "Horizontal Resolution" to "Letterbox Width" to make it more obvious it controls letterboxing.
  • Fix for letterbox bug when changing resolutions.
  • Default letterbox width is now 16:9 only.
  • Optimisation to minimise garbage collection. (Thanks to Arcnor!)
  • Fix for room points being hard to select for high res games.
  • E.FadeColor improvements:
    • Added E.FadeColorDefault property to set the color that fades return to after calling E.FadeColorRestore()
    • E.FadeColor is now restored to E.FadeColorDefault automatically after the next fade in (I got sick of how many times i'd had to fix bugs where i'd forgotton to call E.FadeColorRestore()).
    • Setting E.FadeColor twice in a row no longer breaks E.FadeColorRestore().

v0.16.11 (13 June 2023)

  • Fix for jerky player motion. (Changed a bunch of Snap() into SnapRound())
  • Fix: Gui scripts are now scanned for dialog during ProcessText
  • Added Audio Cue to "Create" section of unity menus

v0.16.10 (7 June 2023)

  • Added IRegion.ContainsCharacter() and IRegion.ContainsPoint() functions
  • Fix: Text editor no longer removes $ from before strings when processing text
  • Can now specify custom screen padding to QuestText (for dialog text staying on screen)
  • Hotspot and prop components are now partical classes.
  • Tweak to prop moving code to make it possible to check if currently moving (in extention function)
  • Cursor cleanup, fix for null clickables

v0.16.9 (23 May 2023)

  • Fix for people updating from 0.15 (sets letterboxing width automatically)

v0.16.8 (22 May 2023)

  • Updated pdf doc
  • Fixes for new projects

v0.16.7 - Beta (17 May 2023)

  • Template project fixes
  • Ctrl-M editor shortcut now shows offset and distance from last time Ctrl-M was pressed in console
  • Fix: When setting character visible at same frame as change its anim, it no longer shows a frame of the previous anim
  • Added ability to set text encoding for CSV, including ones I tested for Excel or Google Sheets. Stops them screwing up special characters when importing/exporting to game text
  • Fix for async loading causing OnEnterRoom functions to not be blocking
  • Fix for restoring a game while audio was fading out to stop (it would continue playing previously)

v0.16.6 - Beta (11 May 2023)

  • Added ability to set text encoding for CSV, including ones tested for Excel or Google Sheets. Stops them screwing up special characters when importing/exporting to game text
  • Fixes for SystemText to handle dialog using Plr or Player instead of character name
  • Fix for UnhandledUseInvInv not being called

v0.16.5 - Beta (10 May 2023)

  • Cursor now has settings to allow inventory outlines while hovering over other inventory in the gui
  • Editor handles in scene are now scaled with the game scale (so not tiny in high res games)
  • Fix for errors with non-blocking inventory interactions if item was removed

v0.16.4 - Beta (5 May 2023)

  • Anti-Glide mode added to characters.
    • Makes them only move when animation frame changes. See gif here
  • Room loading optimisation:
    • Async room loading during fadeout
    • Async atlas loading during fadeout
    • When loading atlas, now the atlas of the room before previous room is unloaded
    • Code Cleanup of fades for room transitions
  • Tweaks:
    • GetOption() and similar functions now return IDialogOption instead of DialogOption
    • Added FalloffDistanceMultiplier to audio system. Lets you easily change radius for audio falloff mid-game for times where you want to bring it in or expand it out temporarily.
    • ICharacter.StopWalking now returns null instead of an enumerator.
    • WaitForTransition and WaitForIdle are no longer skippable by default, pass 'true' in to make them skippable
    • Added IGui.HasControl() function to check if a control exists in a Gui
    • Disabled atlas unloading from the last update. Seemed to be causing hang in the editor, and it's uncertain whether it actually saves memory anyway.
  • Text system:
    • After importing text from CSV, you can now choose to update the text in your scripts and GameObjects from the imported text.
    • Added ability to remove unused text ids from code (ie: ones that don't already have VO)
    • Text editor now always updates default language when importing from CSV
  • Audio:
    • Added "locate" button to audio cue (the magnifying glass one)
    • Audio sources now named with cue name instead of clip name for help when debugging
    • Null reference fix
    • Character sounds from anim tags now play at character position
    • Fix for previewing sound cues from animation editor
  • Fixes:
    • Fix for fade in not working after restoring game
    • Skippable cutscenes that include room changes spans room changes now works
    • Fix for WaitForTransition() also skipping any transition that started on next frame
    • Fix for background sequences breaking when a player cancelled an interaction. Note that E.WaitFor() should not be used in background sequences
    • Fix for potential hang in WaitForTransition (if moved character to another room)
    • E.UseFancyParallaxSnapping setting now save/restores correctly
    • Template games: Moved localized strings to separate lines so they localize correctly in save gui script.

v0.16.3 - Beta (24 March 2023)

  • Audio:
    • Added 'play' button next to audio clips in project window.
    • Loop Sections:
      • Audio cues can now have a "Loop Section" specified with start/end time. So you can set a section of a track to loop back once it reaches a certain point. Most for music with an intro/loop/outro. The track will play to the 'End Time' before jumping back to the 'Start Time'.
      • Loop Sections can also specify a fade in and fade out time for crossfading back to earlier part of the track.
      • There's a "test" button to start the cue a couple of seconds before hte loop for testing it, though this only really works while the game is running.
    • Some tweaks to make crossfading synced music sync better. (adds a delay before starting the crossfade so the music has time to spool up). Though not tested so not sure how well it works yet.
    • SystemAudio.Stop() function can have an 'afterDelay' time passed in when you want a sound to fadeout/stop after time.
    • Hitting play on audio cue while game is running no longer stops game audio.
    • Fix for sound cues not working in animation window after playing one from the cue.
  • Editor/Game:
    • Added search field to main PQ window to quickly filter. Hit 'esc' to clear again.
    • Added 'zero' button to transform inspector and tidied it up.
    • When quest script has too many functions (more than 40), hotspots and prop functions are sorted into subfolders in dropdown list.
    • You can now interrupt one SetPositionOverride() with another without the camera snapping.
    • Quest script function list is now sorted.
    • Attempts to fix parallax overshooting then settling, can still improve more with tweaking
    • MinMaxRange drawer now works as "delayed float" so doesn't mess up when you're in the middle of typing.
  • Scripting:
    • Added E.WorldPositionToGui() and E.GuiPositionToWorld() functions for converting between coordinate spaces on the 2 cameras.
    • Made IQuestScriptableInterface into partial class for extentions.
    • String extention EqualsIgnoreCase() and StartsWithIgnoreCase() eg. myString.EqualsIgnoreCase("hello").
    • Added [QuestScriptEditorIgnore] attribute you can add to functions to stop them appearing in QuestScript editor function list.
    • Added E.WaitForTimer(string timerName, bool skippable). Waits for a timer set with E.SetTimer().
    • Can now add UnhandledInteract and UnhandledUseInv functions to rooms, these are called before falling back to the ones in global script.
    • When auto-load ticked in QuestScript editor- and UnhandledUseInventory function is hit, if ( I.Blah == item ) {...} is copied to the clipboard for easy pasting when adding random responses.
    • Added optional bool parameter to WaitFor that stops the function from AutoLoad-ing the QuestScript editor window.
    • When UnhandledUseInvInv doesn't do anything, the regular UnhandledUseInv will now be called. So you can leave UnhandledUseInvInv empty if you don't need it.
  • Fixes:
    • AA Shaders now multiply alpha, fixes seams in pixel shader.
    • Fix: Cursor no longer breaks when overridden to hover over null clickable.
    • Gui Fix: Error fix for gui image.
    • Gui Fix: KB can no longer press inactive Buttons.
    • Gui Fix: Button alpha working correctly again.
    • Fix for CharacterInRegion return false for player during fade-out on change room.
    • Fix: 'SkipTransition()' works immediately after starting an anim, or changing anim state. (by setting a flag to ignore transitions until end of update).
    • Fix: Characters no longer play audio cues from animation events when not visible. (And undid previous thing that stopped anims playing since it broke stuff).
  • Misc:
    • Made EditorLayouter util for laying out editor window rects.
    • Removed camera's "GetPositionOverridePrev()" function that's not used.
    • Cleanup of some duplicated strings.

v0.16.2 - Beta (16 February 2023)

  • Automatic letterboxing: Set the min and max allowed width of your game resolution in PowerQuest project settings, and if people run at other resolutions the game will be letterboxed/pillarboxed automatically.
  • Custom transform inspector, better for 2d. Can toggle to advanced for built in 3d transform inspector
  • Audio:
    • Sprite animator window now plays Anim Event sounds when previewing animations
    • Added playback controls in the project window for audio cues
    • Added buttons in project view for audio clips, to either create cue, or add to a currently selected cue
    • Audio cues now have low/high pass filter values directly in the cue (don't need to attach those filters separately)
    • Added min-max range attribute for nicer volume/pitch controls
    • Added button to cue inspector to 'find audio clip to add' shows list of all SFX or Music audio clips based on cue type
    • Audio cues are now automatically labeled 'SFX' or 'Music' to aid in searchability
    • Can now select multiple clips and click "new cue" button to add all to new cue
    • Adjusting volume/pitch/pan of cue while playing in editor adjust the preview immediately
    • Audio cue inspector layout tweaks
    • Wanted to change all audio cues to scriptable object, but it'd break back-compatibility :/
  • Gui:
    • Gui keyboard/Control support- see the last section in the Gui manual
    • Keyboard/Controller "auto navigation" in gui buttons.
    • Added ISlider.KeyboardIncrement property. Useful if controlling from keyboard and you have a specific number of 'increments' on a slider.
    • Gui buttons now have Alpha property. For buttons this is set independently of the alpha in button's colors
    • Fix for deleting items from grid control at runtime
    • Buttons simulate click with coroutine when using controller so you see down state. May be useful in future to have buttons that play an animation on click, before calling their 'OnClick' event.
    • Can now set sounds for gui buttons and sliders, hover and click and slide actions.
    • Duplicated extention functions to sliders that were in buttons
    • Sliders can now have 'handle padding' set, so that hotspot can go right to edge without the handle going to far either side of slider.
  • Other Tweaks:
    • PowerQuest window opens automatically when first installing PQ package
    • Added message when deleting template-game objects, mentioning that you'll need to remove them all, or alternatively just re-name and re-use them.
    • Added gui kb navigation to template games
    • Added '.' fast forward dbeug key to template games
    • Trying "Loop" tag that pauses at frame so dont need both LoopStart and LoopEnd tags when there's only one frame in the middle
    • Sprite animator: Nodes now snap to nearest 0.5 when first created
    • Walk and turn anims no longer skip currently playing 'transition' anim.
    • Fix for starting walk during turn-to-face breaking character anim
    • Added field in PowerSprite inspector that shows the currently playing animation state while the game is playing.
    • Prop animations are now paused until "enabled". So sound tags will no longer trigger, etc.
    • Added partial extention function when Character instance is spawned to Character. (ExOnSpawnInstance)
    • Added ability to disable fonts having their filtering set. In case users want to override fonts to be bilinear to do AA or anything
    • Autocomplete of animation names: If non-directional anim found, doesn't add directional anim too.
    • Room atlas can now be loaded from resources so not all rooms are loaded at startup. (WIP, may be removed)
    • Character Face functions now wait for anim transitions before starting
    • Added DrawCircle and DrawRect to SystemDebug
    • Added "AfterAnyClick" function which is called after any other sequence. Useful when you want to trigger something every time the player does something in a room.
    • ICharacter.WaitForTransition() and ICharacter.SkipTransition() now work when there's a Loop or StartLoop event, even before that tag is hit. (ie: you can wait until an anim's transitioned to the 'loop' section)
    • Added IPowerQuest.IsDebugBuild property. Returns true if Application.isDebugBuild is true OR if QUESTDEBUG is defined. So can have debug keys available in non-development builds.
    • OnGameStart in GlobalScript is now called AFTER creating guis, camera, and cursor, during the first LoadRoomSequence.
    • Minor Tweak to sprite import editor gui
    • Turn Anim tweaks
    • Camera/prop movement tweaks
    • Added 'Anti-aliasing' pixel shaders for those that want to try them
    • Now adding PQ shaders to unity's 'Always Included Shader' list for new projects (or when updating to this version)
    • Anti-aliased pixel shader added to camera for template games.
    • Added messagebox when deleting objects from template game, so users know that it might stop compiling if they don't remove them all.
    • Removed some debug comments
    • Character's collected item property interface made nicer (Mainly because I wanted to use property drawer code somewhere so I could re-use it later)
    • QuestText now works if PQ not created yet, so can be used on a game loading screen
    • Changed some anim-tag errors into warnings
  • Fixes:
    • Fixed when restoring sprite offset
    • Changing mouth anim no longer restarts current anim
    • Fix for Loop tickbox no longer working in importer
    • SystemAudio removed if it's in the scene on start up (which happens after testing cues sometimes)
    • PowerSprite now using Material property blocks to set shader properties. Fixes issues where setting offset would set all instances offsets in when editing.
    • Disallowed mlutiple sprite animator node components on same gameobject (had it happen by accident and was hard to track down the bug)
    • Fix: Saving at start of OnEnterRoomAfterFade should now work correctly
    • Fix: Saving in OnEnter function gave incorrect LastRoom on restore
    • Props are no longer set 'clickable' if they don't have a collider
    • Save system no longer tries to serialize textures

v0.16.1 - Beta (7 October 2022)

  • Editor:
    • Main tab now has subtabs for Rooms, Characters, Items, Dialogs, Guis (and All)- (As suggested by 13x666)
    • Quest object subfolders. When Rooms/Characters/Etc are in a subfolder, you can filter lists to only show that folder by clicking the little 'All' button. (Thanks Arcnor)
    • PowerQuest Editor Settings now stored in a serializable object so they're saved to disk rather than being lost if PQ is closed
    • Added ablity to customise the script editor with new regex functions for:
      • Functions that have 'yield return' added automatically
      • Commands that should be syntax highlighted and/or autocomplete
      • Phrases that should be find-replaced when saving/loading between c# and quest script
  • Gui System:
    • Added TextField control to Gui system
    • Added functions for handling which control has "Keyboard focus"
      • Use E.GameHasKeyboardFocus property to check whether keyboard keys should work in scripts (or whether gui is using it)
      • IControls.HasKeyboardFocus property where you can get/set whether a control has keyboard focus.
      • Controls now have OnKeyboardFocus/Defocus functions, called from PowerQuest, override them to use events. They also call gui scripts like OnKeybaordFocusMyGuiControl()
  • Save system optimisation:
    • Optimisation where only 'dirty' rooms/characters/etc are re-serialized completely.
    • First save is slightly slower, but then future ones are up to twice as fast, and don't scale up so much with project size.
    • Does invalidate existing save files, but can be disabled with a #define if desired
  • Tweaks:
    • Prop "PauseAnimation" Prop now works for regular anims, not just after PlayAnimation is called
    • WaitWhile and WaitUntil now end early when skipping cutscene. Before it only did it if "skippable" was true, but that is for using "dialog" skips.
    • Added GetNodeAngle(int nodeId) to PowerSprite
    • Sprite importer
      • Clicking '...' next to the image path now opens file dialog at that image path (or project root if not found).
      • 'Loop' tickbox enabled in Sprite (Thanks @IrreverentPixel)
      • Can now specify layers to import or ignore in advanced import settings (aseprite only)
    • Audio:
      • Voices can now be localised. Add them to a subfolder under Voice with the language code. Eg: Resources/Voice/ES/Dave123.wav
      • Added Audio.MusicHandle to get the current music audiohandle
      • Added AudioHandle.cueName to get the cue name that the handle came from
      • UpdateCustomFalloff now handles sounds that are fading in/out
      • FadeIn now works correctly for sounds that have a start delay
      • Removed 'Sound' prefix when creating audio cues using Ctrl+Shift+Alt+C
    • Added ICamera.GetTransitioning()
    • Updated comment color of irreverent palenight script editor theme to be more visible
    • You can now pass nothing to IRegion.GetCharacterOnRegion() and it'll return true if ANY character is on the region
    • IRegion.GetCharacterOnRegion() now only returns true for characters that are in the room and not disabled.
    • Added ICharacter.Idle property and ICharacter.WaitForIdle() function. Use when to know/wait for a character to be idle (Not walking/talking/animating/turning)
    • Minor optimisation for Sortable component
    • Exposed ICharacter.WaitForTransition()
    • Added IInventory.Anim property. Sets all AnimGui, AnimCursor, AnimCursorInactive. For games that don't differentiate
    • Vector utils cleanup
  • Fixes:
    • When characters have walktobg with a "then face" cutscenes now make them face that direction as well as teleporting to their new position
    • Gui image fix. Images are now updated immediately when changing Anim property
    • Fix for script replace regexes list
    • Quest Text fix for fading text in/out
    • Region "distance" now takes into account region's transform position
    • Fix for Util vector extention function Vector2.NormalizeMag()
    • Some fixes for Unity 2022 (Though there are still issues afaik)
    • Fix: Point names no longer allow accidental trailing/leading space (thanks Arcnor)
    • Fix for transition anim not found
    • Fix for "Another coroutine is already waiting for this coroutine" error when skipping cutscene after room change
      • WaitUntil and WaitWhile are no longer skipped when SkippingCutscene, unless 'skippable' flag is passed in true
    • Fix for turn animation not playing when call Face() immediately after WalkTo()
    • Fix for character finishing their "walk" while talking. If no talk anim found, they now return to idle anim instead.
    • Sprite Import editor null error fix
    • Fix for FirstUse and UseCount being incorrect during the interaction with it, if called immediately after the initial 'WalkTo'.

v0.15

Main 0.15 features:

  • New integrated GUI System. See the documentation and tutoral video here.
  • New template GUIs- Save/Restore, Options, Prompt popups
  • Support for latest Unity (2020.3 LTS now recommended)
  • Region tinting can fade as character walks in/out of a region
  • Smooth camera zooms and pans. See gif!
  • Easing curves for moving props and characters
  • Setting now saved in separate file, so loading a game doesn't mess with your volume, etc
  • Better support for animating the cursor
  • Characters can now have AnimPrefix, for easier costume changes and the like
  • Characters can walk/animate in the middle of talking, and dialog text moves with them
  • You can now use Regions can now block off a walkable area, rather than having to make separate areas
  • Exposed more of PowerQuest to be customisable and extendable
  • A gorllian fixes and tweaks

Note before updating:

  • The minium unity version is now Unity v2020.3. Update your project to at least this version before updating PowerQuest!
  • If updating a project with the 9-verb gui, first update to 0.14.10. (Otherwise you'll get an error)
  • Fade in/out changed slightly in 0.15. So even if you FadeOut twice, you now only have to call FadeIn once. Pass a string 'Source' to the Fade functions if you want to avoid this.
  • If you have a GUI named 'Options', 'Save' or 'Prompt'. Rename them before updating. (So they don't conflict with new GUIs with those names)
  • If updating from v0.15.3, you'll need to delete files Assets/PowerQuest/Scripts/Editor/QuiButtonEditor.cs and Assets/PowerQuest/Scripts/Editor/ImageEditor.cs

v0.15.13 (4 March 2022)

  • Changes:
    • Added IPowerQuest.DisableAllClickablesExcept() functions that take specific hotspots/props, rather than strings.
    • Added ICamera.Position and ICamera.Zoom properties
    • Changed hotspot/prop script-name to be readonly field, instead of hidden in inspector. Makes it easy to hackily duplicate a hotspot or prop ;)
    • Audio: By default, Calling SystemAudio.PlayMusic() with a cue that's already playing will no longer restart the music (though it will still crossfade volume if that is different). This behaviour can be changed with SystemAudio.ShouldRestartMusicIfAlreadyPlaying property.
    • Animation event "triggers" are no longer case sensitive (eg Plr.WaitForAnimTrigger("hit"); matches the "Hit" event)
    • Script editor: double clicking words with underscores now selects the entire word (for things like m_myVariable_3)
    • Script editor uses 'command' key on OSX for saving and zooming. Also removed the ctrl+enter to save, since it's been replaced with ctrl+s
    • Added IPowerQuest.HandleOption() function to easily start a dialog option script from elsewhere. Note, this doesn't actually start the dialog, just runs the script function. Eg E.HandleOption(D.TalkToBarney, "AskAboutTrees");
    • Added overrides to ICharacter.SetPosition() that take a prop/hotspot/character. These position the character on the passed in object's Walk-To point. Eg. C.Dave.SetPosition(H.Door)
      • Also added a similar override for Character.Show(), though it's not exposed yet, for now you can expose it by adding it to the ICharacter interface in your PowerQuestExtentions file.
    • Added Accessor for dialog tree list from PowerQuest (Useful for making dialog tree guis)
  • Fixes:
    • Fix for character getting stuck in animations with a LoopStart tag but no LoopEnd
    • Gui: Fix for fading in buttons on the frame they're shown, and fix for the fade being effected by pausing, which you don't want for guis
    • Dialog trees now have their data set correctly after restoring save
    • Fix for dropdown bar, now unpauses game when disabled
    • Fix for renaming regions
    • Fixed some null ref errors in Regions and PowerSprite

v0.15.12 (24 Feb 2022)

  • Tweaks/Fixes:
    • Added warning when trying to make character face themselves
    • Dialog tree scripts now have access to their own dialog data with Data property. Fixes a dialog's functions, like O.AskAboutBlah.Show() not being usable when the dialog wasn't playing.
    • PowerSprite Animator: Timeline event paramters are now displayed in the timeline bar (Thanks arcnor)
    • Fixed ICamera.SetCharacterToFollow() overTime parameter not being hooked up
    • Fixed BaselineFixed property not being hooked up (Thanks arcnor)
    • Charcter/Prop sorting is now previewable in the scene when you:
      • Change the in the inspector
      • Move the object around in the scene
    • Gui tab no longer disappears when editing a gui and go to edit another gui
    • Quest scripts can now access dialog tree scripts with D.MyDialog.Script. (same as rooms, characters, etc)
    • Fix for walkable edge case: When character fails to find path because starting or ending in "solid" character collision, it will now attempt it without the solid collision instead of just failing.

v0.15.11 (18 Feb 2022)

  • Tweaks/Fixes:
    • Fixed version checker url
    • Added R.FirstTimeVisited shortcut to R.Current.FirstTimeVisited
    • Fixes for ICharacter.SetTextPosition and ICharacter.LockTextPosition not working in certain cases
    • Fix for mouth anim not changing if set while not talking
    • Added IPowerQuest.DebugSetPreviousRoom(IRoom room) useful in PlayFrom functions (ones with [QuestPlayFromFunction] )
    • Fix for renaming regions and other child objects when room isn't saved
    • Fixed some broken easing curves
    • Occurrence methods all renamed to have correct spelling. Upgrading will find-replace old ones.
    • Fix for ICursor.NoneCursorActive returning false when inventory item active when there was an AnimationOverGui set, or Override anim playing
    • Null ref fix for setting props enabled/disabled
    • Fix: When character has no 'Talk' anim, it no longer gets stuck in walk anim when a say command is followed a walk command
  • QuestText fixes:
    • QuestText outline visibility now set when main text renderer is enabled/disabled
    • Quest text cleanup. Setting sort order now updates outline, but doesn't refresh text
    • QuestText component now only overrides CharacterSize if it's still at it's default (1). So it can still be set to other values if required
  • Integrated dialog tree gui changes by Arcnor:
    • Added option to number dialog options
    • Added option to vertically align options from the 'middle'

v0.15.10 (27 Jan 2022)

  • Tweaks/Fixes:
    • Added ICharacter.ReplaceInventory function
    • Inventory Panel: Added Item Cursor property, for when you want to override the cursor when held over inventory items
    • Guis now created relative to GuiCamera (fix issue where they're invisible after updating)
    • Fix for cursor for legacy inventory guis
    • Fix for exception message when upgrading

v0.15.9 (25 Jan 2022)

  • 9-Verb template:
    • Rebuilt verb gui with new gui system
    • Added menu gui with save/load/options/quit buttons
  • Tweaks:
    • Gui stuff works with tiled sprites as well as sliced
    • Exposed Color and TextComponent in ILabel
    • Added Gui property in gui quest scripts to return the current gui. So you can do Gui.Hide(); to hide the gui you're in, etc. (As possible replacement for confusing 'Data' property)
    • CollectedItem class is now partial
    • Added extention methods to GuiControls ExStart, ExOnShow,ExOnHide, ExOnVisibilityChange. And some extra ones for Gui Image and Button controls too
  • Fixes:
    • Fixed Dialog options and gui descriptions not being translated. (They weren't being marked dirty, so lost their is when unity was closed)
    • DisplayText gui now on the correct camera
    • Fix for bug where changing character inventory or room points in-game while testing could permanently change their prefab in editor too.

v0.15.8 (13 Jan 2022)

  • Save/Restore
    • Screenshots can now be saved in save games- Set up size in in PowerQuest setup tab
    • Template Save/Restore Gui added
      • To open, call G.Save.Script.OpenSave(); or G.Save.Script.OpenRestore();
    • Updated Toolbar in template project to have Save and Restore buttons
  • Option for Custom Keyboard Shortcuts
    • Added option in PowerQuest setup to have custom handling for keyboard shortcuts and mouse clicks.
    • Template game now has GlobalScript function UpdateInput() which defines keyboard shortcuts
  • Minor tweaks/fixes:
    • Added PowerQuest logo sprite to game folder
    • Better sorting of GlobalScript functions in script editor
    • Fix for broken QuestText editor in 0.15.5
    • Gui Buttons have option to set both image & text colour
    • Gui controls can now be reordered from their list
    • Made PowerSpriteImport and CursorComponent partial classes
    • CursorComponent: Added CurrentAnim and SpriteRenderer properties
    • Fix for script editor alt-left/right keys on mac (thanks Arcnor)

v0.15.5 (7 Jan 2022)

  • New stuff:
    • Regions tint can now fade as characters enter/exit the region, based on new FadeDistance property.
    • Camera refactor
      • Zoom and position overrides now work together. (Though you can't start one half-way through a transition other or it'll snap atm)
      • Fixed Zoom transitions breaking when near edge of screen
    • Added option to have Custom Speech Gui. Thanks Edu Garcia (Arcnor). To use it:
      • Make a gui that implements the 'ISpeechGui' interface in its component to set its text and turn itself on and off.
      • Set it as the CustomSpeechGui in PowerQuest settings, and set the SpeechStyle dropdown to "Custom"
      • Note you can also add a component that implements ISpeechGui to the regular dialog text object to do custom stuff there.
    • Added BaselineFixed property to Props, when set, the baseline doesn't move with the position of the prop. For props that move around but should stay sorted the way they are.
  • Tweaks:
    • Added animprefix to character interface
    • Template game: Barney's tweak to logo
    • Util for checking for null/empty strings: IsString.Set(string) and IsString.Empty(string)
    • Reordered some PowerQuest Project Settings
  • Fixes:
    • Text now updates immediately when language changed
      • Language now saves/loads from settings correctly
      • QuestText items now update when language changes
    • Fix for PowerSprite shader override not working if character was placed in scene
    • Fix for prop component not having components set up when calling SetVisible(true)
    • Script editor fixes
      • Can now select functions that end with the same name, eg: EatPudding() NoisilyEatPudding(). (Thanks Arcnor)
      • 'yield return' automatically inserted for 'character' and 'prop' variables
      • Prop or character function that starts with 'Wait' will have 'yield return' added
    • Fix for dialog list breaking when tried to add/remove/reorder list items.
    • Fix for Text System not preserving ids for non-character text when processing text.
    • Fixes for SpeechBox Gui
    • Fix: Error when setting animation of prop that's set to inactive in scene
    • Fix: When skipping animation transition too fast (like when holding down skip key), it could get stuck in wrong animation. (Now checking that transitioning to the same animation before avoiding skipping the transition...it's confusing ha ha)

v0.15.4 (10 Dec 2021)

  • In-game Options menu
    • Can set volume, text settings, language, resolution, etc
    • Lock-cursor option (only enabled in builds, because it's annoying when cursor locks in editor)
  • Settings refactor:
    • 'Settings' are now loaded from file (Settings.sav) on game start, so that things like volume, etc don't change when you restore/restart a game.
    • NB: Moved some things out of Settings: Settings.DialogTreeGui, DisplayBoxGui, Speech Style, Speech Portrait Location, Transition Fade Time, and Always Show Display Text.
    • NB: Moved Text Speed Multiplier INTO Settings.
  • Template Game changes:
    • Toolbar now has just power and options buttons. Later will add save/load there too
    • Added Options menu
    • Recoloured things to be all blues... more template blueprinty
    • Added Dave UR walk
    • Farted around with a PowerQuest logo for fun
  • Scripting API:
    • Added GlobalScript.UpdateNoPause() function- an update function called even when the game is paused.
    • New Cursor functions for playing and overriding cursor anims/sprites
    • Util functions for checking if strings are empty. because I hate writing string.IsNullOrEmpty(theString) everywhere: Utils.HasText(), Utils.IsEmpty(), Utils.IsNotEmpty()
    • RectCentered can now implicitly cast to Rect
    • Added Audio.IsPlaying(string cueName)
    • Added ICharacter.ResetWalkSpeed() to restore original walk speed from the inspector
    • Added ICharacter.SkipTransition() function to skip transitions between animations or turning anims
    • Added ability to "restart" into a specific room, and with a specific "play from" function. To make it easy to jump around in a build when testing
    • Added ICharacter.AnimPrefix. Game checks if anim exists with this prefix before falling back to regular anim.
      • Eg: if prefix is 'Angry', then, when a "Walk" anim is played, it'll first check if there's an "AngryWalk"
    • Vector2.Rotate extention function
    • Exposed IPowerQuest.GetRestoringGame()
    • Added gui mouse position accessor in PowerQuest
  • Script editor:
    • Quest script autocomplete includes cursor now
    • Fix: Script editor no longer treats blah.Button.blah or blah.Prop.blah as button/prop accessors (so if you have like, InputManager.Button.Ok.IsPressed, it won't change it to InputManager.GetButtons("Ok").IsPressed)
    • Autocomplete now updates immediately when quest objects (props, dialog options, etc), and things like audio cues and animations are added/renamed.
    • Added callbacks to PowerQuestEditor when creating objects (rooms, characters, etc)- so you can add custom stuff if you want. Eg: PowerQuestEditor.Get.CallbackOnCreateObject += AddMyCustomThings;
  • Gui System tweaks:
    • Added gui slider controller
    • Added yellow rectangle editing guis to show where screen edges are
    • AlignToScreen and FitToScreen now snaps to pixel.
    • Grid container fixes
    • Gui Fade functions
    • Grid container now saving the "custom size"
    • Renamed properties in grid container, hopefully less confusing?
    • Camera Extension methods for getting camera width/hight in world units
    • Tweak to cursor for handling custom dialog trees
    • Gui camera and guis are now created once at game start, and no longer recreated in each scene
    • Inventory panel static variables now non-static (so you can have multiple inventory panels)
    • Added sprite mask helper code to Inventory Panel, for masking inventory items when you scroll
    • Added 'overdraw' variable to grid container, so it can draw outside bounds, when you want to mask it
    • Added option to reverse inventory order in inventory panel
  • Quest Text editor.
    • Can now setup font display in the one component (color, font, etc)
    • Moved QuestText component above TextMesh component
    • Can adjust "Line height" in pixels, rather than as a ratio of font size
    • Font shader applied instantly (don't have to run game to see how it looks)
  • You no longer need to create animations for props, guis, inventory or cursors
    • If no animation is found, it'll search for a sprite of that name (with or withoout '_0' at the end)
  • Easing curves
    • Added a bunch of different curves to Utils.Ease() functions.
    • Easing Curve can be set when you call IProp.Move() and IProp.Fade(), same for guis.
  • Added some drop shadow support
    • Just some functions to let you easily turn on/off another sprite at the character's feet, and play anims on it when you want to.
  • Sprite Importer:
    • Fix: Powersprite import tags working on mac now (thanks IrreverentPixel).
    • Added option to sprite importer to not create anims for "single sprite animations". This is set for new rooms and guis
    • Added context menu option to each anim in sprite importer to set a sprite as "FullRect", which moves it into a seperate folder (non-atlased) and marks it as Full Rect. Useful for shader textures that are still sprites.
    • Moved "import dialog" to a text box so it's less intrusive.
    • Added button to "Import sprites + create anims" in one click.
    • Importer now includes sprite mesh type option. Removed old packing tag option.
  • Dialog text
    • Text now moves with character
    • Dialog text no longer goes off-screen if camera pans
    • Character text position functions:
      • ICharcter.SetTextPosition() - Sets text world position
      • ICharcter.LockTextPosition() - Locks the text position in the current place, even if character moves or is hidden.
      • ICharcter.ResetTextPosition() - Resets text position to default (above character)
    • Added ICharacter.TextPositionOffset and TextOffset property to characters. Distance that dialog text is offset from the top of the sprite, added to the global one set in PowerQuest settings. Will flip with the character. Defaults is zero.
  • More extentions support for expanding PQ functionality
    • Added commented out partial functions to PowerQuestExtentions so they're easy to find
    • Partial functions now all start with 'Ex'
    • Added partial functions for props/hotspots/Characters/inventory ExOnInteraction and ExOnCancelInteraction
    • Commented example of extending 'Settings' to add own settings variables
    • Added frame-limiter example in PowerQuestExtentions QuestSettings class
    • Added partial ExtentionOnInitialise method to QuestSettings
    • Added some partial methods to character and room to make it easier to extend
    • Character component made into partial class
    • Added callbacks to PowerQuestEditor when creating objects (rooms, characters, etc)- so you can add custom stuff if you want. Eg: PowerQuestEditor.Get.CallbackOnCreateObject += AddMyCustomThings;
  • Tweaks:
    • Turn animation updates:
      • Turn anims have option to be mirror automatically, so don't have to put in reverse directions
      • Turn anims use regex in "fromAnim" animation. So can do, "Idle|Talk|Walk" for example
    • Fade in/out
      • Fades no longer "stack", unless you use a different source. So FadeOut(); FadeOut(); FadeIn(); will now result in the game "fading in". (Before you'd need to match the fade outs and fade ins...). I think it's simpler now, if you call FadeIn, you know it'll do it.
      • Exposed Fade functions with a string "source" for layered fades. (eg: IPowerQuest.FadeOut() )
    • Pixel font shader now has tiny offset to snapping to stop so many edge cases.
    • Updated _PutDialogHere.txt with correct info
    • Optimisation: Importer now only updates default sprite if anim list changed.
    • ~+F9 now restarts current scene the same as stopping/starting the editor (but not horribly slow)
    • 'EnteredFromEditor' can now be used in dev builds, not just in editor
    • Added option in Text tools to use imported text as the source for default language, instead of the text that's in the script.
    • Added Prop.Alpha property. Sets sprite and text alpha, and means the transparency is saved.
    • Importing from photoshop now starts at frame 0, same as importing from aseprite
    • System for debug shapes
    • Can now have regions that block off an area, and character should be able to walk around on either area... (hacky and experimental code though)
      • Hacky walkable area code to find navigatable point to the cursor, using polygon build using clipper that subtracts un-walkable regions...
      • Moved experimental clipper walkable area code to room component partial class
  • Bug fixes:
    • Can now save game in Room's OnEnter
    • Fix: Save/restore games during dialog works again
    • Fix: Audio cue editor wasn't always keeping their clips in the list
    • Disabled cursor-locking on focus, no longer necessary afaik
    • Fixed cursor locking on game reset in editor
    • Guis "visible" flag now actually hooked up
    • Fixed gui's visibility not correctly saving/loading
    • Fix for room not setting sprite of prop immediately when it's in the editor.
    • Fix: AlignToScreen component now forces update on Enable/Start
    • Fix: "FadeIn" on first frame of "OnEnterRoomAfterFade" now works
    • Fix: Restart now destroys GuiCamera so you don't get duplicate guis
    • Fix for turn anims when using anim prefix
    • Fix for bug where changing room didn't reset background sequence, which would get set to "current" and block the main script. (Eg: using region to enter room)
    • Fix: Prop now remembers Position when it's set
    • Fix for character caching room on restart
    • No longer resetting start/end loop when anim resets, so will still transition out when using loop tags
    • Translation system fixes
      • Now escaping double-quotes correctly in CSV export (thanks drbb)
      • Fixed error first time setting the language (thanks Guga)
    • Fix for clicking object always resetting the selected unity tool (move/rotate/etc)
    • Fixed points getting selected when you're trying to edit colliders, or move somethign in the scene, etc
    • Fixed importing sprite timings from aseprite
    • Fix for 'WaitFor' functions not auto-loading in script editor if at the start of another script function.
    • Fix for CSV- Mark text prefab dirty after importing CSV

v0.15.3 (11 October 2021)

  • Tweaks:
    • Added IInventory.FirstUse, IInventory.FirstLook, IInventory.UseCount, IInventory.LookCount
    • Added Pan setting to audio cue
    • MinMaxRange drawer tickbox more obvious
    • Gui camera moved to 0,0 and now has near plane of -500. (So if a gui z pos is set to 0, it's still rendered)
    • Added callbacks on gui and controls focus/unfocus
    • Gui controls added at runtime are registered with their gui. (so can have baselines set-up correctly)
    • Cursor now uses cursor settings from gui when hovering over inventory item
    • Dialog tree component moves into canvas if still using old "Simple buttons"
    • Tweaks to WalkTo to make it more robust when calling rapidly. (For direct control with analog stick)
    • Animation Events will try to call function both with and without 'Anim' prefix.
    • Save system debugging code
  • Fixes:
    • Fix for sprite importer path not working with spaces in path
    • Fixed gui/sprite folder not renaming when upgrading from 0.14
    • Fix for old style dialog-tree scroll buttons not working
    • Fix for characters walking on the spot
    • Cursor override functions now work
    • Fix for gui controlcomponents potentially being added multiple times
    • Tweaked min/max range of gui baselines to stop them potentially overlapping
    • Fixes for "FitToScreen" component not working correctly
    • Optimisation fixes
      • Extra checks when setting inventory item anims for efficiency
      • Character caches their room
      • Gui baseline only sets children if it actually changed

v0.15.0 (24 September 2021)

  • Unity version update to 2020.3
    • Lots of fixes for things that weren't working quite right.
    • Now using Unity's new style of atlases (since old style was removed). Atlas files are now created automatically (it'll ask if you want to create them for you if upgrading).
    • Game view no longer captures mouse on windows
  • New Gui System
    • You can now create and edit simple guis in similar way to creating a room. Instead of props/hotspots, you use Buttons, Images and Labels, etc.
    • See Gui Sytem Documentation

v0.14

v0.14.10 (7 October 2021)

  • Fixes
    • Fix for characters walking on the spot
    • Cursor override functions now work
    • Fix for 9-verb to make it easier to update to 0.15

v0.14.8 (23 August 2021)

  • Sprite importer:
    • Added 'Import and Build' option for new anims.
    • Added 'Delete' and 'Rename' anims and sprites option.
    • Added Create Prop option, if importer is for the currently open room.
  • Other:
    • Added ICharacter.AddWaypoint() functions
    • Exposed IRoom.Bounds and IRoom.ScrollBounds
    • Can now right click Rooms in rooms list and jump straight to specific script functions (OnEnter,Update,etc)
    • Scrollable inventory tweaks (thanks to StickGrinder and Drbb on the discord)
    • Some ifdef'd out code for importing translation text CSVs at runtime.
    • "Debug key" is now either backtick (~ key) OR backslash.
  • Fixes for Unity 2019.3 and greater (v0.14.8)
    • Mouse is no longer constrained to game window in editor.
    • Fix for PowerSprite Animator event icon size
    • Fixed some unity console log spam
    • The blocking function IPowerQuest.ChangeRoom() now works. So you can change rooms correctly in the middle of a script.
  • Fixes:
    • After playing animation, it no longer restarts when entering another room.
    • Restoring game when screen's faded out no longers results in permenently faded out screen.
    • Powersprite animator no longer crashes if sample rate set < 1.
    • Warning/error fixes for new projects and upgrading projects
    • Spellchecker no longer disables itself on import
    • Null ref fixes.

v0.14.3 - Beta (16 July 2021)

  • Scripting:
    • Added PowerSprite.GetNodePosition() function, for easier access to anim nodes that includes powersprite's offset.
    • QuestCameraComponent.ShakeIntensity property exposed, so it can be used with/instead of other effects. You can now also set the Shake Intensity Multiplier to replace the shake with your own effects.
  • Template Project: InventoryClickStyle now set to OnMouseClick by default. (And fixes for this to work properly)
  • Sprite Importer: Added loop tickbox to context menu (Thanks IrreverentPixel)
  • Fix: Generate Sprite Hotspots tool disabled when using unity v2019+ since it doesn't work there.

v0.14.2 - Beta (5 July 2021)

  • Editor:
    • Added All/Highlight button to the top of lists of Rooms/Characters/etc, to toggle displaying only highlighted items.
    • Added ... button next to Rooms/Characters/etc, which opens the context menu.
  • Sprite Importer Upgrade:
    • Added "Play" button next to animations to open them in PowerSprite Animator.
    • Added context menu (right click or click ... button) next to the animation.
    • Added menu option to jump to sprite or animation in project
    • Added menu option to re-import single animation and/or its sprites. This clears old sprites, and re-builds the animation frames, unlike the bulk-import/create buttons.
    • Added option to import the animation list from the aseprite file (using frame tags as names)
    • Animation frame durations are now imported from aseprite.
  • 9-verb Template: StickGrinder's Tweaks for scrolling inventory.

v0.14.1 - Beta (30 Jun 2021)

  • Fixes:
    • Spell check working again.
    • Quest script editor no longer loses scroll position when another textbox is clicked.
    • Generate Sprite Hotspots tool disabled when using unity v2020+ since it doesn't work there.

v0.14.0 - Beta (25 Jun 2021)

  • NB: The ICharacter.Enable() function has changed, and no longer automatically sets ICharacter.Visible to true. Use ICharacter.Show() instead.see below for more details
  • Features:
    • Pathfinding around characters
    • Added ICharacter.Animation property. When set this animation plays instead of Idle/Talk/Walk, until StopAnimation is called.
    • Room, Character, Inventory and Dialog Tree lists can now be filtered to show only highlighted items.
    • ICharacter.SetPosition() now takes optional 'face' parameter, if set character will face that direction.
    • Added ICharacter.MoveTo and ICharacter.MoveToBG, similar to "walkto" but character doesn't face direction or play walking animation. Kinda hacky, might have to cleanup later. Not sure how useful it is anyway.
    • Characters Talking while walking/animating:
      • Characters can now be talking, walking and animating simultaneously. Previously it was only one at a time. Now handling stopping/starting any of those at the same time too. (eg: start talking halfway through walking somewhere), or play an animation half-way through line of dialog.
      • Calling ICharacter.WalkTo no longer stops a character talking.
      • Added Stop Walking To Talk option to PowerQuest settings to have characters keep walking when they start talking (by default they stop walking automatically).
    • Added ICharacter.StartFacingCharacter() and ICharacter.StopFacingCharacter() commands. Use when you want a character to keep turning to face another character even if one of them is walking around.
    • Automatic character hotspots:
      • Added option in characters to "Use Sprite As Hotspot". When true, the sprite's "physics shape" is used as the clickable collider. this can be enabled and disabled again by setting ICharacter.UseSpriteAsHotspot property.
      • Added utility for setting sprite physics shapes. Select the sprites to process, right click, and select "Generate Sprite Hotspots". This generates more accurate clickables for the sprites.
  • Minor Features/Tweaks:
    • Added 'Wait' cursor. Haven't tested template interfaces with it yet though, only used on Telwynium so far.
    • Added access to ICharacter.TextPositionOverride
    • Quest script editor:
      • Autocomplete & colour c# keywords
      • Keywords and strings no longer coloured inside comments (or other strings)
    • QuestText padding changed to 2d, so can hack in offsets more easily if required.
    • Sprite importer checks default steam aseprite folder first
    • Changed order of things a bit in Character data
    • ICharacter.Show/Hide refactor
      • Characters now have 'Enabled' flag under the hood. So you can Disable/Enable or Hide/Show them again without losing their Visible, Clickable and Solid settings.
      • ICharacter.Show() now sets them Enabled, Visible, and moves them to the current room.
      • ICharacter.Enable() now ONLY sets them Enabled.
      • You can now pass a position and facing direction into ICharacter.Show(). Useful for setting up characters in a new room.
    • Hotloading compiler optimisation. Loading and find/replace in source files no longer takes 1/3 the total compile time! (went from 6 seconds to 4)
    • Script editor optimiation- Regular expression optimisations, using zero width assertions instead of capturing groups in find-replace (for colors, and loading files)
    • Project window focuses when selecting room, character, etc in powerquest editor. (Useful if its docked behind something else)
    • Region OnEnter and OnExit no longer trigger when region is not Enabled
    • No longer locking mouse cursor when editor is playing (for unity 2019+ support)
    • When game's running can now use Ctrl+M to copy coordinates from game window
    • Exposed IPowerQuest.GetSkippingCutscene() function (renamed old internal GetSkipCutscene())
    • E.Wait(0) and E.WaitSkip(0) will now skip a single frame instead of doing nothing.
    • When prop animations are skipped in cutscene, they now update the animation on it's last frame (normalized time 0) so that the prop ends up with the state of the last frame (for animations where props are moved, etc)
    • Translation support changes from StickGrinder:
      • Can now export csv and script in specific language
      • Fix for translation support when mixing character name and 'Player: ' in dialog scripts
      • Fix for text processing not working correctly under Linux (and MacOS maybe) in unity 2020
    • Added attribute [QuestLocalize] that you can add to string fields and they'll be added to text system.
    • Templates:
      • 9-verb set up to work with translations
      • Example of new style string manipulation in global script
    • Added Audio.GetAnyMusicPlaying() function to check if music's playing
  • Fixes:
    • Fix for random null references
    • Fix for using inventory items on one another. it now tries the opposite order too. (if you use function variables)
    • Added warning message if tried to change rooms multiple times at once.
    • Fix for reloading a game breaking save slot data
    • Room bounds now default to zero width/height
    • Fix for error with shared material in PowerSprite (when looking at prefab while game is running)
    • Skipping cutscenes doesn't end character animations that have loop points or pauseAtEnd set
    • ICharacter.Animation property (and PlayAnimationBG) state is now saved/restored. Including LoopStart/LoopEnd points.
    • Fix for Quest text showing outlines when the gameobject isn't in a scene
    • The language in settings is now set when game starts
    • Fix: Music started during cutscene still plays even if not looping

v0.13

v0.13.5 (30 Apr 2021)

  • Minor Features:
    • Can now right click quest objects in list and "highlight" them, so they're easier to find.
    • Quest script editor now trims trailing space when saving.
    • When Room is deleted it's now unloaded, and removed from build settings list.
  • Minor Fixes:
    • Added warning about non-even sprite resolution on import.
    • Changing rooms or starting dialog now consumes event even if script isn't blocked (so you don't get 'I can't use that' message when changing room/starting dialog).
    • Fix for text not snapping to pixel correctly when vertex's lined up with pixels (due to float precision issue).
    • UseCount and Occurances are now correctly rolled back when you "cancel" the interaction by clicking something else during the initial 'walk to'. And also work correctly with HandleInteract and similar.
    • Deleting quest object no longer removees QuestScriptAutos lines for other objects that contained the same name.
    • Fix for deleting then adding quest object causing the new one not to be added to the prefab list.
    • Added check for project needing a refresh before processing text.

v0.13.4 (23 Apr 2021)

  • Room's objects (hotspots, props, etc) can now be reordered from the room editor lists.
  • Quest scripts now have using static GlobalScript; added to them, so you can easily access enums declared in Global Script "header". Updated templates to use this.
  • Added an 'Additive' version of the sprite shader
  • Fixes:
    • Fix for Autocomplete error where you could select item off the end of the list
    • Updated api links to point to new url
    • Fixed Start/Stop dialog tree not consuming the click event
    • Speech-box null error fix.
    • IDialogOption.TimesUsed now increments correctly.
    • Fix for warnings in unity 2019+.
    • Fix for removing active inventory from player.
    • Script Edtior: Fix for autocomplete not working for GlobalScript member variables, when editing GlobalScript functions

v0.13.1 (9 Apr 2021)

  • Dialog scripting improvements
  • Dialog tree guis:
    • Now scroll with up/down buttons (Thanks to StickGrinder)
    • Can now be aligned from bottom or top
    • Have option to color any images in the option object, along with the text
    • Can have option text wrap or truncate (Thanks to StickGrinder)
  • Default template:
    • Now uses BaSS fonts, and brighter UI
    • Includes same fonts that the 9-verb one has
    • Updated dialog gui with scrolling
    • Added image dot point in-front of each option
  • 9-verb template:
    • 9-verb dialog tree now fixed height and options top-aligned
    • 9-verb: "WalkTo" verb now handled per-object
    • Code moved to separate file, so other extentions can still be added easily later
  • Added "Create Polygon from Sprite" button to prop
  • Misc Scripting Changes
    • Any dialog text can now include variables by using braces. eg.
      • Dave: Hello {C.Barney.Description}, nice to meet you.
      • Display: You have {numCoins} gold coins.
    • Added RoomScript.EnterFromEditor and RoomScript.FirstTimeVisited. For easy access in Room scripts.
      • eg: if ( EnteredFromEditor ) I.ItemYouNeed.Add();, or if ( FirstTimeVisited ) Dave: I've never been here before!
  • Minor changes:
    • Added right-click context menu for items in quest editor lists (characters, hotspots, etc). Just has Rename/Delete/New options for now.
    • Animations list is no longer updated for prefab variant rooms. So variant will always use their root prefab's animation list. (Helps if using prefab variants as rooms)
    • Added util function: Static WeightedShuffledIndex.Select function for quick weighted shuffled list selection
    • Tidied up Prop, and Hotspot inspector layout
    • Added "Sortable" component for when you want to give other renderable things a baseline, so they sort against props/characters
  • Fixes:
    • Background room changes now "consume" the interaction. So you don't see Unhandled interactions when an interaction just changes the room.
    • Walkable polygon display (yellow line) now takes collider offset into account
    • Fix for exception in QuestScriptEditor when finding the play mode tint colours
    • Pixel camera fix when layers are different order
    • Fix for walkable area holes only working on the first walkable area
    • When restoring game where music was fading-out, it no longer keeps playing
    • PowerSprite Animator: Change to fix unloaded addressable animations crashing unity
    • Fix for quest objects not deleting properly
    • Fixed mini button left style text being aligned left (by ReferenceFinder and SelectionLog)
    • Timers no longer update when game is paused
    • Room/GlobalScript Update is no longer called after scene change, until after OnEnter is called first time. (previously was called once or twice). Order is now: OnEnter -> OnEnterAfterFade(until first blocking function) -> UpdateBlocking -> Update -> OnEnterAfterFade(the rest of it)
    • Autocomplete fix for linux (Thanks to StickGrinder)
    • Fix for the ChangeRoom error in unity v2019 (no longer an error, now just a debug log, but still needs proper fixing)
    • Unity 2020 warning fixes (thanks to ThriveNugget)
    • Fix for deleting quest object resulting in mixed EOL warnings in QuestScriptAutos
    • Fix for running an inline dialog while between StartCutscene and EndCutscene functions (Thanks to IrreverentPixel)

v0.12

v0.12.7 - Beta (6 Mar 2021)

  • Added Pixel Camera option with smooth camera/parallax preserved.
  • Added more quest script editor themes, and you can now customize the font too
  • Mouse cursor pos now shown at bottom of Room tab
  • Editor layout tweaks to room tab name display & tools tab settings layout)
  • Re-enabled vertex snapping on font shader. Fonts should
  • 9-Verb Template, minor fix for Verbs gui highlighting things during dialog tree sequences

v0.12.6 - Beta (26 Feb 2021)

  • Dark theme, and custom colours for the quest Script Editor. Set it under Editor settings in the Tools tab. Thanks to Dom De Re (irreverentpixel) for help with this one!
  • Fix & enhancements for animation name autocomplete animation names added in 0.12.5

v0.12.5 (22 Feb 2021)

  • Fix when updating from v0.10 (inventory was no longer clickable)
  • Autocomplete for animation names and audio cues. Eg: C.Dave.PlayAnimation(..., or P.Door.Animation = ..., or Audio.Play(...
  • Some other minor fixes

v0.12.4 (17 Feb 2021)

v0.12.0 (5 Feb 2021)

  • Editor:
    • Script function list: https://i.imgur.com/I8RF3As.png
      • Script editor function list readability improvements. Makes it easier to find a function in a big room script. Friendly version of functions is displayed, and they're sorted into Room, Hotspot, Prop, Region, Character, and Custom sections.
      • "+New function" button to create simple functions without having to jump into VS.
    • Added spellcheck to quest script editor to help me with my terrible spelling. Can be disabled in editor settings.
    • Added 'Inventory Click Style' to PowerQuest Project Settings. Lets you have inventory that is "used" when clicked on (like lucasarts games) instead of "selected" (like broken sword)
    • Prop Parallax values now make more sense and are explained in-editor.
    • Added debug buttons when game is running- Rooms have "Teleport" button, and Inventory Items have "Give" button.
    • Default audio mixer groups can now be added to SystemAudio for SFX, Music and Dialog.
    • Cleaned up the project context menu:
      • Moved 'Create anim' and 'Create audio cue' into the main context menu
      • Keyboard shortcut for 'Create anim from sprites'. (Ctrl+Alt+Shift + A) with sprites selected.
      • Keyboard shortcut for 'Create audio cue from clips'. (Ctrl+Alt+Shift + C) with audio clips selected.
      • Moved other items into Create/Powerhoof/ submenu
    • Added more convenient accessors to dialog option state from the dialog. IDialog.GetOption(string option), IDialog.GetOptionOn(string option), IDialog.GetOptionUsed(string option).
    • Using the integer version of dialog option functions now acts the same as the string version, referencing the name. (instead of index into the list of options)
  • Game:
    • Animation Events:
      • LoopStart and LoopEnd: For looping anims with in/out transitions. (eg: Crouching to pick something up). When the LoopEnd event is hit, the anim will jump back to the LoopStart event, until the anim is stopped/changed, when it will play the rest of the anim. Example Gif: https://i.imgur.com/BWJFGac.gif
      • Offset: for use in character animations that moves character from Node1 to Node2. Useful for anims that have character movement built into them.
      • WalkSpeed, WalkSpeedX, WalkSpeedY and WalkSpeedReset: Temporarily override character walk speeds. Useful for walk anims like "limping" etc. Example Gif: https://i.imgur.com/Y9W0pgF.gif
      • AnimSpawn tag in character to simply spawn the specified game object at the character's location
    • Background dialog text is now sorted behind foreground dialog text
    • Default GlobalScript has check to ignore mouse-clicks on GUIs. Makes it easier to have inventory that doesn't pause game.
    • Anims don't restart when you play the same anim again anymore, the play function is just ignored. Makes transitions easier.
    • When Idle/Talk animation changes, the anim is now played from the start
    • Added an audio mixer to sample project with submixers for SFX, Music and Dialog
    • Anim events now called on room script even if the event's on a character animation
    • Added debug keyboard shortcut to restart from current room (~+F9). So you can tweak and test OnEnterRoom room script without having to stop/start playing.
    • Camera Shake now has default duration of 0.1f instead of 0, to give more consistent shakes.
  • Scripting:
    • Global script can now be accessed with Globals. without breaking hotloading. (Don't have to use GlobalScript.Script any more)
    • In QuestScript you can now access the player by typing Plr. as slight shortcut to C.Plr
    • Added ICharacter.VisibleInRoom to check if character is visible, and in the current room
    • Camera: Added "overTime" parameter to Camera.SetCharacterToFollow(). Causes the camera to transition smoothly to new position.
    • ICharacter.WalkToBG now takes optional "Face after walking" parameter so you can make characters face a direction after finishing their walk
    • Added diagonal Character face functions: ICharacter.FaceUpRight(), ICharacter.FaceUpLeft(), ICharacter.FaceDownRight(), ICharacter.FaceDownLeft()
    • ICharacter.PlayAnimationBG(...) now has pauseAtEnd parameter. If true, character will stay on last frame until ICharacter.StopAnimation() is called
    • RoomScript.OnEnterRoomAfterFade() is now called immediately after RoomScript.OnEnterRoom(), rather than a few frames after fading in. This means you can now set up your room (character positions, etc) in this function, and OnEnterRoom is no longer really necessary. Could potentially change to a single 'OnEnter' function later for simplicity.
    • "Play from" function attribute. Advanced functionality for helping you skip to later sections of your game while testing. To use add a function that sets up the game state how you want, and give it the [QuestPlayFromFunction] attribute. Then the function can be selected from a dropdown in the room tab, and it will be called before OnEnterRoom.
    • Added IPowerQuest.GetMouseOverType() as shortcut to IPowerQuest.GetMouseOverClickable().ClickableType. Mainly for use in GlobalScript.OnMouseClick().
    • Added eQuestClickableType.None, for when mouse isn't over anything.
    • Added function Utils.GetTimeIncrementPassed(float min, float max, ref float timer). Returns true when a random timer has passed, just needs a float timer member variable.
  • Fixes:
    • Moving/fading props now pauses with game
    • Timers now actually work :P
    • Fix for restoring save game when dialog's active
    • Fix for editor hang for 1.5 sec when re-focused playing game (due to hotloading scripts check)
    • Fixed some infinite loops in FaceBG functions I'd never tested
    • Fix for warning when talking with no mouth node, and inactive mouth object
    • Character Hide/Disable now disables clickable
    • Interactions starting with WalkToBG can no longer be cancelled when they shouldn't be
    • QuestScript fix for functions starting with "End" inserting yield return E.Break; before the function on save
    • Fix for C.VisibleInRoom if character has no room set
    • UpdateBlocking, OnEnterRegion and OnExitRegion now automatically call CancelCurrentInteraction()
      • CancelCurrentInteraction no longer Unblocks (which was breaking things)
      • Removed E.CancelCurrentInteraction() and E.EnableCancel(), since they don't really work without breaking things
    • OnEnter/OnExitRegion no longer called on save/restore
    • Tweak to movieplayer to stop it ending on application defocus
    • Parallax updated when prop position set even when paused
    • Fixed "build lipsync data" progress bar not showing
    • Removed "failed to find animation" message when no animation specified
    • Fix for lipsync with separate mouths not working first time if no talk anim specified
    • Fix for possible null ref in SystemAudio after restoring game
    • Animation events now call functions in characters/rooms correctly, and automatically add QuestAnimationTriggers component for you.
    • Fixes for transitions when changing animation multiple times in single frame
    • Shift-click "global script" button now opens it immediately in editor like other script buttons
    • Fixed anim events getting called twice on components
    • Audio.PlayMusic() now gives warning if cue not found (instead of breaking)
    • Fix for UseCount not being incremented until start of next interaction (caused errors when checking UseCounts in Region.OneEnter)
    • Fix for webgl builds (Set webGLException setting for new projects)
    • Removed obsolete functions from GlobalScriptBase
    • Minor fixes merged from PowerSprite Animator
    • Some null check fixes

v0.10

v0.10.2 (1 September 2020)

  • Tweaks
    • Exposed Camera.Snap(), to snap camera to its target position
    • Added Vector2 extention WithOffset. So you can do C.Plr.Position = Point.Exit.WithOffset(100,12); Instead of Point.Exit + new Vector2(100,12); (It's a bit more natural)
    • Removed debug "on enter room" autosave since it wasn't really useful
    • Changed "Hotload scripts" shortcut to shift-F7 so it no longer conflicts
  • Fixes:
    • Pathfinder now handles inside-out polygons
    • Fix for dialog tree options getting into endless loop of "Dialog option ids cannot be empty". (now only checks when option id has changed)
    • OnGameStart now called before the first OnEnterRoom
    • PowerSprite Animator: Autocomplete now works for events with names 3 characters or longer (was 5, so tags like "move" didn't work)
    • Fix for Renaming Hotspots/Props/Regions. They are now only renamed in their own room's script (so it won't break objects of same name in other rooms)
    • Fix for "dialog text offset" being used inconsistently when character is invisible. Now dialog object is positioned exactly at character position when not visible.
    • Fix for mouth being visible when plr is in room with "Player Visible" set to false
    • HandleInteract for characters now tries function in room before falling back to character script function
    • Face functions now use Position accessed from IClickable, rather than instance, so you can face characters before they're moved to the current room

v0.10.1 (30 July 2020)

  • NOTE: Minimum Unity version increased to 2018.4
    • This is now the recommended version to use for full support
  • Editor Tweaks:
    • Added "smart" asset refresh
      • Stops unity freezing and compiling whenever a script changes.
      • When a script has been edited, unity won't compile it until you hit the "Compile" in the QuestScript window, or play the game. (Or press Ctrl+R)
      • Adding/deleting quest objects also no longer triggers compile, so you can (for example) add a bunch of inventory items without having to wait for compile between each.
      • Press Ctrl+R if you need to force a compile/import
      • This functionality is on by default, can be turned off in PowerQuest Tools tab->Editor Options-> Manual Asset Refresh & Compile option
    • Quest script now shows prompt when you had a compile error, since it's easy to miss them in the console.
    • Clicking room Scene buttons while game is running now teleports player to that room (for testing)
    • Inventory item inspector now has a "Give Item" button that gives player the item when game is running, handy when testing.
    • Renamed quest script "View in editor" to "View c#"
    • Quest script keyboard shortcuts: Ctrl-S to save, F7 to save & compile
    • Added checks when creating/renaming quest object, so you can't create duplicate named, or incorrectly named object that will break things.
    • Better walkable area editor for unity 2018 to 2019.2.
    • Removed broken walkable area button for unity 2019.3 and up.
  • Scripting
  • Fixes/Tweaks:
    • PowerSprite animator anim nodes placed on 0,0 are no longer stripped
    • Fix for "Select" button on room tab not working while game is running
    • Fixes/Improvements to advanced save/restore functionality, see IPowerQuest.AddSaveData() for more information
    • Fix for crash when restoring games with .net 4.x
    • Fixed rooms/characters/etc sometimes disappearing from powerquest list (Removed auto-deleting null rooms/characters/etc. Since it was constantly breaking)
    • Fixes for unity running PostProcessAllAssets repeatedly, and slowing down the import
    • Fix for warning when editing headers
    • Quest script: Fix for warning on save when editing non-public methods
    • Some improvements to stop later versions of unity being so slow saving prefabs all the time.
    • Fix for unity not compiling new scripts when tried to test the game with a broken script
    • Script hotloading compile errors match unity compile errors
    • Fix for warning when editing new function or script in quest script editor
    • No longer showing compiler generated functions in questscript dropdown or auto-complete
    • Quest script no longer defocuses on ctrl+s save
    • Setting clickable collider id of character that's not in the room now works
    • "Import sprites from photoshop" now updates asset database
    • Fixed version checker getting the incorrect version from the wrong place
    • Fixed Regions autocomplete
    • Fix for removing regions resulting in broken pathfinding. Pathfinder, no longer ignoring pathnodes that aren't in "Area", since that meant that removing regions didn't work
    • Power Sprite Import: Default anim rate now 100
    • Power Sprite Import: Moved import/create anim from sprites in menu to be more accessible
    • Added warning if text id added to script without being processed by text manager
    • Fix for Audio cue editor exposed internal unity variable
    • Fix: PlayAmbientSound didn't fade correctly
    • Fixed sprite import settings n ot working in 2019.3 and later
    • Legacy sprite packer should now automatically be enabled in project settings
  • Added Licence.txt (using MIT licence)

v0.9

v0.9.2 (4 June 2020)

  • Fix for black screen in builds

v0.9.1 (1 June 2020)

  • Audio:
    • Added ability to pause/resume/stop sounds by cue name. Makes it much easier to handle looping sounds now.
            Audio.Play("FireCrackle"); // Start a looping sound
            Audio.GetHandle("FireCrackle").pitch = 0.5f;  // Tweak the playing sound
            Audio.Stop("FireCrackle",0.2f); // Stop the playing sound
      
    • Audio cues are now automatically added to the audio system (no more clicking that "add cue" button). Can be disabled Tools/Audio Settings.
    • Added custom audio falloff function SystemAudio.UpdateCustomFalloff(...), so you can have audio that gets louder/pans as player gets closer
    • Audio state now saves and restores
    • Added ability to set mixer group per-cue. So you could do environmental effects more easily now
    • Tweaks to demo scene, example of sound and music playing
    • Fades no longer use coroutines, so they're more robust
    • Clip End Time now uses actual clip time rather than coroutine (more robust, and works in preview)
    • Removed FootstepAltSound. Use multiple sound clips instead (or custom anim event for like peglegs or whatever)
  • Inline Dialog Options:
    • You can now make dialog options appear mid-script, without having to set them up in editor.
    • See IPowerQuest.WaitForInlineDialog(...)
        Barney: You fight like a dairy farmer!
        E.WaitForInlineDialog("How appropriate, you fight like a cow", "I am rubber, you are glue", "I'm shakin' I'm shakin'");
        if ( E.InlineDialogResult == 2 )
            WinSwordFight();
      
  • Animation Events improved
    • When an Anim Events is hit, it'll now try and call function with matching name in the Character, Room or Global Script.
      • EG. Add an anim event "Vomit" in PowerSprite Animator, and it'll try and call void Vomit() in your script
    • WaitForAnimTrigger function now much easier to use. Eg, if you have animation event "Vomit"
        C.Dave.PlayAnimationBG("BeRealSick");
        C.Dave.WaitForAnimTrigger("Vomit");
        Audio.Play("GrossVomitSFX");
        Barney: Disgusting! You're Fired!
      
    • WaitForAnimTrigger now also stops if animation ends even if tag not hit, so game won't lock if that occurs
  • Character "Transition" anims
    • Character components now have Turn Anims and Transition Anims fields.
    • These let you set up an animation that'll automatically play, either:
      • Between two other animations. EG: between Idle, and IdleHoldingGun
      • Between two directions (eg: turning from left to right)
    • 'To' and 'From' anims use regular expressions. Eg: "Talk.*" will match all anims that start with "Talk"
  • Camera:
    • Improvements to smooth parallax movement for pixel art games
    • Camera can now transition from one position override to another with ICamera::SetPositionOverride(...)
    • Camera can now transition between zooms over time with ICamera::SetZoom(...)
  • Scripting/API:
    • Added E.Restart() function, for restarting the game from the first scene
    • Added OnExitRoom() function for global script and room scripts. Called after fadeout before entering next room
    • Added IPowerQuest.DisableAllClickablesExcept(...), and IPowerQuest.SetAllClickableCursors(...) functions.
      • For temporarily disabling/changing cursor of all clickables in room.
      • They are also now automatically restored on room exit.
    • IPowerQuest.ProcessClick now returns true if an action was queued
    • Added R.EnteredFromEditor function in room scripts to check if you've entered the room from unity editor (helpful for debugging)
    • Added Callbacks for customisation
      • On inventory collected
      • When Character start talking, and stop talking (CallbackOnSay, CallbackOnEndSay)
      • Added ability to do custom fades using the ratio in MenuManager, using callback PowerQuest.Get.GetMenuManager().CallbackOnUpdateFade and PowerQuest.Get.GetMenuManager().GetFadeRatio()
    • Talking property now returns true when there's dialog being said, even if it's background dialog or dialog shown when walking/animating (not in talk state)
    • Exposed "E.GetBlocking" function
    • Added option to E.UseFancyParalaxSnapping. Turn off for pixel art games when you want to animate your camera (it makes parallax effects smoother)
    • Added ICharacter::CancelSay(), cancels any current dialog the character's speaking (useful with SayBG()
    • Setting IInventoryItem::Owned = false now removes ALL of the item if character held more than one
    • C.CharacterName.Show() and C.CharacterName.Enable() now move the character to the current room if they weren't in there already
    • More comments/documentation
    • Dialog option functions now take a 'IDialogOption option' parameter, so you can change the current option more easily inside. eg: option.Off() instead of OptionOff("CurrentOptionName").
    • Added a bunch of convenient alias/shortcut functions for things you could already do (may remove non-useful ones in future)
      • R.RoomName.Enter() to change current room
      • R.RoomName.Current and R.RoomName.Active to check if in room (instead of R.Current == R.RoomName)
      • Hide() Show(), Enable(), Disable() functions are now consistent across Character, Prop and Hotspots
        • Note, if you were previously using C.CharacterName.Show(false,true); to set character clickable, you now should call C.CharacterName.Clickable = true; instead
      • Added aliases to C.Player. C.Plr, C.Ego. (Whichever I end up favouring I'll keep, and remove the rest)
      • In the Script Editor, changed hotspot/prop shortcuts to H and P, and Regions/Points to Region/Point.
  • Quest Script Editor Tweaks:
    • Added "next" and "previous" arrows to navigate back and forth between functions quickly
    • Now scrolls to match where your cursor is as you type/nav around yaaay
    • Multiline indent and outdent. (Select multiple lines, then tab or shift-tab)
    • Tab now shows file instead of function
    • enums now autocomplete
    • Global types/vars/functions can be added to autocomplete using the [QuestAutocompletable] attribute
    • Changed hotspot/prop shortcuts to H and P. Changed Regions/Points to Region/Point.
    • Now reloads function list on focus
    • Fixes:
      • Fix for yield returns being added mid-line
      • Revert now shows correct confirmation dialog
      • No longer losing changes when press escape
      • Fixed Bugs with switching between two text editors in same window
  • Editor Tweaks:
    • Moved base supported Unity version to 2017.4 (Will probably move this again soon, since that's pretty old still)
    • Lists of rooms/characters/items are now foldable. So you can hide/show what you're interested in looking at. Useful for bigger projects.
    • Tools tab redesigned so data for different quest objects is foldable.
    • Tools tab now has Camera settings
    • TextManager: Added ability to export text from only specified rooms or characters
    • Hold Shift when clicking any script button (Use, look, etc) to open directly in the IDE (monodevelop/VS)
    • Lip sync/Mouth anims:
      • Added ability to set lipsync extended mouth shapes
      • When there's no lip-sync data, game randomly chooses mouth frames
      • When mouth node is set to (0,0) regular talking anim frames are used.
    • Added ability to override text shader in QuestTest component ShaderOverride
    • Added WIP feature for platform specific sprites in text:
      • To use: Add to list of "Text Sprites" in PowerQuest Project Settings, then tag in text like "Press [B_Button] to start" where "B_Button" is the name you gave the tag.)
    • Debug log now outputs message when tried to play an animation that doesn't exist
    • Sprites are now automatically assigned to props/characters if the name matches, even if there's no animation (so you don't have to create an anim for it to auto-work)
    • PowerSprite Animator updated to version 1.7
    • PowerSpriteImporter:
      • Can now name aseprite layers "Guide", "Ignore" or "ignore", to stop them being imported
      • Now accepts .aseprite files (previously they had to be '.ase')
      • Can now set default compression settings
    • Texture post processor: Not setting pixel filtering unless it's a pixel game
    • Added missing On Start, On Stop function buttons to DialogTree component
    • A few fixes for using unity light theme
    • Editing a point now un-selects other objects, makes it easier to see what you're doing
    • "Show walkable areas" now un-selects other objects, makes it easier to see what you're doing
  • GuiDialogTree changes:
    • Line Spacing is now the space between the lines, instead of total space (ie: takes render bounds height of dialog options into account)
    • Guis now have a PauseGame flag to specify whether they pause the game seperately to whether they're modal (capture mouse input)
    • Default GuiDialogTree no longer pauses the game
  • Game Runtime Tweaks:
    • Background Character/Prop Animations are now skipped with skipped cutscenes (unless they're looping)
    • Regions no longer trigger OnEnter if player starts on the region
    • Mouth now animates when talking even if not in talk state
    • Updated save crypto key. Previous save files won't load, but doesn't matter cause no one's shipped a game with this yet ;)
    • Changed facing segment angle to be 45deg instead of 60deg for cardinal directions and 30deg for diagonals
    • Setting FadeColor immediately changes the faded colour if already faded out rather than waiting for next fade out/in
    • GuiInfoBarComponent can be set to hide when dialog bar is visible
    • Demo dialog gui has black background on by default, and no longer pauses game
    • Added some fonts from crawl and monkey island, removed the gothic bold one
  • Misc Fixes:
    • Fix for quest script Return Command
    • Fix for GuiDialogTree listing items in reverse order
    • Fixed UnhandledEvent with one inventory item on another
    • PQ: Fixes for character restarting walk anim when changing direction
    • 'instant' flag now works in ICharacter::Face(Vector2 location, bool instant) function
    • 'Occurrences' now saved (eg: if ( E.FirstOccurance("KissedToad")... )
    • Value types of classes inside scripts are now saving correctly
    • Consume event no longer blocks the game for a frame (so you won't see hud flicker off and on again)
    • Fix for region "obstacle" being added twice, then not removed
    • Fix for anim nodes not automatically being added for characters with lipsync/mouth anims
    • Sub-sprites of characters are now tinted along with characters
    • Points editing now in undo stack
    • Fix for when dialog text is up next to edge of screen
    • Fix for regions handling other characters incorrectly
    • Camera data (eg: player offset) now updated from prefab (rather than always staying default)
    • DialogText now previews text wrapping in scene
    • Cursor "mouse over gui" animation now works

v0.8

v0.8.3 (29 August 2019)

  • Added Translation support:
    • Added export/import text to CSV feature, translations can be added here
    • Add translation codes in SystemText, and set current language setting in PowerQuest.Settings
    • Non dialog strings now added to text system so they can be translated.
      • Includes: Descriptions of quest objects, strings wrapped SystemText.Localize("..."), and QuestText components with the "Localize" box ticked
  • Cursor: Added ability to outline inventory items on hover (pixel art only)
  • Added ability to set "Section" headings in dialog.
    • Section headings are ignored in-game, but display in the exported script for voice actors. Useful to add notes there for them, and describe what's happening in a section of dialog.
    • Eg. Section: Fred drops his icecream and is sad
  • Game Customisation: Refactored code to allow customisation without editing PowerQuest itself
    • Mouse Click behavior now handled in GlobalScript. So can now be customised for each game easily (see: OnMouseClick in GlobalScript)
    • Quest Objects can now have custom data added to them for each game. (eg: if you want your game's Characters to have HP, or your game's Regions to have special shader data). See Game\PowerQuestExtensions.cs
  • Audio System:
    • Cleaned up existing functionality and Documented API
    • Added functions for Ambient sound (if upgrading, change over to use the new functions instead of the ones in GlobalScript)
    • Dialog audio pans based on character position in room (and settings in SystemAudio)
    • Music and ambient audio now saves/restores correctly
    • Rhubarb lipsync now includes the "G" sound (TODO: need to add way of customising this easily)
  • Character:
    • FaceAway() function to face direciton opposite to current
    • Added "target position" accessor, to find the position a character is currently walking to
    • Added feature forsetting separate "Mouth" animation, which is positioned on a node on the character's animation.
      • Requires SpriteAnimNode component to be added to player, and a "mouth" anim set (For now)
      • Doesn't support portraits yet, but could be added later pretty easily
      • "Anim Mouth" property has been added to characters for this feature
    • Setting Characters visible/hidden enables/disables renderers of their children to. (So you can add shadows for example, and they'll hide when character is hidden)
  • ScriptEditor:
    • Multi-Tab workflow: Click the little menu icon (top right of script editor), to to Lock or Duplicate the window. (Work in progress)
    • Fixes for adding "yield return" in non-coroutines and avoiding breaking unity TextArea GuiStyles
    • Script auto-load now opens functions called with E.WaitFor(...)
    • Can now access dialog scripts by name. eg: DialogBarney.Script.MyDialogFunction();
  • Camera:
    • Camera data now saves/restores with game
    • Camera and prop parallax is now smoothed in pixel art games, but still snaps to pixel when stops
    • QuestText no longer snapped to pixel to work with smooth camera
  • GUI:
    • Ability to set which gui is used for display boxes and dialog mid-game
    • Ability to set drop-downs mouse area to center/middle
    • Added accessor for whether dropdowns are down, and ability to force off.
    • Can now set target character in inventory panel
    • Quest GUIs are now sorted by their baseline
    • Option to hide drop-down bars in cutscenes
    • Added ability to specify when an external gui is capturing mouse clicks: Powerquest.Get.CaptureInputOn()
    • Added ability to override the mouse hover description used in the info bar
    • ScreenAlign now updates immediately when offset is changed. And tweaked to work in build same as does in editor
    • Cleaned up unused button class
  • Misc Tweaks:
    • Set description fields to be "text areas" so easier to set long descriptions
    • Custom shaders are now added to PowerQuest prefab to preload them
    • Added "sharp" Font, that doesn't do pixel snapping but still displays non-blurry font
  • Misc Fixes:
    • Multiple fixes for Unity 2018.3+
    • Sequences are now only longer cancelable as soon as any character finishes walking (not just the player)
    • "GetRoomLoading" function now works
    • No longer triggering "look" interaction when look is disabled
    • Character AddInventory function now works
    • NumUse/FirstUse now works when HandleInteraction, etc is called
    • Fix for PowerSprite shaders being shared, affecting sprite tinting

Older Versions

v0.7 (5 June 2019)

  • Character's turn to face
  • Footstep and Sound tags work in player without extra components
  • Added Prop.Move(...) function
  • Updates to PowerSpriteAnimator (nodes can have preview sprites, and autocomplete functions)
  • Tabs in script editor are handled better
  • More minor tweaks/fixes

v0.6

  • Support for Unity 2018.3+ (I've found them less stable so I'd stick with earlier unless you need to upgrade)
  • Added simple Sierra style dialog box option.
  • Script editor:
  • Fixed width font
  • Ctrl+MouseScroll adjusts font size
  • Comment highlighting (kinda)
  • Skip dialog tweaks
    • Optional delay before click skips text
    • Spacebar skips text
    • ESC no longer skips text after ending a cutscene until released/re-pressed
  • Fixes
    • Fixed hang when setting text wrap width
    • StopDialog function is now blocking
    • Other minor fixes

v0.5

  • Added region based character Tinting
  • Added region based character Scaling
  • Camera functionality:
    • Camera Size now set in PowerQuest, and can be overridden in Rooms (Vertical Resolution property)
    • Camera Zoom function. (Further functionality such as zoom transitions still to come)
    • Enabled property- Allows you to to disable camera movement easily, when you want to play animations on it yourself
    • IgnoreBounds property - Useful when want to cut to other parts of scene outside the room during cutscenes
  • Quest Script editor improvements:
    • Auto-load tickbox opens up current interaction automatically while you're testing the game
    • Hotloading no longer fails when scripts access other scripts
    • Misc fixes and visual improvements
  • Video playback functions added to props
  • AudioCue cleanup and moved "Loop" tickbox to main cue (instead of per clip)
  • Added separate Music/Sound/Dialog volume settings
  • Added QuestSettings to API documentation and autocomplete
  • Lots of minor bugfixes/tweaks

v0.4

  • Refactored things so package can be distributed and projects can be updated without losing changes
  • Added Regions, separating functionality from Hotspots
  • Added diagonal anim directions
  • Added ability to change player character mid-game
  • Replaced Pathfinding with my own solution (removed PolyNav2d)
  • Updated PowerSpriteImporter and PowerSpriteAnim with new features

v0.3

  • Quest Script Autocomplete
  • Quest Script header editing
  • Added tickbox for pixel art games which enables snap to pixel, and pixel fonts
  • Can now renaming quest objects (characters, rooms, etc) from their inspector
  • Rooms now have points to easily get a position
  • Can now enable/disable different interactions in the editor (Use/Look/Inventory) for different projects
  • Added support for camera moving vertically
  • Added more complex room bounds, can be set by dragging box in the scene. So rooms no longer have to worry about being centered
  • Script Sequences can now span across room changes
  • Quest script has nicer formatting for props/hotspot (eg: Props.Door instead of Props("Door"))
  • Added convenient way of getting to another Quest object's script variables. Eg: RoomKitchen.Script.m_drawerOpen
  • Interactions can now be cancelled (most notably, the initial WalkTo in any interaction)
  • Background dialog working (DisplayBG: hello)
  • Asset importer improvements- can now right click on folder and import sprites from photoshop
  • Million other tweaks and fixes

v0.2

  • Fixes for Unity 2017

v0.1

  • First test alpha version