public OnKeyPressStackNode(Store store, OnKeyPressEcsNodeModel model, INodeBuilder builder)
            : base(store, model, builder)
        {
            void OnKeyCodeChange(ChangeEvent <Enum> e)
            {
                model.Code = (KeyCode)e.newValue;
                store.Dispatch(new RefreshUIAction(UpdateFlags.RequestCompilation));
            }

            void OnKeyPressTypeChange(ChangeEvent <Enum> e)
            {
                model.PressType = (OnKeyPressEcsNodeModel.KeyPressType)e.newValue;
                store.Dispatch(new RefreshUIAction(UpdateFlags.RequestCompilation));
            }

            RegisterCallback <AttachToPanelEvent>(evt =>
            {
                if (m_KeyCodeEnumField == null)
                {
                    title = "On";

                    m_KeyCodeEnumField = new EnumField(model.Code);
                    m_KeyCodeEnumField.RegisterValueChangedCallback(OnKeyCodeChange);
                    TitleElement.Add(m_KeyCodeEnumField);

                    m_PressTypeEnumField = new EnumField(model.PressType);
                    m_PressTypeEnumField.RegisterValueChangedCallback(OnKeyPressTypeChange);

                    TitleElement.Add(m_PressTypeEnumField);
                }
            });

            RegisterCallback <DetachFromPanelEvent>(evt =>
            {
                m_KeyCodeEnumField.UnregisterValueChangedCallback(OnKeyCodeChange);
                m_PressTypeEnumField.UnregisterValueChangedCallback(OnKeyPressTypeChange);
            });
        }
Example #2
0
        public static GraphElement CreateIteratorStack(this INodeBuilder builder, Store store, OnKeyPressEcsNodeModel model)
        {
            var iteratorStackNode = new OnKeyPressStackNode(store, model, builder);

            return(iteratorStackNode);
        }