- Implemented `image_plane.py` to build the Image Plane Geometry Nodes group with customizable parameters for geometry, subdivide, and thickness. - Created `image_plane_validation.py` to validate the functionality of the image plane, ensuring correct geometry generation and material assignment. - Developed `material_layers.py` to construct shader node groups for image materials, including depth and normal handling. - Authored `plane_layouts.py` to define node arrangements for image geometry assets. - Introduced `shadeless.py` to create a shadeless shader node group that displays color without scene lighting while preserving shadows and reflections.
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
import unittest
|
|
from pathlib import Path
|
|
from types import SimpleNamespace
|
|
from common_test_support import load_common_modules
|
|
PROJECT_ROOT=Path(__file__).resolve().parents[1]
|
|
|
|
class ModifierInputsTest(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.modules = load_common_modules()
|
|
|
|
def test_runtime_modifier_enum_input_uses_string_identifier(self):
|
|
enum_items = (
|
|
SimpleNamespace(identifier="SURFACE"),
|
|
SimpleNamespace(identifier="BALLOON"),
|
|
)
|
|
value_property = SimpleNamespace(type="ENUM", enum_items=enum_items)
|
|
input_slot = SimpleNamespace(
|
|
value=None,
|
|
bl_rna=SimpleNamespace(properties={"value": value_property}),
|
|
)
|
|
modifier = SimpleNamespace(
|
|
properties=SimpleNamespace(
|
|
inputs=SimpleNamespace(Shape=input_slot),
|
|
)
|
|
)
|
|
|
|
self.modules.object.set_modifier_input(modifier, "Shape", 1)
|
|
|
|
self.assertEqual(input_slot.value, "BALLOON")
|
|
|
|
|
|
def test_modifier_inputs_support_rna_and_dictionary_values(self):
|
|
value_property = SimpleNamespace(type="FLOAT")
|
|
input_slot = SimpleNamespace(
|
|
value=None,
|
|
bl_rna=SimpleNamespace(properties={"value": value_property}),
|
|
)
|
|
runtime_modifier = SimpleNamespace(
|
|
properties=SimpleNamespace(
|
|
inputs=SimpleNamespace(Thickness=input_slot),
|
|
)
|
|
)
|
|
|
|
self.modules.object.set_modifier_input(runtime_modifier, "Thickness", 2.0)
|
|
|
|
self.assertEqual(input_slot.value, 2.0)
|
|
|
|
class LegacyModifier(dict):
|
|
properties = None
|
|
|
|
legacy_modifier = LegacyModifier()
|
|
self.modules.object.set_modifier_input(legacy_modifier, "Shape", 1)
|
|
self.assertEqual(legacy_modifier["Shape"], 1)
|