texture.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from .. import constants, logger
  2. from . import base_classes, image, api
  3. class Texture(base_classes.BaseNode):
  4. """Class that wraps a texture node"""
  5. def __init__(self, node, parent):
  6. logger.debug("Texture().__init__(%s)", node)
  7. base_classes.BaseNode.__init__(self, node, parent, constants.TEXTURE)
  8. img_inst = self.scene.image(api.texture.file_name(self.node))
  9. if not img_inst:
  10. image_node = api.texture.image_node(self.node)
  11. img_inst = image.Image(image_node.name, self.scene)
  12. self.scene[constants.IMAGES].append(img_inst)
  13. self[constants.IMAGE] = img_inst[constants.UUID]
  14. self[constants.WRAP] = api.texture.wrap(self.node)
  15. if constants.WRAPPING.REPEAT in self[constants.WRAP]:
  16. self[constants.REPEAT] = api.texture.repeat(self.node)
  17. self[constants.ANISOTROPY] = api.texture.anisotropy(self.node)
  18. self[constants.MAG_FILTER] = api.texture.mag_filter(self.node)
  19. self[constants.MIN_FILTER] = api.texture.min_filter(self.node)
  20. self[constants.MAPPING] = api.texture.mapping(self.node)
  21. @property
  22. def image(self):
  23. """
  24. :return: the image object of the current texture
  25. :rtype: image.Image
  26. """
  27. return self.scene.image(self[constants.IMAGE])