| 
														
															@@ -417,7 +417,7 @@ STRUCTURE(MTransformData){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsVector4d Up,Right,Foward; 
														 | 
														
														 | 
														
															     tnsVector4d Up,Right,Foward; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsVector4d TCenter; 
														 | 
														
														 | 
														
															     tnsVector4d TCenter; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     int CenterX,CenterY; real Initial; 
														 | 
														
														 | 
														
															     int CenterX,CenterY; real Initial; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    tnsObject* mo; tnsMatrix44d obmatinv; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    tnsObject* mo; tnsMatrix44d obmatinv,deltainv; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsCamera* c; tnsObject* root; 
														 | 
														
														 | 
														
															     tnsCamera* c; tnsObject* root; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     int w,h; 
														 | 
														
														 | 
														
															     int w,h; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     void* Originals; int next,max; 
														 | 
														
														 | 
														
															     void* Originals; int next,max; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -426,9 +426,10 @@ STRUCTURE(MTransformData){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     int UseLocal; 
														 | 
														
														 | 
														
															     int UseLocal; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     real DeltaVal, UserDeltaVal; 
														 | 
														
														 | 
														
															     real DeltaVal, UserDeltaVal; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     laStringEdit* Entry; int UseUserDelta; 
														 | 
														
														 | 
														
															     laStringEdit* Entry; int UseUserDelta; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    int CanvasDeltaMode; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }; 
														 | 
														
														 | 
														
															 }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-MTransformData* la_InitTransformData(int w, int h, tnsCamera* c){ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+MTransformData* la_InitTransformData(int w, int h, tnsCamera* c, int CanvasDeltaMode){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     MTransformData* td=memAcquireSimple(sizeof(MTransformData)); 
														 | 
														
														 | 
														
															     MTransformData* td=memAcquireSimple(sizeof(MTransformData)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsVector4d pu={0,1,0,0}, pr={1,0,0,0}, pf={0,0,1}; 
														 | 
														
														 | 
														
															     tnsVector4d pu={0,1,0,0}, pr={1,0,0,0}, pf={0,0,1}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsGetCameraMovingDeltas(c,w,h,1,0,pr); pr[2]=0; pr[3]=0; 
														 | 
														
														 | 
														
															     tnsGetCameraMovingDeltas(c,w,h,1,0,pr); pr[2]=0; pr[3]=0; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -439,7 +440,7 @@ MTransformData* la_InitTransformData(int w, int h, tnsCamera* c){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsApplyRotation43d(td->Foward,inv,pf); 
														 | 
														
														 | 
														
															     tnsApplyRotation43d(td->Foward,inv,pf); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsGetCameraViewProjection(td->ViewProjection, w,h,c); 
														 | 
														
														 | 
														
															     tnsGetCameraViewProjection(td->ViewProjection, w,h,c); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    td->c=c; td->w=w; td->h=h; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    td->c=c; td->w=w; td->h=h; td->CanvasDeltaMode=CanvasDeltaMode; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     strBeginEdit(&td->Entry, ""); 
														 | 
														
														 | 
														
															     strBeginEdit(&td->Entry, ""); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return td; 
														 | 
														
														 | 
														
															     return td; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -475,6 +476,7 @@ int la_PopulateTransformVerticies(MTransformData* td, tnsMeshObject* mo){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     int any=0; td->mo=mo; 
														 | 
														
														 | 
														
															     int any=0; td->mo=mo; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     arrEnsureLength(&td->Originals, 0, &td->max, sizeof(MTOrigMVert)); 
														 | 
														
														 | 
														
															     arrEnsureLength(&td->Originals, 0, &td->max, sizeof(MTOrigMVert)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsInverse44d(td->obmatinv, mo->Base.GlobalTransform); 
														 | 
														
														 | 
														
															     tnsInverse44d(td->obmatinv, mo->Base.GlobalTransform); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    tnsInverse44d(td->deltainv, mo->Base.DeltaTransform); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     for(tnsMVert* mv=mo->mv.pFirst;mv;mv=mv->Item.pNext){ 
														 | 
														
														 | 
														
															     for(tnsMVert* mv=mo->mv.pFirst;mv;mv=mv->Item.pNext){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if(!(mv->flags&TNS_MESH_FLAG_SELECTED)) continue; 
														 | 
														
														 | 
														
															         if(!(mv->flags&TNS_MESH_FLAG_SELECTED)) continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         //printf("v %d ",mv->i); 
														 | 
														
														 | 
														
															         //printf("v %d ",mv->i); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -511,13 +513,21 @@ void la_ApplyTranslation(MTransformData* td, int x, int y){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
														
														 | 
														
															             MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
														
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsGlobalMatrixChanged(to->o, 0); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if(td->UseLocal) tnsMoveObjectLocal(to->o, LA_COLOR3(use_delta)); else tnsMoveObjectGlobal(to->o, LA_COLOR3(use_delta)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->CanvasDeltaMode) tnsGlobalMatrixChangedForDelta(to->o, 0); else tnsGlobalMatrixChanged(to->o, 0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->UseLocal){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if(td->CanvasDeltaMode) tnsMoveObjectDelta(to->o, LA_COLOR3(use_delta)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                else tnsMoveObjectLocal(to->o, LA_COLOR3(use_delta)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if(td->CanvasDeltaMode) tnsMoveObjectGlobalForDelta(to->o, LA_COLOR3(use_delta)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                else tnsMoveObjectGlobal(to->o, LA_COLOR3(use_delta)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }else{ 
														 | 
														
														 | 
														
															     }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tnsMakeTranslationMatrix44d(trans, LA_COLOR3(use_delta)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        tnsMakeTranslationMatrix44d(trans, LA_COLOR3(use_delta)); tnsMatrix44d final;  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(!td->UseLocal) tnsMultiply44d(final,td->obmatinv,trans); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        else tnsMultiply44d(final,trans,td->obmatinv); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsApplyTransform43d(gp, trans, to->p); if(!td->UseLocal) tnsApplyTransform43d(to->mv->p, td->obmatinv, gp); else tnsVectorCopy3d(gp, to->mv->p); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tnsApplyTransform43d(to->mv->p, final, to->p); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         tnsInvalidateMeshBatch(td->mo); tnsMMeshCalculateNormal(td->mo); 
														 | 
														
														 | 
														
															         tnsInvalidateMeshBatch(td->mo); tnsMMeshCalculateNormal(td->mo); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -530,14 +540,25 @@ void la_ApplyScale(MTransformData* td, int uix, int uiy){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
														
														 | 
														
															             MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
														
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsGlobalMatrixChanged(to->o, 0); tnsScaleObject(to->o, s, LA_COLOR3(td->TCenter)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->CanvasDeltaMode) tnsGlobalMatrixChangedForDelta(to->o, 0); else tnsGlobalMatrixChanged(to->o, 0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->CanvasDeltaMode) tnsScaleObjectDelta(to->o,s,LA_COLOR3(td->TCenter)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            else tnsScaleObject(to->o, s, LA_COLOR3(td->TCenter)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }else{ 
														 | 
														
														 | 
														
															     }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tnsMakeScaleMatrix44d(trans,s,s,s); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        tnsVector3d use_delta={s,s,s}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(td->LockAxis[0]>0){ use_delta[1]=use_delta[2]=1;} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(td->LockAxis[1]>0){ use_delta[0]=use_delta[2]=1;} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(td->LockAxis[2]>0){ use_delta[0]=use_delta[1]=1;} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(td->LockAxis[0]<0){ use_delta[0]=1; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(td->LockAxis[1]<0){ use_delta[1]=1; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(td->LockAxis[2]<0){ use_delta[2]=1; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        tnsMakeScaleMatrix44d(trans,LA_COLOR3(use_delta)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         tnsMatrix44d t1,t2,t3; tnsMakeTranslationMatrix44d(t1,LA_COLOR3(td->TCenter)); tnsInverse44d(t2,t1); 
														 | 
														
														 | 
														
															         tnsMatrix44d t1,t2,t3; tnsMakeTranslationMatrix44d(t1,LA_COLOR3(td->TCenter)); tnsInverse44d(t2,t1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tnsMatrix44d final; tnsMultiply44d(t3,t1,trans); tnsMultiply44d(final,t3,t2); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        tnsMatrix44d final; tnsMultiply44d(t3,t1,trans); tnsMultiply44d(t1,t3,t2); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(!td->UseLocal) tnsMultiply44d(final,td->obmatinv,t1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        else tnsMultiply44d(final,t1,td->obmatinv); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsApplyTransform43d(gp, final, to->p); tnsApplyTransform43d(to->mv->p, td->obmatinv, gp); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tnsApplyTransform43d(to->mv->p, final, to->p); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         tnsInvalidateMeshBatch(td->mo); tnsMMeshCalculateNormal(td->mo); 
														 | 
														
														 | 
														
															         tnsInvalidateMeshBatch(td->mo); tnsMMeshCalculateNormal(td->mo); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -554,14 +575,23 @@ void la_ApplyRotation(MTransformData* td, int uix, int uiy){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
														
														 | 
														
															             MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
														
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsGlobalMatrixChanged(to->o, 0); tnsRotateObjectGlobal(to->o,LA_COLOR3(use_forward),angle,LA_COLOR3(td->TCenter)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->CanvasDeltaMode) tnsGlobalMatrixChangedForDelta(to->o, 0); else tnsGlobalMatrixChanged(to->o, 0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->UseLocal){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if(td->CanvasDeltaMode) tnsRotateObjectDelta(to->o,LA_COLOR3(use_forward),angle,LA_COLOR3(td->TCenter)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                else  tnsRotateObjectLocal(to->o,LA_COLOR3(use_forward),angle,LA_COLOR3(td->TCenter)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if(td->CanvasDeltaMode) tnsRotateObjectGlobalForDelta(to->o,LA_COLOR3(use_forward),angle,LA_COLOR3(td->TCenter)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                else tnsRotateObjectGlobal(to->o,LA_COLOR3(use_forward),angle,LA_COLOR3(td->TCenter)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }else{ 
														 | 
														
														 | 
														
															     }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         tnsMakeRotationMatrix44d(trans, angle, LA_COLOR3(use_forward)); 
														 | 
														
														 | 
														
															         tnsMakeRotationMatrix44d(trans, angle, LA_COLOR3(use_forward)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         tnsMatrix44d t1,t2,t3; tnsMakeTranslationMatrix44d(t1,LA_COLOR3(td->TCenter)); tnsInverse44d(t2,t1); 
														 | 
														
														 | 
														
															         tnsMatrix44d t1,t2,t3; tnsMakeTranslationMatrix44d(t1,LA_COLOR3(td->TCenter)); tnsInverse44d(t2,t1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tnsMatrix44d final; tnsMultiply44d(t3,t1,trans); tnsMultiply44d(final,t3,t2); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        tnsMatrix44d final; tnsMultiply44d(t3,t1,trans); tnsMultiply44d(t1,t3,t2); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(!td->UseLocal) tnsMultiply44d(final,td->obmatinv,t1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        else tnsMultiply44d(final,t1,td->obmatinv); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsApplyTransform43d(gp, final, to->p); tnsApplyTransform43d(to->mv->p, td->obmatinv, gp); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tnsApplyTransform43d(to->mv->p, final, to->p); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         tnsInvalidateMeshBatch(td->mo); tnsMMeshCalculateNormal(td->mo); 
														 | 
														
														 | 
														
															         tnsInvalidateMeshBatch(td->mo); tnsMMeshCalculateNormal(td->mo); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -571,7 +601,8 @@ void la_CancelTransformObjects(MTransformData* td){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigObject* to=arrElement(td->Originals, i, sizeof(MTOrigObject)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
														
														 | 
														
															             if(to->Discard){ tnsSelfMatrixChanged(to->o,1); continue; } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
														
														 | 
														
															             memcpy(to->o->GlobalTransform, to->Global,sizeof(tnsMatrix44d)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tnsGlobalMatrixChanged(to->o, 1); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if(td->CanvasDeltaMode) tnsGlobalMatrixChangedForDelta(to->o, 1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            else tnsGlobalMatrixChanged(to->o, 1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }else{ 
														 | 
														
														 | 
														
															     }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); tnsVectorCopy3d(to->origp,to->mv->p); } 
														 | 
														
														 | 
														
															         for(int i=0;i<td->next;i++){ MTOrigMVert* to=arrElement(td->Originals, i, sizeof(MTOrigMVert)); tnsVectorCopy3d(to->origp,to->mv->p); } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -615,7 +646,7 @@ int la_InitTransform(laOperator* a, laEvent* e, int mode){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsObject*root=ui?ui->PP.EndInstance:0; if(!root) return 0; 
														 | 
														
														 | 
														
															     tnsObject*root=ui?ui->PP.EndInstance:0; if(!root) return 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tnsMeshObject* mo=root->Active; 
														 | 
														
														 | 
														
															     tnsMeshObject* mo=root->Active; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    MTransformData* td=la_InitTransformData(ex->OffScr->pColor[0]->Width, ex->OffScr->pColor[0]->Height, c); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    MTransformData* td=la_InitTransformData(ex->OffScr->pColor[0]->Width, ex->OffScr->pColor[0]->Height, c, ex->DeltaMode); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     a->CustomData = td; 
														 | 
														
														 | 
														
															     a->CustomData = td; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     td->mode=mode; 
														 | 
														
														 | 
														
															     td->mode=mode; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     td->root=root; 
														 | 
														
														 | 
														
															     td->root=root; 
														 |