Compile Time Changes

General Accessory System

Added new helper functions for getting values from accessories like the AccEnv that made it, the Location key, and whether it's an auto accessory. See bottom of accessoryEnv.cm

Deprecated the following classes. SelectAccessoryVessel, AccessoryLocationSelectionVessel

AccessoryGenerationBehavior

AccessoryGenerationBehavior no longer has a owner field. This was changed to be more memory efficient by allowing the behavior to act as a singleton. All methods that referenced this field were changed to take in the owner parameter instead. New methods were added to get the owner from an accessory as well.

AccessoryGenerationBehavior now extends PropObj instead of CoreObject.

generateAutoAccessories() now will remove unneeded accessories before it gathers neighbor accessories to prevent the system from removing accessories from the owner.

removeAutoAccessories() has been moved to AccessoryEnv class.

AccessoryLocation

AccessoryLocation now extends SnapAlternative instead of CoreObject. By extending SnapAlternative we can better support child snappers and a more traditional snapper insert process. This also gives some basis for generating locations from existing connectors.

Replace AccessoryLocation references with SnapAlternative.

AccessoryLocation now has an owner field to get reference to the Object that made the location.

Renamed the following fields '''cm Old : public str{} acceptedTypes; New : public str{} filter;

Old : public int priority; New : public int sortPriority; '''

AccessoryEnv

AccessoryEnv now extends PropObj instead of CoreObject.

Added an abstract method for getting an accessory's owner. '''cm public CoreObject getAccOwner(CoreObject acc). '''

Added an abstract method for updating an accessory. '''cm public bool updateAccessory(CoreObject owner, AccGenBehavior behavior, CoreObject acc, SnapAlternative loc) '''

Moved the removeAllAccessories() to the AccessoryGenerationBehavior.

Removed the accessoryKey() method. This logic should be handled in an implementation of updateAccessory().

isManagedAccessory() now also checks whether the accessory's owner matches the current owner we are working with.

handleLocation() now only calls checkForConflicts() if the accessory is successfully updated (returns true from updateAccessory()).

Renamed prop keys '''cm Old public const str cAccEnvKey = "accEnv"; public const str cAccLocKey = "accLoc"; public const str cAccAutoKey = "accAuto"; public const str cAccTypeKey = "accType";

New public const str cAccEnvPK = "accEnv"; public const str cAccLocPK = "accLoc"; public const str cAccAutoPK = "accAuto"; public const str cAccInsertPK = "accInsert"; public const str cAccTypePK = "accType"; '''

AccessoryPriorityEnv

Added priority() and defaultPriority() methods called by AccessoryGenerationBehavior to provide an easier way for AccEnvs to dictate their priorities.

AddAccessoryVessel

This is no longer abstract and now extends AccToolVessel. Much of it's behavior has been moved to be handled by the AccToolAnimation and AccToolVessel.

RemoveAccessoryVessel

This now extends AccToolVessel. Much of it's behavior has been moved to be handled by the AccToolAnimation and AccToolVessel.