public void GenerateNodeCode(ShaderGenerator visitor, GraphContext graphContext, GenerationMode generationMode)
 {
     if (generationMode.IsPreview())
     {
         visitor.AddShaderChunk(string.Format("Gradient {0} = {1};",
                                              GetVariableNameForSlot(outputSlotId),
                                              GradientUtils.GetGradientForPreview(GetVariableNameForNode())));
     }
     else
     {
         visitor.AddShaderChunk(string.Format("Gradient {0} = {1}",
                                              GetVariableNameForSlot(outputSlotId),
                                              GradientUtils.GetGradientValue(gradient, precision, true, ";")));
     }
 }
        public override string GetDefaultValue(GenerationMode generationMode)
        {
            var matOwner = owner as AbstractMaterialNode;

            if (matOwner == null)
            {
                throw new Exception(string.Format("Slot {0} either has no owner, or the owner is not a {1}", this, typeof(AbstractMaterialNode)));
            }

            if (generationMode.IsPreview())
            {
                return(GradientUtils.GetGradientForPreview(matOwner.GetVariableNameForSlot(id)));
            }

            return(ConcreteSlotValueAsVariable());
        }
        public void GenerateNodeCode(ShaderStringBuilder sb, GraphContext graphContext, GenerationMode generationMode)
        {
            var graph    = owner as GraphData;
            var property = graph.properties.FirstOrDefault(x => x.guid == propertyGuid);

            if (property == null)
            {
                return;
            }

            if (property is Vector1ShaderProperty)
            {
                var result = string.Format("$precision {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is Vector2ShaderProperty)
            {
                var result = string.Format("$precision2 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is Vector3ShaderProperty)
            {
                var result = string.Format("$precision3 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is Vector4ShaderProperty)
            {
                var result = string.Format("$precision4 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is ColorShaderProperty)
            {
                var result = string.Format("$precision4 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is BooleanShaderProperty)
            {
                var result = string.Format("$precision {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is Matrix2ShaderProperty)
            {
                var result = string.Format("$precision2x2 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is Matrix3ShaderProperty)
            {
                var result = string.Format("$precision3x3 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is Matrix4ShaderProperty)
            {
                var result = string.Format("$precision4x4 {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                sb.AppendLine(result);
            }
            else if (property is SamplerStateShaderProperty)
            {
                SamplerStateShaderProperty samplerStateProperty = property as SamplerStateShaderProperty;
                var result = string.Format("SamplerState {0} = {1};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , samplerStateProperty.referenceName);
                sb.AppendLine(result);
            }
            else if (property is GradientShaderProperty)
            {
                if (generationMode == GenerationMode.Preview)
                {
                    var result = string.Format("Gradient {0} = {1};"
                                               , GetVariableNameForSlot(OutputSlotId)
                                               , GradientUtils.GetGradientForPreview(property.referenceName));
                    sb.AppendLine(result);
                }
                else
                {
                    var result = string.Format("Gradient {0} = {1};"
                                               , GetVariableNameForSlot(OutputSlotId)
                                               , property.referenceName);
                    sb.AppendLine(result);
                }
            }
        }
        public void GenerateNodeCode(ShaderGenerator visitor, GraphContext graphContext, GenerationMode generationMode)
        {
            var graph    = owner as GraphData;
            var property = graph.properties.FirstOrDefault(x => x.guid == propertyGuid);

            if (property == null)
            {
                return;
            }

            if (property is Vector1ShaderProperty)
            {
                var result = string.Format("{0} {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is Vector2ShaderProperty)
            {
                var result = string.Format("{0}2 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is Vector3ShaderProperty)
            {
                var result = string.Format("{0}3 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is Vector4ShaderProperty)
            {
                var result = string.Format("{0}4 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is ColorShaderProperty)
            {
                var result = string.Format("{0}4 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is BooleanShaderProperty)
            {
                var result = string.Format("{0} {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is Matrix2ShaderProperty)
            {
                var result = string.Format("{0}2x2 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is Matrix3ShaderProperty)
            {
                var result = string.Format("{0}3x3 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is Matrix4ShaderProperty)
            {
                var result = string.Format("{0}4x4 {1} = {2};"
                                           , precision
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , property.referenceName);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is SamplerStateShaderProperty)
            {
                SamplerStateShaderProperty samplerStateProperty = property as SamplerStateShaderProperty;
                var result = string.Format("SamplerState {0} = {1}_{2}_{3};"
                                           , GetVariableNameForSlot(OutputSlotId)
                                           , samplerStateProperty.referenceName
                                           , samplerStateProperty.value.filter
                                           , samplerStateProperty.value.wrap);
                visitor.AddShaderChunk(result, true);
            }
            else if (property is GradientShaderProperty)
            {
                if (generationMode == GenerationMode.Preview)
                {
                    var result = string.Format("Gradient {0} = {1};"
                                               , GetVariableNameForSlot(OutputSlotId)
                                               , GradientUtils.GetGradientForPreview(property.referenceName));
                    visitor.AddShaderChunk(result, true);
                }
                else
                {
                    var result = string.Format("Gradient {0} = {1};"
                                               , GetVariableNameForSlot(OutputSlotId)
                                               , property.referenceName);
                    visitor.AddShaderChunk(result, true);
                }
            }
        }
 public void GenerateNodeCode(ShaderStringBuilder sb, GraphContext graphContext, GenerationMode generationMode)
 {
     if (generationMode.IsPreview())
     {
         sb.AppendLine("Gradient {0} = {1};", GetVariableNameForSlot(outputSlotId), GradientUtils.GetGradientForPreview(GetVariableNameForNode()));
     }
     else
     {
         sb.AppendLine("Gradient {0} = {1}", GetVariableNameForSlot(outputSlotId), GradientUtils.GetGradientValue(gradient, true, ";"));
     }
 }