MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / ProcessGroupBoolean

Method ProcessGroupBoolean

Source/Engine/Visject/ShaderGraph.cpp:838–897  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

836}
837
838void ShaderGenerator::ProcessGroupBoolean(Box* box, Node* node, Value& value)
839{
840 switch (node->TypeID)
841 {
842 // NOT
843 case 1:
844 {
845 // Get A value
846 const Value a = tryGetValue(node->GetBox(0), Value::False).AsBool();
847
848 // Perform operation
849 value = writeLocal(ValueType::Bool, String::Format(TEXT("!{0}"), a.Value), node);
850 break;
851 }
852 // AND, OR, XOR, NOR, NAND
853 case 2:
854 case 3:
855 case 4:
856 case 5:
857 case 6:
858 {
859 // Get A and B values
860 const Value a = tryGetValue(node->GetBox(0), node->Values[0]).AsBool();
861 const Value b = tryGetValue(node->GetBox(1), node->Values[1]).AsBool();
862
863 // Perform operation
864 const Char* op;
865 switch (node->TypeID)
866 {
867 // AND
868 case 2:
869 op = TEXT("{0} && {1}");
870 break;
871 // OR
872 case 3:
873 op = TEXT("{0} || {1}");
874 break;
875 // XOR
876 case 4:
877 op = TEXT("!{0} != !{1}");
878 break;
879 // NOR
880 case 5:
881 op = TEXT("!({0} || {1})");
882 break;
883 // NAND
884 case 6:
885 op = TEXT("!({0} && {1})");
886 break;
887 default:
888 CRASH;
889 return;
890 }
891 value = writeLocal(ValueType::Bool, String::Format(op, a.Value, b.Value), node);
892 break;
893 }
894 default:
895 break;

Callers

nothing calls this directly

Calls 3

AsBoolMethod · 0.80
FormatFunction · 0.50
GetBoxMethod · 0.45

Tested by

no test coverage detected