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); }
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"); }
///////////////////////////////////////// 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); }
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); } } }
public override void Finish(bool cancel) { base.Finish(cancel); if (!cancel) { CreatingObject.Surface = ReferenceUtility.MakeReference(@"Base\Surfaces\Default.surface"); } }
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" ); } }
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; } }
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"); } } }
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)); }
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); }
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)"); } } }
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)"); } } }
///////////////////////////////////////// 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; }
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); }
//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"); }