Selaa lähdekoodia

Merge pull request #1333 from nockawa/AlignmentBug

Canvas2D: bug fixing
Loïc Baumann 9 vuotta sitten
vanhempi
commit
fc9a75b4c7

+ 3 - 1
src/Canvas2d/babylon.prim2dBase.ts

@@ -2794,6 +2794,7 @@
                 }
 
                 this.clearPropertiesDirty(tflags);
+                this._setFlags(SmartPropertyPrim.flagGlobalTransformDirty);
                 return true;
             }
             return false;
@@ -2892,7 +2893,7 @@
                 let parentDirty = (this._parent != null) ? (this._parent._globalTransformStep !== this._parentTransformStep) : false;
 
                 // Check if we have to update the globalTransform
-                if (!this._globalTransform || localDirty || parentDirty || parentPaddingChanged) {
+                if (!this._globalTransform || localDirty || parentDirty || parentPaddingChanged || this._areSomeFlagsSet(SmartPropertyPrim.flagGlobalTransformDirty)) {
                     let globalTransform = this._parent ? this._parent._globalTransform : null;
 
                     let localTransform: Matrix;
@@ -2907,6 +2908,7 @@
 
                     this._globalTransformStep = this.owner._globalTransformProcessStep + 1;
                     this._parentTransformStep = this._parent ? this._parent._globalTransformStep : 0;
+                    this._clearFlags(SmartPropertyPrim.flagGlobalTransformDirty);
                 }
                 this._globalTransformProcessStep = this.owner._globalTransformProcessStep;
             }

+ 1 - 0
src/Canvas2d/babylon.smartPropertyPrim.ts

@@ -635,6 +635,7 @@
         public static flagNeedRefresh            = 0x0020000;    // set if the primitive wasn't successful at refresh
         public static flagActualScaleDirty       = 0x0040000;    // set if the actualScale property needs to be recomputed
         public static flagDontInheritParentScale = 0x0080000;    // set if the actualScale must not use its parent's scale to be computed
+        public static flagGlobalTransformDirty   = 0x0100000;    // set if the global transform must be recomputed due to a local transform change
 
         private   _flags             : number;
         private   _externalData      : StringDictionary<Object>;