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

View file

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

View file

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

View file

@ -42,7 +42,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = SharkControl; obj->control = SharkControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -63,7 +63,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = BarracudaControl; obj->control = BarracudaControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 12; obj->HitPoints = 12;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -85,7 +85,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseEagle; obj->initialise = InitialiseEagle;
obj->control = EagleControl; obj->control = EagleControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 20; obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 204; obj->radius = 204;
@ -104,7 +104,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseEagle; obj->initialise = InitialiseEagle;
obj->control = EagleControl; obj->control = EagleControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 15; obj->HitPoints = 15;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 204; obj->radius = 204;
@ -124,7 +124,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->HitPoints = 5; obj->HitPoints = 5;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->pivotLength = 50; obj->pivotLength = 50;
obj->radius = 204; obj->radius = 204;
obj->intelligent = true; obj->intelligent = true;
@ -142,7 +142,7 @@ static void StartEntity(ObjectInfo* obj)
obj->control = YetiControl; obj->control = YetiControl;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->radius = 128; obj->radius = 128;
obj->pivotLength = 100; obj->pivotLength = 100;
obj->intelligent = true; obj->intelligent = true;
@ -161,7 +161,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SilencerControl; obj->control = SilencerControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->biteOffset = 0; obj->biteOffset = 0;
@ -192,7 +192,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SilencerControl; obj->control = SilencerControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->biteOffset = 0; obj->biteOffset = 0;
@ -223,7 +223,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SilencerControl; obj->control = SilencerControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->biteOffset = 0; obj->biteOffset = 0;
@ -245,7 +245,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWorkerShotgun; obj->initialise = InitialiseWorkerShotgun;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = WorkerShotgunControl; obj->control = WorkerShotgunControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -266,7 +266,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWorkerMachineGun; obj->initialise = InitialiseWorkerMachineGun;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = WorkerMachineGunControl; obj->control = WorkerMachineGunControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 20; obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -287,7 +287,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SmallSpiderControl; obj->control = SmallSpiderControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 5; obj->HitPoints = 5;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -305,7 +305,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = BigSpiderControl; obj->control = BigSpiderControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -323,7 +323,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = WorkerDualGunControl; obj->control = WorkerDualGunControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 150; obj->HitPoints = 150;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -343,7 +343,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = BirdMonsterControl; obj->control = BirdMonsterControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 200; obj->HitPoints = 200;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -362,7 +362,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWorkerFlamethrower; obj->initialise = InitialiseWorkerFlamethrower;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = WorkerFlamethrower; obj->control = WorkerFlamethrower;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 20; obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -382,7 +382,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = KnifeThrowerControl; obj->control = KnifeThrowerControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 60; obj->HitPoints = 60;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -407,7 +407,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = MercenaryUziControl; obj->control = MercenaryUziControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 45; obj->HitPoints = 45;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -427,7 +427,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = MercenaryAutoPistolControl; obj->control = MercenaryAutoPistolControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 50; obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -457,7 +457,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = MercenaryAutoPistolControl; obj->control = MercenaryAutoPistolControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 50; obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -477,7 +477,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = MonkControl; obj->control = MonkControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 50; obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -496,7 +496,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCreature; obj->initialise = InitialiseCreature;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = MonkControl; obj->control = MonkControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 50; obj->HitPoints = 50;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -516,7 +516,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SwordGuardianControl; obj->control = SwordGuardianControl;
//obj->drawRoutine = DrawStatue; //obj->drawRoutine = DrawStatue;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 80; obj->HitPoints = 80;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -539,7 +539,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SpearGuardianControl; obj->control = SpearGuardianControl;
//obj->drawRoutine = DrawStatue; //obj->drawRoutine = DrawStatue;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -603,7 +603,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->collision = SkidooManCollision; obj->collision = SkidooManCollision;
//obj->drawRoutine = DrawSkidoo; // TODO: recreate renderer for skidoo //obj->drawRoutine = DrawSkidoo; // TODO: recreate renderer for skidoo
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -669,7 +669,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveFlags = true; obj->saveFlags = true;
obj->savePosition = true; obj->savePosition = true;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
} }
obj = &Objects[ID_SNOWMOBILE]; obj = &Objects[ID_SNOWMOBILE];
@ -682,7 +682,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveFlags = true; obj->saveFlags = true;
obj->savePosition = true; obj->savePosition = true;
obj->hitEffect = HIT_RICOCHET; 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->collision = CreatureCollision;
obj->control = TonyControl; obj->control = TonyControl;
obj->drawRoutine = S_DrawTonyBoss; obj->drawRoutine = S_DrawTonyBoss;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -64,7 +64,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = TigerControl; obj->control = TigerControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -83,7 +83,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCobra; obj->initialise = InitialiseCobra;
obj->control = CobraControl; obj->control = CobraControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 8; obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -103,7 +103,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = RaptorControl; obj->control = RaptorControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 341; obj->radius = 341;
@ -125,7 +125,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = TribemanAxeControl; obj->control = TribemanAxeControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 28; obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -145,7 +145,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = TribemanDartsControl; obj->control = TribemanDartsControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 28; obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -167,7 +167,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->HitPoints = 800; obj->HitPoints = 800;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->pivotLength = 1800; obj->pivotLength = 1800;
obj->radius = 512; obj->radius = 512;
obj->intelligent = true; obj->intelligent = true;
@ -185,7 +185,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = ScubaControl; obj->control = ScubaControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 20; obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 340; obj->radius = 340;
@ -215,7 +215,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = FlameThrowerControl; obj->control = FlameThrowerControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 36; obj->HitPoints = 36;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -237,7 +237,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseMonkey; obj->initialise = InitialiseMonkey;
obj->control = MonkeyControl; obj->control = MonkeyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 8; obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -258,7 +258,7 @@ static void StartEntity(ObjectInfo* obj)
{ {
obj->control = MPGunControl; obj->control = MPGunControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 28; obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -281,7 +281,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseMPStick; obj->initialise = InitialiseMPStick;
obj->control = MPStickControl; obj->control = MPStickControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 28; obj->HitPoints = 28;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -305,7 +305,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = ShivaControl; obj->control = ShivaControl;
//obj->drawRoutine = DrawStatue; //obj->drawRoutine = DrawStatue;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -326,7 +326,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = LondonBossControl; obj->control = LondonBossControl;
obj->drawRoutine = S_DrawLondonBoss; obj->drawRoutine = S_DrawLondonBoss;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->pivotLength = 50; obj->pivotLength = 50;
obj->HitPoints = 300; obj->HitPoints = 300;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
@ -347,7 +347,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCivvy; obj->initialise = InitialiseCivvy;
obj->control = CivvyControl; obj->control = CivvyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 15; obj->HitPoints = 15;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -393,7 +393,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true; obj->savePosition = true;
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
} }
obj = &Objects[ID_RUBBER_BOAT]; obj = &Objects[ID_RUBBER_BOAT];
@ -407,7 +407,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true; obj->savePosition = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->saveAnim = true; obj->saveAnim = true;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
} }
@ -421,7 +421,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->savePosition = true; obj->savePosition = true;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
} }
@ -434,7 +434,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->savePosition = true; obj->savePosition = true;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
} }
@ -443,11 +443,11 @@ static void StartVehicles(ObjectInfo* obj)
{ {
obj->initialise = BigGunInitialise; obj->initialise = BigGunInitialise;
obj->collision = BigGunCollision; obj->collision = BigGunCollision;
// obj->draw_routine = BigGunDraw;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->savePosition = true; obj->savePosition = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->saveAnim = true; obj->saveAnim = true;
obj->shadowType = ShadowMode::Lara;
} }
obj = &Objects[ID_UPV]; obj = &Objects[ID_UPV];
@ -456,12 +456,11 @@ static void StartVehicles(ObjectInfo* obj)
obj->initialise = UPVInitialise; obj->initialise = UPVInitialise;
obj->control = UPVEffects; obj->control = UPVEffects;
obj->collision = UPVPlayerCollision; obj->collision = UPVPlayerCollision;
// obj->drawRoutine = SubDraw;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->savePosition = 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->initialise = InitialiseSmallScorpion;
obj->control = SmallScorpionControl; obj->control = SmallScorpionControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 8; obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -105,7 +105,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseScorpion; obj->initialise = InitialiseScorpion;
obj->control = ScorpionControl; obj->control = ScorpionControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 80; obj->HitPoints = 80;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -124,7 +124,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseHammerhead; obj->initialise = InitialiseHammerhead;
obj->control = HammerheadControl; obj->control = HammerheadControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 8; obj->HitPoints = 8;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -144,7 +144,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseWildBoar; obj->initialise = InitialiseWildBoar;
obj->control = WildBoarControl; obj->control = WildBoarControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -168,7 +168,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseTr4Dog; obj->initialise = InitialiseTr4Dog;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = Tr4DogControl; obj->control = Tr4DogControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 18; obj->HitPoints = 18;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -188,7 +188,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBat; obj->initialise = InitialiseBat;
obj->control = BatControl; obj->control = BatControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 5; obj->HitPoints = 5;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 10; obj->pivotLength = 10;
@ -207,7 +207,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseAhmet; obj->initialise = InitialiseAhmet;
obj->control = AhmetControl; obj->control = AhmetControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 80; obj->HitPoints = 80;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 300; obj->pivotLength = 300;
@ -229,7 +229,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaddy; obj->initialise = InitialiseBaddy;
obj->control = BaddyControl; obj->control = BaddyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -255,7 +255,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaddy; obj->initialise = InitialiseBaddy;
obj->control = BaddyControl; obj->control = BaddyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -281,7 +281,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSas; obj->initialise = InitialiseSas;
obj->control = SasControl; obj->control = SasControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -305,7 +305,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseMummy; obj->initialise = InitialiseMummy;
obj->control = MummyControl; obj->control = MummyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 15; obj->HitPoints = 15;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->radius = 170; obj->radius = 170;
@ -330,7 +330,7 @@ static void StartEntity(ObjectInfo* obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->HitPoints = 15; obj->HitPoints = 15;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->pivotLength = 50; obj->pivotLength = 50;
obj->radius = 128; obj->radius = 128;
obj->explodableMeshbits = 0xA00; obj->explodableMeshbits = 0xA00;
@ -349,7 +349,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseKnightTemplar; obj->initialise = InitialiseKnightTemplar;
obj->control = KnightTemplarControl; obj->control = KnightTemplarControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 15; obj->HitPoints = 15;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -371,7 +371,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBigBeetle; obj->initialise = InitialiseBigBeetle;
obj->control = BigBeetleControl; obj->control = BigBeetleControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -391,7 +391,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSetha; obj->initialise = InitialiseSetha;
obj->control = SethaControl; obj->control = SethaControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 500; obj->HitPoints = 500;
obj->hitEffect = HIT_NONE; obj->hitEffect = HIT_NONE;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -411,7 +411,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseDemigod; obj->initialise = InitialiseDemigod;
obj->control = DemigodControl; obj->control = DemigodControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 200; obj->HitPoints = 200;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -434,7 +434,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseDemigod; obj->initialise = InitialiseDemigod;
obj->control = DemigodControl; obj->control = DemigodControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 200; obj->HitPoints = 200;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -455,7 +455,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseDemigod; obj->initialise = InitialiseDemigod;
obj->control = DemigodControl; obj->control = DemigodControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 200; obj->HitPoints = 200;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -489,7 +489,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseTroops; obj->initialise = InitialiseTroops;
obj->control = TroopsControl; obj->control = TroopsControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -510,7 +510,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSentryGun; obj->initialise = InitialiseSentryGun;
obj->control = SentryGunControl; obj->control = SentryGunControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->undead = true; obj->undead = true;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
@ -535,7 +535,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseHarpy; obj->initialise = InitialiseHarpy;
obj->control = HarpyControl; obj->control = HarpyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 60; obj->HitPoints = 60;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -553,7 +553,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseGuide; obj->initialise = InitialiseGuide;
obj->control = GuideControl; obj->control = GuideControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = NOT_TARGETABLE; obj->HitPoints = NOT_TARGETABLE;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 0; obj->pivotLength = 0;
@ -574,7 +574,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseCrocodile; obj->initialise = InitialiseCrocodile;
obj->control = CrocodileControl; obj->control = CrocodileControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 36; obj->HitPoints = 36;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 300; obj->pivotLength = 300;
@ -598,7 +598,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseSphinx; obj->initialise = InitialiseSphinx;
obj->control = SphinxControl; obj->control = SphinxControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 1000; obj->HitPoints = 1000;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 500; obj->pivotLength = 500;
@ -626,7 +626,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseHorseman; obj->initialise = InitialiseHorseman;
obj->control = HorsemanControl; obj->control = HorsemanControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 25; obj->HitPoints = 25;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 500; obj->pivotLength = 500;
@ -646,7 +646,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaboon; obj->initialise = InitialiseBaboon;
obj->control = BaboonControl; obj->control = BaboonControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -665,7 +665,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaboon; obj->initialise = InitialiseBaboon;
obj->control = BaboonControl; obj->control = BaboonControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -687,7 +687,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = InitialiseBaboon; obj->initialise = InitialiseBaboon;
obj->control = BaboonControl; obj->control = BaboonControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -709,7 +709,7 @@ static void StartEntity(ObjectInfo* obj)
obj->initialise = TEN::Entities::TR4::InitialiseCrocgod; obj->initialise = TEN::Entities::TR4::InitialiseCrocgod;
obj->control = TEN::Entities::TR4::CrocgodControl; obj->control = TEN::Entities::TR4::CrocgodControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = NOT_TARGETABLE; obj->HitPoints = NOT_TARGETABLE;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -815,7 +815,7 @@ static void StartEntity(ObjectInfo* obj)
obj->intelligent = true; obj->intelligent = true;
obj->saveHitpoints = true; obj->saveHitpoints = true;
obj->pivotLength = 500; obj->pivotLength = 500;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->radius = 512; obj->radius = 512;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->zoneType = ZONE_BASIC; obj->zoneType = ZONE_BASIC;
@ -833,7 +833,7 @@ static void StartEntity(ObjectInfo* obj)
obj->control = VonCroyControl; obj->control = VonCroyControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->pivotLength = 0; obj->pivotLength = 0;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 15; obj->HitPoints = 15;
obj->explodableMeshbits = 0x200000; obj->explodableMeshbits = 0x200000;
obj->intelligent = true; obj->intelligent = true;
@ -1162,7 +1162,7 @@ static void StartTrap(ObjectInfo* obj)
obj->control = LaraDoubleControl; obj->control = LaraDoubleControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 1000; obj->HitPoints = 1000;
obj->pivotLength = 50; obj->pivotLength = 50;
obj->radius = 128; obj->radius = 128;
@ -1194,7 +1194,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true; obj->savePosition = true;
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
} }
@ -1208,7 +1208,7 @@ static void StartVehicles(ObjectInfo* obj)
obj->savePosition = true; obj->savePosition = true;
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = 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) if (obj->loaded)
{ {
obj->initialise = InitialiseLaraLoad; obj->initialise = InitialiseLaraLoad;
obj->castsShadow = true; obj->shadowType = ShadowMode::Lara;
obj->HitPoints = 1000; obj->HitPoints = 1000;
obj->saveAnim = true; obj->saveAnim = true;
obj->saveFlags = true; obj->saveFlags = true;
@ -88,7 +88,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->control = GuardControl; obj->control = GuardControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -112,7 +112,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = GuardControl; obj->control = GuardControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -140,7 +140,7 @@ static void StartEntity(ObjectInfo *obj)
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = GuardControl; obj->control = GuardControl;
obj->pivotLength = 50; obj->pivotLength = 50;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->radius = 102; obj->radius = 102;
@ -170,7 +170,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = GuardControl; obj->control = GuardControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -200,7 +200,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = GuardControl; obj->control = GuardControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -230,7 +230,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->control = GuardControl; obj->control = GuardControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -260,7 +260,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->control = GuardControl; obj->control = GuardControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -292,7 +292,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuard; obj->initialise = InitialiseGuard;
obj->control = GuardControl; obj->control = GuardControl;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -316,7 +316,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseSubmarine; obj->initialise = InitialiseSubmarine;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SubmarineControl; obj->control = SubmarineControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 200; obj->pivotLength = 200;
@ -339,7 +339,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseChef; obj->initialise = InitialiseChef;
obj->control = ControlChef; obj->control = ControlChef;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 35; obj->HitPoints = 35;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -364,7 +364,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLion; obj->initialise = InitialiseLion;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = LionControl; obj->control = LionControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 40; obj->HitPoints = 40;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -385,7 +385,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseDoberman; obj->initialise = InitialiseDoberman;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = DobermanControl; obj->control = DobermanControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 18; obj->HitPoints = 18;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -405,7 +405,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseTr5Dog; obj->initialise = InitialiseTr5Dog;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = Tr5DogControl; obj->control = Tr5DogControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -425,7 +425,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseReaper; obj->initialise = InitialiseReaper;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = ReaperControl; obj->control = ReaperControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 10; obj->HitPoints = 10;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -446,7 +446,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseMafia2; obj->initialise = InitialiseMafia2;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = Mafia2Control; obj->control = Mafia2Control;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 26; obj->HitPoints = 26;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -473,7 +473,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLarson; obj->initialise = InitialiseLarson;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = LarsonControl; obj->control = LarsonControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 60; obj->HitPoints = 60;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -497,7 +497,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLarson; obj->initialise = InitialiseLarson;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = LarsonControl; obj->control = LarsonControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 60; obj->HitPoints = 60;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -521,7 +521,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseCyborg; obj->initialise = InitialiseCyborg;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = CyborgControl; obj->control = CyborgControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 50; obj->HitPoints = 50;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -548,7 +548,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseSniper; obj->initialise = InitialiseSniper;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = SniperControl; obj->control = SniperControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 35; obj->HitPoints = 35;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -572,7 +572,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGuardLaser; obj->initialise = InitialiseGuardLaser;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
//obj->control = GuardControlLaser; //obj->control = GuardControlLaser;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 24; obj->HitPoints = 24;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -597,7 +597,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseHydra; obj->initialise = InitialiseHydra;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = HydraControl; obj->control = HydraControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 30; obj->HitPoints = 30;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -623,7 +623,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseImp; obj->initialise = InitialiseImp;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = ImpControl; obj->control = ImpControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 12; obj->HitPoints = 12;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -649,7 +649,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLightingGuide; obj->initialise = InitialiseLightingGuide;
//obj->control = ControlLightingGuide; //obj->control = ControlLightingGuide;
obj->drawRoutine = NULL; obj->drawRoutine = NULL;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->radius = 256; obj->radius = 256;
obj->HitPoints = 16; obj->HitPoints = 16;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -672,7 +672,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseBrownBeast; obj->initialise = InitialiseBrownBeast;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = ControlBrowsBeast; obj->control = ControlBrowsBeast;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -696,7 +696,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseLagoonWitch; obj->initialise = InitialiseLagoonWitch;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = LagoonWitchControl; obj->control = LagoonWitchControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -722,7 +722,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseInvisibleGhost; obj->initialise = InitialiseInvisibleGhost;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = InvisibleGhostControl; obj->control = InvisibleGhostControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 20; obj->pivotLength = 20;
@ -773,7 +773,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseGladiator; obj->initialise = InitialiseGladiator;
obj->control = ControlGladiator; obj->control = ControlGladiator;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 20; obj->HitPoints = 20;
obj->hitEffect = HIT_BLOOD; obj->hitEffect = HIT_BLOOD;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -799,7 +799,7 @@ static void StartEntity(ObjectInfo *obj)
obj->initialise = InitialiseRomanStatue; obj->initialise = InitialiseRomanStatue;
obj->collision = CreatureCollision; obj->collision = CreatureCollision;
obj->control = RomanStatueControl; obj->control = RomanStatueControl;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 300; obj->HitPoints = 300;
obj->hitEffect = HIT_SMOKE; obj->hitEffect = HIT_SMOKE;
obj->pivotLength = 50; obj->pivotLength = 50;
@ -871,7 +871,7 @@ static void StartEntity(ObjectInfo *obj)
obj->saveAnim = true; obj->saveAnim = true;
obj->zoneType = ZONE_BASIC; obj->zoneType = ZONE_BASIC;
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
obj->HitPoints = 100; obj->HitPoints = 100;
} }
} }
@ -1114,7 +1114,7 @@ static void StartTrap(ObjectInfo *obj)
obj->hitEffect = HIT_RICOCHET; obj->hitEffect = HIT_RICOCHET;
obj->savePosition = true; obj->savePosition = true;
obj->saveFlags = true; obj->saveFlags = true;
obj->castsShadow = true; obj->shadowType = ShadowMode::All;
} }
obj = &Objects[ID_CLASSIC_ROLLING_BALL]; obj = &Objects[ID_CLASSIC_ROLLING_BALL];

View file

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

View file

@ -381,7 +381,7 @@ namespace TEN::Renderer
RendererObject &moveable = *m_moveableObjects[MoveablesIds[i]]; RendererObject &moveable = *m_moveableObjects[MoveablesIds[i]];
moveable.Id = MoveablesIds[i]; moveable.Id = MoveablesIds[i];
moveable.DoNotDraw = (obj->drawRoutine == nullptr); moveable.DoNotDraw = (obj->drawRoutine == nullptr);
moveable.CastShadow = obj->castsShadow; moveable.ShadowType = obj->shadowType;
for (int j = 0; j < obj->nmeshes; j++) 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 //Skip everything thats not "alive" or is not a vehicle
if (!Objects[nativeItem.ObjectNumber].castsShadow) if (Objects[nativeItem.ObjectNumber].shadowType == ShadowMode::None)
continue; continue;
if (i->ObjectNumber == ID_LARA) if (i->ObjectNumber == ID_LARA)
@ -126,11 +126,15 @@ namespace TEN::Renderer
void Renderer11::RenderShadowMap(RendererItem* item, RenderView& renderView) void Renderer11::RenderShadowMap(RendererItem* item, RenderView& renderView)
{ {
// No dynamic shadows are rendered, bypass completely // 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; return;
// Only render for Lara if such setting is active // 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; return;
// No shadow light found // No shadow light found
@ -1654,8 +1658,7 @@ namespace TEN::Renderer
for (auto room : renderView.roomsToDraw) for (auto room : renderView.roomsToDraw)
for (auto itemToDraw : room->ItemsToDraw) for (auto itemToDraw : room->ItemsToDraw)
if (m_moveableObjects[itemToDraw->ObjectNumber].value().CastShadow) RenderShadowMap(itemToDraw, renderView);
RenderShadowMap(itemToDraw, renderView);
} }
void Renderer11::DrawAnimatingItem(RendererItem* item, RenderView& view, bool transparent) void Renderer11::DrawAnimatingItem(RendererItem* item, RenderView& view, bool transparent)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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