panda3d/tests/pgraph/test_shaderattrib.py
Brian Lach 48ff3aeb08 pgraph: use bit flags instead of incremental enum for ShaderAttrib flags
The flags in the enum are actual bit flags instead of indices. This allows for setting/clearing a mask of flags in one go, rather than having to set each flag in its own function call. Existing code shouldn't be affected.

Closes #688
2019-12-11 16:49:42 +01:00

43 lines
1.9 KiB
Python

from panda3d import core
def test_shaderattrib_flags():
# Ensure the old single-flag behavior still works
shattr = core.ShaderAttrib.make()
# Make sure we have the flag
shattr = shattr.set_flag(core.ShaderAttrib.F_hardware_skinning, True)
assert shattr.get_flag(core.ShaderAttrib.F_hardware_skinning)
# Make sure we don't have a flag that we didn't set
assert not shattr.get_flag(core.ShaderAttrib.F_subsume_alpha_test)
# Clear it, we should not longer have the flag
shattr = shattr.clear_flag(core.ShaderAttrib.F_hardware_skinning)
assert not shattr.get_flag(core.ShaderAttrib.F_hardware_skinning)
# Set a flag to false, we shouldn't have it
shattr = shattr.set_flag(core.ShaderAttrib.F_hardware_skinning, False)
assert not shattr.get_flag(core.ShaderAttrib.F_hardware_skinning)
# Ensure the new behavior works
shattr = core.ShaderAttrib.make()
# Make sure we have the flags
shattr = shattr.set_flag(core.ShaderAttrib.F_hardware_skinning | core.ShaderAttrib.F_subsume_alpha_test, True)
assert shattr.get_flag(core.ShaderAttrib.F_hardware_skinning | core.ShaderAttrib.F_subsume_alpha_test)
# Make sure we don't have a flag that we didn't set
assert not shattr.get_flag(core.ShaderAttrib.F_shader_point_size)
# ...group of flags we didn't set
assert not shattr.get_flag(core.ShaderAttrib.F_disable_alpha_write | core.ShaderAttrib.F_shader_point_size)
# Make sure they clear correctly
shattr = shattr.clear_flag(core.ShaderAttrib.F_hardware_skinning | core.ShaderAttrib.F_subsume_alpha_test)
assert not shattr.get_flag(core.ShaderAttrib.F_hardware_skinning | core.ShaderAttrib.F_subsume_alpha_test)
# Set group to false
shattr = shattr.set_flag(core.ShaderAttrib.F_hardware_skinning | core.ShaderAttrib.F_subsume_alpha_test, False)
assert not shattr.get_flag(core.ShaderAttrib.F_hardware_skinning | core.ShaderAttrib.F_subsume_alpha_test)