Exemplo n.º 1
0
            public override object GetValue(object obj, object[] index)
            {
                object result = null;

                //always obj == Owner
                Component_InvokeMember c = (Component_InvokeMember)obj;

                //!!!!так?
                if (invoke && !c.FlowSupport)
                {
                    c.Invoke();
                }

                object value;

                if (c.propertyValues.TryGetValue(Signature, out value))
                {
                    //update value for Reference type
                    if (referenceSupport)
                    {
                        //convert from ReferenceNoValue
                        if (value != null && value is ReferenceNoValue)
                        {
                            value = ReferenceUtility.MakeReference(ReferenceUtility.GetUnreferencedType(Type.GetNetType()), ((ReferenceNoValue)value).GetByReference);
                        }

                        IReference iReference = value as IReference;
                        if (iReference != null)
                        {
                            //!!!!try catch? где еще так

                            //get value by reference
                            //!!!!
                            value = iReference.GetValue(obj);
                            //value = iReference.GetValue( Owner );

                            //!!!!?
                            if (!ReadOnly)                             //!!!!new
                            {
                                //!!!!
                                SetValue(obj, value, Indexers);
                                //SetValue( Owner, value, Indexers );
                            }
                        }
                    }
                    result = value;
                }

                //check the type. result can contains value with another type after change the type of property.
                if (result != null && !Type.IsAssignableFrom(MetadataManager.MetadataGetType(result)))
                {
                    result = null;
                }
                if (result == null && Type.GetNetType().IsValueType)
                {
                    result = Type.InvokeInstance(null);
                }

                return(result);
            }
Exemplo n.º 2
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            base.NewObjectSetDefaultConfiguration(createdFromNewObjectWindow);

            Transform = new Transform(TransformV.Position, Quaternion.LookAt(new Vector3(0, 0, -1), new Vector3(0, 1, 0)));
            Material  = ReferenceUtility.MakeReference(@"Base\Components\Decal default.material");
        }
Exemplo n.º 3
0
            /////////////////////////////////////////

            public Component_Scene CreateScene(bool enable)
            {
                DetachAndOrDestroyScene();

                scene = ComponentUtility.CreateComponent <Component_Scene>(null, true, enable);

                //!!!!что еще отключать?
                scene.OctreeEnabled = false;

                //rendering pipeline
                {
                    var pipeline = (Component_RenderingPipeline)scene.CreateComponent(RenderingSystem.RenderingPipelineDefault, -1, false);
                    scene.RenderingPipeline = pipeline;

                    //!!!!что еще отключать?
                    pipeline.DeferredShading = AutoTrueFalse.False;
                    pipeline.LODRange        = new RangeI(0, 0);
                    //pipeline.UseRenderTargets = false;

                    //!!!!
                    scene.BackgroundColor = new ColorValue(0.5, 0.5, 0.5);
                    //scene.BackgroundColor = new ColorValue( 0, 0, 0, 0 );

                    scene.BackgroundColorAffectLighting      = 1;
                    scene.BackgroundColorEnvironmentOverride = new ColorValue(0.8, 0.8, 0.8);

                    pipeline.Enabled = true;
                }

                //ambient light
                {
                    var light = scene.CreateComponent <Component_Light>();
                    light.Type       = Component_Light.TypeEnum.Ambient;
                    light.Brightness = ReferenceUtility.MakeReference("Base\\ProjectSettings.component|PreviewAmbientLightBrightness");
                    //light.Brightness = ProjectSettings.Get.PreviewAmbientLightBrightness.Value;
                }

                //directional light
                {
                    var light = scene.CreateComponent <Component_Light>();
                    light.Type       = Component_Light.TypeEnum.Directional;
                    light.Transform  = new Transform(new Vector3(0, 0, 0), Quaternion.FromDirectionZAxisUp(new Vector3(0, 0, -1)), Vector3.One);
                    light.Brightness = ReferenceUtility.MakeReference("Base\\ProjectSettings.component|PreviewDirectionalLightBrightness");
                    //light.Brightness = ProjectSettings.Get.PreviewDirectionalLightBrightness.Value;
                    //!!!!?
                    light.Shadows = false;
                    //light.Type = Component_Light.TypeEnum.Point;
                    //light.Transform = new Transform( new Vec3( 0, 0, 2 ), Quat.Identity, Vec3.One );
                }

                scene.ViewportUpdateGetCameraSettings += Scene_ViewportUpdateGetCameraSettings;

                //connect scene to viewport
                if (viewport != null)
                {
                    viewport.AttachedScene = scene;
                }

                return(scene);
            }
Exemplo n.º 4
0
        static void FixRootReferences(Component_Import3D import3D)
        {
            bool Fix(IReference reference, out string newReference)
            {
                if (reference.ReferenceSpecified)
                {
                    var referenceValue = reference.GetByReference;
                    if (referenceValue.Length >= "root:".Length && referenceValue.Substring(0, 5) == "root:")
                    {
                        newReference = referenceValue.Insert(5, "$Import3D\\");
                        return(true);
                    }
                }
                newReference = null;
                return(false);
            }

            //Component_MeshGeometry.Material
            foreach (var meshGeometry in import3D.GetComponents <Component_MeshGeometry>(false, true))
            {
                if (Fix(meshGeometry.Material, out var newReference))
                {
                    meshGeometry.Material = ReferenceUtility.MakeReference <Component_Material>(null, newReference);
                }
            }

            //Component_MeshInSpace.Mesh
            foreach (var meshInSpace in import3D.GetComponents <Component_MeshInSpace>(false, true))
            {
                if (Fix(meshInSpace.Mesh, out var newReference))
                {
                    meshInSpace.Mesh = ReferenceUtility.MakeReference <Component_Mesh>(null, newReference);
                }
            }
        }
Exemplo n.º 5
0
            public override void Finish(bool cancel)
            {
                base.Finish(cancel);

                if (!cancel)
                {
                    CreatingObject.Surface = ReferenceUtility.MakeReference(@"Base\Surfaces\Default.surface");
                }
            }
Exemplo n.º 6
0
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            if (Components.Count == 0)
            {
                var controller = CreateComponent <Component_SpriteAnimationController>();
                controller.Name = "Sprite Animation Controller";

                Animate       = true;
                IdleAnimation = ReferenceUtility.MakeReference(@"Base\Sprites\Weapon\Animation Idle.component");
                //FireAnimation = ReferenceUtility.MakeReference( @"Base\Sprites\Penguin\Animation Fire.component" );
            }
        }
Exemplo n.º 7
0
            public override object GetValue(object obj, object[] index)
            {
                var c = (Component_DeclareVariable)obj;

                object result = null;

                object value            = null;
                bool   valueGotFromFlow = false;

                //get value from current flow
                var currentFlow = Flow.CurrentFlow;

                if (currentFlow != null)
                {
                    if (currentFlow.GetVariable(c.GetVariableName(), out object unrefValue))
                    {
                        value            = ReferenceUtility.MakeReference(TypeUnreferenced.GetNetType(), unrefValue, "");
                        valueGotFromFlow = true;
                    }
                }

                //get init value
                if (!valueGotFromFlow)
                {
                    value = c.valuePropertyValue;

                    //update value for Reference type
                    IReference iReference = value as IReference;
                    if (iReference != null)
                    {
                        //get value by reference
                        value = iReference.GetValue(obj);
                        SetValue(obj, value, Indexers);
                    }
                }

                result = value;

                //check the type. result can contains value with another type after change the type of property.
                if (result != null && !Type.IsAssignableFrom(MetadataManager.MetadataGetType(result)))
                {
                    result = null;
                }
                if (result == null && Type.GetNetType().IsValueType)
                {
                    result = Type.InvokeInstance(null);
                }

                return(result);
            }
        /////////////////////////////////////////

        public override void DragDropObjectCreateInitNode(Component_FlowGraphNode node, DragDropObjectCreateInitNodeContext context, ref bool handled)
        {
            //Component_ShaderTextureSample
            if (context.createComponentType != null &&
                MetadataManager.GetTypeOfNetType(typeof(Component_Image)).IsAssignableFrom(context.createComponentType))
            {
                var obj = node.CreateComponent <Component_ShaderTextureSample>();
                obj.Name = "Texture Sample";

                //!!!!если не из ресурса
                obj.Texture = ReferenceUtility.MakeReference <Component_Image>(null, context.createComponentType.Name);

                context.controlledObject = obj;
                handled = true;
            }
        }
Exemplo n.º 9
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");
                }
            }
        }
Exemplo n.º 10
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");
                }
            }
        }
        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);
            }
        }
        public override void NewObjectSetDefaultConfiguration(bool createdFromNewObjectWindow = false)
        {
            var emitter = CreateComponent <Component_ParticleEmitter>();

            emitter.Name            = "Emitter";
            emitter.Material        = ReferenceUtility.MakeReference(@"Base\Components\Particle system default.material");
            emitter.DispersionAngle = new Component_ParticleEmitter.SingleProperty(10);

            var shape = emitter.CreateComponent <Component_ParticleEmitterShape_Point>();

            shape.Name      = "Point Shape";
            shape.Transform = new Transform(Vector3.Zero, new Angles(0, 90, 0).ToQuaternion());

            var colorMultiplier = emitter.CreateComponent <Component_ParticleColorMultiplierByTime>();

            colorMultiplier.Name     = "Color Multiplier By Time";
            colorMultiplier.Channels = Component_ParticleColorMultiplierByTime.ChannelsEnum.Alpha;
            colorMultiplier.Type     = Component_ParticleColorMultiplierByTime.TypeEnum.Curve;
            colorMultiplier.Curve.Add(new CurvePoint(0, 0));
            colorMultiplier.Curve.Add(new CurvePoint(1, 1));
            colorMultiplier.Curve.Add(new CurvePoint(2, 1));
            colorMultiplier.Curve.Add(new CurvePoint(3, 0));
        }
Exemplo n.º 13
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");
        }
        public static Component_TransformOffset Attach(Component_ObjectInSpace attachTo, Component_ObjectInSpace objectToAttach, DocumentInstance documentforUndoRedo = null, UndoMultiAction undoMultiAction = null)
        {
            var objectToTransform = CalculateObjectToTransform(objectToAttach);

            if (objectToTransform != null)
            {
                objectToAttach = objectToTransform;
            }

            //create _TransformOffset
            Component_TransformOffset transformOffset;

            {
                const string transformOffsetName = "Attach Transform Offset";

                transformOffset        = objectToAttach.CreateComponent <Component_TransformOffset>(enabled: false);
                transformOffset.Name   = transformOffsetName;
                transformOffset.Source = ReferenceUtility.MakeReference <Transform>(null, ReferenceUtility.CalculateThisReference(transformOffset, attachTo, "Transform"));

                try
                {
                    var f      = attachTo.Transform.Value;
                    var s      = objectToAttach.Transform.Value;
                    var offset = f.ToMatrix4().GetInverse() * s.ToMatrix4();
                    offset.Decompose(out Vector3 pos, out Quaternion rot, out Vector3 scl);

                    transformOffset.PositionOffset = pos;
                    transformOffset.RotationOffset = rot;
                    transformOffset.ScaleOffset    = scl;
                    //transformOffset.Matrix = offset;

                    //var offset = new Mat4( s.Rotation.ToMat3(), s.Position ) * new Mat4( f.Rotation.ToMat3(), f.Position ).GetInverse();
                    //var f = first.Transform.Value;
                    //var s = second.Transform.Value;
                    //var offset = new Mat4( s.Rotation.ToMat3(), s.Position ) * new Mat4( f.Rotation.ToMat3(), f.Position ).GetInverse();
                    ////var offset = second.Transform.Value.ToMat4() * first.Transform.Value.ToMat4().GetInverse();
                    //offset.Decompose( out Vec3 pos, out Quat rot, out Vec3 scl );

                    //transformOffset.PositionOffset = pos / f.Scale;// / s.Scale;
                    //transformOffset.RotationOffset = rot;

                    //transformOffset.ScaleOffset = s.Scale / f.Scale;
                    ////transformOffset.ScaleOffset = scl;
                }
                catch { }

                transformOffset.Enabled = true;

                if (undoMultiAction != null)
                {
                    undoMultiAction.AddAction(new UndoActionComponentCreateDelete(documentforUndoRedo, new Component[] { transformOffset }, true));
                }
            }

            //change Transform
            {
                //undo action
                if (undoMultiAction != null)
                {
                    var property = (Metadata.Property)objectToAttach.MetadataGetMemberBySignature("property:Transform");
                    var undoItem = new UndoActionPropertiesChange.Item(objectToAttach, property, objectToAttach.Transform, new object[0]);
                    undoMultiAction.AddAction(new UndoActionPropertiesChange(new UndoActionPropertiesChange.Item[] { undoItem }));
                }

                //configure reference
                objectToAttach.Transform = ReferenceUtility.MakeReference <Transform>(null, ReferenceUtility.CalculateThisReference(objectToAttach, transformOffset, "Result"));
            }

            return(transformOffset);
        }
Exemplo n.º 15
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)");
                }
            }
        }
Exemplo n.º 16
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)");
                }
            }
        }
Exemplo n.º 17
0
        /////////////////////////////////////////

        public void CreateDefaultFlares()
        {
            Component_LensFlare flare;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 0.4980392f, 0.4980392f, 0.05882353f);
            flare.Size     = new Vector2(0.05f, 0.05f);
            flare.Position = -0.1f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(0.4980392f, 1, 0.4980392f, 0.05882353f);
            flare.Size     = new Vector2(0.05f, 0.05f);
            flare.Position = -2;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.08f, 0.08f);
            flare.Position = -1.5f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.1f, 0.1f);
            flare.Position = -1.7f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 0.4980392f, 0.4980392f, 0.05882353f);
            flare.Size     = new Vector2(0.06f, 0.06f);
            flare.Position = -3;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 0.4980392f, 0.05882353f);
            flare.Size     = new Vector2(0.05f, 0.05f);
            flare.Position = -.5f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.09f, 0.09f);
            flare.Position = -2.1f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.08f, 0.08f);
            flare.Position = -.65f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(0.4980392f, 1, 0.4980392f, 0.05882353f);
            flare.Size     = new Vector2(0.05f, 0.05f);
            flare.Position = -.86f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.12f, 0.12f);
            flare.Position = -5;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.04f, 0.04f);
            flare.Position = .3f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(0.4980392f, 1, 0.4980392f, 0.05882353f);
            flare.Size     = new Vector2(0.03f, 0.03f);
            flare.Position = .6f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.06f, 0.06f);
            flare.Position = .1f;

            flare          = CreateComponent <Component_LensFlare>();
            flare.Name     = ComponentUtility.GetNewObjectUniqueName(flare);
            flare.Image    = ReferenceUtility.MakeReference(@"Samples\Starter Content\Textures\Lens flares\hexangle.png");
            flare.Color    = new ColorValue(1, 1, 1, 0.05882353f);
            flare.Size     = new Vector2(0.04f, 0.04f);
            flare.Position = -.35f;
        }
Exemplo n.º 18
0
        public Component_Import3D CreateForPreviewDisplay(Component_Scene scene, out bool onlyOneMaterial, out Dictionary <Component_Mesh, Transform> transformBySourceMesh)
        {
            onlyOneMaterial       = false;
            transformBySourceMesh = new Dictionary <Component_Mesh, Transform>();

            var createdObject = (Component_Import3D)Clone();

            createdObject.Name = "Import3D";
            FixRootReferences(createdObject);
            scene.AddComponent(createdObject);

            //create MeshInSpace for one mesh
            {
                var mesh = createdObject.GetComponent("Mesh") as Component_Mesh;
                if (mesh != null)
                {
                    var objectInSpace = createdObject.CreateComponent <Component_MeshInSpace>();
                    objectInSpace.Mesh = ReferenceUtility.MakeReference <Component_Mesh>(null, ReferenceUtility.CalculateThisReference(objectInSpace, mesh));
                }
            }

            //create meshes in space for Meshes
            {
                var sourceMeshesGroup         = GetComponent("Meshes");
                Component_Mesh[] sourceMeshes = null;
                if (sourceMeshesGroup != null)
                {
                    sourceMeshes = sourceMeshesGroup.GetComponents <Component_Mesh>();
                }

                var createdMeshesGroup = createdObject.GetComponent("Meshes");
                if (createdMeshesGroup != null)
                {
                    var createdMeshes = createdMeshesGroup.GetComponents <Component_Mesh>();

                    var positions = new Vector3[createdMeshes.Length];
                    {
                        if (sourceMeshesGroup != null)
                        {
                            double maxSizeY = 0;
                            foreach (var sourceMesh in sourceMeshesGroup.GetComponents <Component_Mesh>())
                            {
                                if (sourceMesh.Result != null)
                                {
                                    var bounds = sourceMesh.Result.SpaceBounds.CalculatedBoundingBox;
                                    var sizeY  = bounds.GetSize().Y;
                                    if (sizeY > maxSizeY)
                                    {
                                        maxSizeY = sizeY;
                                    }
                                }
                            }
                            var step      = maxSizeY * 1.2;
                            var totalSize = (double)(createdMeshes.Length - 1) * step;

                            for (int n = 0; n < createdMeshes.Length; n++)
                            {
                                var positionY = (double)n * step - totalSize / 2;
                                positions[n] = new Vector3(0, positionY, 0);
                            }
                        }
                    }

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

                        var transform = new Transform(positions[n], Quaternion.Identity);

                        var objectInSpace = createdObject.CreateComponent <Component_MeshInSpace>();
                        objectInSpace.Transform = transform;
                        objectInSpace.Mesh      = ReferenceUtility.MakeReference <Component_Mesh>(null, ReferenceUtility.CalculateThisReference(objectInSpace, createdMesh));

                        if (sourceMeshes != null && sourceMeshes.Length == createdMeshes.Length)
                        {
                            transformBySourceMesh[sourceMeshes[n]] = transform;
                        }
                    }
                }
            }

            //create MeshInSpace for only one material
            {
                var material = createdObject.GetComponent("Material") as Component_Material;
                if (material != null)
                {
                    var mesh = ProjectSettings.Get.MaterialPreviewMesh.Value;
                    if (mesh != null)
                    {
                        var objectInSpace = createdObject.CreateComponent <Component_MeshInSpace>();
                        objectInSpace.Mesh = mesh;

                        objectInSpace.ReplaceMaterial = ReferenceUtility.MakeReference <Component_Material>(null, ReferenceUtility.CalculateThisReference(objectInSpace, material));

                        onlyOneMaterial = true;
                    }
                }
            }

            return(createdObject);
        }
Exemplo n.º 19
0
        //public void ResetLodTransitionStates( ViewportRenderingContext resetOnlySpecifiedContext = null )
        //{
        //	SceneLODUtility.ResetLodTransitionStates( ref renderingContextItems, resetOnlySpecifiedContext );
        //}

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

            Material = ReferenceUtility.MakeReference(@"Base\Components\Billboard default.material");
        }