Exemple #1
0
 private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (!m_bIsLocked)
     {
         if (AssetSelector.SelectedIndex >= 0)
         {
             CKlaxScriptTypeInfo selectedType = (CKlaxScriptTypeInfo)AssetSelector.SelectedItem;
             object subtypeValue = Activator.CreateInstance(PropertyInfo.ValueType, selectedType.Type);
             SetInspectorValue(PropertyInfo, PropertyInfo.Value, subtypeValue);
         }
     }
 }
Exemple #2
0
        public override void OnInputLiteralChanged(CNodeChangeContext context, CInputPin pin)
        {
            if (pin == InputPins[0])
            {
                CKlaxScriptTypeInfo targetType = ((CKlaxScriptTypeInfo)pin.Literal);
                ChangePinType(context, OutputPins[0], targetType == null ? typeof(object) : targetType.Type);

                if (targetType != null)
                {
                    ChangeNodeName(context, "Cast to " + targetType.Name);
                }
            }
        }
Exemple #3
0
        public override void OnInputLiteralChanged(CNodeChangeContext context, CInputPin pin)
        {
            if (pin == InputPins[0])
            {
                CKlaxScriptTypeInfo newType = pin.Literal as CKlaxScriptTypeInfo;
                if (newType != null)
                {
                    OutExecutionPins.RemoveRange(1, OutExecutionPins.Count - 1);
                    context.Actions.Add(new CSwitchNodeTypeChangeAction(newType.Type));

                    ChangePinType(context, InputPins[1], newType.Type);
                    ChangeNodeName(context, $"Switch ({newType.Name})");
                    InputPins[1].Literal = newType.Type.GetDefaultValue();
                }
            }
        }
        private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!m_bIsLocked)
            {
                if (AssetSelector.SelectedIndex >= 0)
                {
                    CKlaxScriptTypeInfo selectedAsset = (CKlaxScriptTypeInfo)AssetSelector.SelectedItem;
                    object newValue = selectedAsset;
                    if (m_isRawType)
                    {
                        newValue = selectedAsset.Type;
                    }

                    SetInspectorValue(PropertyInfo, PropertyInfo.Value, newValue);
                }
            }
        }
        public override void PropertyInfoChanged(CObjectProperty info)
        {
            base.PropertyInfoChanged(info);

            m_isRawType = false;

            CKlaxScriptTypeInfo typeInfo = info.Value as CKlaxScriptTypeInfo;

            if (typeInfo == null && info.ValueType == typeof(Type))
            {
                m_isRawType = true;
                CKlaxScriptRegistry.Instance.TryGetTypeInfo(info.Value as Type, out typeInfo);
            }

            m_bIsLocked = true;
            if (!m_bItemSourcesSet)
            {
                m_availableAssets.Clear();
                foreach (CKlaxScriptTypeInfo klaxType in CKlaxScriptRegistry.Instance.Types)
                {
                    m_availableAssets.Add(klaxType);
                }

                AssetSelector.ItemsSource = m_availableAssets;
                m_bItemSourcesSet         = true;
            }

            if (typeInfo != m_oldValue)
            {
                int selectedIndex = -1;
                if (info.Value != null)
                {
                    selectedIndex = m_availableAssets.FindIndex(availableTypeInfo => availableTypeInfo.Type == typeInfo.Type);
                }
                AssetSelector.SelectedIndex = selectedIndex;
            }

            m_oldValue  = typeInfo;
            m_bIsLocked = false;
        }
        public override void SetValueOnly(object value)
        {
            m_isRawType = false;
            if (value == null)
            {
                AssetSelector.SelectedIndex = -1;
            }
            else
            {
                CKlaxScriptTypeInfo typeInfo = value as CKlaxScriptTypeInfo;
                if (typeInfo == null && value is Type rawType)
                {
                    m_isRawType = true;
                    CKlaxScriptRegistry.Instance.TryGetTypeInfo(rawType, out typeInfo);
                }

                int selectedIndex = -1;
                if (value != null)
                {
                    selectedIndex = m_availableAssets.FindIndex(availableTypeInfo => availableTypeInfo.Type == typeInfo.Type);
                }
                AssetSelector.SelectedIndex = selectedIndex;
            }
        }