public ProcessResult Process(ElementNode node)
        {
            var processResult = new ProcessResult();

            if (string.IsNullOrEmpty(node?.Value?.ToString()))
            {
                return(processResult);
            }

            var input = node.Value.ToString();

            // Hash the id part for "Reference.reference" node and hash whole input for other node types
            if (node.IsReferenceStringNode())
            {
                var newReference = ReferenceUtility.TransformReferenceId(input, _cryptoHashFunction);
                node.Value = newReference;
            }
            else
            {
                node.Value = _cryptoHashFunction(input);
            }

            _logger.LogDebug($"Fhir value '{input}' at '{node.Location}' is hashed to '{node.Value}'.");

            processResult.AddProcessRecord(AnonymizationOperations.CryptoHash, node);
            return(processResult);
        }
예제 #2
0
        public override void UpdateControl()
        {
            base.UpdateControl();

            var control  = (IHCColorValuePowered)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBarPower;

            if (powerRange != null)
            {
                var  netType         = Property.Type.GetNetType();
                bool isReferenceType = ReferenceUtility.IsReferenceType(netType);

                var values = GetValues();
                if (values != null)
                {
                    trackBar.Enabled = CanEditValue();
                    //bool referenceSpecified = false;
                    //if( isReferenceType && value != null )
                    //	referenceSpecified = ( (IReference)value ).ReferenceSpecified;
                    //if( trackBar.Enabled != !referenceSpecified )
                    //	trackBar.Enabled = !referenceSpecified;

                    //!!!!new
                    if (!trackBarModifying)                     //if( !trackBar.Focused )
                    {
                        UpdateTrackBar();
                    }
                }
            }
        }
예제 #3
0
        private bool IsIntegerType()
        {
            var type = ReferenceUtility.GetUnreferencedType(itemProperty.Property.Type).GetNetType();

            //var type = itemProperty.Property.Type.GetNetUnreferencedType();
            return(type == typeof(RangeI) || type == typeof(Vector2I));
        }
예제 #4
0
        object ParseValueFromTextBox(out bool invalid)
        {
            var control   = (IHCTextBox)CreatedControlInsidePropertyItemControl;
            var netType   = Property.Type.GetNetType();
            var unrefType = ReferenceUtility.GetUnreferencedType(netType);

            try
            {
                invalid = false;

                var text = control.TextBox.Text;

                if (typeof(ICanParseFromAndConvertToString).IsAssignableFrom(unrefType))
                {
                    var parseMethod = unrefType.GetMethod("Parse", BindingFlags.Public | BindingFlags.Static);
                    if (parseMethod != null)
                    {
                        return(parseMethod.Invoke(null, new object[] { text }));
                    }
                }

                return(SimpleTypes.ParseValue(unrefType, text));
            }
            catch
            {
                invalid = true;
                return(null);
            }
        }
예제 #5
0
        public RangeDropDownControl(HCItemProperty itemProperty)
        {
            InitializeComponent();

            AddOkCancelButtons(out _, out _);

            this.itemProperty = itemProperty;

            rangeAttr = (RangeAttribute)itemProperty.Property.GetCustomAttributes(typeof(RangeAttribute)).FirstOrDefault();
            if (rangeAttr == null)
            {
                rangeAttr = new RangeAttribute(0, 100);                   // default
            }
            SetupUIApplicableRange();

            minTrackBar.ValueChanged += new EventHandler(anyTrackBar_ValueChanged);
            maxTrackBar.ValueChanged += new EventHandler(anyTrackBar_ValueChanged);

            object obj = ReferenceUtility.GetUnreferencedValue(itemProperty.GetValues()[0]);

            value = RangeConverter.ObjectToRange(obj);

            propertyItemForUndoSupport = itemProperty.GetItemInHierarchyToRestoreValues();
            propertyItemForUndoSupport.SaveValuesToRestore();

            UpdateTrackBarsAndTextBoxes();

            EditorThemeUtility.ApplyDarkThemeToForm(this);
        }
        public void RedrawImages()
        {
            var dimg = (UIImage)this.GetComponentByPath("DragImage");

            for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    var n     = (i + j * 5).ToString();
                    var imgn2 = (UIImage)this.GetComponentByPath("Window 2\\" + n);
                    imgn2.SourceImage = dimg.SourceImage;
                }
            }

            for (int i = 0; i < 5; i++)
            {
                var n1      = (i).ToString();
                var imgn1   = (UIImage)this.GetComponentByPath("Window 1\\" + n1);
                var impath1 = InvUtils.getImagePath(SimulationApp.PlayerInv, i);
                if (impath1 != null && impath1 != "")
                {
                    imgn1.SourceImage = ReferenceUtility.MakeReference <Component_Image>(impath1);
                }
                else
                {
                    imgn1.SourceImage = dimg.SourceImage;
                }
            }
        }
예제 #7
0
        /// <summary>
        /// Getting from only created items. Not all _Member items can be created (expanded).
        /// </summary>
        /// <param name="reference"></param>
        /// <returns></returns>
        ContentBrowser.Item GetItemByReference(string reference)
        {
            //!!!!slowly

            //!!!!multiselection?

            //_Null
            if (string.IsNullOrEmpty(reference))
            {
                foreach (var item in contentBrowser1.Items)
                {
                    if (item is ContentBrowserItem_Null)
                    {
                        return(item);
                    }
                }
                return(null);
            }

            foreach (var item in contentBrowser1.Items)
            {
                item.CalculateReferenceValue(setReferenceModeData.selectedComponents[0], setReferenceModeData.property.TypeUnreferenced,
                                             out string itemReferenceValue, out bool itemCanSet);

                if (ReferenceUtility.EqualsReferences(itemReferenceValue, reference))
                {
                    return(item);
                }
            }

            return(null);
        }
        public override void UpdateControl()
        {
            base.UpdateControl();

            var control  = (IHCTextBoxNumeric)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBar;

            if (range != null)
            {
                var  netType         = Property.Type.GetNetType();
                bool isReferenceType = ReferenceUtility.IsReferenceType(netType);

                var values = GetValues();
                if (values != null)
                {
                    trackBar.Enabled = CanEditValue();

                    //!!!!new
                    if (!trackBarModifying)                     //if( !trackBar.Focused )
                    {
                        UpdateTrackBar();
                    }
                }
            }
        }
예제 #9
0
        //!!!!если надо, то как EditorAction
        //public static void ShowObjectDetailsAsDocument( object obj )
        //{
        //	List<string> lines = new List<string>( 256 );

        //	lines.Add( obj.ToString() );
        //	lines.Add( "" );
        //	lines.Add( "----------------------------------------------------------------------------------------------------" );

        //	lines.Add( "Inheritance Hierarchy" );
        //	lines.Add( "" );

        //	var type = MetadataManager.MetadataGetType( obj );
        //	int step = 0;
        //	do
        //	{
        //		lines.Add( new string( ' ', step * 3 ) + type.ToString() );

        //		step++;
        //		type = type.BaseType;
        //	} while( type != null );

        //	//lines.Add( "Type \'" + MetadataManager.MetadataGetType( obj ).ToString() + "\'" );
        //	//lines.Add( ".NET type \'" + obj.GetType().ToString() + "\'" );
        //	lines.Add( "" );
        //	lines.Add( "----------------------------------------------------------------------------------------------------" );
        //	lines.Add( "" );

        //	foreach( var member in MetadataManager.MetadataGetMembers( obj ) )
        //	{
        //		Metadata.Method method = member as Metadata.Method;
        //		if( method != null )
        //		{
        //			lines.Add( method.Signature );
        //			lines.Add( "    " + method.ToString() );
        //			lines.Add( "" );
        //		}
        //	}

        //	lines.Add( "----------------------------------------------------------------------------------------------------" );
        //	lines.Add( "" );

        //	foreach( var member in MetadataManager.MetadataGetMembers( obj ) )
        //	{
        //		Metadata.Event evt = member as Metadata.Event;
        //		if( evt != null )
        //		{
        //			lines.Add( evt.Signature );
        //			lines.Add( "    " + evt.ToString() );
        //			lines.Add( "" );
        //		}
        //	}

        //	lines.Add( "----------------------------------------------------------------------------------------------------" );
        //	lines.Add( "" );

        //	foreach( var member in MetadataManager.MetadataGetMembers( obj ) )
        //	{
        //		Metadata.Property prop = member as Metadata.Property;
        //		if( prop != null )
        //		{
        //			lines.Add( prop.Signature );
        //			lines.Add( "    " + prop.ToString() );
        //			lines.Add( "" );
        //		}
        //	}

        //	//lines.Add( "Type: " + MetadataManager.MetadataGetType( obj ).ToString() );
        //	//lines.Add( "Net type: " + obj.GetType().ToString() );
        //	//lines.Add( "" );
        //	//lines.Add( "ToString(): " + obj.ToString() );
        //	//lines.Add( "" );
        //	//lines.Add( "----------------------------------------------------------------------------------------------------" );
        //	//lines.Add( "Metadata:" );



        //	//!!!!!!
        //	//if( component != null )
        //	//{
        //	//	List<string> list = new List<string>();

        //	//	var members = component.MetadataGetMembers( true );

        //	//	list.Add( component.ToString() );

        //	//	list.Add( "" );
        //	//	list.Add( "Events:" );
        //	//	foreach( var m in members )
        //	//	{
        //	//		var evn = m as Metadata.Event;
        //	//		if( evn != null )
        //	//			list.Add( evn.ToString() + " - " + evn.Signature );
        //	//	}

        //	//	list.Add( "" );
        //	//	list.Add( "Properties:" );
        //	//	foreach( var m in members )
        //	//	{
        //	//		var p = m as Metadata.Property;
        //	//		if( p != null )
        //	//			list.Add( p.ToString() + " - " + p.Signature );
        //	//	}

        //	//	list.Add( "" );
        //	//	list.Add( "Methods:" );
        //	//	foreach( var m in members )
        //	//	{
        //	//		var method = m as Metadata.Method;
        //	//		if( method != null )
        //	//			list.Add( method.ToString() + " - " + method.Signature );
        //	//	}

        //	//	//!!!!!!log out
        //	//	{
        //	//		Log.Info( "" );
        //	//		Log.Info( "" );
        //	//		Log.Info( "---------------------------------- START -------------------------------------" );

        //	//		foreach( var t in list )
        //	//			Log.Info( t );

        //	//		Log.Info( "----------------------------------- END --------------------------------------" );
        //	//	}

        //	//	viewport.GuiRenderer.AddTextLines( list, new Vec2( .03, .1 ), EHorizontalAlign.Left, EVerticalAlign.Top, 0,
        //	//		new ColorValue( 1, 1, 0 ) );
        //	//}

        //	StringBuilder text = new StringBuilder();
        //	foreach( var line in lines )
        //		text.Append( line + "\r\n" );
        //	EditorForm.Instance.OpenTextAsDocument( text.ToString(), MetadataManager.MetadataGetType( obj ).ToString(), true );
        //}

        public static void SetPropertyReference(DocumentInstance document, object /* Component*/[] objects, Metadata.Property property, object[] indexers, string[] referenceValues)
        {
            var netType        = property.Type.GetNetType();
            var underlyingType = ReferenceUtility.GetUnderlyingType(netType);

            var undoItems = new List <UndoActionPropertiesChange.Item>();

            //!!!!try, catch? где еще

            for (int n = 0; n < objects.Length; n++)
            {
                var obj = objects[n];

                var value    = ReferenceUtility.MakeReference(underlyingType, null, referenceValues[n]);
                var oldValue = (IReference)property.GetValue(obj, indexers);

                //bool change = true;
                //if( /*skipSame && */oldValue != null && value.GetByReference == oldValue.GetByReference )
                //	change = false;

                if (!value.Equals(oldValue))
                {
                    property.SetValue(obj, value, indexers);
                    undoItems.Add(new UndoActionPropertiesChange.Item(obj, property, oldValue, indexers));
                }
            }

            //undo
            if (undoItems.Count != 0)
            {
                var action = new UndoActionPropertiesChange(undoItems.ToArray());
                document.UndoSystem.CommitAction(action);
                document.Modified = true;
            }
        }
예제 #10
0
        public override void UpdateControl()
        {
            base.UpdateControl();

            var control = (IHCItemСontentBrowser)CreatedControlInsidePropertyItemControl;

            control.Browser.ReadOnlyHierarchy = !CanEditValue();

            var values = GetValues();

            if (values == null)
            {
                return;
            }

            //!!!!multiselection
            var value = values[0];

            object unrefValue = ReferenceUtility.GetUnreferencedValue(value);

            if (!object.Equals(currentValue, unrefValue))
            {
                OnValueChanged(currentValue, unrefValue);
                currentValue = unrefValue;
            }
        }
예제 #11
0
        public EnumDropDownControl(HCItemEnumDropDown itemProperty)
        {
            InitializeComponent();

            this.itemProperty = itemProperty;

            propertyType = ReferenceUtility.GetUnreferencedType(itemProperty.Property.Type.GetNetType());
            if (propertyType.IsEnum)
            {
                enumDataType = Enum.GetUnderlyingType(propertyType);
                isFlag       = propertyType.IsDefined(typeof(FlagsAttribute), false);
            }

            currentValue = ReferenceUtility.GetUnreferencedValue(itemProperty.GetValues()[0]);
            propertyItemForUndoSupport = itemProperty.GetItemInHierarchyToRestoreValues();
            propertyItemForUndoSupport.SaveValuesToRestore();

            listViewEnum.Items.Clear();
            listViewEnum.CheckBoxes = isFlag;

            foreach (var val in Enum.GetValues(propertyType))
            {
                var info = new EnumInfo(val);

                var displayName = info.DisplayName;
                var description = info.Description;
                itemProperty.Owner.PerformOverridePropertyEnumItem(itemProperty, ref displayName, ref description);

                listViewEnum.Items.Add(new ListViewItem
                {
                    Text        = displayName,
                    ToolTipText = description,
                    Tag         = info
                });

                //listViewEnum.Items.Add( new ListViewItem
                //{
                //	Text = info.DisplayName,
                //	ToolTipText = info.Description,
                //	Tag = info
                //} );
            }

            UpdateCheckState();

            int itemCount = listViewEnum.Items.Count;
            var height    = itemCount * (Font.Height + DpiHelper.Default.ScaleValue(4)) + 3;
            var width     = ((IHCProperty)itemProperty.CreatedControl).EditorControl.Width;           //TODO: bad incapsulation. why this control should know about EditorControl.Width ?

            Size = new Size(width, Math.Min(dropdownHeight, height));

            if (EditorAPI.DarkTheme)
            {
                listViewEnum.BackColor = Color.FromArgb(54, 54, 54);
                listViewEnum.ForeColor = Color.FromArgb(240, 240, 240);
            }
        }
예제 #12
0
        private void TrackBar_ValueChanged(object sender, EventArgs e)
        {
            if (trackBarDisableValueChangedEvent)
            {
                return;
            }

            //!!!!new
            if (!trackBarFocused)
            {
                return;
            }

            //begin modifying. save old values for undo
            if (!trackBarModifying)
            {
                trackBarItemInHierarchyToAddUndo = GetItemInHierarchyToRestoreValues();
                trackBarItemInHierarchyToAddUndo.SaveValuesToRestore();
                trackBarModifying = true;
            }

            var control  = (IHCColorValuePowered)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBarPower;

            trackBarDisableValueChangedEvent = true;

            var netType   = Property.Type.GetNetType();
            var unrefType = ReferenceUtility.GetUnreferencedType(netType);


            var values = GetValues();

            if (values == null)
            {
                return;
            }

            //!!!!multiselection
            var value = values[0];

            var unrefValue = ReferenceUtility.GetUnreferencedValue(value);

            var color = (ColorValuePowered)unrefValue;

            try
            {
                var power = powerRange.GetValueFromTrackBar(false, trackBar.Value);
                color.Power = (float)power;

                SetValue(color, false);
            }
            catch
            {
            }

            trackBarDisableValueChangedEvent = false;
        }
예제 #13
0
 private void UpdateItemProperty()
 {
     if (itemProperty != null && itemProperty.CanEditValue())
     {
         var type = ReferenceUtility.GetUnreferencedType(itemProperty.Property.Type).GetNetType();
         //var type = itemProperty.Property.Type.GetNetUnreferencedType();
         itemProperty.SetValue(RangeConverter.ConvertRange(value, type), false);
     }
     valueWasChanged = true;
 }
예제 #14
0
        public override void UpdateControl()
        {
            base.UpdateControl();

            var control = (IHCLabel)CreatedControlInsidePropertyItemControl;
            var values  = GetValues();

            if (values == null)
            {
                return;
            }

            var valueResult = "";

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var value       = values[nValue];
                var unrefValue  = ReferenceUtility.GetUnreferencedValue(value);
                var stringValue = GetValueText(unrefValue);

                if (nValue == 0)
                {
                    valueResult = stringValue;
                }
                else
                {
                    if (valueResult != stringValue)
                    {
                        valueResult = "";
                    }
                }
            }

            if (control.Label2 != null)
            {
                control.Label2.Text = valueResult;
            }

            if (Property != null)
            {
                if (control.Label2.Enabled != !Property.ReadOnly)
                {
                    control.Label2.Enabled = !Property.ReadOnly;
                }
            }

            ////var netType = Property.Type.GetNetType();
            ////var unrefType = ReferenceUtils.GetUnreferencedType( netType );

            ////var type = MetadataManager.GetTypeOfNetType( unrefType );

            ////if( control.Label1 != null )
            ////	control.Label1.Text = Property.Name;
        }
예제 #15
0
        private void TrackBar_ValueChanged(object sender, EventArgs e)
        {
            if (trackBarDisableValueChangedEvent)
            {
                return;
            }

            if (!trackBarFocused)
            {
                return;
            }

            //begin modifying. save old values for undo
            if (!trackBarModifying)
            {
                trackBarItemInHierarchyToAddUndo = GetItemInHierarchyToRestoreValues();
                trackBarItemInHierarchyToAddUndo.SaveValuesToRestore();
                trackBarModifying = true;
            }

            var control  = (IHCTextBoxNumeric)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBar;

            trackBarDisableValueChangedEvent = true;

            var netType   = Property.Type.GetNetType();
            var unrefType = ReferenceUtility.GetUnreferencedType(netType);

            try
            {
                double doubleValue = range.GetValueFromTrackBar(IsInteger(), trackBar.Value);

                //conversion by means string
                string str;
                if (IsInteger())
                {
                    str = Convert.ToInt64(doubleValue).ToString();
                }
                else
                {
                    str = doubleValue.ToString();
                }
                var value = SimpleTypes.ParseValue(unrefType, str);

                SetValue(value, false);
            }
            catch
            {
            }

            trackBarDisableValueChangedEvent = false;
        }
예제 #16
0
        protected override void OnEnabledInSimulation()
        {
            //create a mesh
            mesh      = CreateComponent <Component_Mesh>(enabled: false);
            mesh.Name = "Mesh 1";

            //generate vertices. use StandardVertex to make it easier
            StandardVertex.StaticOneTexCoord[] vertices = new StandardVertex.StaticOneTexCoord[4];

            var v = new StandardVertex.StaticOneTexCoord();

            v.Position = new Vector3F(-0.4f, -0.4f, 0f);
            v.Normal   = new Vector3F(0, 0, 1);
            v.Tangent  = new Vector4F(1, 0, 0, 0);
            v.Color    = new ColorValue(1, 1, 1);
            //v.TexCoord0 = new Vector2F(-1, -1);

            vertices[0] = v;

            v.Position  = new Vector3F(0.4f, -0.4f, 0);
            vertices[1] = v;

            v.Position  = new Vector3F(0.4f, 0.4f, 0);
            vertices[2] = v;

            v.Position  = new Vector3F(-0.4f, 0.4f, 0);
            vertices[3] = v;

            //generate indices
            var indices = new int[] { 0, 1, 2, 2, 3, 0 };

            //create geometry of the mesh
            geometry = mesh.CreateComponent <Component_MeshGeometry>();
            geometry.VertexStructure = StandardVertex.MakeStructure(StandardVertex.Components.StaticOneTexCoord, true, out int vertexSize);
            geometry.Vertices        = ConvertVertices(vertices);
            geometry.Indices         = indices;


            //mesh has been created, now we can enable it
            mesh.Enabled = true;

            meshInSpace           = CreateComponent <Component_MeshInSpace>(enabled: false);
            meshInSpace.Transform = new Transform(new Vector3(1, 1, 1));

            //make reference to the mesh. 'Root' reference - global path from scene root.
            meshInSpace.Mesh = ReferenceUtility.MakeRootReference(mesh);

            meshInSpace.Color   = new ColorValue(1, 0, 0);
            meshInSpace.Enabled = true;
        }
예제 #17
0
 public override void Check(
     CutsceneEditor editor,
     ErrorManager manager,
     int tokenIndex,
     Token token,
     object value,
     int fieldIndex,
     FieldInfo info)
 {
     if (!(value is Reference) && !(value is FutureReference))
     {
         return;
     }
     Increment(ReferenceUtility.GetID(value));
 }
예제 #18
0
        bool IsInteger()
        {
            var netType   = Property.Type.GetNetType();
            var unrefType = ReferenceUtility.GetUnreferencedType(netType);

            return
                (unrefType == typeof(sbyte) ||
                 unrefType == typeof(byte) ||
                 unrefType == typeof(char) ||
                 unrefType == typeof(short) ||
                 unrefType == typeof(ushort) ||
                 unrefType == typeof(int) ||
                 unrefType == typeof(uint) ||
                 unrefType == typeof(long) ||
                 unrefType == typeof(ulong));
        }
예제 #19
0
        public virtual Type GetSuitableItemType(Metadata.Member member)
        {
            Type itemType = null;

            //override item type
            GetSuitableItemTypeOverride?.Invoke(this, member, ref itemType);

            if (itemType == null)
            {
                var editorAttr = (EditorAttribute)member.GetCustomAttributes(typeof(EditorAttribute), true).FirstOrDefault();
                if (editorAttr != null)
                {
                    var editorType = EditorUtility.GetTypeByName(editorAttr.EditorTypeName);
                    if (typeof(HCItemProperty).IsAssignableFrom(editorType))
                    {
                        return(editorType);
                    }
                }

                var property = member as Metadata.Property;
                if (property != null)
                {
                    //var attribs = property.GetCustomAttributes( typeof( SelectBaseAttribute ), true );
                    //if( attribs.Length != 0 )
                    //{
                    //	//get item type by SelectBaseAttribute
                    //	var attrib = (SelectBaseAttribute)attribs[ 0 ];
                    //	itemType = attrib.GetHierarchicalContainerItemType();
                    //}
                    //else
                    //{
                    //get item type by property type
                    var originalType = property.Type.GetNetType();
                    var unrefType    = ReferenceUtility.GetUnreferencedType(originalType);
                    itemType = GetSuitableItemTypeByPropertyType(unrefType);
                    //}
                }

                var _event = member as Metadata.Event;
                if (_event != null)
                {
                    return(EditorAssemblyInterface.Instance.GetTypeByName("NeoAxis.Editor.HCItemEvent"));                     // typeof( HCItemEvent );
                }
            }

            return(itemType);
        }
예제 #20
0
        public override void UpdateControl()
        {
            base.UpdateControl();

            var control = (IHCCollection)CreatedControlInsidePropertyItemControl;
            var values  = GetValues();

            if (values == null)
            {
                return;
            }

            var valueResult = "";

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var    value      = values[nValue];
                var    unrefValue = ReferenceUtility.GetUnreferencedValue(value);
                string value2;
                if (unrefValue != null)
                {
                    value2 = GetValueText(unrefValue);
                }
                else
                {
                    value2 = "(Null)";
                }

                if (nValue == 0)
                {
                    valueResult = value2;
                }
                else
                {
                    if (valueResult != value2)
                    {
                        valueResult = "";
                    }
                }
            }

            if (control.Label2 != null)
            {
                control.Label2.Text = valueResult;
            }
        }
예제 #21
0
        public void Button_Click(NeoAxis.Component_ButtonInSpace sender)
        {
            var scene  = sender.ParentScene;
            var ground = scene.GetComponent("Ground") as Component_MeshInSpace;

            if (ground != null)
            {
                if (!ground.ReplaceMaterial.ReferenceSpecified)
                {
                    ground.ReplaceMaterial = ReferenceUtility.MakeReference(@"Samples\Starter Content\Materials\Concrete 3x3 meters\Concrete 3x3 meters.material");
                }
                else
                {
                    ground.ReplaceMaterial = null;
                }
            }
        }
예제 #22
0
        void UpdatePreviewColor()
        {
            var values = GetValues();

            if (values == null)
            {
                return;
            }

            var valueResult = ColorValue.Zero;

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var value      = values[nValue];
                var unrefValue = ReferenceUtility.GetUnreferencedValue(value);

                ColorValue color;
                if (unrefValue is ColorValuePowered)
                {
                    color = ((ColorValuePowered)unrefValue).Color;
                }
                else
                {
                    color = (ColorValue)unrefValue;
                }

                if (nValue == 0)
                {
                    valueResult = color;
                }
                else
                {
                    if (valueResult != color)
                    {
                        valueResult = ColorValue.One;
                    }
                }
            }

            var control = (IHCColorValue)CreatedControlInsidePropertyItemControl;

            if (control != null)
            {
                control.PreviewButton.PreviewColor = valueResult;
            }
        }
예제 #23
0
        static void CreateMesh(ImportContext context, List <LOD> lods, string name, Component parent)
        {
            var settings = context.settings;

            var mesh = parent.CreateComponent <Component_Mesh>(enabled: false);

            mesh.Name = name;

            {
                var lodData = lods[0];
                foreach (var geometry in lodData.geometries)
                {
                    ImportGeometry(context, mesh, geometry);
                }
                MeshGetIsBillboard(context, mesh);
                if (settings.component.MergeMeshGeometries)
                {
                    mesh.MergeGeometriesWithEqualVertexStructureAndMaterial();
                }
            }

            for (int nLod = 1; nLod < lods.Count; nLod++)
            {
                var lod = mesh.CreateComponent <Component_MeshLevelOfDetail>();
                lod.Name     = $"LOD {nLod}";
                lod.Distance = settings.component.LODDistance * nLod;

                var lodMesh = lod.CreateComponent <Component_Mesh>();
                lodMesh.Name = "Mesh";

                var lodData = lods[nLod];
                foreach (var geometry in lodData.geometries)
                {
                    ImportGeometry(context, lodMesh, geometry);
                }
                MeshGetIsBillboard(context, lodMesh);
                if (settings.component.MergeMeshGeometries)
                {
                    lodMesh.MergeGeometriesWithEqualVertexStructureAndMaterial();
                }

                lod.Mesh = ReferenceUtility.MakeThisReference(lod, lodMesh);
            }

            mesh.Enabled = true;
        }
예제 #24
0
        public override void UpdateControl()
        {
            base.UpdateControl();

            bool readOnly = !CanEditValue();
            var  control  = ( HCGridDropDownButton /*IHCDropDownButton*/)CreatedControlInsidePropertyItemControl;

            control.Button.Enabled = !readOnly;

            //update width. Anchor for this control works bad in .NET Core
            control.Button.Width = control.Width - control.Button.Location.X;

            var values = GetValues();

            if (values == null)
            {
                return;
            }

            object resultValue = null;

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var    value      = values[nValue];
                object unrefValue = ReferenceUtility.GetUnreferencedValue(value);

                if (nValue == 0)
                {
                    resultValue = unrefValue;
                }
                else
                {
                    if (!Equals(resultValue, unrefValue))
                    {
                        resultValue = "";
                    }
                }
            }

            if (!Equals(currentValue, resultValue))
            {
                OnValueChanged(currentValue, resultValue);
                currentValue = resultValue;
            }
        }
예제 #25
0
        Component_FlowGraphNode AddFlowGraphNode(Component_FlowGraph graph, Component subscribeTo)
        {
            var node = graph.CreateComponent <Component_FlowGraphNode>(enabled: false);

            node.Name     = node.BaseType.GetUserFriendlyNameForInstance();
            node.Position = graph.EditorScrollPosition.ToVector2I();

            var handler = node.CreateComponent <Component_EventHandler>();

            handler.Name  = handler.BaseType.GetUserFriendlyNameForInstance() + " " + _event.Name;
            handler.Event = ReferenceUtility.MakeReference <ReferenceValueType_Event>(
                null, ReferenceUtility.CalculateThisReference(handler, subscribeTo, _event.Signature));

            node.ControlledObject = ReferenceUtility.MakeReference <Component>(null, ReferenceUtility.CalculateThisReference(node, handler));
            node.Enabled          = true;

            return(node);
        }
예제 #26
0
        static void ImportGeometry(ImportContext context, Component parent, MeshData geom)
        {
            var geometry = parent.CreateComponent <Component_MeshGeometry>();

            geometry.Name = GetFixedName(geom.Name);

            CalcIndices.CalculateIndicesBySpatialSort(geom, out StandardVertex[] vertices, out int[] indices);
            //CalcIndices.CalculateIndicesByOctree( m, out StandardVertexF[] verticesO, out int[] indicesO );

            geometry.SetVertexDataWithRemovingHoles(vertices, geom.VertexComponents);
            geometry.Indices = indices;

            //set first material
            context.materialByIndex.TryGetValue(0, out var material);
            if (material != null)
            {
                geometry.Material = ReferenceUtility.MakeRootReference(material);
            }
        }
예제 #27
0
        protected virtual void TextBoxTextChanged()
        {
            var values = GetValues();

            if (values == null)
            {
                return;
            }

            var value      = values[0];
            var unrefValue = ReferenceUtility.GetUnreferencedValue(value);

            var v = ParseValueFromTextBox(out invalidValue);

            if (!invalidValue)
            {
                try
                {
                    if (!Equals(v, unrefValue) || values.Length > 1)
                    {
                        SetValue(v, true);
                    }
                }
                catch { }
            }

            //var control = (IHCTextBox)CreatedControlInsidePropertyItemControl;
            //var netType = Property.Type.GetNetType();
            //var unrefType = ReferenceUtils.GetUnreferencedType( netType );

            //object v = null;
            //try
            //{
            //	v = SimpleTypesUtils.ParseValue( unrefType, control.TextBox1.Text );

            //	invalidValue = false;
            //	SetValue( v, true );
            //}
            //catch
            //{
            //	invalidValue = true;
            //}
        }
예제 #28
0
        void UpdateTrackBar()
        {
            var control  = (IHCTextBoxNumeric)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBar;

            var values = GetValues();

            if (values == null)
            {
                return;
            }

            int resultValue = 0;

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var value      = values[nValue];
                var unrefValue = ReferenceUtility.GetUnreferencedValue(value);
                //conversion by means string
                double doubleValue = double.Parse(unrefValue.ToString());
                var    value2      = range.GetTrackBarValue(IsInteger(), doubleValue);

                if (nValue == 0)
                {
                    resultValue = value2;
                }
                else
                {
                    if (resultValue != value2)
                    {
                        resultValue = control.TrackBar.Minimum;
                    }
                }
            }

            if (trackBar.Value != resultValue)
            {
                trackBarDisableValueChangedEvent = true;
                trackBar.Value = resultValue;
                trackBarDisableValueChangedEvent = false;
            }
        }
예제 #29
0
        public override void UpdateControl()
        {
            base.UpdateControl();

            bool readOnly = !CanEditValue();
            var  control  = (IHCDropDownButton)CreatedControlInsidePropertyItemControl;

            control.Button.Enabled = !readOnly;

            var values = GetValues();

            if (values == null)
            {
                return;
            }

            object resultValue = null;

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var    value      = values[nValue];
                object unrefValue = ReferenceUtility.GetUnreferencedValue(value);

                if (nValue == 0)
                {
                    resultValue = unrefValue;
                }
                else
                {
                    if (!Equals(resultValue, unrefValue))
                    {
                        resultValue = "";
                    }
                }
            }

            if (!Equals(currentValue, resultValue))
            {
                OnValueChanged(currentValue, resultValue);
                currentValue = resultValue;
            }
        }
예제 #30
0
        void UpdateTrackBar()
        {
            var control  = (IHCColorValuePowered)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBarPower;

            var values = GetValues();

            if (values == null)
            {
                return;
            }

            int resultValue = 0;

            for (int nValue = 0; nValue < values.Length; nValue++)
            {
                var value      = values[nValue];
                var unrefValue = ReferenceUtility.GetUnreferencedValue(value);
                var power      = ((ColorValuePowered)unrefValue).Power;
                var value2     = powerRange.GetTrackBarValue(false, power);

                if (nValue == 0)
                {
                    resultValue = value2;
                }
                else
                {
                    if (resultValue != value2)
                    {
                        resultValue = control.TrackBarPower.Minimum;
                    }
                }
            }

            if (trackBar.Value != resultValue)
            {
                trackBarDisableValueChangedEvent = true;
                trackBar.Value = resultValue;
                trackBarDisableValueChangedEvent = false;
            }
        }