OpenRCT2-ObjectCommon 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/PKG-INFO +1 -1
  2. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/blender/mesh_extract.py +9 -1
  3. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/pyproject.toml +1 -1
  4. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/.github/workflows/lint.yml +0 -0
  5. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/.github/workflows/publish.yml +0 -0
  6. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/.github/workflows/pytest.yml +0 -0
  7. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/.gitignore +0 -0
  8. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/.yamllint.yaml +0 -0
  9. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/LICENSE +0 -0
  10. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/README.md +0 -0
  11. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/__init__.py +0 -0
  12. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/blender/__init__.py +0 -0
  13. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/blender/lights.py +0 -0
  14. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/blender/modal.py +0 -0
  15. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/blender/props.py +0 -0
  16. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/cli.py +0 -0
  17. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/config.py +0 -0
  18. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/objectjson.py +0 -0
  19. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/parkobj.py +0 -0
  20. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/placement.py +0 -0
  21. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/py.typed +0 -0
  22. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/openrct2_object_common/testing.py +0 -0
  23. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/scripts/ci/set_version.py +0 -0
  24. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/conftest.py +0 -0
  25. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_blender.py +0 -0
  26. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_blender_shared.py +0 -0
  27. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_cli.py +0 -0
  28. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_config.py +0 -0
  29. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_objectjson.py +0 -0
  30. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_parkobj.py +0 -0
  31. {openrct2_objectcommon-0.1.2 → openrct2_objectcommon-0.1.3}/tests/test_placement.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenRCT2-ObjectCommon
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Shared config, CLI, .parkobj, and object.json scaffolding for OpenRCT2 object generators.
5
5
  Project-URL: Homepage, https://github.com/alex-parisi/OpenRCT2-ObjectCommon
6
6
  Project-URL: Repository, https://github.com/alex-parisi/OpenRCT2-ObjectCommon
@@ -140,7 +140,15 @@ def extract_mesh(obj, depsgraph, material_fn: MaterialFn) -> Mesh | None:
140
140
  loop_idx = lt.loops[k]
141
141
  co = linear @ me.vertices[vidx].co
142
142
  n = (normal_mat @ Vector(split_n[k])).normalized()
143
- uv = uv_layer.data[loop_idx].uv if uv_layer else (0.0, 0.0)
143
+ # Blender UVs use a bottom-left origin (V=0 at the bottom of the
144
+ # image); the renderer samples textures top-left (V=0 = row 0).
145
+ # Flip V so the render matches Blender's viewport. With no UV
146
+ # layer, fall back to (0, 0) (unflipped) since UVs are unused.
147
+ if uv_layer:
148
+ u, v = uv_layer.data[loop_idx].uv
149
+ uv = (u, 1.0 - v)
150
+ else:
151
+ uv = (0.0, 0.0)
144
152
  verts.append((co.x, co.y, co.z))
145
153
  norms.append((n.x, n.y, n.z))
146
154
  uvs.append((uv[0], uv[1]))
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "OpenRCT2-ObjectCommon"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  description = "Shared config, CLI, .parkobj, and object.json scaffolding for OpenRCT2 object generators."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"