Use script to generate object list, also migrate flatbuffer to powershell script

This commit is contained in:
Lwmte 2025-03-11 23:31:57 +01:00
parent a6ec51e9d4
commit 935b26bd66
13 changed files with 417 additions and 187 deletions

View file

@ -192,7 +192,7 @@
<h3>Parameters:</h3> <h3>Parameters:</h3>
<ul> <ul>
<li><span class="parameter">ID</span> <li><span class="parameter">ID</span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span> <span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#SpriteConstants">SpriteConstants</a></span>
of the sprite sequence object. of the sprite sequence object.
</li> </li>
<li><span class="parameter">int</span> <li><span class="parameter">int</span>
@ -242,7 +242,7 @@
<h3>Returns:</h3> <h3>Returns:</h3>
<ol> <ol>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span> <span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#SpriteConstants">SpriteConstants</a></span>
Sprite sequence object ID. Sprite sequence object ID.
</ol> </ol>
@ -360,14 +360,14 @@
<strong>DisplaySprite:SetObjectID(New)</strong> <strong>DisplaySprite:SetObjectID(New)</strong>
</dt> </dt>
<dd> <dd>
Set the sprite sequence object ID used by the display sprite. (Objects.ObjID) Set the sprite sequence object ID used by the display sprite. (Objects.ObjID.SpriteConstants)
<h3>Parameters:</h3> <h3>Parameters:</h3>
<ul> <ul>
<li><span class="parameter">New</span> <li><span class="parameter">New</span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span> <span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#SpriteConstants">SpriteConstants</a></span>
sprite sequence object ID. sprite sequence object ID.
</li> </li>
</ul> </ul>

View file

@ -123,6 +123,10 @@
<td class="name" ><a href="#PickupConstants">PickupConstants</a></td> <td class="name" ><a href="#PickupConstants">PickupConstants</a></td>
<td class="summary">Objects.ObjID pickup constants.</td> <td class="summary">Objects.ObjID pickup constants.</td>
</tr> </tr>
<tr>
<td class="name" ><a href="#SpriteConstants">SpriteConstants</a></td>
<td class="summary">Objects.ObjID sprite constants.</td>
</tr>
</table> </table>
<br/> <br/>
@ -137,7 +141,8 @@
<strong>Members</strong> <strong>Members</strong>
</dt> </dt>
<dd> <dd>
Objects.ObjID constants. </p>
<p>Objects.ObjID constants. </p>
<p>The following constants are inside ObjID.</p> <p>The following constants are inside ObjID.</p>
@ -290,6 +295,7 @@ GLADIATOR
CYBORG CYBORG
SNIPER SNIPER
CHEF CHEF
KOLD
WINGED_MUMMY WINGED_MUMMY
CENTAUR_MUTANT CENTAUR_MUTANT
DOPPELGANGER DOPPELGANGER
@ -314,14 +320,14 @@ SWORD_GUARDIAN
SWORD_GUARDIAN_STATUE SWORD_GUARDIAN_STATUE
SHIVA SHIVA
SHIVA_STATUE SHIVA_STATUE
TRIBEBOSS WILLARD
CIVVY CIVVY
MUTANT2 MUTANT2
LIZARD LIZARD
TONY_BOSS TONY_BOSS
TONY_BOSS_FLAME TONY_BOSS_FLAME
PUNA_BOSS PUNA_BOSS
SOPHIA_LEE_BOSS SOPHIA_LEIGH_BOSS
LASER_BOLT LASER_BOLT
SKELETON SKELETON
MUMMY MUMMY
@ -353,7 +359,7 @@ ATTACK_SUB
IMP IMP
IMP_ROCK IMP_ROCK
GUNSHIP GUNSHIP
AUTOGUN AUTO_GUN_VCI
ROMAN_GOD1 ROMAN_GOD1
ROMAN_GOD2 ROMAN_GOD2
LAGOON_WITCH LAGOON_WITCH
@ -362,6 +368,7 @@ BOSS_EXPLOSION_SHOCKWAVE
BOSS_EXPLOSION_RING BOSS_EXPLOSION_RING
CLAW_MUTANT CLAW_MUTANT
WASP_MUTANT WASP_MUTANT
TWIN_AUTO_GUN
SKATEBOARD SKATEBOARD
SKATEBOARD_KID SKATEBOARD_KID
WINSTON WINSTON
@ -729,7 +736,6 @@ BURNING_TORCH_ITEM
CLOCKWORK_BEETLE CLOCKWORK_BEETLE
CLOCKWORK_BEETLE_COMBO1 CLOCKWORK_BEETLE_COMBO1
CLOCKWORK_BEETLE_COMBO2 CLOCKWORK_BEETLE_COMBO2
SWITCH_TYPE1 SWITCH_TYPE1
SWITCH_TYPE2 SWITCH_TYPE2
SWITCH_TYPE3 SWITCH_TYPE3
@ -751,10 +757,10 @@ SHOOT_SWITCH2
SHOOT_SWITCH3 SHOOT_SWITCH3
SHOOT_SWITCH4 SHOOT_SWITCH4
AIRLOCK_SWITCH AIRLOCK_SWITCH
ID_UNDERWATER_WALL_SWITCH_1 UNDERWATER_WALL_SWITCH1
ID_UNDERWATER_WALL_SWITCH_2 UNDERWATER_WALL_SWITCH2
ID_UNDERWATER_CEILING_SWITCH_1 UNDERWATER_CEILING_SWITCH1
ID_UNDERWATER_CEILING_SWITCH_2 UNDERWATER_CEILING_SWITCH2
TURN_SWITCH TURN_SWITCH
COG_SWITCH COG_SWITCH
LEVER_SWITCH LEVER_SWITCH
@ -901,7 +907,7 @@ FLOOR_LASERS
KILL_ALL_TRIGGERS KILL_ALL_TRIGGERS
TRIGGER_TRIGGERER TRIGGER_TRIGGERER
HIGH_OBJECT1 HIGH_OBJECT1
HIGH_OBJECT2 EMBER_EMITTER
SMASH_OBJECT1 SMASH_OBJECT1
SMASH_OBJECT2 SMASH_OBJECT2
SMASH_OBJECT3 SMASH_OBJECT3
@ -1089,8 +1095,6 @@ BRIDGE_TILT3
BRIDGE_TILT4 BRIDGE_TILT4
BRIDGE_CUSTOM BRIDGE_CUSTOM
HORIZON HORIZON
BINOCULAR_GRAPHICS
TARGET_GRAPHICS
SKY_GRAPHICS SKY_GRAPHICS
DEFAULT_SPRITES DEFAULT_SPRITES
MISC_SPRITES MISC_SPRITES
@ -1105,28 +1109,20 @@ RUBBER_BOAT_WAVE_SPRITES
SKIDOO_SNOW_TRAIL_SPRITES SKIDOO_SNOW_TRAIL_SPRITES
KAYAK_PADDLE_TRAIL_SPRITE KAYAK_PADDLE_TRAIL_SPRITE
KAYAK_WAKE_SPRTIES KAYAK_WAKE_SPRTIES
BINOCULAR_GRAPHIC BINOCULAR_GRAPHICS
LASER_SIGHT_GRAPHIC LASERSIGHT_GRAPHICS
CAUSTICS_TEXTURES CAUSTIC_TEXTURES
BAR_BORDER_GRAPHIC BAR_BORDER_GRAPHICS
HEALTH_BAR_TEXTURE HEALTH_BAR_TEXTURE
AIR_BAR_TEXTURE AIR_BAR_TEXTURE
DASH_BAR_TEXTURE DASH_BAR_TEXTURE
SFX_BAR_TEXTURE SFX_BAR_TEXTURE
SPEEDOMETER CROSSHAIR_GRAPHICS
CUSTOM_BAR_GRAPHIC SPEEDOMETER_GRAPHICS
CUSTOM_AMMO_GRAPHIC CUSTOM_BAR_GRAPHICS
CUSTOM_AMMO_GRAPHICS
PANEL_BORDER
PANEL_MIDDLE
PANEL_CORNER
PANEL_DIAGONAL
PANEL_STRIP
PANEL_HALF_BORDER1
PANEL_HALF_BORDER2
PANEL_MIDDLE_CORNER
</code></pre> </code></pre>
<p>Table of constants.
@ -1141,7 +1137,8 @@ PANEL_MIDDLE_CORNER
<strong>PickupConstants</strong> <strong>PickupConstants</strong>
</dt> </dt>
<dd> <dd>
Objects.ObjID pickup constants. </p>
<p>Objects.ObjID pickup constants. </p>
<p>The following ObjID members refer to pickups.</p> <p>The following ObjID members refer to pickups.</p>
@ -1289,6 +1286,30 @@ PICKUP_ITEM15_COMBO1
PICKUP_ITEM15_COMBO2 PICKUP_ITEM15_COMBO2
PICKUP_ITEM16_COMBO1 PICKUP_ITEM16_COMBO1
PICKUP_ITEM16_COMBO2 PICKUP_ITEM16_COMBO2
EXAMINE1
EXAMINE2
EXAMINE3
EXAMINE4
EXAMINE5
EXAMINE6
EXAMINE7
EXAMINE8
EXAMINE1_COMBO1
EXAMINE1_COMBO2
EXAMINE2_COMBO1
EXAMINE2_COMBO2
EXAMINE3_COMBO1
EXAMINE3_COMBO2
EXAMINE4_COMBO1
EXAMINE4_COMBO2
EXAMINE5_COMBO1
EXAMINE5_COMBO2
EXAMINE6_COMBO1
EXAMINE6_COMBO2
EXAMINE7_COMBO1
EXAMINE7_COMBO2
EXAMINE8_COMBO1
EXAMINE8_COMBO2
HAMMER_ITEM HAMMER_ITEM
CROWBAR_ITEM CROWBAR_ITEM
BURNING_TORCH_ITEM BURNING_TORCH_ITEM
@ -1326,10 +1347,57 @@ FLARE_INV_ITEM
COMPASS_ITEM COMPASS_ITEM
DIARY_ITEM DIARY_ITEM
STOPWATCH_ITEM STOPWATCH_ITEM
MEMCARD_LOAD_INV_ITEM
MEMCARD_SAVE_INV_ITEM
PC_LOAD_INV_ITEM PC_LOAD_INV_ITEM
PC_SAVE_INV_ITEM PC_SAVE_INV_ITEM
</code></pre> </code></pre>
<p>Table of constants.
</dd>
<dt>
<a name = "SpriteConstants"></a>
<strong>SpriteConstants</strong>
</dt>
<dd>
<p>Objects.ObjID sprite constants. </p>
<p>The following ObjID members refer to sprites.</p>
<pre><code>SKY_GRAPHICS
DEFAULT_SPRITES
MISC_SPRITES
CUSTOM_SPRITES
FIRE_SPRITES
SMOKE_SPRITES
SPARK_SPRITE
DRIP_SPRITE
EXPLOSION_SPRITES
MOTORBOAT_FOAM_SPRITES
RUBBER_BOAT_WAVE_SPRITES
SKIDOO_SNOW_TRAIL_SPRITES
KAYAK_PADDLE_TRAIL_SPRITE
LASERSIGHT_GRAPHICS
CAUSTIC_TEXTURES
BAR_BORDER_GRAPHICS
HEALTH_BAR_TEXTURE
AIR_BAR_TEXTURE
DASH_BAR_TEXTURE
SFX_BAR_TEXTURE
CROSSHAIR_GRAPHICS
SPEEDOMETER_GRAPHICS
CUSTOM_BAR_GRAPHICS
CUSTOM_AMMO_GRAPHICS
</code></pre>

View file

@ -0,0 +1,148 @@
# PowerShell script to generate ObjectIDs.h from game_object_ids.h
$inputFile = "../TombEngine/Objects/game_object_ids.h" # Adjust path if necessary.
$tempOutputFile = "../TombEngine/Scripting/Internal/TEN/Objects/temp.h"
$outputFile = "../TombEngine/Scripting/Internal/TEN/Objects/ObjectIDs.h"
# Read the input file
if (-Not (Test-Path $inputFile))
{
Write-Host "Error: File '$inputFile' not found."
exit 1
}
# Get the last modified times for both files.
$inputFileLastModified = (Get-Item $inputFile).LastWriteTime
if (Test-Path $outputFile) {
$outputFileLastModified = (Get-Item $outputFile).LastWriteTime
} else {
$outputFileLastModified = [datetime]::MinValue # If output file doesn't exist, treat it as very old.
}
# Exit early if the output file is newer than the input file.
if ($outputFileLastModified -ge $inputFileLastModified) {
Write-Host "$outputFile is up to date. No changes made."
exit 0
}
$content = Get-Content $inputFile
# Extract enum values and categorize them.
$enumValues = @()
$pickupConstants = @()
$spriteConstants = @()
$inPickupSection = $false
$inSpriteSection = $false
foreach ($line in $content)
{
if ($line -match "^\s*ID_([A-Za-z0-9_]+)")
{
$enumName = $matches[1]
$enumValues += $enumName
if ($enumName -match "_ITEM|EXAMINE")
{
$pickupConstants += $enumName
}
elseif ($enumName -match "_SPRITE|_GRAPHIC|TEXTURE")
{
# These two object IDs are deprecated 3D objects, not sprites.
if ($enumName -in @("BINOCULAR_GRAPHICS", "TARGET_GRAPHICS"))
{
continue
}
$spriteConstants += $enumName
}
}
}
if ($enumValues.Count -gt 0) { $enumValues = $enumValues[1..($enumValues.Count - 2)] }
# Generate ObjectIDs.h content.
$header = @"
#pragma once
// Last generated on $(Get-Date -Format "dd/MM/yyyy")
#include <unordered_map>
#include <string>
#include "Objects/game_object_ids.h"
/***
Constants for object IDs.
@enum Objects.ObjID
@pragma nostrip
*/
/*** Objects.ObjID constants.
The following constants are inside ObjID.
"@
$body = $enumValues | ForEach-Object { "`t$_" }
$footer = @"
@table Members
*/
"@
# Pickup Constants Section.
$pickupHeader = @"
/*** Objects.ObjID pickup constants.
The following ObjID members refer to pickups.
"@
$pickupBody = $pickupConstants | ForEach-Object { "`t$_" }
$pickupFooter = @"
@table PickupConstants
*/
"@
# Sprite Constants Section.
$spriteHeader = @"
/*** Objects.ObjID sprite constants.
The following ObjID members refer to sprites.
"@
$spriteBody = $spriteConstants | ForEach-Object { "`t$_" }
$spriteFooter = @"
@table SpriteConstants
*/
"@
# Map definition.
$mapHeader = "static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {"
$mapBody = ($enumValues | ForEach-Object { "`t" + '{ "' + "$_" + '", ID_' + "$_" + ' }' }) -join ",`r`n"
$mapFooter = "};"
# Write to output file
$header | Set-Content $tempOutputFile
$body | Add-Content $tempOutputFile
$footer | Add-Content $tempOutputFile
$pickupHeader | Add-Content $tempOutputFile
$pickupBody | Add-Content $tempOutputFile
$pickupFooter | Add-Content $tempOutputFile
$spriteHeader | Add-Content $tempOutputFile
$spriteBody | Add-Content $tempOutputFile
$spriteFooter | Add-Content $tempOutputFile
$mapHeader | Add-Content $tempOutputFile
$mapBody | ForEach-Object { Add-Content $tempOutputFile $_ }
$mapFooter | Add-Content $tempOutputFile
# Rename the temporary file to the final name.
if (Test-Path $outputFile) {
Remove-Item $outputFile -Force
}
Move-Item -Path $tempOutputFile -Destination $outputFile -Force
Write-Host "Generated $outputFile successfully."

View file

@ -70,14 +70,14 @@ namespace TEN::Hud
// Draw dial. // Draw dial.
AddDisplaySprite( AddDisplaySprite(
ID_SPEEDOMETER, DIAL_ELEMENT_SPRITE_ID, ID_SPEEDOMETER_GRAPHICS, DIAL_ELEMENT_SPRITE_ID,
POS, 0, SCALE, color, POS, 0, SCALE, color,
DIAL_PRIORITY, DisplaySpriteAlignMode::Center, DisplaySpriteScaleMode::Fit, BlendMode::AlphaBlend, DIAL_PRIORITY, DisplaySpriteAlignMode::Center, DisplaySpriteScaleMode::Fit, BlendMode::AlphaBlend,
DisplaySpritePhase::Draw); DisplaySpritePhase::Draw);
// Draw pointer. // Draw pointer.
AddDisplaySprite( AddDisplaySprite(
ID_SPEEDOMETER, POINTER_ELEMENT_SPRITE_ID, ID_SPEEDOMETER_GRAPHICS, POINTER_ELEMENT_SPRITE_ID,
POS, pointerAngle + POINTER_ANGLE_OFFSET, SCALE, color, POS, pointerAngle + POINTER_ANGLE_OFFSET, SCALE, color,
POINTER_PRIORITY, DisplaySpriteAlignMode::Center, DisplaySpriteScaleMode::Fit, BlendMode::AlphaBlend, POINTER_PRIORITY, DisplaySpriteAlignMode::Center, DisplaySpriteScaleMode::Fit, BlendMode::AlphaBlend,
DisplaySpritePhase::Draw); DisplaySpritePhase::Draw);

View file

@ -132,7 +132,7 @@ namespace TEN::Hud
void CrosshairData::Draw() const void CrosshairData::Draw() const
{ {
constexpr auto SPRITE_SEQUENCE_OBJECT_ID = ID_CROSSHAIR; constexpr auto SPRITE_SEQUENCE_OBJECT_ID = ID_CROSSHAIR_GRAPHICS;
constexpr auto STATIC_ELEMENT_SPRITE_ID = 0; constexpr auto STATIC_ELEMENT_SPRITE_ID = 0;
constexpr auto SEGMENT_ELEMENT_SPRITE_ID = 1; constexpr auto SEGMENT_ELEMENT_SPRITE_ID = 1;
constexpr auto PRIORITY = 0; // TODO: Check later. May interfere with Lua display sprites. -- Sezz 2023.10.06 constexpr auto PRIORITY = 0; // TODO: Check later. May interfere with Lua display sprites. -- Sezz 2023.10.06

View file

@ -176,7 +176,7 @@ void StartSwitches(ObjectInfo* object)
object->shadowType = ShadowMode::All; object->shadowType = ShadowMode::All;
} }
for (int objectID = ID_UNDERWATER_WALL_SWITCH_1; objectID <= ID_UNDERWATER_WALL_SWITCH_2; objectID++) for (int objectID = ID_UNDERWATER_WALL_SWITCH1; objectID <= ID_UNDERWATER_WALL_SWITCH2; objectID++)
{ {
object = &Objects[objectID]; object = &Objects[objectID];
if (object->loaded) if (object->loaded)
@ -186,7 +186,7 @@ void StartSwitches(ObjectInfo* object)
} }
} }
for (int objectID = ID_UNDERWATER_CEILING_SWITCH_1; objectID <= ID_UNDERWATER_CEILING_SWITCH_2; objectID++) for (int objectID = ID_UNDERWATER_CEILING_SWITCH1; objectID <= ID_UNDERWATER_CEILING_SWITCH2; objectID++)
{ {
object = &Objects[objectID]; object = &Objects[objectID];
if (object->loaded) if (object->loaded)

View file

@ -625,10 +625,10 @@ enum GAME_OBJECT_ID : short
ID_SHOOT_SWITCH3, ID_SHOOT_SWITCH3,
ID_SHOOT_SWITCH4, ID_SHOOT_SWITCH4,
ID_AIRLOCK_SWITCH, ID_AIRLOCK_SWITCH,
ID_UNDERWATER_WALL_SWITCH_1, ID_UNDERWATER_WALL_SWITCH1,
ID_UNDERWATER_WALL_SWITCH_2, ID_UNDERWATER_WALL_SWITCH2,
ID_UNDERWATER_CEILING_SWITCH_1, ID_UNDERWATER_CEILING_SWITCH1,
ID_UNDERWATER_CEILING_SWITCH_2, ID_UNDERWATER_CEILING_SWITCH2,
ID_TURN_SWITCH, ID_TURN_SWITCH,
ID_COG_SWITCH, ID_COG_SWITCH,
ID_LEVER_SWITCH, ID_LEVER_SWITCH,
@ -973,9 +973,10 @@ enum GAME_OBJECT_ID : short
ID_BRIDGE_CUSTOM, ID_BRIDGE_CUSTOM,
ID_HORIZON = 1350, ID_HORIZON = 1350,
ID_BINOCULAR_GRAPHICS,
ID_TARGET_GRAPHICS, // Sprite sequences.
ID_SKY_GRAPHICS,
ID_SKY_GRAPHICS = 1353,
ID_DEFAULT_SPRITES, ID_DEFAULT_SPRITES,
ID_MISC_SPRITES, ID_MISC_SPRITES,
ID_CUSTOM_SPRITES, ID_CUSTOM_SPRITES,
@ -990,27 +991,19 @@ enum GAME_OBJECT_ID : short
ID_SKIDOO_SNOW_TRAIL_SPRITES, ID_SKIDOO_SNOW_TRAIL_SPRITES,
ID_KAYAK_PADDLE_TRAIL_SPRITE, ID_KAYAK_PADDLE_TRAIL_SPRITE,
ID_KAYAK_WAKE_SPRTIES, ID_KAYAK_WAKE_SPRTIES,
ID_BINOCULAR_GRAPHIC, ID_BINOCULAR_GRAPHICS,
ID_LASER_SIGHT_GRAPHIC, ID_LASERSIGHT_GRAPHICS,
ID_CAUSTICS_TEXTURES, ID_CAUSTIC_TEXTURES,
ID_BAR_BORDER_GRAPHIC, ID_BAR_BORDER_GRAPHICS,
ID_HEALTH_BAR_TEXTURE, ID_HEALTH_BAR_TEXTURE,
ID_AIR_BAR_TEXTURE, ID_AIR_BAR_TEXTURE,
ID_DASH_BAR_TEXTURE, ID_DASH_BAR_TEXTURE,
ID_SFX_BAR_TEXTURE, ID_SFX_BAR_TEXTURE,
// NOTE: 1378 - 1379 reserved for blood effects. -- Sezz 2023.05.29 // NOTE: 1378 - 1379 reserved for blood effects. -- Sezz 2023.05.29
ID_CROSSHAIR = 1380, ID_CROSSHAIR_GRAPHICS = 1380,
ID_SPEEDOMETER, ID_SPEEDOMETER_GRAPHICS,
ID_CUSTOM_BAR_GRAPHIC, ID_CUSTOM_BAR_GRAPHICS,
ID_CUSTOM_AMMO_GRAPHIC, ID_CUSTOM_AMMO_GRAPHICS,
ID_PANEL_BORDER = 1400,
ID_PANEL_MIDDLE,
ID_PANEL_CORNER,
ID_PANEL_DIAGONAL,
ID_PANEL_STRIP,
ID_PANEL_HALF_BORDER1,
ID_PANEL_HALF_BORDER2,
ID_PANEL_MIDDLE_CORNER,
ID_NUMBER_OBJECTS ID_NUMBER_OBJECTS
}; };

View file

@ -883,7 +883,7 @@ namespace TEN::Renderer
_spriteSequences[SpriteSequencesIds[i]] = sequence; _spriteSequences[SpriteSequencesIds[i]] = sequence;
if (SpriteSequencesIds[i] == ID_CAUSTICS_TEXTURES) if (SpriteSequencesIds[i] == ID_CAUSTIC_TEXTURES)
{ {
_causticTextures.clear(); _causticTextures.clear();
for (int j = 0; j < sequence.SpritesList.size(); j++) for (int j = 0; j < sequence.SpritesList.size(); j++)

View file

@ -2695,8 +2695,8 @@ namespace TEN::Renderer
// Bind caustics texture. // Bind caustics texture.
if (_causticTextures.size() > 0) if (_causticTextures.size() > 0)
{ {
int nmeshes = -Objects[ID_CAUSTICS_TEXTURES].nmeshes; int nmeshes = -Objects[ID_CAUSTIC_TEXTURES].nmeshes;
int meshIndex = Objects[ID_CAUSTICS_TEXTURES].meshIndex; int meshIndex = Objects[ID_CAUSTIC_TEXTURES].meshIndex;
int causticsFrame = GlobalCounter % _causticTextures.size(); int causticsFrame = GlobalCounter % _causticTextures.size();
BindTexture(TextureRegister::CausticsMap, &_causticTextures[causticsFrame], SamplerStateRegister::AnisotropicClamp); BindTexture(TextureRegister::CausticsMap, &_causticTextures[causticsFrame], SamplerStateRegister::AnisotropicClamp);
} }

View file

@ -119,7 +119,7 @@ namespace TEN::Renderer
void Renderer::DrawBar(float percent, const RendererHudBar& bar, GAME_OBJECT_ID textureSlot, int frame, bool isPoisoned) void Renderer::DrawBar(float percent, const RendererHudBar& bar, GAME_OBJECT_ID textureSlot, int frame, bool isPoisoned)
{ {
if (!CheckIfSlotExists(ID_BAR_BORDER_GRAPHIC, "Bar rendering")) if (!CheckIfSlotExists(ID_BAR_BORDER_GRAPHICS, "Bar rendering"))
return; return;
unsigned int strides = sizeof(Vertex); unsigned int strides = sizeof(Vertex);
@ -141,7 +141,7 @@ namespace TEN::Renderer
BindConstantBufferVS(ConstantBufferRegister::Hud, _cbHUD.get()); BindConstantBufferVS(ConstantBufferRegister::Hud, _cbHUD.get());
RendererSprite* borderSprite = &_sprites[Objects[ID_BAR_BORDER_GRAPHIC].meshIndex]; RendererSprite* borderSprite = &_sprites[Objects[ID_BAR_BORDER_GRAPHICS].meshIndex];
_stHUDBar.BarStartUV = borderSprite->UV[0]; _stHUDBar.BarStartUV = borderSprite->UV[0];
_stHUDBar.BarScale = Vector2(borderSprite->Width / (float)borderSprite->Texture->Width, borderSprite->Height / (float)borderSprite->Texture->Height); _stHUDBar.BarScale = Vector2(borderSprite->Width / (float)borderSprite->Texture->Width, borderSprite->Height / (float)borderSprite->Texture->Height);
_cbHUDBar.UpdateData(_stHUDBar, _context.Get()); _cbHUDBar.UpdateData(_stHUDBar, _context.Get());
@ -266,11 +266,11 @@ namespace TEN::Renderer
if (Lara.Control.Look.OpticRange != 0 && !Lara.Control.Look.IsUsingLasersight) if (Lara.Control.Look.OpticRange != 0 && !Lara.Control.Look.IsUsingLasersight)
{ {
DrawFullScreenSprite(&_sprites[Objects[ID_BINOCULAR_GRAPHIC].meshIndex], Vector3::One, false); DrawFullScreenSprite(&_sprites[Objects[ID_BINOCULAR_GRAPHICS].meshIndex], Vector3::One, false);
} }
else if (Lara.Control.Look.OpticRange != 0 && Lara.Control.Look.IsUsingLasersight) else if (Lara.Control.Look.OpticRange != 0 && Lara.Control.Look.IsUsingLasersight)
{ {
DrawFullScreenSprite(&_sprites[Objects[ID_LASER_SIGHT_GRAPHIC].meshIndex], Vector3::One); DrawFullScreenSprite(&_sprites[Objects[ID_LASERSIGHT_GRAPHICS].meshIndex], Vector3::One);
SetBlendMode(BlendMode::Opaque); SetBlendMode(BlendMode::Opaque);

View file

@ -1,6 +1,6 @@
#pragma once #pragma once
// Last generated on 18/11/2022 // Last generated on 11/03/2025
#include <unordered_map> #include <unordered_map>
#include <string> #include <string>
@ -165,6 +165,7 @@ The following constants are inside ObjID.
CYBORG CYBORG
SNIPER SNIPER
CHEF CHEF
KOLD
WINGED_MUMMY WINGED_MUMMY
CENTAUR_MUTANT CENTAUR_MUTANT
DOPPELGANGER DOPPELGANGER
@ -189,14 +190,14 @@ The following constants are inside ObjID.
SWORD_GUARDIAN_STATUE SWORD_GUARDIAN_STATUE
SHIVA SHIVA
SHIVA_STATUE SHIVA_STATUE
TRIBEBOSS WILLARD
CIVVY CIVVY
MUTANT2 MUTANT2
LIZARD LIZARD
TONY_BOSS TONY_BOSS
TONY_BOSS_FLAME TONY_BOSS_FLAME
PUNA_BOSS PUNA_BOSS
SOPHIA_LEE_BOSS SOPHIA_LEIGH_BOSS
LASER_BOLT LASER_BOLT
SKELETON SKELETON
MUMMY MUMMY
@ -228,7 +229,7 @@ The following constants are inside ObjID.
IMP IMP
IMP_ROCK IMP_ROCK
GUNSHIP GUNSHIP
AUTOGUN AUTO_GUN_VCI
ROMAN_GOD1 ROMAN_GOD1
ROMAN_GOD2 ROMAN_GOD2
LAGOON_WITCH LAGOON_WITCH
@ -237,6 +238,7 @@ The following constants are inside ObjID.
BOSS_EXPLOSION_RING BOSS_EXPLOSION_RING
CLAW_MUTANT CLAW_MUTANT
WASP_MUTANT WASP_MUTANT
TWIN_AUTO_GUN
SKATEBOARD SKATEBOARD
SKATEBOARD_KID SKATEBOARD_KID
WINSTON WINSTON
@ -604,7 +606,6 @@ The following constants are inside ObjID.
CLOCKWORK_BEETLE CLOCKWORK_BEETLE
CLOCKWORK_BEETLE_COMBO1 CLOCKWORK_BEETLE_COMBO1
CLOCKWORK_BEETLE_COMBO2 CLOCKWORK_BEETLE_COMBO2
SWITCH_TYPE1 SWITCH_TYPE1
SWITCH_TYPE2 SWITCH_TYPE2
SWITCH_TYPE3 SWITCH_TYPE3
@ -626,10 +627,10 @@ The following constants are inside ObjID.
SHOOT_SWITCH3 SHOOT_SWITCH3
SHOOT_SWITCH4 SHOOT_SWITCH4
AIRLOCK_SWITCH AIRLOCK_SWITCH
ID_UNDERWATER_WALL_SWITCH_1 UNDERWATER_WALL_SWITCH1
ID_UNDERWATER_WALL_SWITCH_2 UNDERWATER_WALL_SWITCH2
ID_UNDERWATER_CEILING_SWITCH_1 UNDERWATER_CEILING_SWITCH1
ID_UNDERWATER_CEILING_SWITCH_2 UNDERWATER_CEILING_SWITCH2
TURN_SWITCH TURN_SWITCH
COG_SWITCH COG_SWITCH
LEVER_SWITCH LEVER_SWITCH
@ -776,7 +777,7 @@ The following constants are inside ObjID.
KILL_ALL_TRIGGERS KILL_ALL_TRIGGERS
TRIGGER_TRIGGERER TRIGGER_TRIGGERER
HIGH_OBJECT1 HIGH_OBJECT1
HIGH_OBJECT2 EMBER_EMITTER
SMASH_OBJECT1 SMASH_OBJECT1
SMASH_OBJECT2 SMASH_OBJECT2
SMASH_OBJECT3 SMASH_OBJECT3
@ -964,8 +965,6 @@ The following constants are inside ObjID.
BRIDGE_TILT4 BRIDGE_TILT4
BRIDGE_CUSTOM BRIDGE_CUSTOM
HORIZON HORIZON
BINOCULAR_GRAPHICS
TARGET_GRAPHICS
SKY_GRAPHICS SKY_GRAPHICS
DEFAULT_SPRITES DEFAULT_SPRITES
MISC_SPRITES MISC_SPRITES
@ -980,27 +979,18 @@ The following constants are inside ObjID.
SKIDOO_SNOW_TRAIL_SPRITES SKIDOO_SNOW_TRAIL_SPRITES
KAYAK_PADDLE_TRAIL_SPRITE KAYAK_PADDLE_TRAIL_SPRITE
KAYAK_WAKE_SPRTIES KAYAK_WAKE_SPRTIES
BINOCULAR_GRAPHIC BINOCULAR_GRAPHICS
LASER_SIGHT_GRAPHIC LASERSIGHT_GRAPHICS
CAUSTICS_TEXTURES CAUSTIC_TEXTURES
BAR_BORDER_GRAPHIC BAR_BORDER_GRAPHICS
HEALTH_BAR_TEXTURE HEALTH_BAR_TEXTURE
AIR_BAR_TEXTURE AIR_BAR_TEXTURE
DASH_BAR_TEXTURE DASH_BAR_TEXTURE
SFX_BAR_TEXTURE SFX_BAR_TEXTURE
SPEEDOMETER CROSSHAIR_GRAPHICS
CUSTOM_BAR_GRAPHIC SPEEDOMETER_GRAPHICS
CUSTOM_AMMO_GRAPHIC CUSTOM_BAR_GRAPHICS
CUSTOM_AMMO_GRAPHICS
PANEL_BORDER
PANEL_MIDDLE
PANEL_CORNER
PANEL_DIAGONAL
PANEL_STRIP
PANEL_HALF_BORDER1
PANEL_HALF_BORDER2
PANEL_MIDDLE_CORNER
Table of constants.
@table Members @table Members
*/ */
@ -1152,6 +1142,30 @@ The following ObjID members refer to pickups.
PICKUP_ITEM15_COMBO2 PICKUP_ITEM15_COMBO2
PICKUP_ITEM16_COMBO1 PICKUP_ITEM16_COMBO1
PICKUP_ITEM16_COMBO2 PICKUP_ITEM16_COMBO2
EXAMINE1
EXAMINE2
EXAMINE3
EXAMINE4
EXAMINE5
EXAMINE6
EXAMINE7
EXAMINE8
EXAMINE1_COMBO1
EXAMINE1_COMBO2
EXAMINE2_COMBO1
EXAMINE2_COMBO2
EXAMINE3_COMBO1
EXAMINE3_COMBO2
EXAMINE4_COMBO1
EXAMINE4_COMBO2
EXAMINE5_COMBO1
EXAMINE5_COMBO2
EXAMINE6_COMBO1
EXAMINE6_COMBO2
EXAMINE7_COMBO1
EXAMINE7_COMBO2
EXAMINE8_COMBO1
EXAMINE8_COMBO2
HAMMER_ITEM HAMMER_ITEM
CROWBAR_ITEM CROWBAR_ITEM
BURNING_TORCH_ITEM BURNING_TORCH_ITEM
@ -1189,9 +1203,10 @@ The following ObjID members refer to pickups.
COMPASS_ITEM COMPASS_ITEM
DIARY_ITEM DIARY_ITEM
STOPWATCH_ITEM STOPWATCH_ITEM
MEMCARD_LOAD_INV_ITEM
MEMCARD_SAVE_INV_ITEM
PC_LOAD_INV_ITEM PC_LOAD_INV_ITEM
PC_SAVE_INV_ITEM PC_SAVE_INV_ITEM
Table of constants.
@table PickupConstants @table PickupConstants
*/ */
@ -1199,8 +1214,6 @@ Table of constants.
The following ObjID members refer to sprites. The following ObjID members refer to sprites.
Table of constants:
SKY_GRAPHICS SKY_GRAPHICS
DEFAULT_SPRITES DEFAULT_SPRITES
MISC_SPRITES MISC_SPRITES
@ -1214,18 +1227,17 @@ Table of constants:
RUBBER_BOAT_WAVE_SPRITES RUBBER_BOAT_WAVE_SPRITES
SKIDOO_SNOW_TRAIL_SPRITES SKIDOO_SNOW_TRAIL_SPRITES
KAYAK_PADDLE_TRAIL_SPRITE KAYAK_PADDLE_TRAIL_SPRITE
KAYAK_WAKE_SPRTIES LASERSIGHT_GRAPHICS
BINOCULAR_GRAPHIC CAUSTIC_TEXTURES
LASER_SIGHT_GRAPHIC BAR_BORDER_GRAPHICS
CAUSTICS_TEXTURES
BAR_BORDER_GRAPHIC
HEALTH_BAR_TEXTURE HEALTH_BAR_TEXTURE
AIR_BAR_TEXTURE AIR_BAR_TEXTURE
DASH_BAR_TEXTURE DASH_BAR_TEXTURE
SFX_BAR_TEXTURE SFX_BAR_TEXTURE
SPEEDOMETER CROSSHAIR_GRAPHICS
CUSTOM_BAR_GRAPHIC SPEEDOMETER_GRAPHICS
CUSTOM_AMMO_GRAPHIC CUSTOM_BAR_GRAPHICS
CUSTOM_AMMO_GRAPHICS
@table SpriteConstants @table SpriteConstants
*/ */
static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs { static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
@ -1378,6 +1390,7 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "CYBORG", ID_CYBORG }, { "CYBORG", ID_CYBORG },
{ "SNIPER", ID_SNIPER }, { "SNIPER", ID_SNIPER },
{ "CHEF", ID_CHEF }, { "CHEF", ID_CHEF },
{ "KOLD", ID_KOLD },
{ "WINGED_MUMMY", ID_WINGED_MUMMY }, { "WINGED_MUMMY", ID_WINGED_MUMMY },
{ "CENTAUR_MUTANT", ID_CENTAUR_MUTANT }, { "CENTAUR_MUTANT", ID_CENTAUR_MUTANT },
{ "DOPPELGANGER", ID_DOPPELGANGER }, { "DOPPELGANGER", ID_DOPPELGANGER },
@ -1441,7 +1454,7 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "IMP", ID_IMP }, { "IMP", ID_IMP },
{ "IMP_ROCK", ID_IMP_ROCK }, { "IMP_ROCK", ID_IMP_ROCK },
{ "GUNSHIP", ID_GUNSHIP }, { "GUNSHIP", ID_GUNSHIP },
{ "AUTOGUN", ID_AUTO_GUN_VCI }, { "AUTO_GUN_VCI", ID_AUTO_GUN_VCI },
{ "ROMAN_GOD1", ID_ROMAN_GOD1 }, { "ROMAN_GOD1", ID_ROMAN_GOD1 },
{ "ROMAN_GOD2", ID_ROMAN_GOD2 }, { "ROMAN_GOD2", ID_ROMAN_GOD2 },
{ "LAGOON_WITCH", ID_LAGOON_WITCH }, { "LAGOON_WITCH", ID_LAGOON_WITCH },
@ -1450,6 +1463,7 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "BOSS_EXPLOSION_RING", ID_BOSS_EXPLOSION_RING }, { "BOSS_EXPLOSION_RING", ID_BOSS_EXPLOSION_RING },
{ "CLAW_MUTANT", ID_CLAW_MUTANT }, { "CLAW_MUTANT", ID_CLAW_MUTANT },
{ "WASP_MUTANT", ID_WASP_MUTANT }, { "WASP_MUTANT", ID_WASP_MUTANT },
{ "TWIN_AUTO_GUN", ID_TWIN_AUTO_GUN },
{ "SKATEBOARD", ID_SKATEBOARD }, { "SKATEBOARD", ID_SKATEBOARD },
{ "SKATEBOARD_KID", ID_SKATEBOARD_KID }, { "SKATEBOARD_KID", ID_SKATEBOARD_KID },
{ "WINSTON", ID_WINSTON }, { "WINSTON", ID_WINSTON },
@ -1838,10 +1852,10 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "SHOOT_SWITCH3", ID_SHOOT_SWITCH3 }, { "SHOOT_SWITCH3", ID_SHOOT_SWITCH3 },
{ "SHOOT_SWITCH4", ID_SHOOT_SWITCH4 }, { "SHOOT_SWITCH4", ID_SHOOT_SWITCH4 },
{ "AIRLOCK_SWITCH", ID_AIRLOCK_SWITCH }, { "AIRLOCK_SWITCH", ID_AIRLOCK_SWITCH },
{ "UNDERWATER_WALL_SWITCH_1", ID_UNDERWATER_WALL_SWITCH_1 }, { "UNDERWATER_WALL_SWITCH1", ID_UNDERWATER_WALL_SWITCH1 },
{ "UNDERWATER_WALL_SWITCH_2", ID_UNDERWATER_WALL_SWITCH_2 }, { "UNDERWATER_WALL_SWITCH2", ID_UNDERWATER_WALL_SWITCH2 },
{ "UNDERWATER_CEILING_SWITCH_1", ID_UNDERWATER_CEILING_SWITCH_1 }, { "UNDERWATER_CEILING_SWITCH1", ID_UNDERWATER_CEILING_SWITCH1 },
{ "UNDERWATER_CEILING_SWITCH_2", ID_UNDERWATER_CEILING_SWITCH_2 }, { "UNDERWATER_CEILING_SWITCH2", ID_UNDERWATER_CEILING_SWITCH2 },
{ "TURN_SWITCH", ID_TURN_SWITCH }, { "TURN_SWITCH", ID_TURN_SWITCH },
{ "COG_SWITCH", ID_COG_SWITCH }, { "COG_SWITCH", ID_COG_SWITCH },
{ "LEVER_SWITCH", ID_LEVER_SWITCH }, { "LEVER_SWITCH", ID_LEVER_SWITCH },
@ -2176,8 +2190,6 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "BRIDGE_TILT4", ID_BRIDGE_TILT4 }, { "BRIDGE_TILT4", ID_BRIDGE_TILT4 },
{ "BRIDGE_CUSTOM", ID_BRIDGE_CUSTOM }, { "BRIDGE_CUSTOM", ID_BRIDGE_CUSTOM },
{ "HORIZON", ID_HORIZON }, { "HORIZON", ID_HORIZON },
{ "BINOCULAR_GRAPHICS", ID_BINOCULAR_GRAPHICS },
{ "TARGET_GRAPHICS", ID_TARGET_GRAPHICS },
{ "SKY_GRAPHICS", ID_SKY_GRAPHICS }, { "SKY_GRAPHICS", ID_SKY_GRAPHICS },
{ "DEFAULT_SPRITES", ID_DEFAULT_SPRITES }, { "DEFAULT_SPRITES", ID_DEFAULT_SPRITES },
{ "MISC_SPRITES", ID_MISC_SPRITES }, { "MISC_SPRITES", ID_MISC_SPRITES },
@ -2192,24 +2204,16 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "SKIDOO_SNOW_TRAIL_SPRITES", ID_SKIDOO_SNOW_TRAIL_SPRITES }, { "SKIDOO_SNOW_TRAIL_SPRITES", ID_SKIDOO_SNOW_TRAIL_SPRITES },
{ "KAYAK_PADDLE_TRAIL_SPRITE", ID_KAYAK_PADDLE_TRAIL_SPRITE }, { "KAYAK_PADDLE_TRAIL_SPRITE", ID_KAYAK_PADDLE_TRAIL_SPRITE },
{ "KAYAK_WAKE_SPRTIES", ID_KAYAK_WAKE_SPRTIES }, { "KAYAK_WAKE_SPRTIES", ID_KAYAK_WAKE_SPRTIES },
{ "BINOCULAR_GRAPHIC", ID_BINOCULAR_GRAPHIC }, { "BINOCULAR_GRAPHICS", ID_BINOCULAR_GRAPHICS },
{ "LASER_SIGHT_GRAPHIC", ID_LASER_SIGHT_GRAPHIC }, { "LASERSIGHT_GRAPHICS", ID_LASERSIGHT_GRAPHICS },
{ "CAUSTICS_TEXTURES", ID_CAUSTICS_TEXTURES }, { "CAUSTIC_TEXTURES", ID_CAUSTIC_TEXTURES },
{ "BAR_BORDER_GRAPHIC", ID_BAR_BORDER_GRAPHIC }, { "BAR_BORDER_GRAPHICS", ID_BAR_BORDER_GRAPHICS },
{ "HEALTH_BAR_TEXTURE", ID_HEALTH_BAR_TEXTURE }, { "HEALTH_BAR_TEXTURE", ID_HEALTH_BAR_TEXTURE },
{ "AIR_BAR_TEXTURE", ID_AIR_BAR_TEXTURE }, { "AIR_BAR_TEXTURE", ID_AIR_BAR_TEXTURE },
{ "DASH_BAR_TEXTURE", ID_DASH_BAR_TEXTURE }, { "DASH_BAR_TEXTURE", ID_DASH_BAR_TEXTURE },
{ "SFX_BAR_TEXTURE", ID_SFX_BAR_TEXTURE }, { "SFX_BAR_TEXTURE", ID_SFX_BAR_TEXTURE },
{ "CROSSHAIR", ID_CROSSHAIR }, { "CROSSHAIR_GRAPHICS", ID_CROSSHAIR_GRAPHICS },
{ "SPEEDOMETER", ID_SPEEDOMETER }, { "SPEEDOMETER_GRAPHICS", ID_SPEEDOMETER_GRAPHICS },
{ "CUSTOM_BAR_GRAPHIC", ID_CUSTOM_BAR_GRAPHIC }, { "CUSTOM_BAR_GRAPHICS", ID_CUSTOM_BAR_GRAPHICS },
{ "CUSTOM_AMMO_GRAPHIC",ID_CUSTOM_AMMO_GRAPHIC }, { "CUSTOM_AMMO_GRAPHICS", ID_CUSTOM_AMMO_GRAPHICS }
{ "PANEL_BORDER", ID_PANEL_BORDER },
{ "PANEL_MIDDLE", ID_PANEL_MIDDLE },
{ "PANEL_CORNER", ID_PANEL_CORNER },
{ "PANEL_DIAGONAL", ID_PANEL_DIAGONAL },
{ "PANEL_STRIP", ID_PANEL_STRIP },
{ "PANEL_HALF_BORDER1", ID_PANEL_HALF_BORDER1 },
{ "PANEL_HALF_BORDER2", ID_PANEL_HALF_BORDER2 },
{ "PANEL_MIDDLE_CORNER", ID_PANEL_MIDDLE_CORNER }
}; };

View file

@ -0,0 +1,61 @@
# Paths to the .fbs and corresponding generated .h files.
$fbsFiles = @(
@{ fbs = "$PSScriptRoot/ten_itemdata.fbs"; h = "$PSScriptRoot/../flatbuffers/ten_itemdata_generated.h" },
@{ fbs = "$PSScriptRoot/ten_savegame.fbs"; h = "$PSScriptRoot/../flatbuffers/ten_savegame_generated.h" })
# Function to check if the .fbs file is newer than the .h file.
function IsFbsNewerThanH ($fbs, $h)
{
if (Test-Path $h)
{
$fbsLastWrite = (Get-Item $fbs).LastWriteTime
$hLastWrite = (Get-Item $h).LastWriteTime
return $fbsLastWrite -gt $hLastWrite
}
else
{
# If the .h file does not exist, treat the .fbs as newer.
return $true
}
}
# Check if any .fbs file is newer than its corresponding .h file.
$shouldGenerate = $false
foreach ($file in $fbsFiles)
{
if (IsFbsNewerThanH $file.fbs $file.h)
{
$shouldGenerate = $true
break
}
}
# If any .fbs file is newer, run the generation process.
if ($shouldGenerate)
{
Write-Host "Generating savegame code from flatbuffer schema..."
# Run flatc commands.
& "$PSScriptRoot\flatc.exe" --cpp --strict-json --unknown-json --gen-object-api --force-empty --force-empty-vectors --cpp-std c++17 --scoped-enums $fbsFiles[0].fbs
& "$PSScriptRoot\flatc.exe" --cpp --strict-json --unknown-json --gen-object-api --force-empty --force-empty-vectors --cpp-std c++17 --scoped-enums $fbsFiles[1].fbs
# Move generated header files.
Move-Item -Force "ten_itemdata_generated.h" $fbsFiles[0].h
Move-Item -Force "ten_savegame_generated.h" $fbsFiles[1].h
# Check for errors and output result.
if ($LASTEXITCODE -eq 0)
{
Write-Host "Savegame code generation completed successfully."
}
else
{
Write-Host "Error occurred during savegame code generation."
exit $LASTEXITCODE
}
}
else
{
Write-Host "Savegame schema files are unchanged. Skipping code generation."
}

View file

@ -139,32 +139,8 @@
</Command> </Command>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>SETLOCAL EnableDelayedExpansion <Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Specific\savegame\schema\generate_code.ps1"
SET SchemaDir=$(ProjectDir)Specific\savegame\schema
SET TimestampFile=$(TargetDir)flatbuffers.timestamp
FOR %%F IN ("%SchemaDir%\ten_itemdata.fbs" "%SchemaDir%\ten_savegame.fbs") DO (
SET "CurrentTimestamp=!CurrentTimestamp! %%~tF"
)
IF EXIST "%TimestampFile%" (
SET /P LastTimestamp=&lt;"%TimestampFile%"
)
SET CurrentTimestamp=%CurrentTimestamp: =%
SET LastTimestamp=%LastTimestamp: =%
IF "%CurrentTimestamp%" == "%LastTimestamp%" (
ECHO Skipping gen.bat, schema files are unchanged
) ELSE (
ECHO Generating savegame code from flatbuffer schema...
CD "%SchemaDir%"
CALL gen.bat
ECHO !CurrentTimestamp! &gt; "%TimestampFile%"
)
ENDLOCAL
CD "$(ProjectDir)..\Documentation\" CD "$(ProjectDir)..\Documentation\"
CALL compile.bat . CALL compile.bat .
@ -228,32 +204,8 @@ if not exist "%ScriptsDir%\Strings.lua" xcopy /Y "$(SolutionDir)Scripts\Strings.
</Command> </Command>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>SETLOCAL EnableDelayedExpansion <Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Specific\savegame\schema\generate_code.ps1"
SET SchemaDir=$(ProjectDir)Specific\savegame\schema
SET TimestampFile=$(TargetDir)flatbuffers.timestamp
FOR %%F IN ("%SchemaDir%\ten_itemdata.fbs" "%SchemaDir%\ten_savegame.fbs") DO (
SET "CurrentTimestamp=!CurrentTimestamp! %%~tF"
)
IF EXIST "%TimestampFile%" (
SET /P LastTimestamp=&lt;"%TimestampFile%"
)
SET CurrentTimestamp=%CurrentTimestamp: =%
SET LastTimestamp=%LastTimestamp: =%
IF "%CurrentTimestamp%" == "%LastTimestamp%" (
ECHO Skipping gen.bat, schema files are unchanged
) ELSE (
ECHO Generating savegame code from flatbuffer schema...
CD "%SchemaDir%"
CALL gen.bat
ECHO !CurrentTimestamp! &gt; "%TimestampFile%"
)
ENDLOCAL
CD "$(ProjectDir)..\Documentation\" CD "$(ProjectDir)..\Documentation\"
CALL compile.bat . CALL compile.bat .
@ -330,7 +282,9 @@ del "$(TargetDir)*.exp" /q
del "$(TargetDir)OIS_d.dll" /q</Command> del "$(TargetDir)OIS_d.dll" /q</Command>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>CD "$(ProjectDir)..\Documentation\" <Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
CD "$(ProjectDir)..\Documentation\"
CALL compile.bat . CALL compile.bat .
CD "$(ProjectDir)Specific\savegame\schema\" CD "$(ProjectDir)Specific\savegame\schema\"
@ -409,7 +363,9 @@ del "$(TargetDir)*.exp" /q
del "$(TargetDir)OIS_d.dll" /q</Command> del "$(TargetDir)OIS_d.dll" /q</Command>
</PostBuildEvent> </PostBuildEvent>
<PreBuildEvent> <PreBuildEvent>
<Command>CD "$(ProjectDir)..\Documentation\" <Command>powershell -ExecutionPolicy Bypass -File "$(SolutionDir)\Documentation\generate_objectlist.ps1"
CD "$(ProjectDir)..\Documentation\"
CALL compile.bat . CALL compile.bat .
CD "$(ProjectDir)Specific\savegame\schema\" CD "$(ProjectDir)Specific\savegame\schema\"