static public GameObject CreateEntityFromAsset(GameObject prefab) { GameObject entObj = null; // Create a custom game object GameObject go = Instantiate(prefab); EntityData entity = go.GetComponent <EntityData>(); if (entity) { entObj = go; } else { entObj = new GameObject(go.name); go.transform.SetParent(entObj.transform); var repr = go.AddComponent <EntityRepresentation>(); repr.assetType = EntityRepresentation.AssetType.Prefab; string path = AssetDatabase.GetAssetPath(prefab); AssetImporter assetImporter = AssetImporter.GetAtPath(path); repr.assetBundleName = assetImporter.assetBundleName; repr.assetName = prefab.name; entity = entObj.AddComponent <EntityData>(); if (PrefabUtility.GetPrefabAssetType(prefab) == PrefabAssetType.Regular) { entity.id = prefab.name; } entity.name = prefab.name; } entity.id = DataUtil.CreateNewEntityId(entity); entObj.name = prefab.name; // Register the creation in the undo system Undo.RegisterCreatedObjectUndo(entObj, "Create " + entObj.name + " " + entity.id); return(entObj); }
public static EntityData MakeGameObjectEntity(GameObject go) { EntityData entity = null; if (go) { entity = go.GetComponent <EntityData>(); if (entity == null) { GameObject entObj = new GameObject(go.name); entity = entObj.AddComponent <EntityData>(); go.transform.SetParent(entObj.transform); var repr = MakeGameObjectRepresentation(go); entity.activeRepresentation = repr; //entity = go.AddComponent<EntityData>(); entity.id = string.Empty; //var prefab = PrefabUtility.GetPrefabObject(go); GameObject prefabParent = PrefabUtility.GetCorrespondingObjectFromSource(go) as GameObject; if (prefabParent) { entity.id = prefabParent.name; } else { entity.id = go.name; } go.name = entity.id + "_repr"; entity.id = DataUtil.CreateNewEntityId(entity); } } return(entity); }