public void changeStackParent(GameObject selected, GameObject newParent)
    {
        isActive               = true;
        selectedObject         = selected;
        scriptOfSelectedObject = (ObjectScript)selected.GetComponent("ObjectScript");

        if (scriptOfSelectedObject == null)
        {
            isActive = false;
            return;
        }

        parentObject = scriptOfSelectedObject.getParent();
        if (parentObject == null)
        {
            isActive = false;
            return;
        }

        scriptOfParentObject = (ObjectScript)parentObject.GetComponent("ObjectScript");
        ObjectScript npScript = (ObjectScript)newParent.GetComponent("ObjectScript");

        if (!npScript)
        {
            return;
        }
        if (npScript.canBeStackedOn == false)
        {
            return;
        }

        scriptOfParentObject.detachChild(selected);
        parentObject         = newParent;
        scriptOfParentObject = npScript;
        ((SmoothCameraScript)GetComponent("SmoothCameraScript")).changeViewedObject(newParent);
        topDownAxisInverted = topDownAxisIsInverted();
        calculateDimensions();

        if (gridModus)
        {
            selected.transform.parent   = null;
            selected.transform.rotation = parentObject.transform.rotation;
            goToDefaultPositionGrid();
            scriptOfParentObject.addChildInGrid(selected, currColInGrid, currRowInGrid);
        }
        else
        {
            selected.transform.parent   = null;
            selected.transform.rotation = parentObject.transform.rotation;
            goToDefaultPosition();
            scriptOfSelectedObject.addChild(selected, currLeftRightOnObject, currTopDownOnObject);
        }
    }
    // The object will be cloned and placed onto selectedObject
    public void End()
    {
        if (!isActive)
        {
            return;
        }

        GameObject clone = null;

        if (currentPossibleStackedObject)
        {
            Vector3    temp  = currentPossibleStackedObject.transform.position;
            Quaternion temp2 = currentPossibleStackedObject.transform.rotation;

            ObjectScript oscript = (ObjectScript)currentPossibleStackedObject.GetComponent("ObjectScript");
            string       name_   = (string)(oscript.clone());
            clone = GameObject.Find(name_);
            clone.transform.position = temp;
            clone.transform.rotation = temp2;

            if (gridModus)
            {
                scriptOfSelectedObject.addChildInGrid(clone, currColInGrid, currRowInGrid);
            }
            else
            {
                scriptOfSelectedObject.addChild(clone, currLeftRightOnObject, currTopDownOnObject);
            }

            temp.y = -50f;
            currentPossibleStackedObject.transform.position = temp;
        }

        foreach (GameObject obj in lines)
        {
            Destroy(obj);
        }
        lines.Clear();

        ((SmoothCameraScript)GetComponent("SmoothCameraScript")).returnFromTopview();
        isActive = false;
    }
	public void changeStackParent(GameObject selected, GameObject newParent){
		isActive = true;
		selectedObject = selected;
		scriptOfSelectedObject = (ObjectScript) selected.GetComponent("ObjectScript");	
			
		if(scriptOfSelectedObject == null){
			isActive = false;
			return;
		}
			
		parentObject = scriptOfSelectedObject.getParent();
		if(parentObject == null){
			isActive = false;
			return;
		}		
						
		scriptOfParentObject = 	(ObjectScript) parentObject.GetComponent("ObjectScript");			
		ObjectScript npScript = (ObjectScript) newParent.GetComponent("ObjectScript");	
		if(!npScript)
			return;
		if(npScript.canBeStackedOn == false)
			return;
	
		scriptOfParentObject.detachChild(selected);
		parentObject = newParent;						
		scriptOfParentObject = 	npScript;		
		((SmoothCameraScript) GetComponent("SmoothCameraScript")).changeViewedObject(newParent);	
		topDownAxisInverted = topDownAxisIsInverted();
		calculateDimensions();
		
		if(gridModus){
			selected.transform.parent = null;
			selected.transform.rotation = parentObject.transform.rotation;
			goToDefaultPositionGrid();				
			scriptOfParentObject.addChildInGrid(selected, currColInGrid, currRowInGrid);
		}			
		else{
			selected.transform.parent = null;
			selected.transform.rotation = parentObject.transform.rotation;
			goToDefaultPosition();	
			scriptOfSelectedObject.addChild(selected, currLeftRightOnObject, currTopDownOnObject);
		}
	}