public ILevelEditorObject CreateObject(ILevelEditorResource resource, Vector3 position, Quaternion rotation, Transform parent, uint instanceID, bool registerUndo = true) { LevelEditorLogger.Log($"Create object | Resource: {resource} | Position: {position} | Rotation: {rotation} | Parent: {parent} | Instance ID: {instanceID} | Register undo: {registerUndo}"); if (resource.Asset is GameObject go) { return(CreateLevelEditorObject((p, r, par) => { GameObject objGo = Instantiate(go, p, r, par); return objGo.GetOrAddComponent <LevelEditorObject>(); }, resource, instanceID, registerUndo, position, rotation, parent)); } if (resource.Asset is Component comp) { return(CreateLevelEditorObject((p, r, par) => { Component objGo = Instantiate(comp, p, r, par); return objGo.gameObject.GetOrAddComponent <LevelEditorObject>(); }, resource, instanceID, registerUndo, position, rotation, parent)); } Debug.LogError($"Tried to create {resource.Name} ({resource.ID}) but the asset is not a prefab."); return(null); }
public CreateObjectUndoAction(ILevelEditorResource resource, Vector3 position, Quaternion rotation, Transform parent, uint instanceID, ILevelEditorObject obj) { this.resource = resource; this.position = position; this.rotation = rotation; this.parent = parent; this.instanceID = instanceID; this.obj = obj; }
private Sprite GetIcon(ILevelEditorResource resource, out Color color, out bool isCached) { isCached = false; if (resource.CustomIcon && resource.Icon != null) { color = Color.white; return(resource.Icon); } if (iconHandling == IconHandling.SaveInMemory && iconCache.TryGetValue(resource.ID, out Sprite cachedIcon)) { color = Color.white; isCached = true; return(cachedIcon); } if (resource.Asset is GameObject go) { if (displayFirstSpriteAsIcon) { SpriteRenderer goSprite = go.GetComponentInChildren <SpriteRenderer>(); if (goSprite != null) { color = goSprite.color; return(goSprite.sprite); } } Texture2D icon = GetIconTexture(go.transform); Sprite spriteIcon = Sprite.Create(icon, new Rect(0, 0, previewSettings.ImageSize.x, previewSettings.ImageSize.y), new Vector2(0.5f, 0.5f)); if (iconHandling == IconHandling.SaveInMemory) { iconCache.Add(resource.ID, spriteIcon); } color = Color.white; return(spriteIcon); } color = Color.clear; return(null); }
public static ILevelEditorObject CreateObject(this ILevelEditorObjectManager x, LevelEditorObjectData data, bool registerUndo = false) { ILevelEditorResource resource = x.GetResource(data.id); if (resource == null) { return(null); } ILevelEditorObject obj = x.CreateObject(resource, Vector3.zero, Quaternion.identity, null, data.instanceId, registerUndo); if (obj == null) { return(null); } obj.MyGameObject.name = data.name; obj.MyGameObject.SetActive(data.active); return(obj); }
public AssetClickEventArgs(ILevelEditorResource resource, bool isFolder) { Resource = resource; IsFolder = isFolder; }
private Sprite GetIcon(ILevelEditorResource resource, out Color color) { return(GetIcon(resource, out color, out _)); }
private ILevelEditorObject CreateLevelEditorObject(Func <Vector3, Quaternion, Transform, ILevelEditorObject> createObject, ILevelEditorResource resource, uint instanceID, bool registerUndo, Vector3 position, Quaternion rotation, Transform parent) { if (objectsWithId.ContainsKey(instanceID)) { throw new DuplicateIDException($"There already is an object with the instance ID {instanceID}."); } LevelEditorObjectEventSpawningEvent args = new LevelEditorObjectEventSpawningEvent(resource); OnCreatingObject?.Invoke(this, args); if (args.Cancel) { LevelEditorLogger.Log("CreateObject canceled. Returning null."); return(null); } ILevelEditorObject obj; if (poolObjects && pooledObjects.ContainsKey(resource.ID) && pooledObjects[resource.ID].Count > 0) { obj = pooledObjects[resource.ID].Pop(); obj.MyGameObject.transform.SetPositionAndRotation(position, rotation); obj.MyGameObject.transform.SetParent(parent); } else { obj = createObject.Invoke(position, rotation, parent); obj.ID = resource.ID; LevelEditorComponentWrapper.AddWrappers(obj.MyGameObject); obj.GetExposedComponents(); } obj.MyGameObject.name = resource.Name; obj.InstanceID = instanceID; obj.MyGameObject.SetActive(true); if (instanceID >= nextInstanceID) { nextInstanceID = instanceID; } if (!activeObjects.ContainsKey(resource.ID)) { activeObjects.Add(resource.ID, new List <ILevelEditorObject>()); } if (!objectCount.ContainsKey(resource.ID)) { objectCount.Add(resource.ID, 0); } activeObjects[resource.ID].Add(obj); objectCount[resource.ID]++; allObjects.Add(obj); obj.OnUnPooled(); objectsWithId[obj.InstanceID] = obj; OnCreatedObject?.Invoke(this, new LevelEditorObjectEvent(obj)); if (registerUndo && Undo != null) { undoComp.AddAction(new CreateObjectUndoAction(resource, position, rotation, parent, instanceID, obj)); } return(obj); }
public static ILevelEditorObject CreateObject(this ILevelEditorObjectManager x, ILevelEditorResource resource, Vector3 position, Transform parent, uint instanceID, bool registerUndo = true) { return(x.CreateObject(resource, position, Quaternion.identity, parent, instanceID, registerUndo)); }
public static ILevelEditorObject CreateObject(this ILevelEditorObjectManager x, ILevelEditorResource resource, Vector3 position, bool registerUndo = true) { return(x.CreateObject(resource, position, Quaternion.identity, null, x.GetNextInstanceID(), registerUndo)); }
public static ILevelEditorObject CreateObject(this ILevelEditorObjectManager x, ILevelEditorResource resource, uint instanceId, bool registerUndo = true) { return(x.CreateObject(resource, Vector3.zero, Quaternion.identity, null, instanceId, registerUndo)); }
public static ILevelEditorObject CreateObject(this ILevelEditorObjectManager x, ILevelEditorResource resource, Vector3 position, Quaternion rotation, Transform parent, bool registerUndo = true) { return(x.CreateObject(resource, position, rotation, parent, x.GetNextInstanceID(), registerUndo)); }
public static ILevelEditorObject CreateObject(this ILevelEditorObjectManager x, ILevelEditorResource resource, Vector3 position, Quaternion rotation, uint instanceID, bool registerUndo = true) { return(x.CreateObject(resource, position, rotation, null, instanceID, registerUndo)); }
public LevelEditorObjectEventSpawningEvent(ILevelEditorResource resource) { Resource = resource; }