Commit graph

48 commits

Author SHA1 Message Date
RaveYard
f9bf6f9311 Implement FVector ZScript for Actor Scale 2022-06-12 17:57:44 +02:00
Christoph Oelckers
344c6348fd - sprite lightlevel cleanup and fixes.
* consolidated the getter functions on the game data side
* better handling of per-sprite lighting with fog
* allow negative values for additive per-sprite lighting.
* also fixed return type of UpdateWaterDepth.
2022-06-01 08:37:13 +02:00
Major Cooke
3d14cec191 Added ADDLIGHTLEVEL to add the sector light level to an actor's own defined light level, if desired. 2022-05-31 21:00:31 +02:00
Major Cooke
d5e448671d Added LightLevel.
- Setting it to any value > -1 will override the sector's light level.
2022-05-31 21:00:31 +02:00
nashmuhandes
f235dcc38e Squashed commit of the following:
commit 553c4c12abd15e5f8fa02496ccfde81bdfdb53b0
Merge: cb03de5d2 add4ff12a
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Mon Feb 14 18:55:52 2022 +0800

    Merge branch 'master' of https://github.com/coelckers/gzdoom into ActorFallAndSink

commit cb03de5d2fdcba8a32b83be32579be935c8b6600
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Tue Jan 25 12:54:33 2022 +0800

    Re-add WaterDepth to the custom namedef file

commit 8d1ff3c16018dd7c73c8950aa4c51f2bc0207837
Merge: f201e6307 a9eaae074
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Tue Jan 25 12:52:57 2022 +0800

    Merge branch 'master' of https://github.com/coelckers/gzdoom into ActorFallAndSink

    # Conflicts:
    #	src/common/engine/namedef.h

commit f201e630706fc0ea7628b8a32bd5d88afb712208
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Sun Jan 16 20:45:27 2022 +0800

    Fix compile error (MAX() -> max())

commit fe292ebd4312afe34b1e35e4c1eafba0dc168920
Merge: 3f9150c4e 12ed24d06
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Sun Jan 16 20:37:58 2022 +0800

    Merge branch 'master' of https://github.com/coelckers/gzdoom into ActorFallAndSink

    # Conflicts:
    #	src/playsim/p_mobj.cpp

commit 3f9150c4eae1c5c5510e8f9b1c4bfaab46a96b8f
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Sat May 29 05:32:54 2021 +0800

    - Implement virtual Actor.FallAndSink for scriptable falling and water physics
    - Added Actor.WaterDepth to retrieve how submerged and actor is, in map units

    Original work credited to "gzdoomthrowaway"
2022-05-31 18:57:38 +02:00
Sally Cochenour
bb42e541e9
MASTERNOSEE flag (#1601)
Makes it so that if an actor's master is invisible due to camera/mirror/portal shenanigans, then the actor will also be invisible. Name based off of an Unreal Engine flag that does the exact same thing.

Co-authored-by: Christoph Oelckers <coelckers@users.noreply.github.com>
2022-05-31 12:34:15 +02:00
Major Cooke
748156c846 Optimized CanCrossLine.
- Remove P_PointOnLineSide check
- Made CanCrossLine opt-in by requiring the CROSSLINECHECK flag.
2022-05-31 10:46:06 +02:00
Sally Coolatta
a98c1efc26 Add WorldOffset field
Adjusts the thing's 3D position on render side. This allows for adjusting a thing's visual position without impacting their hitbox.

# Conflicts:
#	src/playsim/p_mobj.cpp
2022-05-31 10:14:32 +02:00
Christoph Oelckers
6b7ef697be - compacted AActor a bit by eliminating alignment gaps 2022-05-31 10:10:53 +02:00
inkoalawetrust
dbf707b83b Added MF8_SEEFRIENDLYMONSTERS.
Non-friendly monsters with this flag on will be able to attack friendly monsters on sight.
2022-05-10 08:25:30 -04:00
inkoalawetrust
3d1ddbc80e
Toggleable player following. (#1583)
* Added MF8_DONTFOLLOWPLAYERS.

Added the MF8_DONTFOLLOWPLAYERS flag, which allows friendly monsters to not follow their FriendPlayer when they have no target or goal left to head to.

* Changed the order that the DONTFOLLOWPLAYERS check runs in.

This is done to not produce unnecessary overhead on hostile monsters.
2022-04-07 23:32:16 -04:00
Christoph Oelckers
27cba4c990 - implement proper GC handling for AActor::ViewPos. 2022-04-02 07:52:50 +02:00
Rachael Alexanderson
add4ff12ac - virtualize player landing on thing sound 2022-02-14 08:07:10 +01:00
Major Cooke
046799db68 Removed all attempts to stop the sprite from appearing in portals. This may likely require a fundamental breakdown of the system itself in order to address the problem. 2022-01-24 12:00:33 -05:00
Major Cooke
4e8d59951b Added A_SetViewPos(Vector3 Offset, int Flags = -1)
- Offset: The offset from the actor's view to move the camera about.
 - Flags: (Default is -1, which means don't change flags)
  - VPSF_ABSOLUTEOFFSET: Don't include actor angles in calculation.
  - VPSF_ABSOLUTEPOS: Position is absolute, and disables all transformations. Modders are responsible for being portal aware!

Notes:
- `ViewPos` in Actor will be `null` until A_SetViewPos is called for the first time.

**Issues:**
- Hiding sprite while in portal incomplete.
2022-01-24 12:00:33 -05:00
Christoph Oelckers
77d74a11d1 - removed most templates.h includes. 2021-10-30 10:49:12 +02:00
Christoph Oelckers
07a181090b - missed some MAX's. 2021-10-30 10:45:58 +02:00
Christoph Oelckers
196a4c0b36 - added a modified version of MBF's stay-on-lift feature.
The reason this was never added was the hard dependency on the line trigger types. This implements some modified logic that does not try to find all potential lifts in the map.
Also moving the MBF flags to compatflags so that they are easier to control by the user as these must be part of compatibility presets.
2021-08-24 11:48:07 +02:00
Christoph Oelckers
854e11a9de - made CheckMeleeRange a normal function again.
This way it can be directly used as a native ZScript export.
Like SuggestMissileAttack the change to a method was for virtual overrides that have been turned into flags since then.
2021-08-21 12:44:36 +02:00
Christoph Oelckers
ac48518abc - merged SuggestMissileAttack back into P_CheckMissileRange.
This was once a virtual function to handle the various monster specific modifiers but this had been changed into properties a long time ago.
2021-08-21 12:37:23 +02:00
Christoph Oelckers
d15f450fef - implemented MBF's monsters_avoid_hazards feature.
Both as a map flag for MBF21 support and as an actor flag for better control.
2021-08-21 12:29:24 +02:00
Christoph Oelckers
9082ef7d49 - MBF21: more work on flags.
* added handlers for the missing upper flags in the first flag word.
* refactored some code related to MF_BOUNCES to adapt to other flags' changes to avoid constant property updates for too many flags.
* treat anything with RF_ZDOOMTRANS as non-translucent for the purpose of the flag checks.
2021-07-02 19:48:58 +02:00
Christoph Oelckers
7ade3b829b - moved MF_INCHASE to flags7.
Due to how the MBF21 flag checkers work the first flag word may not repurpose any unused flags in it. We still need MF_SLIDE to be usable by them, despite being totally unused.
2021-07-01 08:55:01 +02:00
Christoph Oelckers
c700682a36 - MBF21: ported the code pointers to ZScript.
So far it's just the functions and some initial changes to Dehacked's parser. None of this is usable yet.
2021-07-01 00:53:15 +02:00
Christoph Oelckers
e2e8ec8b3e - MBF21: implemented thing flags. 2021-06-29 21:08:58 +02:00
nashmuhandes
5446a1a355 Add sprite shadows for the software renderer 2021-04-24 22:40:54 -04:00
nashmuhandes
b28e5cb917 Add GetCharacterName() to retrieve an NPC's name as defined in its dialogue script, if it exists. Otherwise it will just return the same output as GetTag(). 2021-03-15 21:31:16 +01:00
Major Cooke
e3d21d09c9 Renamed flag to ALLOWTHRUBITS and rearranged the checks so the flag comes after.
- Since most will have 0 for the property, this will not check for the flag unless the mask fits.
2020-10-25 15:37:15 +01:00
Major Cooke
85a121ad28 ThruBits is now opt-in for convenience with the +THRUBITS flag. 2020-10-25 15:37:15 +01:00
Christoph Oelckers
4ac7588488 - did a bit of AActor reshuffling so that the new thruBits can be placed into a previously existing alignment gap. 2020-10-17 09:54:31 +02:00
Major Cooke
60f0d35477 Added ThruBits. 2020-10-17 09:51:24 +02:00
Christoph Oelckers
c1e04b29d1 - AActor size reduction
* a few shorter fields were moved into alignment gaps
* the visible angles are now stored as floats. Since these are only used for rendering the loss of precision is negligible, but this shortens AActor by 16 bytes alone.
2020-10-03 08:23:36 +02:00
Nikolay Ambartsumov
a72fdd7e3e Add MaxSlopeSteepness actor property 2020-10-03 07:53:55 +02:00
Christoph Oelckers
043de8c780 Revert "- avoid double linking to and unlinking from the world for actors."
This reverts commit 8fc9f1e5ef.

As I already feared, this does not work right. The entire linking/unlinking code is simply too fragile. So no protection here against inept tinkering.
2020-09-27 19:56:50 +02:00
Christoph Oelckers
8fc9f1e5ef - avoid double linking to and unlinking from the world for actors.
Some people apparently have to toy around with the engine's innards without fully understanding them. :(
When properly used the saveguards should never be triggered.
2020-09-26 19:09:00 +02:00
Cacodemon345
e74b9f1955
Add FALLDAMAGE flag and add property to properly apply falling damage… (#1153)
* Add FALLDAMAGE flag and add property to properly apply falling damage to the monsters

* Change name of propermonsterdamage property to propermonsterfallingdamage
2020-09-15 15:38:51 +02:00
MajorCooke
eaba63e13b
View Angles (Part 1 - Redux) (#1002)
* Added ViewAngle/Pitch/Roll properties to actors.

- These are offsets for camera angles that allow turning the camera without affecting aim or movement direction.
- Added A_SetView<Angle/Pitch/Roll>, which will set the view direction.
- Added ABSVIEWANGLES flag, used to make the view absolute instead of an offset.

* Converted functions to be direct-native.
2020-08-27 13:03:06 -04:00
MajorCooke
85759e3bd0
Added A_SpriteOffset. (#895)
- Coordinates work akin to A_OverlayOffset: +X shifts to the right, +Y shifts down.
2020-08-27 12:43:09 -04:00
Alexander Kromm
928c738e19 make various getter and pure-math methods clearscope, and where applicable, const
Original PR: https://github.com/coelckers/gzdoom/pull/532

Status of the original PR

1. Actor
- [already in] deltaangle
- [already in] absangle
- [already in] AngleToVector
- [already in] RotateVector
- [already in] Normalize180
- [already in] BobSin
- [already in] GetDefaultSpeed
- [this PR] GetBobOffset
- [this PR] InStateSequence
- [already in] FindState
- [already in] GetDropItems
- [this PR] DistanceBySpeed
- [this PR] AccuracyFactor
- [not in original PR, for PlayerInfo.isTotallyFrozen] isFrozen

2. PlayerInfo
- [this PR] GetUserName
- [this PR] GetColor
- [this PR] GetDisplayColor
- [this PR] GetColorSet
- [this PR] GetPlayerClassNum
- [this PR] GetSkin
- [this PR] GetNeverSwitch
- [this PR] GetGender
- [this PR] GetTeam
- [this PR] GetAutoaim
- [this PR] GetNoAutostartMap
- [this PR] GetClassicFlight
- [this PR] IsTotallyFrozen

3. C++ methods, to match ZScript:

- [scriptified] AActor::AccuracyFactor() to Actor.AccuracyFactor
- [this PR] AActor::DistanceBySpeed(AActor *, double) — it is a combination of getter and pure math
- [this PR] AActor::Distance2D(AActor *, bool) — called by DistanceBySpeed
- [this PR] AActor::Distance2D(AActor *, double, double, bool) — called by DistanceBySpeed
- [not in original PR, for PlayerInfo.isTotallyFrozen] AActor::isFrozen
2020-06-07 09:39:30 +02:00
Christoph Oelckers
cf51508ce6 - moved around some pieces of code to make sharing with Raze easier. 2020-04-11 20:20:52 +02:00
Christoph Oelckers
580e463498 - moved texture code to 'common'. 2020-04-11 20:20:38 +02:00
Christoph Oelckers
3e285d2261 - moved renderstyle and colortables code to 'common'. 2020-04-11 20:20:37 +02:00
Christoph Oelckers
ace3e29473 - removed the implicit conversion operators from FName.
These were creating dangerous interdependencies. It is better to do explicit conversions when needed.
As an added plus, this means that zstring.h no longer depends on name.h which was very annoying.
2020-04-11 14:00:13 +02:00
Major Cooke
39a9a48ad6 Added source, inflictor and damage flags to AbsorbDamage. 2020-02-09 19:07:52 +01:00
Major Cooke
0b0984b88e Added STOPRAILS actor flag.
- An actor with this flag will prevent railgun shots from penetrating further.
2019-12-30 08:37:08 +01:00
Christoph Oelckers
ae57bc71d4 - fixed attached dynamic light setup.
This was only run on a state change and missed every external light change.
Any place which wants to flag a light change now only will set a flag and at the end of the thinker loop all flagged actors will be processed.
For performance reasons this was merged with the P_RunEffects iterator loop.
2019-08-18 13:48:52 +02:00
Christoph Oelckers
cf74118d53 - fixed the extremely long standing bug that Lost Souls didn't reacquire their target when slamming into something.
This was one of that annoying old design mistakes where Doom and Heretic features were poorly merged together. The Heretic Gargoyle uses very similar coding but performs a subtly different action when actually hitting another actor. This different action was made the default, even for the Lost Soul.
It has now been changed that both monsters use their original action, being distinguished by an actor flag. For compatibility with custom definitions Heretic's behavior, which has been the default in ZDoom will be the preferred one. The one of the Lost Soul can be reactivated by a flag.
2019-08-11 09:00:29 +02:00
Christoph Oelckers
2a16fb9d28 - moved most remaining playsim code into its proper folder. 2019-07-14 13:59:16 +02:00
Renamed from src/actor.h (Browse further)