| 23 | const ShaderGraphValue ShaderGraphValue::False(VariantType::Types::Bool, TEXT("false")); |
| 24 | |
| 25 | ShaderGraphValue::ShaderGraphValue(const Variant& v) |
| 26 | { |
| 27 | switch (v.Type.Type) |
| 28 | { |
| 29 | case VariantType::Bool: |
| 30 | Type = VariantType::Types::Bool; |
| 31 | Value = v.AsBool ? TEXT('1') : TEXT('0'); |
| 32 | break; |
| 33 | case VariantType::Int: |
| 34 | Type = VariantType::Types::Int; |
| 35 | Value = StringUtils::ToString(v.AsInt); |
| 36 | break; |
| 37 | case VariantType::Uint: |
| 38 | Type = VariantType::Types::Uint; |
| 39 | Value = StringUtils::ToString(v.AsUint); |
| 40 | break; |
| 41 | case VariantType::Float: |
| 42 | Type = VariantType::Types::Float; |
| 43 | Value = String::Format(TEXT("{}"), v.AsFloat); |
| 44 | if (Value.Find('.') == -1) |
| 45 | Value = String::Format(TEXT("{:.1f}"), v.AsFloat); |
| 46 | break; |
| 47 | case VariantType::Double: |
| 48 | Type = VariantType::Types::Float; |
| 49 | Value = String::Format(TEXT("{}"), (float)v.AsDouble); |
| 50 | if (Value.Find('.') == -1) |
| 51 | Value = String::Format(TEXT("{:.1f}"), (float)v.AsDouble); |
| 52 | break; |
| 53 | case VariantType::Float2: |
| 54 | { |
| 55 | const auto vv = v.AsFloat2(); |
| 56 | Type = VariantType::Types::Float2; |
| 57 | Value = String::Format(TEXT("float2({0}, {1})"), vv.X, vv.Y); |
| 58 | break; |
| 59 | } |
| 60 | case VariantType::Float3: |
| 61 | { |
| 62 | const auto vv = v.AsFloat3(); |
| 63 | Type = VariantType::Types::Float3; |
| 64 | Value = String::Format(TEXT("float3({0}, {1}, {2})"), vv.X, vv.Y, vv.Z); |
| 65 | break; |
| 66 | } |
| 67 | case VariantType::Float4: |
| 68 | case VariantType::Color: |
| 69 | { |
| 70 | const auto vv = v.AsFloat4(); |
| 71 | Type = VariantType::Types::Float4; |
| 72 | Value = String::Format(TEXT("float4({0}, {1}, {2}, {3})"), vv.X, vv.Y, vv.Z, vv.W); |
| 73 | break; |
| 74 | } |
| 75 | case VariantType::Double2: |
| 76 | { |
| 77 | const auto vv = (::Float2)v.AsDouble2(); |
| 78 | Type = VariantType::Types::Float2; |
| 79 | Value = String::Format(TEXT("float2({0}, {1})"), vv.X, vv.Y); |
| 80 | break; |
| 81 | } |
| 82 | case VariantType::Double3: |