public void OpenAt(Vector2 pos, IContextItem context) { transform.position = pos; group.alpha = 1; group.interactable = true; group.blocksRaycasts = true; transform.SetAsLastSibling(); selected = context; }
public override void Execute(Stack <Value> stack, Dictionary <string, object> context) { object val; if (!Find(context, out val)) { stack.Push(new Value(0)); return; } Expression expr = val as Expression; if (expr != null) { stack.Push(expr.Evaluate(context)); } else { IContextItem item = val as IContextItem; if (item != null) { stack.Push(item.Value); } else if (val.GetType() == typeof(double[])) { stack.Push(new Value((double[])val)); } else if (val is Value) { stack.Push((Value)val); } else { try { stack.Push(new Value(Convert.ToDouble(val))); } catch (InvalidCastException) { Console.Error.WriteLine("Failed to convert `{0}' to double!", val); stack.Push(new Value(0)); } } } }
public bool Find(Dictionary <string, object> context, out object obj) { string ident; obj = null; for (int i = 0; i < Identifier.Length - 1; ++i) { ident = Identifier[i]; if (!context.ContainsKey(ident)) { return(false); } IContextItem item = context[ident] as IContextItem; if (item != null) { context = item.Members; } else { context = null; } if (context == null) { return(false); } } ident = Identifier[Identifier.Length - 1]; if (!context.ContainsKey(ident)) { return(false); } obj = context[ident]; return(true); }
public void Open(IContextItem selected) { this.selected = selected; gameObject.SetActive(true); }
public void ShowContextMenu(IContextItem sceneHierarcyItem, Vector2 position) { RemoveContextMenu.OpenAt(position, sceneHierarcyItem); }