'From Squeakland 3.8.5976 of 25 August 2004 [latest update: #308] on 4 September 2004 at 7:17:25 pm'! "Change Set: ConnectorMorphHeadingFix-nk Date: 4 September 2004 Author: Ned Konz Fixes for some etoy-related problems with NCAAConnectorMorph and NCLineMorph: * changing scale factor from a viewer caused a walkback * changing heading from a viewer caused a walkback Also makes sure that changing scale factor of a PolygonMorph from a player/viewer won't unnecessarily add a TransformMorph. "! !Morph methodsFor: 'geometry eToy' stamp: 'nk 9/4/2004 11:00'! scale: newScale "Backstop for morphs that don't have to do something special to set their scale" ! ! !Morph methodsFor: 'geometry eToy' stamp: 'nk 9/4/2004 10:49'! scaleFactor ^self valueOfProperty: #scaleFactor ifAbsent: [ 1.0 ] ! ! !Morph methodsFor: 'geometry eToy' stamp: 'nk 9/4/2004 11:04'! scaleFactor: newScale "Backstop for morphs that don't have to do something special to set their scale " | toBeScaled | toBeScaled := self. newScale = 1.0 ifTrue: [(self heading isZero and: [self isFlexMorph]) ifTrue: [toBeScaled := self removeFlexShell]] ifFalse: [self isFlexMorph ifFalse: [toBeScaled := self addFlexShellIfNecessary]]. toBeScaled scale: newScale. toBeScaled == self ifTrue: [ newScale = 1.0 ifTrue: [ self removeProperty: #scaleFactor ] ifFalse: [ self setProperty: #scaleFactor toValue: newScale ]]! ! !Player methodsFor: 'slot getters/setters' stamp: 'nk 9/4/2004 10:23'! setScaleFactor: aNumber "Set the scale factor to be the given value" costume scaleFactor: ((aNumber asFloat max: 0.1) min: 10.0)! ! !PolygonMorph methodsFor: 'geometry eToy' stamp: 'nk 9/4/2004 11:57'! scale: scaleFactor | flex center ratio | ratio := self scaleFactor / scaleFactor. self borderWidth: ((self borderWidth / ratio) rounded max: 0). center := self referencePosition. flex := (MorphicTransform offset: center negated) withScale: ratio. self setVertices: (vertices collect: [:v | (flex transform: v) - flex offset]). super scale: scaleFactor.! !