protected virtual bool CanTouchNative(Touch touch) { VisualObject @this = this as VisualObject; CanTouchArgs args = new CanTouchArgs(@this, touch); TUI.Hooks.CanTouch.Invoke(args); lock (Locker) return Loaded && !Disposed && args.CanTouch; }
private static void OnCanTouch(CanTouchArgs args) { if (args.Node.Configuration.Permission is string permission) { TSPlayer player = args.Touch.Player(); args.CanTouch = player?.HasPermission(permission) ?? false; if (args.Touch.State == TouchState.Begin && player != null && args.CanTouch == false) { args.Touch.Session.Enabled = false; TUI.TUI.TrySetLockForObject(args.Node, args.Touch); player.SendErrorMessage("You do not have access to this interface."); } } }