Files

51 lines
1.5 KiB
C++
Raw Permalink Normal View History

#ifndef _CMATERIALFILTER
#define _CMATERIALFILTER
2022-08-12 21:26:00 -04:00
#include "types.h"
#include "Collision/CMaterialList.hpp"
class CMaterialFilter {
2022-08-12 21:26:00 -04:00
public:
2026-01-18 13:20:14 -08:00
static const CMaterialFilter skPassEverything;
2022-08-12 21:26:00 -04:00
enum EFilterType {
kFT_Always,
kFT_Include,
kFT_Exclude,
kFT_IncludeExclude,
};
CMaterialFilter() : include(0x00000000FFFFFFFF), exclude(0), type(kFT_Always) {}
2022-08-12 21:26:00 -04:00
CMaterialFilter(const CMaterialList& include, const CMaterialList& exclude, EFilterType type)
: include(include), exclude(exclude), type(type) {}
2025-05-23 03:05:25 -07:00
const CMaterialList& GetIncludeList() const { return include; }
2026-01-06 15:19:27 -08:00
CMaterialList& IncludeList() { return include; }
2025-05-23 03:05:25 -07:00
const CMaterialList& GetExcludeList() const { return exclude; }
2026-01-06 15:19:27 -08:00
CMaterialList& ExcludeList() { return exclude; }
2022-10-03 20:00:46 -04:00
static CMaterialFilter MakeInclude(const CMaterialList& include) {
return CMaterialFilter(include, CMaterialList(), kFT_Include);
}
static CMaterialFilter MakeExclude(const CMaterialList& exclude) {
2026-01-18 21:58:48 -08:00
return CMaterialFilter(CMaterialList(0x00000000FFFFFFFF), exclude, kFT_Exclude);
2022-10-03 20:00:46 -04:00
}
2022-09-18 02:05:46 -04:00
static CMaterialFilter MakeIncludeExclude(const CMaterialList& include,
const CMaterialList& exclude) {
2022-08-12 21:26:00 -04:00
return CMaterialFilter(include, exclude, kFT_IncludeExclude);
}
2022-11-17 06:56:21 +02:00
static const CMaterialFilter& GetPassEverything() { return skPassEverything; }
bool Passes(const CMaterialList& other) const;
2022-08-12 21:26:00 -04:00
private:
CMaterialList include;
CMaterialList exclude;
EFilterType type;
};
CHECK_SIZEOF(CMaterialFilter, 0x18)
#endif // _CMATERIALFILTER