Skip to content

Comments

New Placeables#286

Open
Aephyros wants to merge 3 commits intozunath:masterfrom
Aephyros:New-Placeables
Open

New Placeables#286
Aephyros wants to merge 3 commits intozunath:masterfrom
Aephyros:New-Placeables

Conversation

@Aephyros
Copy link
Contributor

@Aephyros Aephyros commented Dec 13, 2025

Overview:

241 new placeable models adapted from SWTOR
190 made by Aephyros as well as 51 by Dafena

Featuring:
9 sets of walls
12 new floor textures with 1x1 and 2x2 versions of most
1 road set
9 rugs
2 working streetlights
2 full buildings, including a customized starport
Various stacks of crates
New furniture including seats, tables, beds, and storage
Road and wall signs
A custom-made Veles fountain
All new workstations
And a whole bunch more

Full List of New Placeables:

https://docs.google.com/document/d/1n8Z0dgZC-vMJ3lznIi2QWsDYgELbVuHDkXrE1qGEY8E/edit?usp=sharing

Summary by CodeRabbit

  • New Features

    • Added many new SWTOR-themed environment assets (walls, doors, pillars, furniture, decor) and expanded the placeable inventory with numerous props and placement helpers.
    • Added matching materials and texture mappings for all new assets.
  • Chores

    • Integrated visual meshes, placement helpers, and collision/scene data so new assets render and place correctly in-world.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 13, 2025

Walkthrough

This PR adds a large set of SWTOR-related data assets: an expanded placeables.2da and 12 new ASWTOR model asset groups (ASWTOR_001…ASWTOR_012) including .mdl geometry, .mtr material descriptors, and .pwk physics/usage nodes. No executable code or control-flow changes.

Changes

Cohort / File(s) Summary
Placeables data
swlor2_2da/placeables.2da
Appended many new SWTOR-themed entries (doors, pillars, furniture, decor, props) to the 2DA table; purely data additions.
ASWTOR_001 assets
swlor2_core5/ASWTOR_001.mdl, .../ASWTOR_001.mtr, .../ASWTOR_001.pwk
Added model geometry (mesh, verts/normals/tverts, faces), material mapping (textures, renderhint), and a PWK trimesh + two dummy usage nodes.
ASWTOR_002 assets
swlor2_core5/ASWTOR_002.mdl, .../ASWTOR_002.mtr, .../ASWTOR_002.pwk
Added model geometry, material file (NormalAndSpecMapped + textures), and PWK with mesh and two dummy nodes.
ASWTOR_003 assets
swlor2_core5/ASWTOR_003.mdl, .../ASWTOR_003.mtr, .../ASWTOR_003.pwk
Added large model file (verts/tverts/normals/faces), material descriptor, and PWK mesh plus two dummy nodes.
ASWTOR_004 assets
swlor2_core5/ASWTOR_004.mtr, .../ASWTOR_004.pwk
Added material descriptor and PWK mesh (20 faces) with two usage dummy nodes.
ASWTOR_005 assets
swlor2_core5/ASWTOR_005.mtr, .../ASWTOR_005.pwk
Added material mapping and PWK mesh (8 verts, 10 faces) plus two placeholder dummy nodes.
ASWTOR_006 assets
swlor2_core5/ASWTOR_006.mdl, .../ASWTOR_006.mtr, .../ASWTOR_006.pwk
Added model geometry with extensive vertex/face lists, material file, and PWK mesh with two usage nodes.
ASWTOR_007 assets
swlor2_core5/ASWTOR_007.mtr, .../ASWTOR_007.pwk
Added material file and PWK mesh node (10 faces) with two dummy helpers.
ASWTOR_008 assets
swlor2_core5/ASWTOR_008.mdl, .../ASWTOR_008.mtr, .../ASWTOR_008.pwk
Added composite model (multiple trimeshes, large verts/faces), material descriptor, and PWK mesh with two dummy nodes.
ASWTOR_009 assets
swlor2_core5/ASWTOR_009.mdl, .../ASWTOR_009.mtr, .../ASWTOR_009.pwk
Added full model assets (dual meshes), material mapping, and PWK mesh + two usage nodes.
ASWTOR_010 assets
swlor2_core5/ASWTOR_010.mdl, .../ASWTOR_010.mtr, .../ASWTOR_010.pwk
Added model geometry (verts/faces), material file, and PWK mesh (8 verts, 10 faces) with two dummy nodes.
ASWTOR_011 assets
swlor2_core5/ASWTOR_011.mdl, .../ASWTOR_011.mtr, .../ASWTOR_011.pwk
Added character model file, material descriptor (texture0–texture5 entries), and PWK mesh plus two auxiliary nodes.
ASWTOR_012 assets
swlor2_core5/ASWTOR_012.mdl, .../ASWTOR_012.mtr, .../ASWTOR_012.pwk
Added composite model (hierarchical nodes, multiple trimeshes), material file, and PWK mesh with two dummy usage nodes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

  • Spot-check recommended areas:
    • Verify .mtr texture names match repository asset naming conventions.
    • Spot-check a few .mdl vertex/face blocks for index consistency/corruption.
    • Confirm .pwk physics nodes and dummy positions align with visual geometry.
    • Validate placeables.2da entries conform to existing 2DA schema.

Suggested reviewers

  • zunath

Poem

🐰 I dug through verts and stitched a seam,
New doors and walls to chase the dream.
Twelve tiny models, hopping in a row,
Textures tucked, ready for the show.
sniffs the data and twitches a whisker

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title 'New Placeables' directly aligns with the main objective of adding 214 new placeable models to the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
swlor2_core5/ASWTOR_006.mdl (1)

1966-2309: Critical: Remove duplicate content after model termination.

The model properly ends at line 1965 with donemodel ASWTOR_006, but lines 1966-2309 contain extraneous face data and duplicate termination markers (endnode, endmodelgeom, donemodel). This appears to be leftover data from the export process that should be removed.

This duplicate content may cause:

  • Model loading failures or parser errors
  • Increased file size without benefit
  • Confusion during debugging

Remove all content after line 1965:

 endnode
 endmodelgeom ASWTOR_006
 donemodel ASWTOR_006
-  107 106 103 0
-    354 353 356 1  105 104 108 0
-    355 356 353 1  106 108 104 0
-[... all remaining lines ...]
-donemodel ASWTOR_006
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e5b98a3 and 32efc19.

⛔ Files ignored due to path filters (163)
  • swlor2_core5/ASWTOR_001.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_001_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_001_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_001_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_002.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_002_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_002_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_002_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_003.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_003_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_003_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_003_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_004.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_004_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_004_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_004_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_005.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_005_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_005_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_005_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_006.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_006_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_006_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_006_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_007.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_007_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_007_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_008.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_008_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_008_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_008_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_009.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_009_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_009_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_009_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_010.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_010_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_010_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_010_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_011.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_011_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_011_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_012.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_012_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_012_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_013.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_013_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_013_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_013_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_014.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_014_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_014_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_014_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_015.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_015_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_015_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_016.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_016_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_016_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_016_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_017.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_017_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_017_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_018.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_018_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_018_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_018_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_019.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_019_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_019_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_019_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_020.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_020_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_020_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_021.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_021_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_021_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_022.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_022_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_022_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_022_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_023.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_023_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_023_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_023_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_024.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_024_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_024_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_024_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_025.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_025_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_025_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_026.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_026_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_026_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_026_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_027.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_027_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_027_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_027_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_028.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_028_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_028_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_028_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_029.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_029_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_029_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_029_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_030.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_030_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_030_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_030_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_031.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_031_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_031_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_031_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_032.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_032_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_032_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_032_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_033.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_033_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_033_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_034.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_034_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_034_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_035.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_035_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_035_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_036.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_036_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_036_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_037.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_037_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_037_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_037_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_038.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_038_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_038_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_038_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_039.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_039_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_039_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_039_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_040.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_040_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_040_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_041.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_041_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_042.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_042_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_042_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_042_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_043.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_043_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_043_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_043_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_044.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_044_I.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_044_N.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_044_S.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_045.dds is excluded by !**/*.dds
  • swlor2_core5/ASWTOR_045_I.dds is excluded by !**/*.dds
📒 Files selected for processing (34)
  • swlor2_2da/placeables.2da (1 hunks)
  • swlor2_core5/ASWTOR_001.mdl (1 hunks)
  • swlor2_core5/ASWTOR_001.mtr (1 hunks)
  • swlor2_core5/ASWTOR_001.pwk (1 hunks)
  • swlor2_core5/ASWTOR_002.mdl (1 hunks)
  • swlor2_core5/ASWTOR_002.mtr (1 hunks)
  • swlor2_core5/ASWTOR_002.pwk (1 hunks)
  • swlor2_core5/ASWTOR_003.mdl (1 hunks)
  • swlor2_core5/ASWTOR_003.mtr (1 hunks)
  • swlor2_core5/ASWTOR_003.pwk (1 hunks)
  • swlor2_core5/ASWTOR_004.mtr (1 hunks)
  • swlor2_core5/ASWTOR_004.pwk (1 hunks)
  • swlor2_core5/ASWTOR_005.mtr (1 hunks)
  • swlor2_core5/ASWTOR_005.pwk (1 hunks)
  • swlor2_core5/ASWTOR_006.mdl (1 hunks)
  • swlor2_core5/ASWTOR_006.mtr (1 hunks)
  • swlor2_core5/ASWTOR_006.pwk (1 hunks)
  • swlor2_core5/ASWTOR_007.mtr (1 hunks)
  • swlor2_core5/ASWTOR_007.pwk (1 hunks)
  • swlor2_core5/ASWTOR_008.mdl (1 hunks)
  • swlor2_core5/ASWTOR_008.mtr (1 hunks)
  • swlor2_core5/ASWTOR_008.pwk (1 hunks)
  • swlor2_core5/ASWTOR_009.mdl (1 hunks)
  • swlor2_core5/ASWTOR_009.mtr (1 hunks)
  • swlor2_core5/ASWTOR_009.pwk (1 hunks)
  • swlor2_core5/ASWTOR_010.mdl (1 hunks)
  • swlor2_core5/ASWTOR_010.mtr (1 hunks)
  • swlor2_core5/ASWTOR_010.pwk (1 hunks)
  • swlor2_core5/ASWTOR_011.mdl (1 hunks)
  • swlor2_core5/ASWTOR_011.mtr (1 hunks)
  • swlor2_core5/ASWTOR_011.pwk (1 hunks)
  • swlor2_core5/ASWTOR_012.mdl (1 hunks)
  • swlor2_core5/ASWTOR_012.mtr (1 hunks)
  • swlor2_core5/ASWTOR_012.pwk (1 hunks)
🔇 Additional comments (35)
swlor2_core5/ASWTOR_001.mtr (1)

1-11: LGTM! Material definition is consistent.

The material file follows the expected structure with appropriate render hints and texture mappings for diffuse, normal, specular, and illumination channels.

swlor2_core5/ASWTOR_007.mtr (1)

1-11: LGTM! Material definition is correct.

The material file is properly structured with appropriate texture mappings. The absence of an illumination map (texture5 = null) is consistent with models that don't require self-illumination.

swlor2_core5/ASWTOR_009.mtr (1)

1-11: LGTM! Material definition is consistent.

The material file is properly structured with appropriate texture mappings including an illumination channel for self-illuminated elements.

swlor2_core5/ASWTOR_003.mtr (1)

1-11: LGTM! Material definition is consistent.

The material file follows the expected structure with appropriate render hints and texture mappings for all required channels.

swlor2_core5/ASWTOR_007.pwk (1)

1-36: LGTM! PWK structure is correct.

The collision mesh is properly defined with appropriate geometry and usage nodes. Note: This file also omits the scale property like ASWTOR_008.pwk—please verify in the earlier comment on ASWTOR_008.pwk whether this is intentional.

swlor2_core5/ASWTOR_002.pwk (1)

1-39: LGTM! PWK structure is correct.

The collision mesh is properly defined with appropriate geometry, usage nodes, and a scale of 1.300. This is consistent with ASWTOR_001.pwk but differs from ASWTOR_007.pwk and ASWTOR_008.pwk which omit the scale property—please verify in the earlier comment on ASWTOR_008.pwk whether this variation is intentional.

swlor2_core5/ASWTOR_001.pwk (1)

1-39: Verify the .001 suffix in node names.

The parent node is named ASWTOR_001_pwk.001 and all child nodes also include a .001 suffix, which differs from the naming pattern in other PWK files in this PR (e.g., ASWTOR_002.pwk, ASWTOR_007.pwk, ASWTOR_008.pwk use names without suffixes like ASWTOR_002_pwk). Confirm whether this suffix is intentional or a copy-paste artifact.

swlor2_core5/ASWTOR_008.pwk (1)

1-56: Verify the omission of scale property.

The original review comment questions whether ASWTOR_008.pwk should include a scale property for consistency with ASWTOR_001.pwk and ASWTOR_002.pwk. However, verification cannot be completed without direct access to the repository files to confirm:

  • Whether ASWTOR_001.pwk and ASWTOR_002.pwk actually specify scale 1.300
  • The intended scale convention across the ASWTOR PWK file series
  • Whether the default scale (1.0) is intentional for this particular asset

Manual inspection of the referenced PWK files is required to resolve this concern.

swlor2_core5/ASWTOR_009.pwk (1)

1-56: PWK walkmesh asset looks correct.

The walkmesh definition follows standard NWN PWK format with a collision trimesh and two usage point dummies. The geometry defines appropriate collision bounds for what appears to be a wall segment placeable.

swlor2_core5/ASWTOR_003.pwk (1)

1-49: PWK walkmesh asset looks correct.

The walkmesh follows the established pattern with a scaled trimesh and two usage points. The .001 suffix in node names is typical of Blender export naming conventions and shouldn't affect functionality.

swlor2_core5/ASWTOR_002.mtr (1)

1-11: Material definition looks correct.

The material file follows standard NWN:EE MTR format with appropriate texture slot assignments for normal/specular mapped rendering. The referenced textures (ASWTOR_002, ASWTOR_002_N, ASWTOR_002_S, ASWTOR_002_I) should be included in the asset pack.

swlor2_core5/ASWTOR_004.pwk (1)

1-57: PWK walkmesh asset looks correct.

The walkmesh defines a larger collision mesh (coordinates indicate approximately 24 units wide) with symmetrically placed usage points. Structure is consistent with the other ASWTOR PWK assets.

swlor2_core5/ASWTOR_004.mtr (1)

1-11: Material definition looks correct.

Follows the same pattern as other ASWTOR material files with NormalAndSpecMapped renderhint and corresponding texture slot assignments.

swlor2_core5/ASWTOR_009.mdl (3)

1-6: Model header and metadata look correct.

The NeverBlender-generated header is valid. Note that filedependancy (line 2) uses the historical NWN spelling. The classification CHARACTER on line 5 is somewhat unusual for a wall placeable—typically placeables use TILE or EFFECT—but this may be intentional for specific engine behavior or animation scale requirements.

Please verify that the CHARACTER classification is intentional for this placeable asset, as wall segments typically use different classifications.


1441-1454: Second trimesh references ASWTOR_003 texture.

This mesh section (line 1446) uses bitmap ASWTOR_003. The corresponding material file should define the same texture mappings pattern seen in other ASWTOR MTR files.


31-44: Verify texture/material dependencies exist.

The first trimesh references bitmap ASWTOR_005 (line 36). Ensure that ASWTOR_005.mtr and corresponding texture files (ASWTOR_005, ASWTOR_005_N, ASWTOR_005_S, ASWTOR_005_I) are included in the asset pack.

swlor2_core5/ASWTOR_001.mdl (1)

1-48: Verify bitmap ASWTOR_013 + material/texture wiring for ASWTOR_001.

This model is named ASWTOR_001 but the mesh references bitmap ASWTOR_013 (Line 40). If your pipeline expects bitmap<bitmap>.tga/.dds (and optionally <bitmap>.mtr), make sure ASWTOR_013 is present and intentional; otherwise you’ll get missing/incorrect textures at runtime. Also confirm shadow 0 (Line 47) is desired for wall pieces.

swlor2_core5/ASWTOR_003.mdl (1)

1-48: Confirm bitmap ASWTOR_002 is intended + shipped.

ASWTOR_003’s trimesh references bitmap ASWTOR_002 (Line 40). If that’s deliberate texture reuse, fine—otherwise it’s an easy-to-miss export/config mismatch that will surface as wrong/missing textures.

swlor2_core5/ASWTOR_002.mdl (1)

35-690: UVs exceed 1.0—verify wrap/repeat behavior for ASWTOR_013.

This model’s tverts contain coordinates > 1.0 (e.g., around Line 487+), which implies intentional tiling. Please verify the target renderer/material setup actually repeats UVs for ASWTOR_013; otherwise you may see clamped/stretching artifacts.

swlor2_core5/ASWTOR_008.mtr (1)

1-10: Looks good, but verify this material is actually used by the mdl.

ASWTOR_008.mtr is coherent for a normal/spec setup. The open question is wiring: if materials are resolved by bitmap name, this won’t be picked up unless some mesh uses bitmap ASWTOR_008 (or your engine resolves .mtr by model name instead).

swlor2_core5/ASWTOR_008.mdl (1)

2455-2686: Verify file structure and end-of-file markers in ASWTOR_008.mdl

The review raises concerns about potential malformed structure—specifically geometry lines after donemodel and duplicate end markers. However, this requires direct access to the file to confirm:

  1. Verify that the section shown (lines 2455-2686) truly contains geometry/face data after the first donemodel ASWTOR_008 statement
  2. Confirm whether duplicate endnode/endmodelgeom/donemodel blocks exist at the end of the file
  3. If confirmed malformed, determine the correct structure (likely removing the trailing section as suggested)

Re-export the model using your toolchain (NeverBlender or equivalent) to establish the canonical format, then compare against this file's current structure.

swlor2_core5/ASWTOR_006.mtr (1)

1-11: Material definition follows standard .mtr conventions.

The texture mapping structure is consistent and follows expected PBR conventions with diffuse, normal, specular, and illumination maps properly defined across texture slots 0-2 and 5, with unused slots 3-4 set to null.

Verify that the referenced texture files (ASWTOR_006, ASWTOR_006_N, ASWTOR_006_S, ASWTOR_006_I) exist in the asset pipeline.

swlor2_core5/ASWTOR_005.mtr (1)

1-11: Material definition requires texture asset verification.

This file follows the established pattern for SWTOR material definitions with texture slot mappings for ASWTOR_005. However, verification of the referenced texture file existence is needed before approval.

Verify that the referenced texture files exist in the asset pipeline:

  • ASWTOR_005
  • ASWTOR_005_N
  • ASWTOR_005_S
  • ASWTOR_005_I
swlor2_core5/ASWTOR_010.mtr (1)

1-11: Verify material definition and texture asset references.

The ASWTOR_010.mtr file establishes texture mappings for the asset but requires confirmation that the referenced texture files (ASWTOR_010, ASWTOR_010_N, ASWTOR_010_S, ASWTOR_010_I) exist in the asset pipeline and that the material definition follows project conventions.

swlor2_2da/placeables.2da (1)

32014-32014: Verify the placement of entry 30110.

Entry 30110 "[SWLOR] Banner, Viscara" appears to be inserted between the new SWTOR entries (between 32109 and 32111). This breaks the sequential ordering of entries.

Please verify whether:

  1. This entry was intentionally moved to this location, or
  2. This is a merge artifact that should be placed elsewhere (near other 30XXX entries), or
  3. This is a duplicate entry

The sequential ordering of 2DA files typically helps with maintenance and preventing conflicts.

swlor2_core5/ASWTOR_010.pwk (1)

1-36: LGTM - PWK collision mesh structure is valid.

The collision mesh definition follows the expected format with proper node hierarchy, geometry data (8 vertices, 10 faces), and two usage dummy nodes. Structure aligns with other ASWTOR PWK assets in this PR.

swlor2_core5/ASWTOR_012.mtr (1)

1-11: LGTM - Material definition follows standard pattern.

The material descriptor correctly defines the NormalAndSpecMapped renderhint with appropriate texture bindings. Note that texture5 is set to null here, which differs from some other ASWTOR materials that use an _I (illumination) texture, but this variation is acceptable depending on the asset requirements.

swlor2_core5/ASWTOR_005.pwk (1)

1-39: LGTM - PWK collision mesh with scaled geometry.

The collision mesh is properly structured with consistent scale factor (1.300) applied to the trimesh and both dummy usage nodes. Geometry data and node hierarchy are valid.

swlor2_core5/ASWTOR_012.pwk (1)

1-56: LGTM - More complex PWK collision mesh structure.

This collision mesh defines more detailed geometry with 16 vertices and 22 faces, providing finer collision detection than simpler meshes. Structure is valid with proper node hierarchy and dummy usage nodes.

swlor2_core5/ASWTOR_011.mdl (1)

1-1474: LGTM - Well-formed 3D model geometry.

The model definition is properly structured with correct NeverBlender export format. Notable details:

  • Contains 726 vertices with full texture coordinate and face data
  • References ASWTOR_006 texture (line 36), creating a cross-dependency with another asset in this PR
  • Includes standard dummy nodes for game integration (ground, hand, head_hit, impact)
  • Properly terminated with endmodelgeom and donemodel markers
swlor2_core5/ASWTOR_011.mtr (1)

1-11: LGTM - Material definition is properly structured.

The material descriptor follows the standard ASWTOR pattern with NormalAndSpecMapped rendering and appropriate texture bindings for base, normal, and specular maps.

swlor2_core5/ASWTOR_010.mdl (1)

1-844: LGTM - Model geometry properly defined.

The model is correctly structured with 380 vertices and complete face/texture data. Like ASWTOR_011, this model also references the ASWTOR_006 texture (line 36), indicating these models share texture assets, which is an efficient approach for related placeables.

swlor2_core5/ASWTOR_006.mdl (1)

1-1965: Main model structure is valid.

The primary model definition (lines 1-1965) is properly structured with comprehensive geometry data including 760 vertices, 211 texture coordinates, and 944 faces. All node hierarchies and termination markers are correct in this section.

swlor2_core5/ASWTOR_006.pwk (1)

1-36: LGTM: Walkmesh structure is correct.

The PWK file is properly structured with:

  • A collision mesh (006_wg) with 8 vertices forming a bounding box
  • 10 triangular faces covering all sides
  • Two dummy nodes for object interaction/usage points positioned symmetrically at Y = ±1.6

The structure is consistent with other ASWTOR PWK files in this PR.

swlor2_core5/ASWTOR_011.pwk (1)

1-36: LGTM: Walkmesh structure is correct.

The PWK file follows the same correct structure as other ASWTOR PWK assets:

  • Collision mesh (011_wg) with 8 vertices forming a larger bounding box (16 units wide vs 8 units in ASWTOR_006)
  • 10 triangular faces
  • Two usage points at Y = ±1.6

Structure is consistent with the established pattern for these assets.

Spelled Tattooine correctly and removed errant asterix
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
swlor2_2da/placeables.2da (2)

31852-31854: Fix “Tatooine” spelling (currently “Tattooine” / “Tattpoine”).
These three display names are inconsistent and misspelled.

-31848    "[SWTOR] Door - Tattooine, Metal"
-31849    "[SWTOR] Pillar - Tattpoine (Half)"
-31850    "[SWTOR] Pillar - Tattooine (Full)"
+31848    "[SWTOR] Door - Tatooine, Metal"
+31849    "[SWTOR] Pillar - Tatooine (Half)"
+31850    "[SWTOR] Pillar - Tatooine (Full)"

31855-31855: Remove or fully define the placeholder **** row.
A blank display name + all **** fields is risky in a large 2DA and can lead to parsing/lookup surprises—best to delete it or populate it intentionally.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 32efc19 and 0c1c0b3.

📒 Files selected for processing (1)
  • swlor2_2da/placeables.2da (1 hunks)
🔇 Additional comments (2)
swlor2_2da/placeables.2da (2)

32014-32014: Row id 30110 looks out-of-sequence (likely typo) and may collide.
This entry appears between 32109 and 32111, so 30110 is very likely unintended.

-30110    "[SWLOR] Banner, Viscara"
+32110    "[SWLOR] Banner, Viscara"

Please confirm there isn't already a 32110 (or 30110) elsewhere before applying.


31852-32164: [rewritten comment]
[classification_tag]

-27 Additional Models
-Fix of incorrect texture [ASWTOR_147]
-Addition of two missing MDLS [ASWTOR_148/151]
-All models compiled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant