View Issue Details

IDProjectCategoryView StatusLast Update
0005145DarkRadiantModelspublic08.04.2020 04:48
ReporterHMart Assigned To 
PrioritynormalSeveritynormalReproducibilityalways
Status feedbackResolutionopen 
Product Version2.7.0 
Summary0005145: DR and the engine behave differently when dealing with the angle spawnarg of a idDoor.
DescriptionWhen you change the angle spawnarg ( opening direction ) in DR the idDoor entity rotates, giving the impression that it will open in a totally different direction but then ingame it looks fine, that is very confusing to me.

Exemple you have a door in DR like so ___ you change the angle value, the door rotates and becomes like this | but ingame it looks like this ___ so it looks fine, why the different behavior?

Btw i'm using DR on fhdoom not TDM.
Steps To ReproduceMake a entity of class func_door, change the angle spawnarg
Additional InformationThis particular door rotation matrix, was not the identity matrix (default matrix) don't know if that is important or not.
TagsNo tags attached.

Activities

greebo

greebo

06.02.2020 19:50

administrator   ~0012179

May I ask you to copy that problematic door to an empty map and attach it here?
HMart

HMart

06.02.2020 20:10

reporter   ~0012180

Do I need to give you the model files or the mesh is saved in the map file? If is saved in the map file, then here is the map, if is not there I will send you the lwo file.
badDoor.map (4,284 bytes)   
Version 2
// entity 0
{
"classname" "worldspawn"
"editor_drLastCameraPos" "166.265 -93.9386 115.929"
"editor_drLastCameraAngle" "-26.1 160.2 0"
// primitive 0
{
brushDef3
{
( 0 0 1 -144 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0.75 ) ) "_default" 0 0 0
( 0 1 0 -160 ) ( ( 0.015625 0 63.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 -200 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 -1 0 -160 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 -168 ) ( ( 0.015625 0 0.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 136 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0.75 ) ) "_default" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( 0 0 1 -136 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0.75 ) ) "_default" 0 0 0
( 0 1 0 -168 ) ( ( 0.015625 0 63.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 -200 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 -168 ) ( ( 0.015625 0 0.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 -1 0 160 ) ( ( 0.015625 0 63.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( 0 0 1 -136 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0.75 ) ) "_default" 0 0 0
( 0 1 0 -160 ) ( ( 0.015625 0 63.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 -208 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 -1 0 -160 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 200 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( 0 1 0 -160 ) ( ( 0.015625 0 63.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 -200 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -16 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 -1 0 -160 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 -168 ) ( ( 0.015625 0 0.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 1 8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( 0 0 1 -136 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0.75 ) ) "_default" 0 0 0
( 1 0 0 -200 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 -1 0 -168 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 -168 ) ( ( 0.015625 0 0.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 1 0 160 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
// primitive 5
{
brushDef3
{
( 0 0 1 -136 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0.75 ) ) "_default" 0 0 0
( 0 1 0 -160 ) ( ( 0.015625 0 63.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 -1 0 -160 ) ( ( 0.015625 0 63.875 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 -176 ) ( ( 0.015625 0 0.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 168 ) ( ( 0.015625 0 0.5 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
// primitive 6
{
brushDef3
{
( 0 0 1 -80 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 1 0 -24 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 12 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 63.9375 ) ) "_default" 0 0 0
( 0 -1 0 0 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 -24 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
// primitive 7
{
brushDef3
{
( 0 0 1 -80 ) ( ( 0.015625 0 0 ) ( 0 0.015625 63 ) ) "_default" 0 0 0
( 0 1 0 -24 ) ( ( 0.015625 0 1 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 1 0 0 -56 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( 0 0 -1 -8 ) ( ( 0.015625 0 0 ) ( 0 0.015625 1.0625 ) ) "_default" 0 0 0
( 0 -1 0 0 ) ( ( 0.015625 0 63 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
( -1 0 0 44 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "_default" 0 0 0
}
}
}
// entity 1
{
"classname" "info_player_start"
"name" "info_player_start_1"
"origin" "16 -128 -8"
"angle" "90.000000"
}
// entity 2
{
"classname" "func_door"
"name" "func_static_1"
"origin" "16 8 -8"
"rotation" "0 -1 0 1 0 0 0 0 1"
"model" "models/door/kit/door_base.lwo"
"angle" "270"
}
badDoor.map (4,284 bytes)   
greebo

greebo

07.02.2020 06:01

administrator   ~0012182

Yes, the model would be nice to have too, please.
HMart

HMart

07.02.2020 17:42

reporter   ~0012183

Ok here is model, is just a test model for a new kit so there's no real texture yet for it.
door_base.lwo (12,414 bytes)
greebo

greebo

09.02.2020 08:32

administrator   ~0012185

Thanks!
greebo

greebo

08.04.2020 04:48

administrator   ~0012341

Looking into that, I think the confusion in DR comes from having set both "rotation" and "angle" at the same time. DarkRadiant will try to apply the orientation from both of those spawnargs, the order being undefined, so you end up with either the orientation from the "angle" or the "rotation", depending on whichever is evaluated last. I quickly browsed through the fhdoom sources but couldn't draw a conclusion yet since I don't have the entityDef declarations for func_door available. I suspect that the game engine is taking preference over one of those two values? Can you maybe test that to see what the game is doing when either or both of these spawnargs are set?

Issue History

Date Modified Username Field Change
06.02.2020 19:28 HMart New Issue
06.02.2020 19:50 greebo Status new => feedback
06.02.2020 19:50 greebo Note Added: 0012179
06.02.2020 20:10 HMart File Added: badDoor.map
06.02.2020 20:10 HMart Note Added: 0012180
06.02.2020 20:10 HMart Status feedback => new
07.02.2020 06:01 greebo Note Added: 0012182
07.02.2020 17:42 HMart File Added: door_base.lwo
07.02.2020 17:42 HMart Note Added: 0012183
09.02.2020 08:32 greebo Status new => acknowledged
09.02.2020 08:32 greebo Note Added: 0012185
08.04.2020 04:48 greebo Note Added: 0012341
08.04.2020 04:48 greebo Status acknowledged => feedback