Commit Graph

2352 Commits

Author SHA1 Message Date
Lioncash f0eadfe56c CMetroidAreaCollider: Make use of std::array where applicable
Makes arrays strongly typed and allows eliminating some hardcoded array
sizes. We can also use it to make input data to some data types and
functions significantly more informative.

This also makes it easier for static analysis tools to track out of
bounds accesses if they ever occur.
2020-04-06 05:19:13 -04:00
Lioncash d708337e90 CScriptDamageableTrigger: Make member variables private
Previously, everything about the class was made public.
2020-04-06 04:48:10 -04:00
Lioncash 27f3078c8a CScriptDamageableTrigger: Mark x254_fluidPlane as mutable
A temporary stop-gap to hold over until Render is made non-const.
2020-04-06 04:45:33 -04:00
Lioncash 741adfe45c CPASAnimParm: Make constexpr capable
Allows the type to be used in constexpr scenarios and allows for
compile-time elimination of initializers.
2020-04-06 02:55:05 -04:00
Lioncash 402216447a CFluidPlane: Make Render() non-const
Allows making the shader instances non-mutable.
2020-04-06 02:18:14 -04:00
Lioncash 22eb5c837e CollisionUtil: Make use of const where applicable
Makes it explicit which variables are mutating within algorithms, making
them nicer to follow.
2020-04-06 02:02:52 -04:00
Lioncash 39f5fddd63 CollisionUtil: Make use of std::array where applicable
Same behavior, stronger typing. Also allows dehardcoding some array
sizes.
2020-04-06 01:41:16 -04:00
Lioncash 80c6424fd0 CCollidableOBBTree: Eliminate variable shadowing
Resolves a -Wshadow warning.
2020-04-06 01:23:08 -04:00
Lioncash c3ba3927db CCollidableOBBTree: Make use of std::array where applicable
Same behavior, stronger typing.
2020-04-06 01:21:20 -04:00
Lioncash e76804079d COBBTree: Return std::array from GetTriangleVertexIndices() directly
While the game binary uses an out pointer here, we can slightly modify
it in this case in order to make it more difficult to misuse the
call-sites by returning the data directly as a std::array.
2020-04-06 01:17:24 -04:00
Lioncash 248a4e57c9 COBBTree: Always initialize x4c_hit
Same behavior, but provides deterministic state on construction, which
can make debugging much nicer.
2020-04-06 01:05:29 -04:00
Lioncash c6952442c7 COBBTree: Remove use of operator bool directly
Same behavior, but more idiomatic.
2020-04-06 01:01:44 -04:00
Lioncash e34db8c0e6 COBBTree: Eliminate sign conversion warnings
Multiplying a u16 results in an int.
2020-04-06 01:00:58 -04:00
Lioncash 2e6bd0f05e CGunWeapon: Eliminate usages of const_cast
Eliminates trivial usages of const_cast by making Draw related functions
non-const. This also allows removing the mutable specifiers from several
shader data members.
2020-04-06 00:52:47 -04:00
Lioncash cabbfcc320 CActor: Make AddToRenderer() non-const
This member function alters instance state in a few implementations, so
it shouldn't be made const.

The state manager parameter also shouldn't be const. Retrieved data
from the post constructed instance is further modified in some
implementations. This removes the constness on this parameter in order
to fix more const_cast usages in a follow-up change.
2020-04-06 00:52:10 -04:00
Lioncash 19cfb92d5d COBBTree: Simplify make_unique call
We can use nullptr here instead of typing out the name of the type.
2020-04-06 00:51:04 -04:00
Luke Street 58adce472a CMappableObject: Fix call to data() 2020-04-06 00:03:34 -04:00
Lioncash f77fb2089b General: Pass std::nullopt to CAnimData::Render instead of {}
Prevents some implementations (libstdc++ and libc++) from completely zeroing out the underlying
buffer and instead sets a single byte flag.

Eliminates unnecessary memsets.
2020-04-05 08:24:42 -04:00
Phillip Stephens 786634e181
Merge branch 'master' of ssh+git://git.axiodl.com:6431/AxioDL/urde 2020-04-05 05:13:14 -07:00
Phillip Stephens eab08cbe2d
Merge branch 'lioncash-find' 2020-04-05 05:12:25 -07:00
Lioncash 0a7ccace44 CCharacterFactory: Eliminate usages of const_cast within CreateCharacter()
We can simply make this member function non-const and eliminate the need
for casts like this.
2020-04-05 08:11:51 -04:00
Phillip Stephens 5fc8f2ccd2
Merge branch 'find' of https://github.com/lioncash/urde into lioncash-find 2020-04-05 05:11:20 -07:00
Phillip Stephens 28853f5ea6
Merge branch 'constexpr5' of https://github.com/lioncash/urde into lioncash-constexpr5 2020-04-05 05:10:42 -07:00
Lioncash 6ba0641b79 CCameraFilter: Make Draw() non-const
Eliminates another usage of const_cast.
2020-04-05 08:05:04 -04:00
Lioncash b99122dae8 CFrontEndUI: Remove use of const_cast in Draw()
These casts are no longer necessary.
2020-04-05 07:12:07 -04:00
Lioncash 4d2e51c0b9 CSamusHud: Make Draw() non-const
Allows eliminating usages of const_cast.
2020-04-05 07:09:13 -04:00
Lioncash 3e9e434d96 CPlayerVisor: Make Draw() non-const
Allows eliminating const_cast usages.
2020-04-05 07:00:40 -04:00
Lioncash be4e7f8ff7 CMFGame: Remove unnecessary const_cast
This is no longer necessary, considering that Draw() isn't const
qualified anymore.
2020-04-05 06:52:19 -04:00
Lioncash a952ff1110 CCollisionEdge: Make constructors constexpr
Makes the default and non-stream iterator constexpr, which allows for
elimination of a runtime initializer.
2020-04-05 06:46:03 -04:00
Lioncash af6e3b21f8 COBBTree: Make use of std::array where applicable 2020-04-05 06:41:22 -04:00
Lioncash 039e43c511 CMapWorldInfo: Actually add the mutable specifiers
Note to self, actually stage changes before pushing.
2020-04-05 06:36:17 -04:00
Lioncash 42c560b9df CMapWorldInfo: Remove use of const_cast
Same behavior, but explicitly marks the member variables as mutable.
This is fine given they act as an underlying cache and don't directly
alter the behavior of the interface.
2020-04-05 06:30:25 -04:00
Lioncash 2755f3f4f8 CMapWorldInfo: Eliminate truncation and sign conversion warnings 2020-04-05 06:29:27 -04:00
Lioncash 755529b67a CMappableObject: Make use of std::array where applicable
Same behavior, but also allows eliminating hardcoded array sizes.
2020-04-05 06:15:18 -04:00
Lioncash 94264f6fe6 CRasterFont: Collapse loop into a std::find_if in InternalGetGlyph()
Same behavior, less code.
2020-04-05 06:01:29 -04:00
Lioncash 1279be5e56 CGraphics: Mark internal file-scope matrices as constexpr
Same behavior, but allows omission of runtime initializers.
2020-04-05 05:48:54 -04:00
Lioncash 95199848d3 CGraphics: Make use of std::array where applicable 2020-04-05 05:46:07 -04:00
Lioncash 8808a3a324 CFireFlea: Unindent FindSafeRoute()
Makes the function much nicer to follow by using guard clauses to
unindent the code.
2020-04-05 05:36:28 -04:00
Lioncash 99c564cfe4 CFireFlea: Make colors constexpr internal details
Same behavior, but makes the color constants fully internal details.
2020-04-05 05:25:47 -04:00
Lioncash a49d26f800 CParticleElectric: Return std::nullopt in GetBounds()
Same behavior, but avoids zeroing out the internal buffer in some
implementations of std::optional.
2020-04-05 05:12:25 -04:00
Lioncash 852dd5c6bf CParticleGenInfo: Collapse TCastToPtr into conditions
Same behavior, but more compact.
2020-04-05 05:10:28 -04:00
Lioncash 39e8ee9a80 CBodyState: Return 1.0f directly in UpdateLocomotionAnimation()
Same behavior, but less verbose.
2020-04-05 03:24:56 -04:00
Lioncash 71e3fb1817 CBodyState: Eliminate usages of const_cast
This is clearly modifying the command, so we should allow for modifying
of command instances if necessary.
2020-04-05 03:21:33 -04:00
Lioncash 1fb28a03a3 CBodyState: Mark reference parameters as const where applicable
Makes the parameters explicit about whether or not they're modified.
2020-04-05 03:10:35 -04:00
Lioncash 9ddb726155 CBodyState: Make use of const where applicable
Same behavior, but makes read-only intent explicit.
2020-04-05 02:58:22 -04:00
Lioncash 1b01b232e6 CCinematicCamera: Make use of const where applicable
Makes read-only intent explicit.
2020-04-05 01:45:08 -04:00
Lioncash 4e55edf0fe CCameraSpline: Make use of TCastToConstPtr where applicable
Makes the read-only intent explicit.
2020-04-05 01:25:55 -04:00
Lioncash 7d8bcfbd5e CCameraManager: Make use of TCastToConstPtr where applicable
Makes the read-only behavior explicit.
2020-04-05 01:19:51 -04:00
Lioncash 75cd9b6cf3 CBallCamera: Make use of TCastToConstPtr where applicable
Same behavior, but makes the read-only nature explicit.
2020-04-05 00:54:40 -04:00
Lioncash 8a732194a6 CGameCollision: Eliminate the use of const_cast 2020-04-05 00:30:58 -04:00
Lioncash 4c6ab60110 CGameOptions: Eliminate type punning in CHintOptions constructor and PutTo()
Type punning with unions is undefined behavior.
2020-04-03 02:19:28 -04:00
Lioncash b122fd30a8 CGameProjectile: Return std::nullopt in GetTouchBounds()
Same behavior, but doesn't potentially unnecessary zero out the entirety
of the buffer within the optional and only sets a single byte.
2020-04-03 02:07:54 -04:00
Lioncash d47f8c2784 CGameProjectile: Make use of TCastToConstPtr before
Same behavior, but more indiciative of read-only semantics.
2020-04-03 01:58:00 -04:00
Lioncash eb1209b492 CFlameWarp: Dehardcode container sizes
Same behavior, less magic numbers.
2020-04-03 01:10:22 -04:00
Lioncash ad30f0c61c CActorModelParticles: Make GetParticleDGRPTokens take a std::string_view
Same behavior, but provides a more type-safe interface. All internal
functions called within the function operate on std::string_view
anyways.
2020-04-03 00:36:53 -04:00
Lioncash 75aa359855 CActorModelParticles: Use static_cast instead of reinterpret_cast in PointGenerator()
Casting from void* to a concrete type is permitted with static_cast.
2020-04-03 00:28:14 -04:00
Lioncash a80838b2df CActorModelParticles: Don't cast away const in SetupHook()
Now that we have a non-const overload, we don't need to cast away const
any longer, removing a cast-qual warning.
2020-04-03 00:26:35 -04:00
Lioncash 9ac1a94a5f CActorModelParticles: Add non-const overload of FindSystem()
Same behavior but returns a non-const iterator, which will be used in a
following change.
2020-04-03 00:24:52 -04:00
Lioncash b33fcf9e02 CActorModelParticles: Collapse FindSystem() into a find_if call
Same behavior, less code.
2020-04-03 00:22:37 -04:00
Lioncash c913502d90 CActorModelParticles: Dehardcode container sizes where applicable 2020-04-03 00:08:09 -04:00
Lioncash 93dd28988d CGameArea: Make use of std::make_unique where applicable 2020-04-02 22:02:57 -04:00
Lioncash d240e40a17 CCameraShakeData: Make classes and structs constexpr where applicable
Same behavior, but allows eliminating file-scope initializers needing to
be run on program start.
2020-04-02 21:40:19 -04:00
Lioncash f1e28a1290 CPlasmaBeam: Make use of std::array where applicable
Same behavior, no implicit array to pointer decay.
2020-04-02 21:10:51 -04:00
Lioncash a8594d144b CPlasmaProjectile: Make use of std::array where applicable
Allows dehardcoding array sizes.
2020-04-02 20:55:28 -04:00
Lioncash 66711ce023 CSamusHud: Dehardcode sizes where applicable 2020-04-02 08:34:38 -04:00
Lioncash 013b715c63 CSamusHud: Make use of std::array where applicable
Same behavior without any array->pointer decay.
2020-04-02 08:25:52 -04:00
Lioncash 333fee56e3 CPlayer: Const correctness and bracing consistency changes
Minor surface-level changes to make it nicer to see that certain
variables don't get modified within some operations.

Given some functions are quite large, this is generally nice to see.
2020-04-02 07:39:00 -04:00
Lioncash e7e73e8658 CPlayer: Make use of std::make_unique for x76c_cameraBob
Same behavior, but more consistent with other usages of
std::make_unique.
2020-04-02 03:48:31 -04:00
Lioncash e956402956 CPlayerEnergyDrain: Collapse loop into std::accumulate
Same behavior, less code.
2020-04-02 03:45:07 -04:00
Luke Street ca6b3dd3f6
Merge pull request #294 from lioncash/cseg
CSegStatementSet: Minor changes
2020-04-02 02:32:00 -04:00
Luke Street 206be48b43
Merge pull request #292 from lioncash/automap
CAutoMapper: Eliminate usages of const_cast
2020-04-02 02:31:00 -04:00
Lioncash 0ae638eef9 CCollisionActorManager: Make use of std::nullopt
Gets rid of unnecessary zeroing out of the internal buffer on some
implementations.
2020-04-02 02:08:15 -04:00
Lioncash 6931737aef CCollisionActorManager: Minor tidying
Bracing consistency and using const where applicable.
2020-04-02 02:06:44 -04:00
Lioncash d26521b41d CElitePirate: Add missing const specifiers
Note to self: Remember to stage all of the necessary changes in commits.
2020-04-02 01:55:38 -04:00
Lioncash b562905266 CElitePirate: Mark functions const where applicable
These don't modify instance state, so we can mark these as const.
2020-04-02 00:37:24 -04:00
Lioncash b3753c6a92 CElitePirate: Make use of TCastToConstPtr where applicable
Makes read-only semantics more obvious at a glance.
2020-04-02 00:35:09 -04:00
Lioncash 60000c163b CElitePirate: Collapse indexing into back() calls where applicable
Same behavior, but more compact.
2020-04-02 00:24:24 -04:00
Lioncash 6e179bfa87 CElitePirate: Remove unnecessary reference qualifiers
Same behavior, but makes locations where copies occur much more
explicit.
2020-04-02 00:22:48 -04:00
Lioncash 6017e99aac CGrenadeLauncher: Remove stray reference qualifier on a copy operation
Same behavior, but more explicit about a copy needing to occur here.
2020-04-01 23:59:05 -04:00
Lioncash b95d84a570 CGrenadeLauncher: Resolve sign conversion warnings in constructor 2020-04-01 23:57:53 -04:00
Lioncash f10eb618bf CGrenadeLauncher: Remove reference qualifiers where unnecessary
While allowed by the standard, this obscures cases where actual copies
are occurring.
2020-04-01 23:56:07 -04:00
Lioncash e3775a8fca CRidley: qualify virtual function call in constructor
Signifies that we intentionally want to call this virtual function in
the constructor.
2020-04-01 23:09:11 -04:00
Lioncash 388e5f2e7f CRidley: Make use of std::make_unique where applicable 2020-04-01 23:08:08 -04:00
Luke Street de59ea45eb ScriptLoader: Zero out itemCounts 2020-04-01 21:17:05 -04:00
Luke Street 62e58553c5 CBouncyGrenade/CGrenadeLauncher: Explicit constructor fixes 2020-04-01 15:32:38 -04:00
Luke Street 1e15e0d1f3 Merge remote-tracking branch 'origin/master' into elitepirate
# Conflicts:
#	Runtime/World/CPatterned.hpp
2020-04-01 15:02:56 -04:00
Luke Street 0c1f4fa738 CElitePirate/etc: Use prefix increment/decrement 2020-04-01 15:01:44 -04:00
Luke Street bb7699be46 CElitePirate/CShockWave: Renaming 2020-04-01 14:54:01 -04:00
Luke Street 162b232979 CElitePirate: Fix melee & contact damage 2020-04-01 03:39:05 -04:00
Luke Street d4ff239f91 CShockWave: Implement Touch 2020-04-01 02:41:31 -04:00
Luke Street 6e5c32abfd CBouncyGrenade: Pass bounding box to CPhysicsActor 2020-04-01 01:38:48 -04:00
Lioncash 233b2ccbbf CSegStatementSet: Make use of std::array
Same behavior, but without implicit array to pointer decay.
2020-04-01 00:36:50 -04:00
Lioncash c02d5a91b8 CSegStatementSet: Make x4_segData private
Accessors already exist to access the data individually, so we can just
use those instead.
2020-04-01 00:34:12 -04:00
Lioncash da75543c76 CRainSplashGenerator: Dehardcode line vector size in constructor
We can query the capacity instead.
2020-04-01 00:27:56 -04:00
Lioncash 254a96313a CSkinnedModel: Convert typedef into using alias
Same behavior, nicer to read.
2020-04-01 00:06:52 -04:00
Lioncash 7117e298d9 IVaryingAnimationTimeScale: Add virtual destructor
This is used in a polymorphic context, so we should be specifying a
virtual destructor to prevent undefined behavior when deleting instances
from the base class.
2020-03-31 23:55:15 -04:00
Luke Street deba91bfc0 CGrenadeLauncher: Fix rendering 2020-03-31 21:29:14 -04:00
Luke Street ffd94d1106 COmegaPirate: Stub 2020-03-31 14:17:47 -04:00
Lioncash 47555c725b CAutoMapper: Eliminate usages of const_cast
Same behavior, but makes it explicit from the interface that
modifications are clearly going on from within the class.
2020-03-31 06:57:07 -04:00
Lioncash 12e42ba58a CMapWorld: Make use of std::array where applicable
Same behavior, stronger typing.
2020-03-31 06:18:58 -04:00