diff options
author | Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> | 2022-02-23 22:27:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-23 18:27:08 -0300 |
commit | 4f28a07d0562ca905bbcdb010b69604c330194bb (patch) | |
tree | 32ce0e8b0eff10cba6944a561e3538931a6033b6 /NorthstarDedicatedTest/bits.cpp | |
parent | 8c9f34283f8670dda98959d0785d682e6f652a93 (diff) | |
download | NorthstarLauncher-4f28a07d0562ca905bbcdb010b69604c330194bb.tar.gz NorthstarLauncher-4f28a07d0562ca905bbcdb010b69604c330194bb.zip |
ConVar class rebuild (#90)
* Implement CCvar class with mapped out vtable funcs
* Rebuilded ConVar class + code overhaul to use new system
* ConVar class is now properly mapped out for r2 (0x80 in size).
* Reimplemented and exposed all frequently used ConVar class methods to the SDK.
* Implement frequently used CCvar class methods.
* Implement all CCVarIteratorInternal class methods.
* Performed additional cleanup over the SDK to use new system instead.
* ConVar class improvements + rebuilded ConCommand struct
* Fix actual struct size for ConCommand
Diffstat (limited to 'NorthstarDedicatedTest/bits.cpp')
-rw-r--r-- | NorthstarDedicatedTest/bits.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/bits.cpp b/NorthstarDedicatedTest/bits.cpp new file mode 100644 index 00000000..45375b18 --- /dev/null +++ b/NorthstarDedicatedTest/bits.cpp @@ -0,0 +1,28 @@ +//=============================================================================// +// +// Purpose: look for NANs, infinities, and underflows. +// +//=============================================================================// + +#include "pch.h" +#include "bits.h" + +//----------------------------------------------------------------------------- +// This follows the ANSI/IEEE 754-1985 standard +//----------------------------------------------------------------------------- +unsigned long& FloatBits(float& f) { return *reinterpret_cast<unsigned long*>(&f); } + +unsigned long const& FloatBits(float const& f) { return *reinterpret_cast<unsigned long const*>(&f); } + +float BitsToFloat(unsigned long i) { return *reinterpret_cast<float*>(&i); } + +bool IsFinite(float f) { return ((FloatBits(f) & 0x7F800000) != 0x7F800000); } + +unsigned long FloatAbsBits(float f) { return FloatBits(f) & 0x7FFFFFFF; } + +float FloatMakePositive(float f) { return fabsf(f); } + +float FloatNegate(float f) +{ + return -f; // BitsToFloat( FloatBits(f) ^ 0x80000000 ); +} |