v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
95
source/game/StarForceRegions.hpp
Normal file
95
source/game/StarForceRegions.hpp
Normal file
|
@ -0,0 +1,95 @@
|
|||
#ifndef STAR_FORCE_REGIONS_HPP
|
||||
#define STAR_FORCE_REGIONS_HPP
|
||||
|
||||
#include "StarPoly.hpp"
|
||||
#include "StarVariant.hpp"
|
||||
#include "StarJson.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
struct PhysicsCategoryFilter {
|
||||
enum Type { Whitelist, Blacklist };
|
||||
|
||||
static PhysicsCategoryFilter whitelist(StringSet categories);
|
||||
static PhysicsCategoryFilter blacklist(StringSet categories);
|
||||
|
||||
PhysicsCategoryFilter(Type type = Blacklist, StringSet categories = {});
|
||||
|
||||
bool check(StringSet const& categories) const;
|
||||
|
||||
bool operator==(PhysicsCategoryFilter const& rhs) const;
|
||||
|
||||
Type type;
|
||||
StringSet categories;
|
||||
};
|
||||
|
||||
DataStream& operator>>(DataStream& ds, PhysicsCategoryFilter& rfr);
|
||||
DataStream& operator<<(DataStream& ds, PhysicsCategoryFilter const& rfr);
|
||||
|
||||
PhysicsCategoryFilter jsonToPhysicsCategoryFilter(Json const& json);
|
||||
|
||||
struct DirectionalForceRegion {
|
||||
static DirectionalForceRegion fromJson(Json const& json);
|
||||
|
||||
RectF boundBox() const;
|
||||
|
||||
void translate(Vec2F const& pos);
|
||||
|
||||
bool operator==(DirectionalForceRegion const& rhs) const;
|
||||
|
||||
PolyF region;
|
||||
Maybe<float> xTargetVelocity;
|
||||
Maybe<float> yTargetVelocity;
|
||||
float controlForce;
|
||||
PhysicsCategoryFilter categoryFilter;
|
||||
};
|
||||
|
||||
DataStream& operator>>(DataStream& ds, DirectionalForceRegion& rfr);
|
||||
DataStream& operator<<(DataStream& ds, DirectionalForceRegion const& rfr);
|
||||
|
||||
struct RadialForceRegion {
|
||||
static RadialForceRegion fromJson(Json const& json);
|
||||
|
||||
RectF boundBox() const;
|
||||
|
||||
void translate(Vec2F const& pos);
|
||||
|
||||
bool operator==(RadialForceRegion const& rhs) const;
|
||||
|
||||
Vec2F center;
|
||||
float outerRadius;
|
||||
float innerRadius;
|
||||
float targetRadialVelocity;
|
||||
float controlForce;
|
||||
PhysicsCategoryFilter categoryFilter;
|
||||
};
|
||||
|
||||
DataStream& operator>>(DataStream& ds, RadialForceRegion& rfr);
|
||||
DataStream& operator<<(DataStream& ds, RadialForceRegion const& rfr);
|
||||
|
||||
struct GradientForceRegion {
|
||||
static GradientForceRegion fromJson(Json const& json);
|
||||
|
||||
RectF boundBox() const;
|
||||
|
||||
void translate(Vec2F const& pos);
|
||||
|
||||
bool operator==(GradientForceRegion const& rhs) const;
|
||||
|
||||
PolyF region;
|
||||
Line2F gradient;
|
||||
float baseTargetVelocity;
|
||||
float baseControlForce;
|
||||
PhysicsCategoryFilter categoryFilter;
|
||||
};
|
||||
|
||||
DataStream& operator>>(DataStream& ds, GradientForceRegion& rfr);
|
||||
DataStream& operator<<(DataStream& ds, GradientForceRegion const& rfr);
|
||||
|
||||
typedef Variant<DirectionalForceRegion, RadialForceRegion, GradientForceRegion> PhysicsForceRegion;
|
||||
|
||||
PhysicsForceRegion jsonToPhysicsForceRegion(Json const& json);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue