mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-08 07:28:22 -10:00
* Add parent / host input curves * reorder some includes to allow particles access to ship.h * Allow modular_curves to deal with functions returning optionals * Add convenience function to return an optional from an objp and an instance type * Add a bunch of particle curve inputs * Fix internal linkage warning * Add hitpoint and shield fraction (albeit limited to ships)
31 lines
1.1 KiB
C++
31 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <optional>
|
|
|
|
#include "asteroid/asteroid.h"
|
|
#include "debris/debris.h"
|
|
#include "fireball/fireballs.h"
|
|
#include "object/object.h"
|
|
#include "ship/ship.h"
|
|
#include "weapon/weapon.h"
|
|
|
|
template<int type>
|
|
inline auto obj_get_instance_maybe(const object* objp) {
|
|
if constexpr(type == OBJ_SHIP)
|
|
return objp->type == type ? std::optional(&Ships[objp->instance]) : std::nullopt;
|
|
else if constexpr(type == OBJ_WEAPON)
|
|
return objp->type == type ? std::optional(&Weapons[objp->instance]) : std::nullopt;
|
|
else if constexpr(type == OBJ_FIREBALL)
|
|
return objp->type == type ? std::optional(&Fireballs[objp->instance]) : std::nullopt;
|
|
else if constexpr(type == OBJ_DEBRIS)
|
|
return objp->type == type ? std::optional(&Debris[objp->instance]) : std::nullopt;
|
|
else if constexpr(type == OBJ_WING)
|
|
return objp->type == type ? std::optional(&Wings[objp->instance]) : std::nullopt;
|
|
else if constexpr(type == OBJ_ASTEROID)
|
|
return objp->type == type ? std::optional(&Asteroids[objp->instance]) : std::nullopt;
|
|
else if constexpr(type == OBJ_BEAM)
|
|
return objp->type == type ? std::optional(&Beams[objp->instance]) : std::nullopt;
|
|
else
|
|
return std::nullopt;
|
|
}
|