private void onAfterManipulatableObjectReParented(Transform newParent, GameObject obj) { ObjectManipulator.SetUniqueGameObjectName(obj, newParent); UpdateLayoutForManipulatableObject(newParent, obj.GetComponent <ManipulatableObject>()); foreach (Transform item in obj.transform) { ManipulatableObject component = item.GetComponent <ManipulatableObject>(); if (component != null) { component.SetParent(component.transform.parent); } } }
private DecorationLayoutData UpdateLayoutForManipulatableObject(Transform newParent, ManipulatableObject mo) { string pathId = mo.PathId; if (newParent != mo.transform.parent) { ObjectManipulator.SetUniqueGameObjectName(mo.gameObject, newParent); } DecorationLayoutData decorationLayoutData = default(DecorationLayoutData); decorationLayoutData.Id.Name = mo.gameObject.name; decorationLayoutData.Id.ParentPath = GetRelativeGameObjectPath(newParent.gameObject); decorationLayoutData.DefinitionId = mo.DefinitionId; decorationLayoutData.Type = mo.Type; decorationLayoutData.Position = mo.gameObject.transform.localPosition; decorationLayoutData.Rotation = mo.gameObject.transform.localRotation; decorationLayoutData.UniformScale = mo.gameObject.transform.localScale.x; DecorationLayoutData data = decorationLayoutData; if (data.Id.ParentPath == "") { data.Position = mo.gameObject.transform.position; data.Rotation = mo.gameObject.transform.rotation; data.UniformScale = mo.gameObject.transform.lossyScale.x; data.Id.ParentPath = null; } SetCustomPropertiesInDecoration(ref data, mo.GetComponent <PartneredObject>()); if (SceneLayoutData.ContainsKey(pathId)) { SceneLayoutData.UpdateDecoration(pathId, data); } else { SceneLayoutData.AddDecoration(data); } return(data); }