View Issue Details

IDProjectCategoryView StatusLast Update
0004899The Dark ModScript/Defpublic09.03.2020 11:21
ReporterVanishedOne Assigned Tostgatilov  
PrioritynormalSeveritynormalReproducibilityalways
Status resolvedResolutionfixed 
Product VersionTDM 2.06 
Target VersionTDM 2.08Fixed in VersionTDM 2.08 
Summary0004899: Vine patches don't grow on LOD entity classes
DescriptionVine 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.
TagsNo tags attached.

Relationships

related to 0005000 new Vine arrows will not attach to models/darkmod/architecture/modules/stone_industrial01/ext_stone03_wall01_grate_empty.lwo 
related to 0005009 closedstgatilov Vine patches spawning in mid-air 

Activities

VanishedOne

VanishedOne

30.08.2019 22:24

developer   ~0011830

Last edited: 30.08.2019 22:30

View 2 revisions

Changing

else if ( ( struckEnt == $world ) || (struckEnt.getKey("classname") == "func_static" ) )

to

else if ( ( struckEnt == $world ) || struckEnt.isType("idStaticEntity") )

seems to work.

stgatilov

stgatilov

30.12.2019 17:34

administrator   ~0011989

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.
VanishedOne

VanishedOne

30.12.2019 20:31

developer   ~0011991

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"
}
vinetest.map (6,696 bytes)   
stgatilov

stgatilov

31.12.2019 07:44

administrator   ~0011995

Thanks!

Another issue I see is that the first vine is spawned at (0, 0, 0), regardless of where you hit.
stgatilov

stgatilov

31.12.2019 08:43

administrator   ~0011996

Fixed problem with vine showing at (0, 0, 0) in rev 15762.
stgatilov

stgatilov

31.12.2019 08:58

administrator   ~0011997

Applied the suggested change in rev 15763.
Now vines work for the wall on the left of test map.

Issue History

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 View Revisions
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