Skip to content

Authoring Tools Framework 3.6 RELEASED

Gary edited this page Mar 10, 2015 · 6 revisions

The Authoring Tools Framework (ATF) 3.6 Release has many improvements and bug fixes, reflecting six months of work and client contributions. There are some minor compile-time breaking changes that are unlikely to affect anyone. Please see below for details.

Table of Contents

Top New Features

  • Circuit Group work with Santa Monica Studios and Guerrilla Games:
    • Circuit pins can be made visible or not.
    • There have been many usability improvements.
  • Perforce performance and workflow improvements
  • TimelineEditor improvements with respect to child documents
  • Recently used documents can be "pinned" so that they are not displaced by more recent documents.
  • DOM debugging improvements:
  • Many memory leaks related to documents have been fixed and Controls are disposed of sooner. This helps with automated testing and opening hundreds of documents.

Compatibility with Windows® 8

All of our sample apps appear to run correctly on Windows® 8. The only real issue that we are aware of is that the Direct2D performance has more variation when compared to Windows® 7, and is generally worse. We expect the performance to improve over time as newer drivers are released.

Breaking Changes

Visual Studio 2008 support has been dropped for the following reasons:

  • We think there may be no clients who use VS2008 and who for some reason can't use VS2010 or VS2012.
  • We would like to reduce our maintenance and testing requirements.
  • We would like to use C# 4 language features more freely, such as optional and named parameters, covariance, and contravariance.
Sce.Atf.CustomFileDialog: the UserControl property has been marked obsolete and no longer has any effect. Also, in the unlikely event that your code implemented ShowDialogInternal(), this method can be removed. We made these changes for the following reasons:
  • The UserControl property didn't work on Windows® 8.
  • The file open/save dialog boxes were not always modal as they should be.
  • ShowDialogInternal() no longer has a purpose now that the .Net Framework versions of the file-open and file-close dialog boxes are used.
IItemDragAdapter has a new method, EndingDrag(). In the unlikely event that a client has implemented this interface directly, rather than deriving from ATF's implementations, then simply put in the new method and have it do nothing. In the very unlikely event that client code is calling IItemDragAdapter objects, then call BeginDrag() first, then EndingDrag(). Finally, a transaction can be started and EndDrag() can be called.
Element.Synchronize(), Annotation.Synchronize(), and GroupPin.Synchronize() are no longer necessary and have been marked as obsolete. Client code should no longer call these methods, as they do nothing and will be removed in a future release of ATF. The reason for this change was that client code could easily forget to call these methods, or call them at the wrong time, and the overall API was unnecessarily complicated. We refactored the circuit elements to no longer keep duplicate data, some of which was backed by the DOM and a copy which was cached outside the DOM.
DomRecorder's Root property has been removed because DomRecorder now has the ability to report all DOM changes in all DomNode trees, using new (internal) diagnostic events in DomNode. In the unlikely event that client code was setting this property, simply remove that code.
Sce.Atf.Applications.ReplaceTextBox's protected property ReplacableContext was misspelled and has been corrected to be ReplaceableContext.

Overview of bug fixes and improvements

Just over 300 changelists have been submitted in the last six months. The following is an overview of the issues that were addressed.

CircuitEditor/Circuit Groups/Templates

  • Reactivated the group pin visibility toggling feature that was turned off for ATF3.5 release.
  • Fixed numerous drawing, property editing, and pin management issues with groups, templates, and hidden pins.
  • Fixed issues with nested groups and nested templates.
  • Added support for negative coordinates in sub-circuit elements in a group. Note that scrollbars don't work correctly with negative coordinates.
  • Expanding a group no longer causes the document to be marked dirty.
  • Lots of code changes, including making many members virtual or expanding their accessibility level from private to protected or public.

Source Control/PerforceService

  • Improved error handling in source control to gracefully handle failed requests.
  • Made many improvements to connection workflow, including autoconnecting to a default connection if one is available, and prompting the user for configuration information if there is no default connection specified in the app settings.
  • Prevent recurring warnings and login prompts when the service is unavailable or the user cancels the login dialog.
  • Added a cache, to avoid rapid calls to the Perforce server when callers ask for the source-control status of files. A new public property, CacheExpireTimeInSeconds, controls how long the P4 status info will be used before it expires. The default is 60 seconds. RefreshStatus() overloads clear the cached data so they force a call to Perforce without waiting for the timeout to elapse.

Annotations

  • Numerous annotation enhancements to improve usability and make text editing in annotations behave like a standard Windows® text control. DirectWrite is now used internally.

Other changes

  • TimelineEditor: Fixed an issue with saving a document containing a reference when that document was not the currently active document. Improved performance and robustness.
  • Direct2D utilities: Upgraded to SharpDX 2.4.2. Improved error and resource handling.
  • Document and XMLhandling: Recent Files menu now appears even if it is empty. Documents can now be pinned to the Recent Files list. Improved handling for having multiple files open with the same filename but different paths. Added support for the 'substitutionGroup' attribute to allow XML files to be simpler.
  • Property Editing: Added DomNode.IsAttributeEqualToDefault() so the DomNode no longer raises an attribute changed event if the attribute is the default and then is explicitly set to the default value. Added support for using schema annotation to set Min and Max properties for BoundedIntEditor. Made property editing control behave more like Visual Studio's property editor.
  • Diagnostics: Added a deep analysis mode to DomRecorder. Improved order of events handled by HistoryContext so undo/redo work correctly. Added custom DomNode information that can be viewed in the Visual Studio debugger.
  • Memory leak fixes:
    • AutoDocumentService: removed a useless event handler that was causing the last auto-created document to be held on to permanently.
    • CommandService: discarded menu and button Controls are now disposed of when they are no longer needed. This frees up system handles sooner, rather than waiting for the garbage collector to call these Controls' finalizers.
    • D2dCircuitRenderer: now (optionally) maintains a circuit element type cache per document, rather than one permanent cache. Some circuit element types are DomNodeAdapters, which can keep whole documents permanently in memory, so this change can save memory and even system resources.
    • GridView and PropertyGridView: fixed a memory leak of delegate objects and fixed a potentially bad performance problem, since event handlers were repeatedly being added to same event, and were not getting removed.
    • D2dTimelineControl: fixed Dispose() so that it can be called multiple times.
  • TreeListView: Added support for skinning. Fixed a crash where old selection indices were being used even if all the nodes had been removed.
  • Other changes: Added a way to programmatically adjust the amount of space given to the left, top, right, and bottom docking panels, as a fraction of the overall window size. Added support for autocomputing curve limits in Curve Editor.

Documentation

  • Added new Getting Started with ATF document.
  • Major revisions to ATF Programmers’ Guide: Document Object Model (DOM)
Clone this wiki locally