//creates the top-level menu item for this object. If object has a RightClickAppearance, uses that to //define the appeareance. Otherwise sticks to defaults. Doesn't populate the sub menus though. private RightClickMenuItem CreateObjectMenu(GameObject forObject, List <RightClickMenuItem> subMenus) { RightClickAppearance rightClickAppearance = forObject.GetComponent <RightClickAppearance>(); if (rightClickAppearance != null) { //use right click menu to determine appearance return(rightClickAppearance.AsMenu(subMenus)); } //use defaults var label = forObject.name.Replace("(clone)", ""); SpriteRenderer firstSprite = forObject.GetComponentInChildren <SpriteRenderer>(); Sprite sprite = null; if (firstSprite != null) { sprite = firstSprite.sprite; } else { Logger.LogWarningFormat("Could not determine sprite to use for right click menu" + " for object {0}. Please manually configure a sprite in a RightClickAppearance component" + " on this object.", Category.UI, forObject.name); } return(RightClickMenuItem.CreateObjectMenuItem(Color.gray, sprite, null, label, subMenus)); }
//creates the top-level menu item for this object. If object has a RightClickAppearance, uses that to //define the appearance. Otherwise sticks to defaults. Doesn't populate the sub menus though. private RightClickMenuItem CreateObjectMenu(GameObject forObject, List <RightClickMenuItem> subMenus) { RightClickAppearance rightClickAppearance = forObject.GetComponent <RightClickAppearance>(); if (rightClickAppearance != null) { //use right click menu to determine appearance return(rightClickAppearance.AsMenu(subMenus)); } // else use defaults: var label = forObject.ExpensiveName(); // check if is a paletted item ItemAttributesV2 item = forObject.GetComponent <ItemAttributesV2>(); List <Color> palette = null; if (item != null) { if (item.ItemSprites.IsPaletted) { palette = item.ItemSprites.Palette; } } // See if this object has an AirLockAnimator then try to get the sprite from that, otherwise try to get the sprite from the first renderer we find var airLockAnimator = forObject.GetComponentInChildren <AirLockAnimator>(); var spriteRenderer = airLockAnimator != null ? airLockAnimator.doorbase : forObject.GetComponentInChildren <SpriteRenderer>(); Sprite sprite = null; if (spriteRenderer != null) { sprite = spriteRenderer.sprite; } else { Logger.LogWarningFormat("Could not determine sprite to use for right click menu" + " for object {0}. Please manually configure a sprite in a RightClickAppearance component" + " on this object.", Category.UserInput, forObject.name); } return(RightClickMenuItem.CreateObjectMenuItem(ButtonColor, sprite, null, label, subMenus, spriteRenderer.color, palette)); }
//creates the top-level menu item for this object. If object has a RightClickAppearance, uses that to //define the appearance. Otherwise sticks to defaults. Doesn't populate the sub menus though. private RightClickMenuItem CreateObjectMenu(GameObject forObject, List <RightClickMenuItem> subMenus) { RightClickAppearance rightClickAppearance = forObject.GetComponent <RightClickAppearance>(); if (rightClickAppearance != null) { //use right click menu to determine appearance return(rightClickAppearance.AsMenu(subMenus)); } // else use defaults: var label = forObject.ExpensiveName(); // check if is a paletted item ItemAttributesV2 item = forObject.GetComponent <ItemAttributesV2>(); List <Color> palette = null; if (item != null) { if (item.ItemSprites.IsPaletted) { palette = item.ItemSprites.Palette; } } // try get sprite SpriteRenderer firstRenderer = forObject.GetComponentInChildren <SpriteRenderer>(); Sprite sprite = null; if (firstRenderer != null) { sprite = firstRenderer.sprite; } else { Logger.LogWarningFormat("Could not determine sprite to use for right click menu" + " for object {0}. Please manually configure a sprite in a RightClickAppearance component" + " on this object.", Category.UI, forObject.name); } return(RightClickMenuItem.CreateObjectMenuItem(Color.gray, sprite, null, label, subMenus, firstRenderer.color, palette)); }