public void UpdateSplineObjects_OnUndo(){
		if(!tNode.CanSplinate()){ return; }
		if(tNode.SplinatedObjects == null){ tNode.SplinatedObjects = new List<GSD.Roads.Splination.SplinatedMeshMaker>(); }
		
		//Destroy all children:
    	for(int i=tNode.transform.childCount-1;i>=0;i--){
	        Object.DestroyImmediate(tNode.transform.GetChild(i).gameObject);
	    }
		
		//Re-setup the SMM:
		eCount = tNode.SplinatedObjects.Count;
		for(int i=0;i<eCount;i++){	
			SMM = tNode.SplinatedObjects[i];
			SMM.UpdatePositions();
			//if(SMM.bIsStretch != SMM.bIsStretch){ 
				if(SMM.bIsStretch){
					SMM.CollisionType = GSD.Roads.Splination.CollisionTypeEnum.BoxCollision;
					SMM.bMatchRoadDefinition = false;
					SMM.bMatchTerrain = false;
					SMM.bCollisionConvex = false;
					SMM.bEndDown = false;
					SMM.bVerticalCutoff = false;
					SMM.bExactSplination = false;
					SMM.bEndTypeDownOverride = false;
				}
			//}				
			SMM.Setup(true);
		}
		
		UpdateEdgeObjects_OnUndo();
	}
	public void UpdateSplineObjects(){
		if(!tNode.CanSplinate()){ return; }
		if(tNode.SplinatedObjects == null){ tNode.SplinatedObjects = new List<GSD.Roads.Splination.SplinatedMeshMaker>(); }
		eCount = tNode.SplinatedObjects.Count;
		for(int i=0;i<eCount;i++){	
			SMM = tNode.SplinatedObjects[i];
			if(SMM.EM != null){
				if(!SMM.EM.IsEqualToSMM(SMM)){
					SMM.EM.LoadToSMM(SMM);

					SMM.UpdatePositions();
					if(SMM.EM.bIsStretch != SMM.bIsStretch){ 
						if(SMM.bIsStretch){
							SMM.CollisionType = GSD.Roads.Splination.CollisionTypeEnum.BoxCollision;
							SMM.bMatchRoadDefinition = false;
							SMM.bMatchTerrain = false;
							SMM.bCollisionConvex = false;
							SMM.bEndDown = false;
							SMM.bVerticalCutoff = false;
							SMM.bExactSplination = false;
							SMM.bEndTypeDownOverride = false;
						}
					}
										
					SMM.Setup(true);
//					Debug.Log ("Setup SMM");
				}
			}
		}
	}