View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004899 | The Dark Mod | Script/Def | public | 10.11.2018 20:19 | 09.03.2020 11:21 |
Reporter | VanishedOne | Assigned To | stgatilov | ||
Priority | normal | Severity | normal | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | TDM 2.06 | ||||
Target Version | TDM 2.08 | Fixed in Version | TDM 2.08 | ||
Summary | 0004899: Vine patches don't grow on LOD entity classes | ||||
Description | Vine arrow patches grow on worldspawn and func_statics. tdm_weapon_vinearrow_result.script (at line 167) explicitly tests for the func_static classname, rather than the idStaticEntity spawnclass. This means entity classes that *inherit* from func_static fail the test and vines won't grow on them. This becomes noticeable with modular LOD architecture classes, e.g. a mapper might add a func_static using the models/darkmod/architecture/modules/exteriors/ext_stone02_plain/ext_stone02_window02.lwo model and later try to improve performance by replacing it with an atdm:ext_stone02_window02 entity. This will cause vines to stop attaching, even though the entities look identical and both include vine_friendly surfaces. | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
Changing else if ( ( struckEnt == $world ) || (struckEnt.getKey("classname") == "func_static" ) ) to else if ( ( struckEnt == $world ) || struckEnt.isType("idStaticEntity") ) seems to work. |
|
I'm a bit worried that your suggestion expands the set of vine-attachible things too much. However, when I look into C++ code in idThread::Event_CanPlant I see: if ( ( struckEnt == gameLocal.world ) || struckEnt->IsType( idStaticEntity::Type ) ) { // Either we hit a world brush, or a func_static. We can grow on both types. Which is exactly your type of fix. So I guess I should merge it. Another things I'm quite worried is that I don't have much stuff to test =( Recall that current programmers are not mappers (sadly). Yet. |
|
Attaching my test map. Ahead is a func_static; left is a atdm:ext_stone02_window02 (the models to the right are for 0005000). vinetest.map (6,696 bytes)
Version 2 // entity 0 { "classname" "worldspawn" "editor_drMapPos1" "1738.55 1171.14 -520.531" "editor_drMapAngle1" "14.7001 87.8977 0" "editor_drMapPos2" "414.798 255.441 -264.933" "editor_drMapAngle2" "2.10002 84.5976 0" "editor_drMapPos3" "-749.97 -1606.21 -470.066" "editor_drMapAngle3" "-3.29998 6.59757 0" "editor_drMapPos4" "1014.05 -953.679 -556.857" "editor_drMapAngle4" "-10.2 355.498 0" "editor_drMapPos5" "987.599 3513.79 -319.877" "editor_drMapAngle5" "-61.1999 172.198 0" "editor_drMapPos6" "-1032.5 -2840 739.5" "editor_drMapAngle6" "-77.0999 175.798 0" "editor_drMapPos7" "952.822 285.005 1366.04" "editor_drMapAngle7" "-74.8 149.373 0" "editor_drMapPos8" "976 424 320" "editor_drMapAngle8" "-3 15.3467 0" "editor_drMapPos9" "409.146 547.464 392.83" "editor_drMapAngle9" "-16.8 284.947 0" "editor_drLastCameraPos" "-19.5674 -8.33709 50.5697" "editor_drLastCameraAngle" "-46.2 177.3 0" // primitive 0 { brushDef3 { ( 0 0 1 -112 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 1 0 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 -1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( -1 0 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 -1 96 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 } } // primitive 1 { brushDef3 { ( 0 0 1 -96 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 1 0 -144 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 1 0 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 -1 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( -1 0 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 -1 0 128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 } } // primitive 2 { brushDef3 { ( 0 0 1 -96 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 1 0 0 -80 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 -1 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 -1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( -1 0 0 64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 } } // primitive 3 { brushDef3 { ( 0 1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 1 0 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 -1 -80 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 -1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( -1 0 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 1 64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 } } // primitive 4 { brushDef3 { ( 0 0 1 -96 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 1 0 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 -1 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 -1 0 -144 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( -1 0 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 1 0 128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 } } // primitive 5 { brushDef3 { ( 0 0 1 -96 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 0 -1 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 0 -1 0 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( -1 0 0 -144 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 ( 1 0 0 128 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/wood/boards/pine_smooth" 0 0 0 } } } // entity 1 { "classname" "info_player_start" "name" "info_player_start_1" "angle" "0.000000" "origin" "-16 0 -64" } // entity 2 { "classname" "atdm:playertools_spyglass" "name" "atdm_playertools_spyglass_1" "inv_map_start" "1" "origin" "-32 80 -16" "rotation" "1 0 0 0 1 0 0 0 1" } // entity 3 { "classname" "atdm:playertools_lantern" "name" "atdm_playertools_lantern_1" "inv_map_start" "1" "origin" "-32 72 -16" "rotation" "1 0 0 0 1 0 0 0 1" } // entity 4 { "classname" "func_static" "name" "func_static_1" "model" "models/darkmod/architecture/modules/exteriors/ext_stone02_plain/ext_stone02_wall01.lwo" "origin" "8 0 -54" "rotation" "0 -1 0 1 0 0 0 0 1" } // entity 5 { "classname" "atdm:ammo_vinearrow" "name" "atdm_ammo_vinearrow_1" "inv_ammo_amount" "10" "inv_map_start" "1" "origin" "-43 57 12" "rotation" "1 0 0 0 1 0 0 0 1" } // entity 6 { "classname" "atdm:ambient_world" "name" "ambient_world" "_color" "0.4 0.4 0.4" "light_center" "0 0 0" "light_radius" "320 320 320" "origin" "-32 0 32" } // entity 7 { "classname" "func_static" "name" "func_static_2" "model" "models/darkmod/architecture/modules/stone_industrial01/ext_stone03_wall01_grate.lwo" "origin" "32 -72 -54" "rotation" "-1 0 0 0 -1 0 0 0 1" } // entity 8 { "classname" "func_static" "name" "func_static_3" "model" "models/darkmod/architecture/modules/stone_industrial01/ext_stone03_wall01_grate_empty.lwo" "origin" "-104 -72 -54" "rotation" "-1 0 0 0 -1 0 0 0 1" } // entity 9 { "classname" "atdm:ext_stone02_window02" "name" "atdm_ext_stone02_window02_1" "origin" "-52 70 -54" "rotation" "1 0 0 0 1 0 0 0 1" } |
|
Thanks! Another issue I see is that the first vine is spawned at (0, 0, 0), regardless of where you hit. |
|
Fixed problem with vine showing at (0, 0, 0) in rev 15762. | |
Applied the suggested change in rev 15763. Now vines work for the wall on the left of test map. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
10.11.2018 20:19 | VanishedOne | New Issue | |
30.08.2019 22:24 | VanishedOne | Note Added: 0011830 | |
30.08.2019 22:30 | VanishedOne | Note Edited: 0011830 | |
30.12.2019 17:34 | stgatilov | Note Added: 0011989 | |
30.12.2019 20:31 | VanishedOne | File Added: vinetest.map | |
30.12.2019 20:31 | VanishedOne | Note Added: 0011991 | |
31.12.2019 07:44 | stgatilov | Note Added: 0011995 | |
31.12.2019 08:43 | stgatilov | Note Added: 0011996 | |
31.12.2019 08:43 | stgatilov | Assigned To | => stgatilov |
31.12.2019 08:43 | stgatilov | Status | new => assigned |
31.12.2019 08:58 | stgatilov | Note Added: 0011997 | |
31.12.2019 08:58 | stgatilov | Status | assigned => resolved |
31.12.2019 08:58 | stgatilov | Resolution | open => fixed |
31.12.2019 08:58 | stgatilov | Fixed in Version | => TDM 2.08 |
31.12.2019 08:58 | stgatilov | Relationship added | related to 0005000 |
31.12.2019 19:19 | stgatilov | Relationship added | related to 0005009 |
09.03.2020 11:21 | stgatilov | Target Version | => TDM 2.08 |