Use separate shadow modes for different kinds of objects

This commit is contained in:
Lwmte 2022-07-17 18:43:40 +03:00
parent 9a32b99ae8
commit f768fd03bd
16 changed files with 156 additions and 148 deletions

View file

@ -789,8 +789,10 @@ void GuiController::HandleDisplaySettingsInput(bool pause)
case 2:
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
CurrentSettings.conf.ShadowMode--;
if (CurrentSettings.conf.ShadowMode < SHADOW_NONE) CurrentSettings.conf.ShadowMode = SHADOW_ALL;
if (CurrentSettings.conf.ShadowType == ShadowMode::None)
CurrentSettings.conf.ShadowType = ShadowMode::All;
else
CurrentSettings.conf.ShadowType = ShadowMode(int(CurrentSettings.conf.ShadowType) - 1);
break;
case 3:
@ -822,8 +824,10 @@ void GuiController::HandleDisplaySettingsInput(bool pause)
case 2:
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
CurrentSettings.conf.ShadowMode++;
if (CurrentSettings.conf.ShadowMode > SHADOW_ALL) CurrentSettings.conf.ShadowMode = SHADOW_NONE;
if (CurrentSettings.conf.ShadowType == ShadowMode::All)
CurrentSettings.conf.ShadowType = ShadowMode::None;
else
CurrentSettings.conf.ShadowType = ShadowMode(int(CurrentSettings.conf.ShadowType) + 1);
break;
case 3:

View file

@ -410,7 +410,7 @@ void StartTraps()
auto* object = &Objects[ID_DARTS];
if (object->loaded)
{
object->castsShadow = true;
object->shadowType = ShadowMode::All;
//object->drawRoutine = DrawDart;
object->collision = ObjectCollision;
object->control = DartControl;

View file

@ -29,7 +29,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWolf;
obj->control = WolfControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 6;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 375;
@ -49,7 +49,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->control = BearControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 500;
@ -70,7 +70,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->HitPoints = 22;
obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->pivotLength = 250;
obj->radius = 340;
obj->intelligent = true;
@ -87,7 +87,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBigRat;
obj->control = BigRatControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 5;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -109,7 +109,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->hitEffect = HIT_BLOOD;
obj->control = NatlaControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 400;
obj->radius = 204;
obj->intelligent = true;
@ -126,7 +126,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = GiantMutantControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 500;
obj->hitEffect = HIT_BLOOD;
obj->radius = 341;
@ -148,7 +148,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->control = DoppelgangerControl;
//obj->drawRoutine = DrawEvilLara;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 1000;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -164,7 +164,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->control = CentaurControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 120;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 400;

View file

@ -42,7 +42,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = SharkControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -63,7 +63,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = BarracudaControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 12;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -85,7 +85,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseEagle;
obj->control = EagleControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD;
obj->radius = 204;
@ -104,7 +104,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseEagle;
obj->control = EagleControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 15;
obj->hitEffect = HIT_BLOOD;
obj->radius = 204;
@ -124,7 +124,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->HitPoints = 5;
obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->pivotLength = 50;
obj->radius = 204;
obj->intelligent = true;
@ -142,7 +142,7 @@ static void StartEntity(ObjectInfo* obj)
obj->control = YetiControl;
obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->radius = 128;
obj->pivotLength = 100;
obj->intelligent = true;
@ -161,7 +161,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = SilencerControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD;
obj->biteOffset = 0;
@ -192,7 +192,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = SilencerControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD;
obj->biteOffset = 0;
@ -223,7 +223,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = SilencerControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD;
obj->biteOffset = 0;
@ -245,7 +245,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWorkerShotgun;
obj->collision = CreatureCollision;
obj->control = WorkerShotgunControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -266,7 +266,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWorkerMachineGun;
obj->collision = CreatureCollision;
obj->control = WorkerMachineGunControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -287,7 +287,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = SmallSpiderControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 5;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 0;
@ -305,7 +305,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = BigSpiderControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 40;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 0;
@ -323,7 +323,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = WorkerDualGunControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 150;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -343,7 +343,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = BirdMonsterControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 200;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -362,7 +362,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWorkerFlamethrower;
obj->collision = CreatureCollision;
obj->control = WorkerFlamethrower;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -382,7 +382,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = KnifeThrowerControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 60;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -407,7 +407,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = MercenaryUziControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 45;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -427,7 +427,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = MercenaryAutoPistolControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -457,7 +457,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = MercenaryAutoPistolControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -477,7 +477,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = MonkControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -496,7 +496,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision;
obj->control = MonkControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -516,7 +516,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->control = SwordGuardianControl;
//obj->drawRoutine = DrawStatue;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 80;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -539,7 +539,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->control = SpearGuardianControl;
//obj->drawRoutine = DrawStatue;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -603,7 +603,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->collision = SkidooManCollision;
//obj->drawRoutine = DrawSkidoo; // TODO: recreate renderer for skidoo
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -669,7 +669,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveFlags = true;
obj->savePosition = true;
obj->hitEffect = HIT_RICOCHET;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
obj = &Objects[ID_SNOWMOBILE];
@ -682,7 +682,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveFlags = true;
obj->savePosition = true;
obj->hitEffect = HIT_RICOCHET;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
}

View file

@ -44,7 +44,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->control = TonyControl;
obj->drawRoutine = S_DrawTonyBoss;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -64,7 +64,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = TigerControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -83,7 +83,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCobra;
obj->control = CobraControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -103,7 +103,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = RaptorControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD;
obj->radius = 341;
@ -125,7 +125,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = TribemanAxeControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -145,7 +145,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = TribemanDartsControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -167,7 +167,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->HitPoints = 800;
obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->pivotLength = 1800;
obj->radius = 512;
obj->intelligent = true;
@ -185,7 +185,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = ScubaControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD;
obj->radius = 340;
@ -215,7 +215,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = FlameThrowerControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 36;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -237,7 +237,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseMonkey;
obj->control = MonkeyControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -258,7 +258,7 @@ static void StartEntity(ObjectInfo* obj)
{
obj->control = MPGunControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -281,7 +281,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseMPStick;
obj->control = MPStickControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -305,7 +305,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->control = ShivaControl;
//obj->drawRoutine = DrawStatue;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 0;
@ -326,7 +326,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->control = LondonBossControl;
obj->drawRoutine = S_DrawLondonBoss;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->pivotLength = 50;
obj->HitPoints = 300;
obj->hitEffect = HIT_BLOOD;
@ -347,7 +347,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCivvy;
obj->control = CivvyControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 15;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -393,7 +393,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true;
obj->saveAnim = true;
obj->saveFlags = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
obj = &Objects[ID_RUBBER_BOAT];
@ -407,7 +407,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true;
obj->saveFlags = true;
obj->saveAnim = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
@ -421,7 +421,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveAnim = true;
obj->saveFlags = true;
obj->savePosition = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
@ -434,7 +434,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveAnim = true;
obj->saveFlags = true;
obj->savePosition = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
@ -443,11 +443,11 @@ static void StartVehicles(ObjectInfo* obj)
{
obj->initialise = BigGunInitialise;
obj->collision = BigGunCollision;
// obj->draw_routine = BigGunDraw;
obj->hitEffect = HIT_RICOCHET;
obj->savePosition = true;
obj->saveFlags = true;
obj->saveAnim = true;
obj->shadowType = ShadowMode::Lara;
}
obj = &Objects[ID_UPV];
@ -456,12 +456,11 @@ static void StartVehicles(ObjectInfo* obj)
obj->initialise = UPVInitialise;
obj->control = UPVEffects;
obj->collision = UPVPlayerCollision;
// obj->drawRoutine = SubDraw;
obj->hitEffect = HIT_RICOCHET;
obj->saveAnim = true;
obj->saveFlags = true;
obj->savePosition = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
}

View file

@ -86,7 +86,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSmallScorpion;
obj->control = SmallScorpionControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20;
@ -105,7 +105,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseScorpion;
obj->control = ScorpionControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 80;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -124,7 +124,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseHammerhead;
obj->control = HammerheadControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20;
@ -144,7 +144,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWildBoar;
obj->control = WildBoarControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -168,7 +168,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseTr4Dog;
obj->collision = CreatureCollision;
obj->control = Tr4DogControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 18;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -188,7 +188,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBat;
obj->control = BatControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 5;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 10;
@ -207,7 +207,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseAhmet;
obj->control = AhmetControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 80;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 300;
@ -229,7 +229,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaddy;
obj->control = BaddyControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -255,7 +255,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaddy;
obj->control = BaddyControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -281,7 +281,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSas;
obj->control = SasControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -305,7 +305,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseMummy;
obj->control = MummyControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 15;
obj->hitEffect = HIT_SMOKE;
obj->radius = 170;
@ -330,7 +330,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision;
obj->HitPoints = 15;
obj->hitEffect = HIT_SMOKE;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->pivotLength = 50;
obj->radius = 128;
obj->explodableMeshbits = 0xA00;
@ -349,7 +349,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseKnightTemplar;
obj->control = KnightTemplarControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 15;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50;
@ -371,7 +371,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBigBeetle;
obj->control = BigBeetleControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -391,7 +391,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSetha;
obj->control = SethaControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 500;
obj->hitEffect = HIT_NONE;
obj->pivotLength = 50;
@ -411,7 +411,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseDemigod;
obj->control = DemigodControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 200;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50;
@ -434,7 +434,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseDemigod;
obj->control = DemigodControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 200;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50;
@ -455,7 +455,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseDemigod;
obj->control = DemigodControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 200;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50;
@ -489,7 +489,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseTroops;
obj->control = TroopsControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -510,7 +510,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSentryGun;
obj->control = SentryGunControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->undead = true;
obj->HitPoints = 30;
obj->hitEffect = HIT_RICOCHET;
@ -535,7 +535,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseHarpy;
obj->control = HarpyControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 60;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50;
@ -553,7 +553,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseGuide;
obj->control = GuideControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = NOT_TARGETABLE;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0;
@ -574,7 +574,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCrocodile;
obj->control = CrocodileControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 36;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 300;
@ -598,7 +598,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSphinx;
obj->control = SphinxControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 1000;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 500;
@ -626,7 +626,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseHorseman;
obj->control = HorsemanControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 25;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 500;
@ -646,7 +646,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaboon;
obj->control = BaboonControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -665,7 +665,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaboon;
obj->control = BaboonControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -687,7 +687,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaboon;
obj->control = BaboonControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200;
@ -709,7 +709,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = TEN::Entities::TR4::InitialiseCrocgod;
obj->control = TEN::Entities::TR4::CrocgodControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = NOT_TARGETABLE;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50;
@ -815,7 +815,7 @@ static void StartEntity(ObjectInfo* obj)
obj->intelligent = true;
obj->saveHitpoints = true;
obj->pivotLength = 500;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->radius = 512;
obj->HitPoints = 40;
obj->zoneType = ZONE_BASIC;
@ -833,7 +833,7 @@ static void StartEntity(ObjectInfo* obj)
obj->control = VonCroyControl;
obj->collision = CreatureCollision;
obj->pivotLength = 0;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 15;
obj->explodableMeshbits = 0x200000;
obj->intelligent = true;
@ -1162,7 +1162,7 @@ static void StartTrap(ObjectInfo* obj)
obj->control = LaraDoubleControl;
obj->collision = CreatureCollision;
obj->hitEffect = HIT_SMOKE;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 1000;
obj->pivotLength = 50;
obj->radius = 128;
@ -1194,7 +1194,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true;
obj->saveAnim = true;
obj->saveFlags = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
@ -1208,7 +1208,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true;
obj->saveAnim = true;
obj->saveFlags = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
}
}

View file

@ -73,7 +73,7 @@ static void StartEntity(ObjectInfo *obj)
if (obj->loaded)
{
obj->initialise = InitialiseLaraLoad;
obj->castsShadow = true;
obj->shadowType = ShadowMode::Lara;
obj->HitPoints = 1000;
obj->saveAnim = true;
obj->saveFlags = true;
@ -88,7 +88,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->control = GuardControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -112,7 +112,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->collision = CreatureCollision;
obj->control = GuardControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -140,7 +140,7 @@ static void StartEntity(ObjectInfo *obj)
obj->collision = CreatureCollision;
obj->control = GuardControl;
obj->pivotLength = 50;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->radius = 102;
@ -170,7 +170,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->collision = CreatureCollision;
obj->control = GuardControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -200,7 +200,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->collision = CreatureCollision;
obj->control = GuardControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -230,7 +230,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->control = GuardControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -260,7 +260,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->control = GuardControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -292,7 +292,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard;
obj->control = GuardControl;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -316,7 +316,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseSubmarine;
obj->collision = CreatureCollision;
obj->control = SubmarineControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 200;
@ -339,7 +339,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseChef;
obj->control = ControlChef;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 35;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -364,7 +364,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLion;
obj->collision = CreatureCollision;
obj->control = LionControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -385,7 +385,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseDoberman;
obj->collision = CreatureCollision;
obj->control = DobermanControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 18;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -405,7 +405,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseTr5Dog;
obj->collision = CreatureCollision;
obj->control = Tr5DogControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -425,7 +425,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseReaper;
obj->collision = CreatureCollision;
obj->control = ReaperControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 10;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -446,7 +446,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseMafia2;
obj->collision = CreatureCollision;
obj->control = Mafia2Control;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 26;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -473,7 +473,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLarson;
obj->collision = CreatureCollision;
obj->control = LarsonControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 60;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -497,7 +497,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLarson;
obj->collision = CreatureCollision;
obj->control = LarsonControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 60;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -521,7 +521,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseCyborg;
obj->collision = CreatureCollision;
obj->control = CyborgControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 50;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50;
@ -548,7 +548,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseSniper;
obj->collision = CreatureCollision;
obj->control = SniperControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 35;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -572,7 +572,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuardLaser;
obj->collision = CreatureCollision;
//obj->control = GuardControlLaser;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 24;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50;
@ -597,7 +597,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseHydra;
obj->collision = CreatureCollision;
obj->control = HydraControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 30;
obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50;
@ -623,7 +623,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseImp;
obj->collision = CreatureCollision;
obj->control = ImpControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 12;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20;
@ -649,7 +649,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLightingGuide;
//obj->control = ControlLightingGuide;
obj->drawRoutine = NULL;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->radius = 256;
obj->HitPoints = 16;
obj->pivotLength = 20;
@ -672,7 +672,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseBrownBeast;
obj->collision = CreatureCollision;
obj->control = ControlBrowsBeast;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20;
@ -696,7 +696,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLagoonWitch;
obj->collision = CreatureCollision;
obj->control = LagoonWitchControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20;
@ -722,7 +722,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseInvisibleGhost;
obj->collision = CreatureCollision;
obj->control = InvisibleGhostControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 20;
@ -773,7 +773,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGladiator;
obj->control = ControlGladiator;
obj->collision = CreatureCollision;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50;
@ -799,7 +799,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseRomanStatue;
obj->collision = CreatureCollision;
obj->control = RomanStatueControl;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 300;
obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50;
@ -871,7 +871,7 @@ static void StartEntity(ObjectInfo *obj)
obj->saveAnim = true;
obj->zoneType = ZONE_BASIC;
obj->hitEffect = HIT_RICOCHET;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
obj->HitPoints = 100;
}
}
@ -1114,7 +1114,7 @@ static void StartTrap(ObjectInfo *obj)
obj->hitEffect = HIT_RICOCHET;
obj->savePosition = true;
obj->saveFlags = true;
obj->castsShadow = true;
obj->shadowType = ShadowMode::All;
}
obj = &Objects[ID_CLASSIC_ROLLING_BALL];

View file

@ -138,7 +138,7 @@ namespace TEN::Renderer
std::vector<Matrix> BindPoseTransforms;
std::vector<RendererBone*> LinearizedBones;
bool DoNotDraw;
bool CastShadow;
ShadowMode ShadowType;
bool HasDataInBucket[NUM_BUCKETS];
bool HasDataInAnimatedBucket[NUM_BUCKETS];

View file

@ -381,7 +381,7 @@ namespace TEN::Renderer
RendererObject &moveable = *m_moveableObjects[MoveablesIds[i]];
moveable.Id = MoveablesIds[i];
moveable.DoNotDraw = (obj->drawRoutine == nullptr);
moveable.CastShadow = obj->castsShadow;
moveable.ShadowType = obj->shadowType;
for (int j = 0; j < obj->nmeshes; j++)
{

View file

@ -59,7 +59,7 @@ namespace TEN::Renderer
//Skip everything thats not "alive" or is not a vehicle
if (!Objects[nativeItem.ObjectNumber].castsShadow)
if (Objects[nativeItem.ObjectNumber].shadowType == ShadowMode::None)
continue;
if (i->ObjectNumber == ID_LARA)
@ -126,11 +126,15 @@ namespace TEN::Renderer
void Renderer11::RenderShadowMap(RendererItem* item, RenderView& renderView)
{
// No dynamic shadows are rendered, bypass completely
if (g_Configuration.ShadowMode == SHADOW_MODES::SHADOW_NONE)
if (g_Configuration.ShadowType == ShadowMode::None)
return;
// Doesn't cast shadow
if (m_moveableObjects[item->ObjectNumber].value().ShadowType == ShadowMode::None)
return;
// Only render for Lara if such setting is active
if (g_Configuration.ShadowMode == SHADOW_MODES::SHADOW_LARA && item->ObjectNumber != ID_LARA)
if (g_Configuration.ShadowType == ShadowMode::Lara && m_moveableObjects[item->ObjectNumber].value().ShadowType != ShadowMode::Lara)
return;
// No shadow light found
@ -1654,7 +1658,6 @@ namespace TEN::Renderer
for (auto room : renderView.roomsToDraw)
for (auto itemToDraw : room->ItemsToDraw)
if (m_moveableObjects[itemToDraw->ObjectNumber].value().CastShadow)
RenderShadowMap(itemToDraw, renderView);
}

View file

@ -98,8 +98,8 @@ namespace TEN::Renderer
auto screenResolution = g_Configuration.SupportedScreenResolutions[g_Gui.GetCurrentSettings().selectedScreenResolution];
sprintf(stringBuffer, "%d x %d", screenResolution.x, screenResolution.y);
auto* shadowMode = g_Gui.GetCurrentSettings().conf.ShadowMode ?
(g_Gui.GetCurrentSettings().conf.ShadowMode == SHADOW_LARA ? STRING_SHADOWS_PLAYER : STRING_SHADOWS_ALL) : STRING_SHADOWS_NONE;
auto* shadowMode = g_Gui.GetCurrentSettings().conf.ShadowType != ShadowMode::None ?
(g_Gui.GetCurrentSettings().conf.ShadowType == ShadowMode::Lara ? STRING_SHADOWS_PLAYER : STRING_SHADOWS_ALL) : STRING_SHADOWS_NONE;
switch (menu)
{

View file

@ -62,11 +62,11 @@ enum CULL_MODES
CULL_MODE_UNSET = -1
};
enum SHADOW_MODES
enum class ShadowMode
{
SHADOW_NONE,
SHADOW_LARA,
SHADOW_ALL
None,
Lara,
All
};
enum LIGHT_MODES

View file

@ -89,7 +89,7 @@ BOOL CALLBACK DialogProc(HWND handle, UINT msg, WPARAM wParam, LPARAM lParam)
g_Configuration.EnableVolumetricFog = true;
SendDlgItemMessage(handle, IDC_VOLUMETRIC_FOG, BM_SETCHECK, 1, 0);
g_Configuration.ShadowMode = SHADOW_LARA;
g_Configuration.ShadowType = ShadowMode::Lara;
SendDlgItemMessage(handle, IDC_SHADOWS, BM_SETCHECK, 1, 0);
g_Configuration.EnableCaustics = true;
@ -114,7 +114,7 @@ BOOL CALLBACK DialogProc(HWND handle, UINT msg, WPARAM wParam, LPARAM lParam)
case IDOK:
// Get values from dialog components
g_Configuration.Windowed = (SendDlgItemMessage(handle, IDC_WINDOWED, BM_GETCHECK, 0, 0));
g_Configuration.ShadowMode = (int)(SendDlgItemMessage(handle, IDC_SHADOWS, BM_GETCHECK, 0, 0));
g_Configuration.ShadowType = (ShadowMode)(SendDlgItemMessage(handle, IDC_SHADOWS, BM_GETCHECK, 0, 0));
g_Configuration.EnableCaustics = (SendDlgItemMessage(handle, IDC_CAUSTICS, BM_GETCHECK, 0, 0));
g_Configuration.EnableVolumetricFog = (SendDlgItemMessage(handle, IDC_VOLUMETRIC_FOG, BM_GETCHECK, 0, 0));
g_Configuration.EnableSound = (SendDlgItemMessage(handle, IDC_ENABLE_SOUNDS, BM_GETCHECK, 0, 0));
@ -187,7 +187,7 @@ bool SaveConfiguration()
return false;
}
if (SetDWORDRegKey(rootKey, REGKEY_SHADOWS, g_Configuration.ShadowMode) != ERROR_SUCCESS)
if (SetDWORDRegKey(rootKey, REGKEY_SHADOWS, DWORD(g_Configuration.ShadowType)) != ERROR_SUCCESS)
{
RegCloseKey(rootKey);
return false;
@ -297,7 +297,7 @@ void InitDefaultConfiguration()
g_Configuration.SoundDevice = 1;
g_Configuration.EnableReverb = true;
g_Configuration.EnableCaustics = true;
g_Configuration.ShadowMode = SHADOW_LARA;
g_Configuration.ShadowType = ShadowMode::Lara;
g_Configuration.EnableSound = true;
g_Configuration.EnableVolumetricFog = true;
g_Configuration.MusicVolume = 100;
@ -449,7 +449,7 @@ bool LoadConfiguration()
g_Configuration.Width = screenWidth;
g_Configuration.Height = screenHeight;
g_Configuration.Windowed = windowed;
g_Configuration.ShadowMode = shadowMode;
g_Configuration.ShadowType = ShadowMode(shadowMode);
g_Configuration.ShadowMaxBlobs = shadowBlobs;
g_Configuration.EnableCaustics = caustics;
g_Configuration.EnableVolumetricFog = volumetricFog;

View file

@ -2,6 +2,7 @@
#include "Specific/input.h"
#include "Specific/trmath.h"
#include "Renderer/Renderer11Enums.h"
#define REGKEY_ROOT "Software\\TombEngine\\TombEngine"
@ -39,7 +40,7 @@ struct GameConfiguration
bool EnableCaustics;
bool EnableVolumetricFog;
int ShadowMode;
ShadowMode ShadowType;
int ShadowMapSize = 1024;
int ShadowMaxBlobs = 16;

View file

@ -402,7 +402,7 @@ void InitialiseObjects()
obj->drawRoutine = DrawAnimatingItem;
obj->pivotLength = 0;
obj->radius = DEFAULT_RADIUS;
obj->castsShadow = false;
obj->shadowType = ShadowMode::None;
obj->HitPoints = NOT_TARGETABLE;
obj->hitEffect = HIT_NONE;
obj->explodableMeshbits = 0;

View file

@ -1,6 +1,7 @@
#pragma once
#include "Objects/objectslist.h"
#include "Specific/phd_global.h"
#include "Renderer/Renderer11Enums.h"
struct ItemInfo;
struct CollisionInfo;
@ -47,7 +48,7 @@ struct ObjectInfo
short HitPoints;
short pivotLength;
short radius;
bool castsShadow;
ShadowMode shadowType;
short biteOffset;
bool loaded;
bool intelligent;