Added helper entityDefs for TrenchBroom

This commit is contained in:
Robert Beckebans 2023-10-26 01:52:03 +02:00
parent 958bd1a1cf
commit 87e2004634
11 changed files with 2668 additions and 61 deletions

View file

@ -1,4 +1,4 @@
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.0
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.1
@PointClass base(cin_base) model({ "path": "_tb/models/md5/cinematics/admin/overhearcaseontable.obj" }) = admin_bfgcase : "No description"
[
@ -5804,6 +5804,17 @@ trigger will toggle the activator on and off. Activator will disable itself whe
snd_opened(string) : "looping sound for it's opened state."
]
@PointClass base(func_bobbing) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_bobbing_model : "Inherits from a func_bobbing but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) size(-16 -16 0, 16 16 32) model({ "path": "_tb/model to use.obj" }) = func_camera_anim : "Camera controlled by animation.
"
[
@ -5837,7 +5848,7 @@ trigger will toggle the activator on and off. Activator will disable itself whe
spawnfunc(string) : "" : "func_clipmodel"
]
@PointClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
@SolidClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
When damaged, shader parm 3 is set to the current time, and shader parm 7 is set
to either a random number from 1 to 'numstates', or to the value in 'forcestate' if
it is non-zero. If you want an invisible texture, use common/collision. Make sure
@ -5937,6 +5948,15 @@ Repeat floor1_ height and door info with floor2_ etc.. for as many floors as you
statusgui(string) : "entity name to update floor info, can use statusgui2..3..4..etc. for multiple updates. if appended with _num it will target an optional specific gui number on the entity this is handy for models with multiple guis."
]
@PointClass base(func_elevator) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_elevator_model : "Inherits from a func_elevator but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
]
@PointClass base(func_static) color(0 127 204) size(-12 -12 -12, 12 12 12) model({ "path": "sprites/bonfire.png", "scale": 0.03125 }) = func_emitter : "Inherits from a func_static but is fixed size and shows a rotation arrow.
Use it to orient particle models
Trigger it to fade it in and/or out
@ -6064,7 +6084,18 @@ Trigger it to fade it in and/or out
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
@PointClass base(func_mover) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_mover_model : "Inherits from a func_mover but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@SolidClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
Pendulum frequency is a physical constant based on the length of the beam and gravity.
"
[
@ -12665,7 +12696,10 @@ PDA's contain vidoes, audio, e-mail, and security clearances.
snd_acquire(string) : "" : "videocd_pickup"
]
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({ "path": "sprites/light-bulb.png", "scale": 0.03125 }) = light : "Light source. If health is set, light becomes breakable and turns off when shot.
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({{
proxymodel -> { "path": proxymodel },
{ "path": "sprites/light-bulb.png", "scale": 0.03125 }
}})= light : "Light source. If health is set, light becomes breakable and turns off when shot.
"
[
style(Choices) : "Appearance" : 0 =
@ -18097,7 +18131,7 @@ Use it to place all kinds of models
damageWhenActive(string) : "" : "1"
]
@SolidClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
@PointClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
The visual model set with the 'model' key can also be used for
collision detection. However the model may not be too complex.
max vertices = 32
@ -18138,7 +18172,7 @@ model for collision detection. Such a collision model is specified with the
broken(string) : "Visual model to be used when the health drops down to or below zero."
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
has special handling to make it appear more round.
"
[
@ -18149,7 +18183,7 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "barrel_impact"
]
@SolidClass base(moveable_base) = moveable_base_boulder : "No description"
@PointClass base(moveable_base) = moveable_base_boulder : "No description"
[
density(string) : "" : "0.05"
friction(string) : "" : "0.2"
@ -18165,14 +18199,14 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "stone_impact"
]
@SolidClass base(moveable_base) = moveable_base_domino : "No description"
@PointClass base(moveable_base) = moveable_base_domino : "No description"
[
density(string) : "" : "0.005"
friction(string) : "" : "0.6"
bouncyness(string) : "" : "0.2"
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
[
]
@ -18862,7 +18896,7 @@ Only add model, model_detonate or model_burn or health to override defaults
damageWhenActive(string) : "" : "1"
]
@PointClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
@SolidClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
[
density(string) : "" : "0.001"
friction(string) : "" : "0.2"

View file

@ -1,4 +1,4 @@
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.0
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.1
@PointClass base(cin_base) model({ "path": "_tb/models/md5/cinematics/admin/overhearcaseontable.obj" }) = admin_bfgcase : "No description"
[
@ -5804,6 +5804,17 @@ trigger will toggle the activator on and off. Activator will disable itself whe
snd_opened(string) : "looping sound for it's opened state."
]
@PointClass base(func_bobbing) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_bobbing_model : "Inherits from a func_bobbing but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) size(-16 -16 0, 16 16 32) model({ "path": "_tb/model to use.obj" }) = func_camera_anim : "Camera controlled by animation.
"
[
@ -5837,7 +5848,7 @@ trigger will toggle the activator on and off. Activator will disable itself whe
spawnfunc(string) : "" : "func_clipmodel"
]
@PointClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
@SolidClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
When damaged, shader parm 3 is set to the current time, and shader parm 7 is set
to either a random number from 1 to 'numstates', or to the value in 'forcestate' if
it is non-zero. If you want an invisible texture, use common/collision. Make sure
@ -5937,6 +5948,15 @@ Repeat floor1_ height and door info with floor2_ etc.. for as many floors as you
statusgui(string) : "entity name to update floor info, can use statusgui2..3..4..etc. for multiple updates. if appended with _num it will target an optional specific gui number on the entity this is handy for models with multiple guis."
]
@PointClass base(func_elevator) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_elevator_model : "Inherits from a func_elevator but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
]
@PointClass base(func_static) color(0 127 204) size(-12 -12 -12, 12 12 12) model({ "path": "sprites/bonfire.png", "scale": 0.03125 }) = func_emitter : "Inherits from a func_static but is fixed size and shows a rotation arrow.
Use it to orient particle models
Trigger it to fade it in and/or out
@ -6064,7 +6084,18 @@ Trigger it to fade it in and/or out
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
@PointClass base(func_mover) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_mover_model : "Inherits from a func_mover but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@SolidClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
Pendulum frequency is a physical constant based on the length of the beam and gravity.
"
[
@ -7181,7 +7212,10 @@ PDA's contain vidoes, audio, e-mail, and security clearances.
snd_acquire(string) : "" : "videocd_pickup"
]
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({ "path": "sprites/light-bulb.png", "scale": 0.03125 }) = light : "Light source. If health is set, light becomes breakable and turns off when shot.
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({{
proxymodel -> { "path": proxymodel },
{ "path": "sprites/light-bulb.png", "scale": 0.03125 }
}})= light : "Light source. If health is set, light becomes breakable and turns off when shot.
"
[
style(Choices) : "Appearance" : 0 =
@ -12613,7 +12647,7 @@ Use it to place all kinds of models
damageWhenActive(string) : "" : "1"
]
@SolidClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
@PointClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
The visual model set with the 'model' key can also be used for
collision detection. However the model may not be too complex.
max vertices = 32
@ -12654,7 +12688,7 @@ model for collision detection. Such a collision model is specified with the
broken(string) : "Visual model to be used when the health drops down to or below zero."
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
has special handling to make it appear more round.
"
[
@ -12665,7 +12699,7 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "barrel_impact"
]
@SolidClass base(moveable_base) = moveable_base_boulder : "No description"
@PointClass base(moveable_base) = moveable_base_boulder : "No description"
[
density(string) : "" : "0.05"
friction(string) : "" : "0.2"
@ -12681,14 +12715,14 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "stone_impact"
]
@SolidClass base(moveable_base) = moveable_base_domino : "No description"
@PointClass base(moveable_base) = moveable_base_domino : "No description"
[
density(string) : "" : "0.005"
friction(string) : "" : "0.6"
bouncyness(string) : "" : "0.2"
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
[
]
@ -13378,7 +13412,7 @@ Only add model, model_detonate or model_burn or health to override defaults
damageWhenActive(string) : "" : "1"
]
@PointClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
@SolidClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
[
density(string) : "" : "0.001"
friction(string) : "" : "0.2"

View file

@ -1,4 +1,4 @@
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.0
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.1
@PointClass base(ammo_belt_small) = ammo_belt_small_mp : "No description"
[

View file

@ -1,4 +1,4 @@
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.0
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.1
@PointClass color(127 76 0) size(-24 -24 0, 24 24 82) model({ "path": "sprites/ai.png", "scale": 0.03125 }) = ai_attackcone : "
"
@ -2396,6 +2396,17 @@ trigger will toggle the activator on and off. Activator will disable itself whe
snd_opened(string) : "looping sound for it's opened state."
]
@PointClass base(func_bobbing) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_bobbing_model : "Inherits from a func_bobbing but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) size(-16 -16 0, 16 16 32) model({ "path": "_tb/model to use.obj" }) = func_camera_anim : "Camera controlled by animation.
"
[
@ -2429,7 +2440,7 @@ trigger will toggle the activator on and off. Activator will disable itself whe
spawnfunc(string) : "" : "func_clipmodel"
]
@PointClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
@SolidClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
When damaged, shader parm 3 is set to the current time, and shader parm 7 is set
to either a random number from 1 to 'numstates', or to the value in 'forcestate' if
it is non-zero. If you want an invisible texture, use common/collision. Make sure
@ -2529,6 +2540,15 @@ Repeat floor1_ height and door info with floor2_ etc.. for as many floors as you
statusgui(string) : "entity name to update floor info, can use statusgui2..3..4..etc. for multiple updates. if appended with _num it will target an optional specific gui number on the entity this is handy for models with multiple guis."
]
@PointClass base(func_elevator) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_elevator_model : "Inherits from a func_elevator but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
]
@PointClass base(func_static) color(0 127 204) size(-12 -12 -12, 12 12 12) model({ "path": "sprites/bonfire.png", "scale": 0.03125 }) = func_emitter : "Inherits from a func_static but is fixed size and shows a rotation arrow.
Use it to orient particle models
Trigger it to fade it in and/or out
@ -2656,7 +2676,18 @@ Trigger it to fade it in and/or out
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
@PointClass base(func_mover) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_mover_model : "Inherits from a func_mover but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@SolidClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
Pendulum frequency is a physical constant based on the length of the beam and gravity.
"
[
@ -8828,7 +8859,10 @@ PDA's contain vidoes, audio, e-mail, and security clearances.
snd_acquire(string) : "" : "videocd_pickup"
]
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({ "path": "sprites/light-bulb.png", "scale": 0.03125 }) = light : "Light source. If health is set, light becomes breakable and turns off when shot.
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({{
proxymodel -> { "path": proxymodel },
{ "path": "sprites/light-bulb.png", "scale": 0.03125 }
}})= light : "Light source. If health is set, light becomes breakable and turns off when shot.
"
[
style(Choices) : "Appearance" : 0 =
@ -12231,7 +12265,7 @@ Use it to place all kinds of models
damageWhenActive(string) : "" : "1"
]
@SolidClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
@PointClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
The visual model set with the 'model' key can also be used for
collision detection. However the model may not be too complex.
max vertices = 32
@ -12272,7 +12306,7 @@ model for collision detection. Such a collision model is specified with the
broken(string) : "Visual model to be used when the health drops down to or below zero."
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
has special handling to make it appear more round.
"
[
@ -12283,7 +12317,7 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "barrel_impact"
]
@SolidClass base(moveable_base) = moveable_base_boulder : "No description"
@PointClass base(moveable_base) = moveable_base_boulder : "No description"
[
density(string) : "" : "0.05"
friction(string) : "" : "0.2"
@ -12299,14 +12333,14 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "stone_impact"
]
@SolidClass base(moveable_base) = moveable_base_domino : "No description"
@PointClass base(moveable_base) = moveable_base_domino : "No description"
[
density(string) : "" : "0.005"
friction(string) : "" : "0.6"
bouncyness(string) : "" : "0.2"
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
[
]
@ -12996,7 +13030,7 @@ Only add model, model_detonate or model_burn or health to override defaults
damageWhenActive(string) : "" : "1"
]
@PointClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
@SolidClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
[
density(string) : "" : "0.001"
friction(string) : "" : "0.2"

View file

@ -1,4 +1,4 @@
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.0
// DOOM 3 BFG game definition file (.fgd) generated by RBDOOM 3 BFG 1.5.1
@PointClass color(127 76 0) size(-24 -24 0, 24 24 82) model({ "path": "sprites/ai.png", "scale": 0.03125 }) = ai_attackcone : "
"
@ -2396,6 +2396,17 @@ trigger will toggle the activator on and off. Activator will disable itself whe
snd_opened(string) : "looping sound for it's opened state."
]
@PointClass base(func_bobbing) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_bobbing_model : "Inherits from a func_bobbing but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) size(-16 -16 0, 16 16 32) model({ "path": "_tb/model to use.obj" }) = func_camera_anim : "Camera controlled by animation.
"
[
@ -2429,7 +2440,7 @@ trigger will toggle the activator on and off. Activator will disable itself whe
spawnfunc(string) : "" : "func_clipmodel"
]
@PointClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
@SolidClass color(0 127 204) = func_damagable : "Breakable object. Fires targets and changes shader parms and model when damaged.
When damaged, shader parm 3 is set to the current time, and shader parm 7 is set
to either a random number from 1 to 'numstates', or to the value in 'forcestate' if
it is non-zero. If you want an invisible texture, use common/collision. Make sure
@ -2529,6 +2540,15 @@ Repeat floor1_ height and door info with floor2_ etc.. for as many floors as you
statusgui(string) : "entity name to update floor info, can use statusgui2..3..4..etc. for multiple updates. if appended with _num it will target an optional specific gui number on the entity this is handy for models with multiple guis."
]
@PointClass base(func_elevator) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_elevator_model : "Inherits from a func_elevator but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
]
@PointClass base(func_static) color(0 127 204) size(-12 -12 -12, 12 12 12) model({ "path": "sprites/bonfire.png", "scale": 0.03125 }) = func_emitter : "Inherits from a func_static but is fixed size and shows a rotation arrow.
Use it to orient particle models
Trigger it to fade it in and/or out
@ -2656,7 +2676,18 @@ Trigger it to fade it in and/or out
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@PointClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
@PointClass base(func_mover) size(-8 -8 0, 8 8 16) model({{
proxymodel -> { "path": proxymodel },
{ "path": model }
}})= func_mover_model : "Inherits from a func_mover but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom.
Use it to place all kinds of models
"
[
model(string) : "Model Selection (ex mapobjects/model.obj)"
proxymodel(string) : "A proxy model in OBJ file format automatically set by RBDoom so it can be displayed in TrenchBroom"
]
@SolidClass color(0 127 204) = func_pendulum : "Pendulums always swing north / south on unrotated models. Add an angles field to the model to allow rotation in other directions.
Pendulum frequency is a physical constant based on the length of the beam and gravity.
"
[
@ -3344,7 +3375,10 @@ PDA's contain vidoes, audio, e-mail, and security clearances.
snd_acquire(string) : "" : "videocd_pickup"
]
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({ "path": "sprites/light-bulb.png", "scale": 0.03125 }) = light : "Light source. If health is set, light becomes breakable and turns off when shot.
@PointClass color(0 255 0) size(-8 -8 -8, 8 8 8) model({{
proxymodel -> { "path": proxymodel },
{ "path": "sprites/light-bulb.png", "scale": 0.03125 }
}})= light : "Light source. If health is set, light becomes breakable and turns off when shot.
"
[
style(Choices) : "Appearance" : 0 =
@ -6747,7 +6781,7 @@ Use it to place all kinds of models
damageWhenActive(string) : "" : "1"
]
@SolidClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
@PointClass color(0 127 204) = moveable_base : "Moveable object. Will drop to the floor and rest untill activated.
The visual model set with the 'model' key can also be used for
collision detection. However the model may not be too complex.
max vertices = 32
@ -6788,7 +6822,7 @@ model for collision detection. Such a collision model is specified with the
broken(string) : "Visual model to be used when the health drops down to or below zero."
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_barrel : "Moveable barrel. Works just like a moveable_base. However the barrel
has special handling to make it appear more round.
"
[
@ -6799,7 +6833,7 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "barrel_impact"
]
@SolidClass base(moveable_base) = moveable_base_boulder : "No description"
@PointClass base(moveable_base) = moveable_base_boulder : "No description"
[
density(string) : "" : "0.05"
friction(string) : "" : "0.2"
@ -6815,14 +6849,14 @@ has special handling to make it appear more round.
snd_bounce(string) : "" : "stone_impact"
]
@SolidClass base(moveable_base) = moveable_base_domino : "No description"
@PointClass base(moveable_base) = moveable_base_domino : "No description"
[
density(string) : "" : "0.005"
friction(string) : "" : "0.6"
bouncyness(string) : "" : "0.2"
]
@SolidClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
@PointClass base(moveable_base) color(255 127 0) size(-8 -8 -8, 8 8 8) = moveable_base_fixed : "No description"
[
]
@ -7512,7 +7546,7 @@ Only add model, model_detonate or model_burn or health to override defaults
damageWhenActive(string) : "" : "1"
]
@PointClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
@SolidClass base(moveable_base_brick) = moveable_guardian_brick : "No description"
[
density(string) : "" : "0.001"
friction(string) : "" : "0.2"

View file

@ -10,6 +10,15 @@ entityDef misc_model
"editor_usage1" "Use it to place all kinds of models"
}
entityDef func_bobbing_model
{
"inherit" "func_bobbing"
"editor_mins" "-8 -8 0"
"editor_maxs" "8 8 16"
"editor_usage" "Inherits from a func_bobbing but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom."
"editor_usage1" "Use it to place all kinds of models"
}
entityDef func_door_model
{
"inherit" "func_door"
@ -19,6 +28,24 @@ entityDef func_door_model
"editor_usage1" "Use it to place all kinds of models"
}
entityDef func_elevator_model
{
"inherit" "func_elevator"
"editor_mins" "-8 -8 0"
"editor_maxs" "8 8 16"
"editor_usage" "Inherits from a func_elevator but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom."
"editor_usage1" "Use it to place all kinds of models"
}
entityDef func_mover_model
{
"inherit" "func_mover"
"editor_mins" "-8 -8 0"
"editor_maxs" "8 8 16"
"editor_usage" "Inherits from a func_mover but uses a model and is a FGD PointClass so it displays correctly in TrenchBroom."
"editor_usage1" "Use it to place all kinds of models"
}
entityDef func_rotating_model
{
"inherit" "func_rotating"

File diff suppressed because it is too large Load diff

View file

@ -739,6 +739,65 @@ CONSOLE_COMMAND( convertMapToValve220, "Convert .map file to the Valve 220 map f
common->SetRefreshOnPrint( false );
}
CONSOLE_COMMAND( checkMapsForBrushEntities, "List all brush entities in all .map files", idCmdSystem::ArgCompletion_MapNameNoJson )
{
//int totalImagesCount = 0;
idFileList* files = fileSystem->ListFilesTree( "maps/game", ".map", true, true );
idDict classTypeOverview;
for( int f = 0; f < files->GetList().Num(); f++ )
{
idStr mapName = files->GetList()[ f ];
idMapFile map;
if( map.Parse( mapName, true, false ) )
{
map.ClassifyEntitiesForTrenchBroom( classTypeOverview );
}
}
fileSystem->FreeFileList( files );
int n = classTypeOverview.GetNumKeyVals();
idLib::Printf( "BrushClasses:\n" );
for( int i = 0; i < n; i++ )
{
const idKeyValue* kv = classTypeOverview.GetKeyVal( i );
if( kv->GetValue() == "BrushClass" )
{
idLib::Printf( "'%s'\n", kv->GetKey().c_str() );
}
}
/*
idLib::Printf( "\nPointClasses:\n" );
for( int i = 0; i < n; i++ )
{
const idKeyValue* kv = classTypeOverview.GetKeyVal( i );
if( kv->GetValue() == "PointClass" )
{
idLib::Printf( "'%s'\n", kv->GetKey().c_str() );
}
}
*/
idLib::Printf( "\nMixedClasses:\n" );
for( int i = 0; i < n; i++ )
{
const idKeyValue* kv = classTypeOverview.GetKeyVal( i );
if( kv->GetValue() == "Mixed" )
{
idLib::Printf( "'%s'\n", kv->GetKey().c_str() );
}
}
}
CONSOLE_COMMAND( convertMapQuakeToDoom, "Convert Quake .map in Valve 220 map format for Doom 3 BFG", idCmdSystem::ArgCompletion_MapNameNoJson )
{

View file

@ -2225,21 +2225,31 @@ void idDeclManagerLocal::ExportEntityDefsToTrenchBroom_f( const idCmdArgs& args
idStrList solidClassNames;
solidClassNames.AddUnique( "worldspawn" );
solidClassNames.AddUnique( "func_aas_obstacle" );
solidClassNames.AddUnique( "func_aas_portal" );
solidClassNames.AddUnique( "func_clipmodel" );
solidClassNames.AddUnique( "func_damagable" );
solidClassNames.AddUnique( "func_forcefield" );
solidClassNames.AddUnique( "func_fracture" );
solidClassNames.AddUnique( "func_liquid" );
solidClassNames.AddUnique( "func_plat" );
solidClassNames.AddUnique( "func_rotating" );
solidClassNames.AddUnique( "func_splinemover" );
solidClassNames.AddUnique( "func_static" );
solidClassNames.AddUnique( "func_mover" );
solidClassNames.AddUnique( "func_door" );
solidClassNames.AddUnique( "moveable_base" );
solidClassNames.AddUnique( "func_pendulum" );
solidClassNames.AddUnique( "func_plat" );
solidClassNames.AddUnique( "moveable_base_brick" );
solidClassNames.AddUnique( "moveable_guardian_brick" );
solidClassNames.AddUnique( "trigger_" );
// mixed classes that need extra _model pendants
solidClassNames.AddUnique( "func_door" );
solidClassNames.AddUnique( "func_mover" );
solidClassNames.AddUnique( "func_rotating" );
solidClassNames.AddUnique( "func_static" ); // misc_model
for( int f = 0; f < filenames.Num(); f++ )
{
int totalEntitiesCount = 0;
@ -2515,7 +2525,9 @@ void idDeclManagerLocal::ExportEntityDefsToTrenchBroom_f( const idCmdArgs& args
if( idStr::Icmp( decl->GetName(), "light" ) == 0 ||
idStr::Icmp( decl->GetName(), "misc_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_bobbing_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_door_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_mover_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_mover_amodel" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_plat_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_rotating_model" ) == 0 )
@ -2604,7 +2616,10 @@ void idDeclManagerLocal::ExportEntityDefsToTrenchBroom_f( const idCmdArgs& args
if( idStr::Icmp( decl->GetName(), "light" ) != 0 &&
idStr::Icmp( decl->GetName(), "misc_model" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_bobbing_model" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_door_model" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_elevator_model" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_mover_model" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_mover_amodel" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_plat_model" ) != 0 &&
idStr::Icmp( decl->GetName(), "func_rotating_model" ) != 0 )
@ -2649,7 +2664,10 @@ void idDeclManagerLocal::ExportEntityDefsToTrenchBroom_f( const idCmdArgs& args
file->Printf( "model({ \"path\": \"%s\" }) ", exportedModelFileName.c_str() );
}
else if( idStr::Icmp( decl->GetName(), "misc_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_bobbing_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_door_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_elevator_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_mover_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_mover_amodel" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_plat_model" ) == 0 ||
idStr::Icmp( decl->GetName(), "func_rotating_model" ) == 0 )
@ -2660,7 +2678,9 @@ void idDeclManagerLocal::ExportEntityDefsToTrenchBroom_f( const idCmdArgs& args
else if( idStr::Icmp( decl->GetName(), "light" ) == 0 )
{
// default light sprite for TB editor sprites branch
file->Printf( "model({ \"path\": \"sprites/light-bulb.png\", \"scale\": 0.03125 }) " );
//file->Printf( "model({ \"path\": \"sprites/light-bulb.png\", \"scale\": 0.03125 }) " );
file->Printf( "model({{\n\tproxymodel -> { \"path\": proxymodel },\n\t{ \"path\": \"sprites/light-bulb.png\", \"scale\": 0.03125 }\n}})" );
}
else if( idStr::Icmp( decl->GetName(), "speaker" ) == 0 )
{
@ -3149,7 +3169,7 @@ void idDeclManagerLocal::ExportModelsToTrenchBroom_f( const idCmdArgs& args )
// make an OBJ version of the model for TrenchBroom
idRenderModel* renderModel = renderModelManager->FindModel( modelName );
#if 1
#if 0
if( idStr::Icmpn( modelName, "models/mapobjects", 17 ) != 0 )
{
continue;

View file

@ -2973,13 +2973,17 @@ bool idMapFile::ConvertToValve220Format()
ent->epairs.Set( "proxymodel", model );
}
#endif
// TODO if light purge flare patches
bool isBrushModel = ( ent->GetNumPrimitives() > 0 ) && ( idStr::Icmp( model.c_str(), name.c_str() ) == 0 );
// is this oldschool brushes & patches?
if( ent->GetNumPrimitives() > 0 )
if( isBrushModel )
{
bool removedOrigin = false;
#if 1
if( !transform.IsIdentity() &&
idStr::Icmp( classname, "func_static" ) != 0 &&
//idStr::Icmp( classname, "func_static" ) != 0 &&
idStr::Icmp( classname, "light" ) != 0 )
{
ent->epairs.Delete( "origin" );
@ -2989,12 +2993,6 @@ bool idMapFile::ConvertToValve220Format()
removedOrigin = true;
}
#endif
if( idStr::Icmp( classname, "func_static" ) == 0 && idStr::Icmp( model.c_str(), classname.c_str() ) == 0 )
{
ent->epairs.Delete( "model" );
}
// convert brushes
for( int i = 0; i < ent->GetNumPrimitives(); i++ )
@ -3052,10 +3050,18 @@ bool idMapFile::ConvertToValve220Format()
{
ent->epairs.Set( "classname", "misc_model" );
}
else if( idStr::Icmp( classname, "func_bobbing" ) == 0 && idStr::Icmp( model.c_str(), classname.c_str() ) != 0 )
{
ent->epairs.Set( "classname", "func_bobbing_model" );
}
else if( idStr::Icmp( classname, "func_door" ) == 0 && idStr::Icmp( model.c_str(), classname.c_str() ) != 0 )
{
ent->epairs.Set( "classname", "func_door_model" );
}
else if( idStr::Icmp( classname, "func_elevator" ) == 0 && idStr::Icmp( model.c_str(), classname.c_str() ) != 0 )
{
ent->epairs.Set( "classname", "func_elevator_model" );
}
else if( idStr::Icmp( classname, "func_mover" ) == 0 && idStr::Icmp( model.c_str(), classname.c_str() ) != 0 )
{
ent->epairs.Set( "classname", "func_mover_amodel" );
@ -3152,6 +3158,57 @@ bool idMapFile::ConvertToValve220Format()
return true;
}
void idMapFile::ClassifyEntitiesForTrenchBroom( idDict& classTypeOverview )
{
int count = GetNumEntities();
for( int j = 0; j < count; j++ )
{
idMapEntity* ent = GetEntity( j );
if( ent )
{
idStr classname = ent->epairs.GetString( "classname" );
idStr name = ent->epairs.GetString( "name" );
const idKeyValue* modelPair = ent->epairs.FindKey( "model" );
idStr model = ent->epairs.GetString( "model" );
bool isBrushModel = ( ent->GetNumPrimitives() > 0 ) && ( idStr::Icmp( model.c_str(), name.c_str() ) == 0 );
// is this oldschool brushes & patches?
if( isBrushModel )
{
const idKeyValue* kv = classTypeOverview.FindKey( classname );
if( kv && kv->GetValue().Length() )
{
if( idStr::Icmp( kv->GetValue().c_str(), "PointClass" ) == 0 && idStr::Icmp( kv->GetValue().c_str(), "Mixed" ) != 0 )
{
classTypeOverview.Set( classname, "Mixed" );
}
}
else
{
classTypeOverview.Set( classname, "BrushClass" );
}
}
else
{
const idKeyValue* kv = classTypeOverview.FindKey( classname );
if( kv && kv->GetValue().Length() )
{
if( idStr::Icmp( kv->GetValue().c_str(), "BrushClass" ) == 0 && idStr::Icmp( kv->GetValue().c_str(), "Mixed" ) != 0 )
{
classTypeOverview.Set( classname, "Mixed" );
}
}
else
{
classTypeOverview.Set( classname, "PointClass" );
}
}
}
}
}
bool idMapFile::ConvertQuakeToDoom()
{
idDict classTypeOverview;
@ -3234,8 +3291,11 @@ bool idMapFile::ConvertQuakeToDoom()
if( ent->GetNumPrimitives() > 0 )
{
const idKeyValue* namePair = ent->epairs.FindKey( "name" );
ent->epairs.Set( "model", namePair->GetValue() );
if( j > 0 )
{
const idKeyValue* namePair = ent->epairs.FindKey( "name" );
ent->epairs.Set( "model", namePair->GetValue() );
}
// map Wad brushes names to proper Doom 3 compatible material names
for( int i = 0; i < ent->GetNumPrimitives(); i++ )

View file

@ -504,6 +504,8 @@ public:
bool ConvertToPolygonMeshFormat();
bool ConvertToValve220Format();
void ClassifyEntitiesForTrenchBroom( idDict& classTypeOverview );
// converts Wad texture names to valid Doom 3 materials and gives every entity a unique name
bool ConvertQuakeToDoom();
// RB end