From f1ed2241cc72a9e2308fa10d61056d123b6f0421 Mon Sep 17 00:00:00 2001 From: Raildex Date: Mon, 14 Sep 2020 20:42:08 +0200 Subject: [PATCH 1/2] IDs for new Sprite Sequences --- TR5Main/Objects/objectslist.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TR5Main/Objects/objectslist.h b/TR5Main/Objects/objectslist.h index 8cadc1789..c82ff365c 100644 --- a/TR5Main/Objects/objectslist.h +++ b/TR5Main/Objects/objectslist.h @@ -973,6 +973,9 @@ typedef enum GAME_OBJECT_ID ID_SPARK_SPRITE, ID_DRIP_SPRITE, ID_EXPLOSION_SPRITES, + ID_MOTOR_BOAT_FOAM_SPRITES, + ID_RUBBER_BOAT_WAVE_SPRITES, + ID_SKIDOO_SNOW_TRAIL_SPRITES, ID_PANEL_BORDER = 1400, ID_PANEL_MIDDLE, From 9dc7ab6d189a1123840ec4c9e1fc7a03520270ab Mon Sep 17 00:00:00 2001 From: Raildex Date: Tue, 15 Sep 2020 08:10:38 +0200 Subject: [PATCH 2/2] Added Boat foam, Skidoo snow trail --- TR5Main/Game/control.cpp | 3 + TR5Main/Game/particle/SimpleParticle.cpp | 71 +++++++++++++++++++++ TR5Main/Game/particle/SimpleParticle.h | 26 ++++++++ TR5Main/Objects/TR2/Vehicles/boat.cpp | 6 +- TR5Main/Objects/TR2/Vehicles/snowmobile.cpp | 6 +- TR5Main/Renderer/RenderEnums.h | 4 +- TR5Main/Renderer/Renderer11.h | 1 + TR5Main/Renderer/Renderer11Draw.cpp | 1 + TR5Main/Renderer/Renderer11DrawEffect.cpp | 49 ++++++++------ TR5Main/Renderer/Renderer11Lara.cpp | 4 +- TR5Main/TR5Main.vcxproj | 2 + TR5Main/TR5Main.vcxproj.filters | 6 ++ 12 files changed, 154 insertions(+), 25 deletions(-) create mode 100644 TR5Main/Game/particle/SimpleParticle.cpp create mode 100644 TR5Main/Game/particle/SimpleParticle.h diff --git a/TR5Main/Game/control.cpp b/TR5Main/Game/control.cpp index fcb9fd05f..3c51681d0 100644 --- a/TR5Main/Game/control.cpp +++ b/TR5Main/Game/control.cpp @@ -44,11 +44,13 @@ #include #include "explosion.h" #include "drip.h" +#include "particle/SimpleParticle.h" using std::vector; using namespace T5M::Effects::Explosion; using namespace T5M::Effects::Spark; using namespace T5M::Effects::Smoke; +using namespace T5M::Effects; using T5M::Renderer::g_Renderer; short ShatterSounds[18][10] = @@ -548,6 +550,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode) UpdateLittleBeetles(); UpdateSparkParticles(); UpdateSmokeParticles(); + updateSimpleParticles(); T5M::Effects::Drip::UpdateDrips(); UpdateExplosionParticles(); UpdateShockwaves(); diff --git a/TR5Main/Game/particle/SimpleParticle.cpp b/TR5Main/Game/particle/SimpleParticle.cpp new file mode 100644 index 000000000..a2abff88b --- /dev/null +++ b/TR5Main/Game/particle/SimpleParticle.cpp @@ -0,0 +1,71 @@ +#include "framework.h" +#include "SimpleParticle.h" +#include "items.h" +#include "trmath.h" +#include + +namespace T5M::Effects{ + std::array simpleParticles; + SimpleParticle& getFreeSimpleParticle() + { + for(auto& p : simpleParticles) + if(!p.active) + return p; + return simpleParticles[0]; + } + void TriggerSnowmobileSnow(ITEM_INFO* snowMobile) + { + float angle = TO_RAD(snowMobile->pos.yRot); + const float angleVariation = frandMinMax(-10, 10) * RADIAN; + float x = std::sin(angle + angleVariation); + float z = std::cos(angle + angleVariation); + x = x* -500 + snowMobile->pos.xPos; + z = z* -500 + snowMobile->pos.zPos; + SimpleParticle& p = getFreeSimpleParticle(); + p = {}; + p.active = true; + p.life = frandMinMax(8, 14); + p.room = snowMobile->roomNumber; + p.ageRate = frandMinMax(0.9, 1.3); + float size = frandMinMax(96, 128); + p.worldPosition = {x,float(snowMobile->pos.yPos) - size/2,z}; + p.sequence = ID_SKIDOO_SNOW_TRAIL_SPRITES; + p.size = frandMinMax(256, 512); + + } + + void TriggerSpeedboatFoam(ITEM_INFO* boat) + { + float angle = TO_RAD(boat->pos.yRot); + const float angleVariation = frandMinMax(-10, 10) * RADIAN; + float x = std::sin(angle + angleVariation); + float z = std::cos(angle + angleVariation); + x = x * -700 + boat->pos.xPos; + z = z * -700 + boat->pos.zPos; + SimpleParticle& p = getFreeSimpleParticle(); + p = {}; + p.active = true; + p.life = frandMinMax(8, 14); + p.room = boat->roomNumber; + p.ageRate = frandMinMax(0.9, 1.3); + float size = frandMinMax(96, 128); + p.worldPosition = {x,float(boat->pos.yPos) - size / 2,z}; + p.sequence = ID_MOTOR_BOAT_FOAM_SPRITES; + p.size = frandMinMax(256, 512); + } + + void updateSimpleParticles() + { + for(auto& p : simpleParticles){ + if(!p.active) + continue; + p.age+= p.ageRate; + if(p.life < p.age) + p.active = false; + int numSprites = -Objects[p.sequence].nmeshes - 1; + float normalizedAge = p.age / p.life; + p.sprite = lerp(0, numSprites, normalizedAge); + } + } + +} diff --git a/TR5Main/Game/particle/SimpleParticle.h b/TR5Main/Game/particle/SimpleParticle.h new file mode 100644 index 000000000..d070dc78a --- /dev/null +++ b/TR5Main/Game/particle/SimpleParticle.h @@ -0,0 +1,26 @@ +#pragma once +#include +#include +#include +#include +#include +struct ITEM_INFO; +namespace T5M::Effects{ + struct SimpleParticle { + DirectX::SimpleMath::Vector3 worldPosition; + float size; + float age; + float ageRate; + float life; + int room; + unsigned int sprite; + GAME_OBJECT_ID sequence; + bool active; + }; + extern std::array simpleParticles; + + SimpleParticle& getFreeSimpleParticle(); + void TriggerSnowmobileSnow(ITEM_INFO* snowMobile); + void TriggerSpeedboatFoam(ITEM_INFO* boat); + void updateSimpleParticles(); +} \ No newline at end of file diff --git a/TR5Main/Objects/TR2/Vehicles/boat.cpp b/TR5Main/Objects/TR2/Vehicles/boat.cpp index 191115c95..d58d590b3 100644 --- a/TR5Main/Objects/TR2/Vehicles/boat.cpp +++ b/TR5Main/Objects/TR2/Vehicles/boat.cpp @@ -10,6 +10,7 @@ #include "input.h" #include "sound.h" #include +#include struct BOAT_INFO { @@ -80,7 +81,8 @@ enum BOAT_STATE void DoBoatWakeEffect(ITEM_INFO* boat) { - int c = phd_cos(boat->pos.yRot); + T5M::Effects::TriggerSpeedboatFoam(boat); + /*int c = phd_cos(boat->pos.yRot); int s = phd_sin(boat->pos.yRot); for (int i = 0; i < 3; i++) @@ -147,7 +149,7 @@ void DoBoatWakeEffect(ITEM_INFO* boat) spark->sSize = spark->size = ((GetRandomControl() & 3) + 16) * 4; spark->dSize = 2 * spark->size; spark->def = Objects[ID_DEFAULT_SPRITES].meshIndex + 17; - } + }*/ } void GetBoatGetOff(ITEM_INFO* boat) diff --git a/TR5Main/Objects/TR2/Vehicles/snowmobile.cpp b/TR5Main/Objects/TR2/Vehicles/snowmobile.cpp index 86a5faeec..9b27f9936 100644 --- a/TR5Main/Objects/TR2/Vehicles/snowmobile.cpp +++ b/TR5Main/Objects/TR2/Vehicles/snowmobile.cpp @@ -15,6 +15,7 @@ #include "level.h" #include "input.h" #include "sound.h" +#include using std::vector; @@ -313,7 +314,8 @@ bool SkidooCheckGetOff() void DoSnowEffect(ITEM_INFO* skidoo) { - SPARKS* spark = &Sparks[GetFreeSpark()]; + T5M::Effects::TriggerSnowmobileSnow(skidoo); + /*SPARKS* spark = &Sparks[GetFreeSpark()]; spark->on = 1; spark->sR = 64; spark->sG = 64; @@ -339,7 +341,7 @@ void DoSnowEffect(ITEM_INFO* skidoo) spark->rotAdd = (GetRandomControl() & 0x1F) - 16; spark->gravity = -spark->yVel >> 2; spark->sSize = spark->size = ((GetRandomControl() & 3) + 16) * 32; - spark->dSize = 2 * spark->size; + spark->dSize = 2 * spark->size;*/ } void SkidooAnimation(ITEM_INFO* skidoo, int collide, bool dead) diff --git a/TR5Main/Renderer/RenderEnums.h b/TR5Main/Renderer/RenderEnums.h index b3c549acf..00ce3e87e 100644 --- a/TR5Main/Renderer/RenderEnums.h +++ b/TR5Main/Renderer/RenderEnums.h @@ -43,7 +43,9 @@ typedef enum BLEND_MODES BLENDMODE_OPAQUE = 0, BLENDMODE_ALPHATEST = 1, BLENDMODE_ALPHABLEND = 2, - BLENDMODE_SUBTRACTIVE = 3 + BLENDMODE_SUBTRACTIVE = 3, + BLENDMODE_ADDITIVE = 4, + NUM_BLENDMODES }; typedef enum RENDERER_CULLMODE diff --git a/TR5Main/Renderer/Renderer11.h b/TR5Main/Renderer/Renderer11.h index c3e76b910..5a6c66526 100644 --- a/TR5Main/Renderer/Renderer11.h +++ b/TR5Main/Renderer/Renderer11.h @@ -600,6 +600,7 @@ namespace T5M::Renderer void drawExplosionParticles(); void renderToCubemap(const RenderTargetCube& dest,const Vector3& pos,int roomNumber); void drawLaraHolsters(bool transparent); + void drawSimpleParticles(); public: DirectX::SimpleMath::Matrix View; DirectX::SimpleMath::Matrix Projection; diff --git a/TR5Main/Renderer/Renderer11Draw.cpp b/TR5Main/Renderer/Renderer11Draw.cpp index 8eb44398d..c6f981083 100644 --- a/TR5Main/Renderer/Renderer11Draw.cpp +++ b/TR5Main/Renderer/Renderer11Draw.cpp @@ -2017,6 +2017,7 @@ namespace T5M::Renderer drawFires(); drawSmokes(); drawSmokeParticles(); + drawSimpleParticles(); drawSparkParticles(); drawExplosionParticles(); drawFootprints(); diff --git a/TR5Main/Renderer/Renderer11DrawEffect.cpp b/TR5Main/Renderer/Renderer11DrawEffect.cpp index 8a20673d8..f0d7652a6 100644 --- a/TR5Main/Renderer/Renderer11DrawEffect.cpp +++ b/TR5Main/Renderer/Renderer11DrawEffect.cpp @@ -17,6 +17,7 @@ #include "drip.h" #include "explosion.h" #include "Quad/RenderQuad.h" +#include extern BLOOD_STRUCT Blood[MAX_SPARKS_BLOOD]; extern FIRE_SPARKS FireSparks[MAX_SPARKS_FIRE]; @@ -126,7 +127,7 @@ namespace T5M::Renderer { 1.0f, 32.0f, Vector3::Distance(pos1, pos2), - BLENDMODE_ALPHABLEND, + BLENDMODE_ADDITIVE, d); } } @@ -142,7 +143,7 @@ namespace T5M::Renderer { Vector3(spark->x, spark->y, spark->z), Vector4(spark->shade / 255.0f, spark->shade / 255.0f, spark->shade / 255.0f, 1.0f), TO_RAD(spark->rotAng), spark->scalar, spark->size * 4.0f, spark->size * 4.0f, - BLENDMODE_ALPHABLEND); + BLENDMODE_ADDITIVE); } } } @@ -227,7 +228,7 @@ namespace T5M::Renderer { for (int i = 0; i < MAX_SPARKS_FIRE; i++) { FIRE_SPARKS* spark = &FireSparks[i]; if (spark->on) - addSpriteBillboard(&m_sprites[spark->def], Vector3(fire->x + spark->x, fire->y + spark->y, fire->z + spark->z), Vector4(spark->r / 255.0f, spark->g / 255.0f, spark->b / 255.0f, 1.0f), TO_RAD(spark->rotAng), spark->scalar, spark->size * 4.0f, spark->size * 4.0f, BLENDMODE_ALPHABLEND); + addSpriteBillboard(&m_sprites[spark->def], Vector3(fire->x + spark->x, fire->y + spark->y, fire->z + spark->z), Vector4(spark->r / 255.0f, spark->g / 255.0f, spark->b / 255.0f, 1.0f), TO_RAD(spark->rotAng), spark->scalar, spark->size * 4.0f, spark->size * 4.0f, BLENDMODE_ADDITIVE); } } } @@ -309,7 +310,7 @@ namespace T5M::Renderer { pos, Vector4(spark->r / 255.0f, spark->g / 255.0f, spark->b / 255.0f, 1.0f), TO_RAD(spark->rotAng), spark->scalar, spark->size, spark->size, - BLENDMODE_ALPHABLEND); + BLENDMODE_ADDITIVE); } else { Vector3 pos = Vector3(spark->x, spark->y, spark->z); Vector3 v = Vector3(spark->xVel, spark->yVel, spark->zVel); @@ -365,7 +366,7 @@ namespace T5M::Renderer { x2Outer += splash.x; z2Outer = outerRadius * cos(alpha * j * PI / 180); z2Outer += splash.z; - addSprite3D(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + splash.spriteSequenceStart + (int)splash.animationPhase], Vector3(xOuter, yOuter, zOuter), Vector3(x2Outer, yOuter, z2Outer), Vector3(x2Inner, yInner, z2Inner), Vector3(xInner, yInner, zInner), Vector4(color / 255.0f, color / 255.0f, color / 255.0f, 1.0f), 0, 1, 0, 0, BLENDMODE_ALPHABLEND); + addSprite3D(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + splash.spriteSequenceStart + (int)splash.animationPhase], Vector3(xOuter, yOuter, zOuter), Vector3(x2Outer, yOuter, z2Outer), Vector3(x2Inner, yInner, z2Inner), Vector3(xInner, yInner, zInner), Vector4(color / 255.0f, color / 255.0f, color / 255.0f, 1.0f), 0, 1, 0, 0, BLENDMODE_ADDITIVE); } } } @@ -375,7 +376,7 @@ namespace T5M::Renderer { for (int i = 0; i < MAX_BUBBLES; i++) { BUBBLE_STRUCT* bubble = &Bubbles[i]; if (bubble->active) - addSpriteBillboard(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + bubble->spriteNum], Vector3(bubble->worldPosition.x, bubble->worldPosition.y, bubble->worldPosition.z), bubble->color, bubble->rotation, 1.0f, bubble->size * 0.5f, bubble->size * 0.5f, BLENDMODE_ALPHABLEND); + addSpriteBillboard(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + bubble->spriteNum], Vector3(bubble->worldPosition.x, bubble->worldPosition.y, bubble->worldPosition.z), bubble->color, bubble->rotation, 1.0f, bubble->size * 0.5f, bubble->size * 0.5f, BLENDMODE_ADDITIVE); } } @@ -396,9 +397,9 @@ namespace T5M::Renderer { if (ripple->active) { float y = ripple->worldPos.y; if (ripple->isBillboard) { - addSpriteBillboard(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + ripple->SpriteID], ripple->worldPos, ripple->currentColor, ripple->rotation, 1, ripple->size, ripple->size, BLENDMODE_ALPHABLEND); + addSpriteBillboard(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + ripple->SpriteID], ripple->worldPos, ripple->currentColor, ripple->rotation, 1, ripple->size, ripple->size, BLENDMODE_ADDITIVE); } else { - addSpriteBillboardConstrainedLookAt(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + ripple->SpriteID], ripple->worldPos, ripple->currentColor, ripple->rotation, 1, ripple->size*2, ripple->size*2, BLENDMODE_ALPHABLEND, Vector3(0,-1,0)); + addSpriteBillboardConstrainedLookAt(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + ripple->SpriteID], ripple->worldPos, ripple->currentColor, ripple->rotation, 1, ripple->size*2, ripple->size*2, BLENDMODE_ADDITIVE, Vector3(0,-1,0)); //AddSprite3D(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + ripple->SpriteID], Vector3(x1, y, z2), Vector3(x2, y, z2), Vector3(x2, y, z1), Vector3(x1, y, z1), ripple->currentColor, 0.0f, 1.0f, ripple->size, ripple->size, BLENDMODE_ALPHABLEND); } } @@ -457,7 +458,7 @@ namespace T5M::Renderer { shockwave->g * shockwave->life / 255.0f / 16.0f, shockwave->b * shockwave->life / 255.0f / 16.0f, 1.0f), - 0, 1, 0, 0, BLENDMODE_ALPHABLEND); + 0, 1, 0, 0, BLENDMODE_ADDITIVE); p1 = p2; p4 = p3; @@ -475,7 +476,7 @@ namespace T5M::Renderer { Vector3(blood->x, blood->y, blood->z), Vector4(blood->shade / 255.0f, blood->shade * 0, blood->shade * 0, 1.0f), TO_RAD(blood->rotAng), 1.0f, blood->size * 8.0f, blood->size * 8.0f, - BLENDMODE_ALPHABLEND); + BLENDMODE_ADDITIVE); } } } @@ -723,7 +724,7 @@ namespace T5M::Renderer { dust->Life++; byte color = (dust->Life > 16 ? 32 - dust->Life : dust->Life) * 4; - addSpriteBillboard(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + SPR_UNDERWATERDUST], Vector3(dust->X, dust->Y, dust->Z), Vector4(color / 255.0f, color / 255.0f, color / 255.0f, 1.0f), 0.0f, 1.0f, 12, 12, BLENDMODE_ALPHABLEND); + addSpriteBillboard(&m_sprites[Objects[ID_DEFAULT_SPRITES].meshIndex + SPR_UNDERWATERDUST], Vector3(dust->X, dust->Y, dust->Z), Vector4(color / 255.0f, color / 255.0f, color / 255.0f, 1.0f), 0.0f, 1.0f, 12, 12, BLENDMODE_ADDITIVE); if (dust->Life >= 32) dust->Reset = true; @@ -751,18 +752,18 @@ namespace T5M::Renderer { m_context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); m_context->IASetInputLayout(m_inputLayout.Get()); m_context->IASetVertexBuffers(0, 1, quadVertexBuffer.GetAddressOf(), &stride, &offset); - for (int b = 0; b < 4; b++) { + for (int b = 0; b < NUM_BLENDMODES; b++) { BLEND_MODES currentBlendMode = (BLEND_MODES)b; int numSpritesToDraw = m_spritesToDraw.size(); int lastSprite = 0; switch (currentBlendMode) { case BLENDMODE_ALPHABLEND: - m_context->OMSetBlendState(m_states->Additive(), NULL, 0xFFFFFFFF); + m_context->OMSetBlendState(m_states->AlphaBlend(), NULL, 0xFFFFFFFF); break; case BLENDMODE_ALPHATEST: - m_context->OMSetBlendState(m_states->Additive(), NULL, 0xFFFFFFFF); + m_context->OMSetBlendState(m_states->AlphaBlend(), NULL, 0xFFFFFFFF); break; case BLENDMODE_OPAQUE: @@ -770,7 +771,9 @@ namespace T5M::Renderer { break; case BLENDMODE_SUBTRACTIVE: m_context->OMSetBlendState(m_subtractiveBlendState.Get(), NULL, 0xFFFFFFFF); - + break; + case BLENDMODE_ADDITIVE: + m_context->OMSetBlendState(m_states->Additive(), NULL, 0xFFFFFFFF); break; } @@ -1176,7 +1179,7 @@ namespace T5M::Renderer { for (int i = 0; i < SmokeParticles.size(); i++) { SmokeParticle& s = SmokeParticles[i]; if (!s.active) continue; - addSpriteBillboard(&m_sprites[Objects[ID_SMOKE_SPRITES].meshIndex + s.sprite], s.position, s.color, s.rotation, 1.0f, s.size, s.size, BLENDMODE_ALPHABLEND); + addSpriteBillboard(&m_sprites[Objects[ID_SMOKE_SPRITES].meshIndex + s.sprite], s.position, s.color, s.rotation, 1.0f, s.size, s.size, BLENDMODE_ADDITIVE); } } @@ -1190,7 +1193,7 @@ namespace T5M::Renderer { if (!s.active) continue; Vector3 v; s.velocity.Normalize(v); - addSpriteBillboardConstrained(&m_sprites[Objects[ID_SPARK_SPRITE].meshIndex], s.pos, s.color, 0, 1, s.width, s.height, BLENDMODE_ALPHABLEND, v); + addSpriteBillboardConstrained(&m_sprites[Objects[ID_SPARK_SPRITE].meshIndex], s.pos, s.color, 0, 1, s.width, s.height, BLENDMODE_ADDITIVE, v); } } @@ -1204,7 +1207,7 @@ namespace T5M::Renderer { if (!d.active) continue; Vector3 v; d.velocity.Normalize(v); - addSpriteBillboardConstrained(&m_sprites[Objects[ID_DRIP_SPRITE].meshIndex], d.pos, d.color, 0, 1, DRIP_WIDTH, d.height, BLENDMODE_ALPHABLEND, v); + addSpriteBillboardConstrained(&m_sprites[Objects[ID_DRIP_SPRITE].meshIndex], d.pos, d.color, 0, 1, DRIP_WIDTH, d.height, BLENDMODE_ADDITIVE, v); } } @@ -1215,7 +1218,15 @@ namespace T5M::Renderer { for (int i = 0; i < explosionParticles.size(); i++) { ExplosionParticle& e = explosionParticles[i]; if (!e.active) continue; - addSpriteBillboard(&m_sprites[Objects[ID_EXPLOSION_SPRITES].meshIndex + e.sprite], e.pos, e.tint, e.rotation, 1.0f, e.size, e.size, BLENDMODE_ALPHABLEND); + addSpriteBillboard(&m_sprites[Objects[ID_EXPLOSION_SPRITES].meshIndex + e.sprite], e.pos, e.tint, e.rotation, 1.0f, e.size, e.size, BLENDMODE_ADDITIVE); + } + } + void Renderer11::drawSimpleParticles() + { + using namespace T5M::Effects; + for(SimpleParticle& s : simpleParticles){ + if(!s.active) continue; + addSpriteBillboard(&m_sprites[Objects[s.sequence].meshIndex + s.sprite], s.worldPosition, Vector4(1,1,1,1), 0, 1.0f, s.size, s.size/2, BLENDMODE_ALPHATEST); } } } diff --git a/TR5Main/Renderer/Renderer11Lara.cpp b/TR5Main/Renderer/Renderer11Lara.cpp index 770fa950f..b8a6fdb84 100644 --- a/TR5Main/Renderer/Renderer11Lara.cpp +++ b/TR5Main/Renderer/Renderer11Lara.cpp @@ -377,4 +377,6 @@ void Renderer11::drawLaraHolsters(bool transparent) m_numDrawCalls++; } } -} \ No newline at end of file +} + + diff --git a/TR5Main/TR5Main.vcxproj b/TR5Main/TR5Main.vcxproj index 5e5502a42..114000553 100644 --- a/TR5Main/TR5Main.vcxproj +++ b/TR5Main/TR5Main.vcxproj @@ -152,6 +152,7 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts" + @@ -448,6 +449,7 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts" + diff --git a/TR5Main/TR5Main.vcxproj.filters b/TR5Main/TR5Main.vcxproj.filters index ed0aeec81..11a18b20f 100644 --- a/TR5Main/TR5Main.vcxproj.filters +++ b/TR5Main/TR5Main.vcxproj.filters @@ -915,6 +915,9 @@ File di intestazione + + File di intestazione + @@ -1676,6 +1679,9 @@ File di origine + + File di origine +