static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNode::Value> &p_values) { switch (p_type) { case SL::TYPE_BOOL: return p_values[0].boolean ? "true" : "false"; case SL::TYPE_BVEC2: case SL::TYPE_BVEC3: case SL::TYPE_BVEC4: { String text = "bvec" + itos(p_type - SL::TYPE_BOOL + 1) + "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += p_values[i].boolean ? "true" : "false"; } text += ")"; return text; } case SL::TYPE_INT: return itos(p_values[0].sint); case SL::TYPE_IVEC2: case SL::TYPE_IVEC3: case SL::TYPE_IVEC4: { String text = "ivec" + itos(p_type - SL::TYPE_INT + 1) + "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += itos(p_values[i].sint); } text += ")"; return text; } break; case SL::TYPE_UINT: return itos(p_values[0].uint) + "u"; case SL::TYPE_UVEC2: case SL::TYPE_UVEC3: case SL::TYPE_UVEC4: { String text = "uvec" + itos(p_type - SL::TYPE_UINT + 1) + "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += itos(p_values[i].uint) + "u"; } text += ")"; return text; } break; case SL::TYPE_FLOAT: return f2sp0(p_values[0].real) + "f"; case SL::TYPE_VEC2: case SL::TYPE_VEC3: case SL::TYPE_VEC4: { String text = "vec" + itos(p_type - SL::TYPE_FLOAT + 1) + "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += f2sp0(p_values[i].real); } text += ")"; return text; } break; case SL::TYPE_MAT2: case SL::TYPE_MAT3: case SL::TYPE_MAT4: { String text = "mat" + itos(p_type - SL::TYPE_MAT2 + 2) + "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += f2sp0(p_values[i].real); } text += ")"; return text; } break; default: ERR_FAIL_V(String()); } }
static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNode::Value> &p_values) { switch (p_type) { case SL::TYPE_BOOL: return p_values[0].boolean ? "true" : "false"; case SL::TYPE_BVEC2: case SL::TYPE_BVEC3: case SL::TYPE_BVEC4: { StringBuffer<> text; text += "bvec"; text += itos(p_type - SL::TYPE_BOOL + 1); text += "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += p_values[i].boolean ? "true" : "false"; } text += ")"; return text.as_string(); } // GLSL ES 2 doesn't support uints, so we just use signed ints instead... case SL::TYPE_UINT: return itos(p_values[0].uint); case SL::TYPE_UVEC2: case SL::TYPE_UVEC3: case SL::TYPE_UVEC4: { StringBuffer<> text; text += "ivec"; text += itos(p_type - SL::TYPE_UINT + 1); text += "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += itos(p_values[i].uint); } text += ")"; return text.as_string(); } break; case SL::TYPE_INT: return itos(p_values[0].sint); case SL::TYPE_IVEC2: case SL::TYPE_IVEC3: case SL::TYPE_IVEC4: { StringBuffer<> text; text += "ivec"; text += itos(p_type - SL::TYPE_INT + 1); text += "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += itos(p_values[i].sint); } text += ")"; return text.as_string(); } break; case SL::TYPE_FLOAT: return f2sp0(p_values[0].real); case SL::TYPE_VEC2: case SL::TYPE_VEC3: case SL::TYPE_VEC4: { StringBuffer<> text; text += "vec"; text += itos(p_type - SL::TYPE_FLOAT + 1); text += "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += f2sp0(p_values[i].real); } text += ")"; return text.as_string(); } break; case SL::TYPE_MAT2: case SL::TYPE_MAT3: case SL::TYPE_MAT4: { StringBuffer<> text; text += "mat"; text += itos(p_type - SL::TYPE_MAT2 + 2); text += "("; for (int i = 0; i < p_values.size(); i++) { if (i > 0) text += ","; text += f2sp0(p_values[i].real); } text += ")"; return text.as_string(); } break; default: ERR_FAIL_V(String()); } }