コード例 #1
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            base.NewObjectSetDefaultConfiguration(createdFromNewObjectWindow);

            //create surface

            var meshInSpace = CreateComponent <Component_MeshInSpace>(enabled: false);

            meshInSpace.Name          = "Surface";
            meshInSpace.CanBeSelected = false;

            var mesh = meshInSpace.CreateComponent <Component_Mesh>();

            mesh.Name        = "Mesh";
            meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

            var geometry = mesh.CreateComponent <Component_MeshGeometry_Plane>();

            geometry.Name     = "Mesh Geometry";
            geometry.Material = ReferenceUtility.MakeThisReference(geometry, this, "MaterialSurface");

            var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();

            transformOffset.Name           = "Attach Transform Offset";
            transformOffset.PositionOffset = new Vector3(0, 0, 0.5);
            transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

            meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");

            meshInSpace.Enabled = true;

            UpdateSettings();
        }
コード例 #2
0
            public void Init()
            {
                var sample = CreateComponent <Component_ShaderTextureSample>();

                sample.TextureType = Component_ShaderTextureSample.TextureTypeEnum.Mask;

                Opacity = ReferenceUtility.MakeThisReference(this, sample, "R");
            }
コード例 #3
0
        public void UpdateOutput()
        {
            var groupOfObjects = GetOrCreateGroupOfObjects();

            if (groupOfObjects != null)
            {
                var wasEnabled = groupOfObjects.Enabled;
                if (wasEnabled)
                {
                    groupOfObjects.Enabled = false;
                }

                Component_GroupOfObjects.Object[] objects;

                var surface = Surface.Value;
                if (surface != null)
                {
                    var element = groupOfObjects.GetComponent <Component_GroupOfObjectsElement_Surface>();
                    if (element == null)
                    {
                        element      = groupOfObjects.CreateComponent <Component_GroupOfObjectsElement_Surface>();
                        element.Name = "Surface";
                        //!!!!?
                        element.AutoAlign = false;
                        element.Surface   = ReferenceUtility.MakeThisReference(element, this, "Surface");
                    }

                    objects = UpdateOutputDefault(surface, groupOfObjects);
                }
                else
                {
                    objects = new Component_GroupOfObjects.Object[0];
                }

                OnUpdateOutput(ref objects);
                UpdateOutputEvent?.Invoke(this, ref objects);

                groupOfObjects.ObjectsSet(objects);

                updatedForPointPositions = GetPointPositions();

                if (wasEnabled)
                {
                    groupOfObjects.Enabled = true;
                }
            }
        }
コード例 #4
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            if (Components.Count == 0)
            {
                //Mesh
                {
                    var mesh = CreateComponent <Component_Mesh>();
                    mesh.Name = "Mesh";
                    Mesh      = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.3, 0.3, 0.3);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");
                }
            }
        }
コード例 #5
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            if (Components.Count == 0)
            {
                //Mesh
                {
                    var mesh = CreateComponent <Component_Mesh>();
                    mesh.Name = "Mesh";
                    Mesh      = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Pipe>();
                    geometry.Name      = "Mesh Geometry";
                    geometry.Axis      = 0;
                    geometry.Radius    = 0.04;
                    geometry.Thickness = 0.01;
                    geometry.Material  = ReferenceUtility.MakeReference("Base\\Materials\\White.material");
                }

                //Stock
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name = "Stock";

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.4, 0.05, 0.15);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(-0.22, 0, -0.1);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }
            }
        }
コード例 #6
0
        void NewObjectCreateShaderGraph()
        {
            var graph = CreateComponent <Component_FlowGraph>();

            graph.Name           = "Shader graph";
            graph.Specialization = ReferenceUtility.MakeReference(
                MetadataManager.GetTypeOfNetType(typeof(Component_FlowGraphSpecialization_Shader)).Name + "|Instance");

            var node = graph.CreateComponent <Component_FlowGraphNode>();

            node.Name             = "Node " + Name;
            node.Position         = new Vector2I(10, -7);
            node.ControlledObject = ReferenceUtility.MakeThisReference(node, this);

            if (Parent == null)
            {
                var toSelect = new Component[] { this, graph };
                EditorDocumentConfiguration = KryptonConfigGenerator.CreateEditorDocumentXmlConfiguration(toSelect, graph);
            }
        }
コード例 #7
0
ファイル: UIEdit.cs プロジェクト: zwiglm/NeoAxisEngine
        //protected virtual bool OnTextTypingFilter( EKeys key, char character, string newText )
        //{
        //	if( TextTypingFilter != null )
        //	{
        //		if( !TextTypingFilter( this, key, character, newText ) )
        //			return false;
        //	}
        //	return true;
        //}

        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            base.NewObjectSetDefaultConfiguration(createdFromNewObjectWindow);

            var obj = CreateComponent <UIText>();

            obj.Name = "Text";
            obj.Text = ReferenceUtility.MakeThisReference(obj, this, "DisplayText");              //"Text" );
            obj.TextHorizontalAlignment = EHorizontalAlignment.Left;
            //obj.TextHorizontalAlignment = ReferenceUtility.MakeThisReference( obj, this, "TextHorizontalAlignment" );
            obj.Size                = new UIMeasureValueVector2(UIMeasure.Parent, 1, 1);
            obj.CanBeSelected       = false;
            obj.HorizontalAlignment = EHorizontalAlignment.Stretch;
            obj.VerticalAlignment   = EVerticalAlignment.Stretch;
            //obj.Offset = new UIMeasureValueVector2( UIMeasure.Units, 4, 0 );
            obj.ClipRectangle = true;

            //UIStyle.EditTextMargin
            obj.Margin = new UIMeasureValueRectangle(UIMeasure.Units, 4, 2, 4, 2);
            //obj.Margin = new UIMeasureValueRectangle( UIMeasure.Units, 2, 2, 2, 2 );
        }
コード例 #8
0
        //public override void UpdateParentVirtualMembers( ref List<Metadata.Member> members, ref Dictionary<string, Metadata.Member> memberBySignature )
        //{
        //	base.UpdateParentVirtualMembers( ref members, ref memberBySignature );

        //	xx xx;
        //	//create
        //	if( createdMethod == null && Parent != null )
        //	{
        //		createdMethod = CreateMethod();

        //		xx xx;
        //		//!!!!
        //		//Body.Value?.NeedUpdate();
        //	}

        //	xx xx;
        //	//add to parent
        //	if( createdMethod != null )
        //	{
        //		if( members == null )
        //		{
        //			members = new List<Metadata.Member>();
        //			memberBySignature = new Dictionary<string, Metadata.Member>();
        //		}
        //		members.Add( createdMethod );
        //		memberBySignature[ createdMethod.Signature ] = createdMethod;
        //	}
        //}

        //public override Metadata.Member CreatedMember
        //{
        //	get
        //	{
        //		xx xx;

        //		return createdMethod;
        //	}
        //}

        void NewObjectCreateFlowGraph()
        {
            var graph = CreateComponent <Component_FlowGraph>();

            graph.Name = "Flow Graph";

            Component_MethodBody body;
            {
                var node = graph.CreateComponent <Component_FlowGraphNode>();

                body      = node.CreateComponent <Component_MethodBody>();
                body.Name = body.BaseType.GetUserFriendlyNameForInstance();

                node.Name             = "Node " + body.Name;
                node.Position         = new Vector2I(-25, -7);
                node.ControlledObject = ReferenceUtility.MakeThisReference(node, body);
            }

            Component_MethodBodyEnd bodyEnd;

            {
                var node = graph.CreateComponent <Component_FlowGraphNode>();

                bodyEnd      = node.CreateComponent <Component_MethodBodyEnd>();
                bodyEnd.Name = bodyEnd.BaseType.GetUserFriendlyNameForInstance();

                node.Name             = "Node " + bodyEnd.Name;
                node.Position         = new Vector2I(15, -7);
                node.ControlledObject = ReferenceUtility.MakeThisReference(node, bodyEnd);
            }

            Body            = ReferenceUtility.MakeThisReference(this, body);
            body.Definition = ReferenceUtility.MakeThisReference(body, this);
            body.BodyEnd    = ReferenceUtility.MakeThisReference(body, bodyEnd);
            bodyEnd.Body    = ReferenceUtility.MakeThisReference(bodyEnd, body);

            //!!!!выделять, открывать созданные
        }
コード例 #9
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            base.NewObjectSetDefaultConfiguration(createdFromNewObjectWindow);

            //Mesh

            var mesh = CreateComponent <Component_Mesh>();

            mesh.Name = "Mesh";
            Mesh      = ReferenceUtility.MakeThisReference(this, mesh);

            var geometry = mesh.CreateComponent <Component_MeshGeometry_Plane>();

            geometry.Name           = "Mesh Geometry";
            geometry.Axis           = 0;
            geometry.Dimensions     = new Vector2(1.333, 1);
            geometry.UVTilesInTotal = new Vector2(1, 1);

            //Material

            var material = CreateComponent <Component_Material>();

            material.Name      = "Material";
            material.BaseColor = ReferenceUtility.MakeReference("this:$Shader graph\\$Node Shader Texture Sample 1\\$Shader Texture Sample\\RGBA");
            material.Emissive  = ReferenceUtility.MakeReference("this:$Shader graph\\$Node Invoke Member 1\\$Invoke Member\\__parameter_ReturnValue");

            var flowGraph = material.CreateComponent <Component_FlowGraph>();

            flowGraph.Name           = "Shader graph";
            flowGraph.Specialization = ReferenceUtility.MakeReference("NeoAxis.Component_FlowGraphSpecialization_Shader|Instance");

            {
                var flowGraphNode = flowGraph.CreateComponent <Component_FlowGraphNode>();
                flowGraphNode.Name             = "Node Material";
                flowGraphNode.Position         = new Vector2I(10, -7);
                flowGraphNode.ControlledObject = ReferenceUtility.MakeReference("this:..\\..");
            }

            {
                var flowGraphNode = flowGraph.CreateComponent <Component_FlowGraphNode>();
                flowGraphNode.Name             = "Node Shader Texture Sample 1";
                flowGraphNode.Position         = new Vector2I(-20, -9);
                flowGraphNode.ControlledObject = ReferenceUtility.MakeReference("this:$Shader Texture Sample");

                var textureSample = flowGraphNode.CreateComponent <Component_ShaderTextureSample>();
                textureSample.Name    = "Shader Texture Sample";
                textureSample.Texture = ReferenceUtility.MakeReference("this:..\\..\\..\\..\\CreatedImage");
            }

            {
                var flowGraphNode = flowGraph.CreateComponent <Component_FlowGraphNode>();
                flowGraphNode.Name             = "Node Invoke Member 1";
                flowGraphNode.Position         = new Vector2I(-5, -2);
                flowGraphNode.ControlledObject = ReferenceUtility.MakeReference("this:$Invoke Member");

                var invokeMember = flowGraphNode.CreateComponent <Component_InvokeMember>();
                invokeMember.Name   = "Invoke Member";
                invokeMember.Member = ReferenceUtility.MakeReference("NeoAxis.ColorValue|method:op_Multiply(NeoAxis.ColorValue,System.Single)");
                invokeMember.SetPropertyValue("property:__parameter_S", new Reference <float>(0.4f));
                invokeMember.SetPropertyValue("property:__parameter_V", ReferenceUtility.MakeReference("this:..\\..\\$Node Shader Texture Sample 1\\$Shader Texture Sample\\RGBA"));
            }

            geometry.Material = ReferenceUtility.MakeThisReference(geometry, material);

            //Camera

            var camera = CreateComponent <Component_Camera>();

            camera.Name      = "Camera";
            camera.Transform = ReferenceUtility.MakeReference("this:$Attach Transform Offset\\Result");

            var transformOffet = camera.CreateComponent <Component_TransformOffset>();

            transformOffet.Name           = "Attach Transform Offset";
            transformOffet.PositionOffset = new Vector3(0, 0, 0.55);
            transformOffet.Source         = ReferenceUtility.MakeReference("this:..\\..\\Transform");

            Camera = ReferenceUtility.MakeReference("this:$Camera");
        }
コード例 #10
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            base.NewObjectSetDefaultConfiguration(createdFromNewObjectWindow);

            {
                var obj = CreateComponent <UIEdit>();
                obj.Name = "Text Control";
                obj.Text = ReferenceUtility.MakeThisReference(obj, this, "DisplayText");
                //obj.TextHorizontalAlignment = EHorizontalAlignment.Left;
                obj.Size                = new UIMeasureValueVector2(UIMeasure.Parent, 1, 1);
                obj.CanBeSelected       = false;
                obj.HorizontalAlignment = EHorizontalAlignment.Stretch;
                obj.VerticalAlignment   = EVerticalAlignment.Stretch;
                obj.ReadOnly            = true;
                //obj.Offset = new UIMeasureValueVector2( UIMeasure.Units, 4, 0 );
                //obj.ClipRectangle = true;

                //UIStyle.EditTextMargin
                //obj.Margin = new UIMeasureValueRectangle( UIMeasure.Units, 4, 2, 4, 2 );
                //obj.Margin = new UIMeasureValueRectangle( UIMeasure.Units, 2, 2, 2, 2 );

                obj.NewObjectSetDefaultConfiguration();

                obj.MouseDown += TextControl_MouseDown;
                obj.Touch     += TextControl_Touch;

                //create down button
                {
                    var image = obj.CreateComponent <UIImage>();
                    image.SourceImage         = new Reference <Component_Image>(null, @"Base\UI\Images\ComboBoxButton.png");
                    image.HorizontalAlignment = EHorizontalAlignment.Right;
                    image.Size          = new UIMeasureValueVector2(UIMeasure.Screen, new Vector2(0, 0));
                    image.CanBeSelected = false;
                }
            }

            //{
            //	var obj = CreateComponent<UIButton>();
            //	obj.Name = "Down Button";

            //	//is not work. strange
            //	//obj.Text = ReferenceUtility.MakeThisReference( obj, this, "DisplayText" );//"Text" );

            //	//obj.Margin = new UIMeasureValueRectangle(UIMeasure.Parent,
            //	//obj.Size = new UIMeasureValueVector2( UIMeasure.Parent, 1, 1 );

            //	obj.CanBeSelected = false;
            //	//obj.HorizontalAlignment = EHorizontalAlignment.Stretch;
            //	//obj.VerticalAlignment = EVerticalAlignment.Stretch;
            //	//obj.Offset = new UIMeasureValueVector2( UIMeasure.Units, 4, 0 );

            //	//UIStyle.EditTextMargin
            //	//obj.Margin = new UIMeasureValueRectangle( UIMeasure.Units, 4, 2, 4, 2 );
            //	//obj.Margin = new UIMeasureValueRectangle( UIMeasure.Units, 2, 2, 2, 2 );

            //}

            {
                var obj = CreateComponent <UIList>();
                obj.Name          = "Down List";
                obj.Margin        = new UIMeasureValueRectangle(UIMeasure.Parent, 0, 1, 1, 1);
                obj.Size          = new UIMeasureValueVector2(UIMeasure.Screen, new Vector2(0, 0));
                obj.CanBeSelected = false;
                obj.Visible       = false;
                obj.TopMost       = true;
                //obj.ZOrder = 1;

                obj.NewObjectSetDefaultConfiguration();

                obj.SelectedIndexChanged += List_SelectedIndexChanged;
                //obj.MouseDown += List_MouseDown;

                //control to hide the list when clicked outside control
                {
                    var obj2 = obj.CreateComponent <UIControl>();
                    obj2.Name          = "Cover";
                    obj2.CanBeSelected = false;
                    obj2.Margin        = new UIMeasureValueRectangle(UIMeasure.Screen, 0, 0, 1, 1);
                    obj2.Size          = new UIMeasureValueVector2(UIMeasure.Screen, 1, 1);
                    obj2.MouseDown    += ListCover_MouseDown;
                    obj2.Touch        += ListCover_Touch;
                }
            }
        }
コード例 #11
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            if (Components.Count == 0)
            {
                Color = new ColorValue(0.6784314, 0.6784314, 0.6784314);

                //Mesh
                {
                    var mesh = CreateComponent <Component_Mesh>();
                    mesh.Name = "Mesh";
                    Mesh      = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.05, 0.3, 0.3);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");
                }

                //Button
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name = "Button";

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.05, 0.15, 0.15);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.05, 0, 0);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //Indicator
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name  = "Indicator";
                    meshInSpace.Color = new ColorValue(0, 1, 0);

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Cylinder>();
                    geometry.Name     = "Mesh Geometry";
                    geometry.Axis     = 0;
                    geometry.Radius   = 0.02;
                    geometry.Height   = 0.02;
                    geometry.Segments = 16;
                    geometry.Material = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.03, 0, 0.12);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //C# Script
                {
                    var script = CreateComponent <Component_CSharpScript>();
                    script.Name = "C# Script";
                    script.Code = "public void InteractiveObjectButton_UpdateEvent(NeoAxis.Component sender, float delta)\r\n{\r\n\tvar _this = sender as Component_ButtonInSpace;\r\n\tif (_this != null)\r\n\t{\r\n\t\tvar indicator = _this.GetComponent(\"Indicator\") as Component_MeshInSpace;\r\n\t\tif (indicator != null)\r\n\t\t\tindicator.Color = _this.Activated ? new ColorValue(0, 1, 0) : new ColorValue(0.5, 0.5, 0.5);\r\n\r\n\t\tvar buttonOffset = _this.Components.GetByPath(\"Button\\\\Attach Transform Offset\") as Component_TransformOffset;\r\n\t\tif (buttonOffset != null)\r\n\t\t{\r\n\t\t\tvar offsetPushed = 0.01;\r\n\t\t\tvar offsetDefault = 0.05;\r\n\r\n\t\t\tvar coef = 0.0;\r\n\t\t\tif (_this.Clicking && _this.ClickingTotalTime != 0)\r\n\t\t\t{\r\n\t\t\t\tvar timeFactor = MathEx.Saturate(_this.ClickingCurrentTime / _this.ClickingTotalTime);\r\n\r\n\t\t\t\tif(timeFactor < 0.5)\r\n\t\t\t\t\tcoef = timeFactor * 2;\r\n\t\t\t\telse\r\n\t\t\t\t\tcoef = (1.0f - timeFactor) * 2;\r\n\t\t\t}\r\n\r\n\t\t\tvar offset = MathEx.Lerp(offsetDefault, offsetPushed, coef);\r\n\t\t\tbuttonOffset.PositionOffset = new Vector3(offset, 0, 0);\r\n\t\t}\r\n\t}\r\n}";

                    var handler = script.CreateComponent <Component_EventHandler>();
                    handler.Name          = "Event Handler UpdateEvent";
                    handler.WhenEnable    = Component_EventHandler.WhenEnableEnum.Editor | Component_EventHandler.WhenEnableEnum.Simulation | Component_EventHandler.WhenEnableEnum.Instance;
                    handler.Event         = ReferenceUtility.MakeReference("this:..\\..\\event:UpdateEvent");
                    handler.HandlerMethod = ReferenceUtility.MakeReference("this:..\\method:InteractiveObjectButton_UpdateEvent(NeoAxis.Component,System.Single)");
                }
            }
        }
コード例 #12
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            if (Components.Count == 0)
            {
                Color = new ColorValue(0.6784314, 0.6784314, 0.6784314);

                //Mesh
                {
                    var mesh = CreateComponent <Component_Mesh>();
                    mesh.Name = "Mesh";
                    Mesh      = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.05, 0.3, 0.3);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");
                }

                //Button
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name = "Button";

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Cylinder>();
                    geometry.Name     = "Mesh Geometry";
                    geometry.Axis     = 0;
                    geometry.Radius   = 0.08;
                    geometry.Height   = 0.08;
                    geometry.Material = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.05, 0, 0);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //Indicator Min
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name  = "Indicator Min";
                    meshInSpace.Color = new ColorValue(1, 0, 0);

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Cylinder>();
                    geometry.Name     = "Mesh Geometry";
                    geometry.Axis     = 0;
                    geometry.Radius   = 0.02;
                    geometry.Height   = 0.02;
                    geometry.Segments = 16;
                    geometry.Material = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.03, -0.11, 0.11);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //Indicator Max
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name  = "Indicator Max";
                    meshInSpace.Color = new ColorValue(0, 1, 0);

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Cylinder>();
                    geometry.Name     = "Mesh Geometry";
                    geometry.Axis     = 0;
                    geometry.Radius   = 0.02;
                    geometry.Height   = 0.02;
                    geometry.Segments = 16;
                    geometry.Material = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.03, 0.11, 0.11);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //Marker Min
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name  = "Marker Min";
                    meshInSpace.Color = new ColorValue(1, 0, 0);

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.05, 0.14, 0.01);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.01, 0, 0);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //Marker Max
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name  = "Marker Max";
                    meshInSpace.Color = new ColorValue(0, 1, 0);

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.05, 0.14, 0.01);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.01, 0, 0);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //Marker Current
                {
                    var meshInSpace = CreateComponent <Component_MeshInSpace>();
                    meshInSpace.Name  = "Marker Current";
                    meshInSpace.Color = new ColorValue(1, 1, 1);

                    var mesh = meshInSpace.CreateComponent <Component_Mesh>();
                    mesh.Name        = "Mesh";
                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(this, mesh);

                    var geometry = mesh.CreateComponent <Component_MeshGeometry_Box>();
                    geometry.Name       = "Mesh Geometry";
                    geometry.Dimensions = new Vector3(0.05, 0.14, 0.01);
                    geometry.Material   = ReferenceUtility.MakeReference("Base\\Materials\\White.material");

                    meshInSpace.Mesh = ReferenceUtility.MakeThisReference(meshInSpace, mesh);

                    var transformOffset = meshInSpace.CreateComponent <Component_TransformOffset>();
                    transformOffset.Name           = "Attach Transform Offset";
                    transformOffset.PositionOffset = new Vector3(0.06, 0, 0);
                    transformOffset.Source         = ReferenceUtility.MakeThisReference(transformOffset, this, "Transform");

                    meshInSpace.Transform = ReferenceUtility.MakeThisReference(meshInSpace, transformOffset, "Result");
                }

                //C# Script
                {
                    var script = CreateComponent <Component_CSharpScript>();
                    script.Name = "C# Script";
                    script.Code = "public void InteractiveObjectButton_UpdateEvent(NeoAxis.Component sender, float delta)\r\n{\r\n\tvar _this = sender as Component_RegulatorSwitchInSpace;\r\n\tif (_this != null)\r\n\t{\r\n\t\tvar indicatorMin = _this.GetComponent(\"Indicator Min\") as Component_MeshInSpace;\r\n\t\tif (indicatorMin != null)\r\n\t\t\tindicatorMin.Color = _this.Value.Value <= _this.ValueRange.Value.Minimum ? new ColorValue(1, 0, 0) : new ColorValue(0.5, 0.5, 0.5);\r\n\r\n\t\tvar indicatorMax = _this.GetComponent(\"Indicator Max\") as Component_MeshInSpace;\r\n\t\tif (indicatorMax != null)\r\n\t\t\tindicatorMax.Color = _this.Value.Value >= _this.ValueRange.Value.Maximum ? new ColorValue(0, 1, 0) : new ColorValue(0.5, 0.5, 0.5);\r\n\r\n\t\tvar button = _this.GetComponent(\"Button\");\r\n\t\tif (button != null)\r\n\t\t{\r\n\t\t\tvar offset = button.GetComponent<Component_TransformOffset>();\r\n\t\t\tif (offset != null)\r\n\t\t\t{\r\n\t\t\t\tvar angle = _this.GetValueAngle() - 90;\r\n\t\t\t\toffset.RotationOffset = new Angles(angle, 0, 0).ToQuaternion();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar markerMin = _this.GetComponent(\"Marker Min\");\r\n\t\tif (markerMin != null)\r\n\t\t{\r\n\t\t\tvar offset = markerMin.GetComponent<Component_TransformOffset>();\r\n\t\t\tif (offset != null)\r\n\t\t\t{\r\n\t\t\t\tvar angle = _this.AngleRange.Value.Minimum - 90;\r\n\t\t\t\tvar angleR = MathEx.DegreeToRadian(angle);\r\n\t\t\t\toffset.PositionOffset = new Vector3(0.01, Math.Cos(angleR) * 0.04, Math.Sin(-angleR) * 0.04);\r\n\t\t\t\toffset.RotationOffset = new Angles(angle, 0, 0).ToQuaternion();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar markerMax = _this.GetComponent(\"Marker Max\");\r\n\t\tif (markerMax != null)\r\n\t\t{\r\n\t\t\tvar offset = markerMax.GetComponent<Component_TransformOffset>();\r\n\t\t\tif (offset != null)\r\n\t\t\t{\r\n\t\t\t\tvar angle = _this.AngleRange.Value.Maximum - 90;\r\n\t\t\t\tvar angleR = MathEx.DegreeToRadian(angle);\r\n\t\t\t\toffset.PositionOffset = new Vector3(0.01, Math.Cos(angleR) * 0.04, Math.Sin(-angleR) * 0.04);\r\n\t\t\t\toffset.RotationOffset = new Angles(angle, 0, 0).ToQuaternion();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar markerCurrent = _this.GetComponent(\"Marker Current\");\r\n\t\tif (markerCurrent != null)\r\n\t\t{\r\n\t\t\tvar offset = markerCurrent.GetComponent<Component_TransformOffset>();\r\n\t\t\tif (offset != null)\r\n\t\t\t{\r\n\t\t\t\tvar angle = _this.GetValueAngle() - 90;\r\n\t\t\t\tvar angleR = MathEx.DegreeToRadian(angle);\r\n\t\t\t\toffset.PositionOffset = new Vector3(0.06, Math.Cos(angleR) * 0.04, Math.Sin(-angleR) * 0.04);\r\n\t\t\t\toffset.RotationOffset = new Angles(angle, 0, 0).ToQuaternion();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}";

                    var handler = script.CreateComponent <Component_EventHandler>();
                    handler.Name          = "Event Handler UpdateEvent";
                    handler.WhenEnable    = Component_EventHandler.WhenEnableEnum.Editor | Component_EventHandler.WhenEnableEnum.Simulation | Component_EventHandler.WhenEnableEnum.Instance;
                    handler.Event         = ReferenceUtility.MakeReference("this:..\\..\\event:UpdateEvent");
                    handler.HandlerMethod = ReferenceUtility.MakeReference("this:..\\method:InteractiveObjectButton_UpdateEvent(NeoAxis.Component,System.Single)");
                }
            }
        }