KisaragiLibrary
 
読み取り中…
検索中…
一致する文字列を見つけられません
Collision_tag.hpp
[詳解]
1#pragma once
2#include <unordered_set>
3#include <unordered_map>
4#include <bitset>
6#include <mutex>
7
8namespace Kisaragi_Lib
9{
11 {
12 Default = 0b00000001,
13 MyTag01 = 0b00000001 << 1,
14 MyTag02 = 0b00000001 << 2,
15 MyTag03 = 0b00000001 << 3,
16 MyTag04 = 0b00000001 << 4,
17 MyTag05 = 0b00000001 << 5,
18 MyTag06 = 0b00000001 << 6,
19 MyTag07 = 0b00000001 << 7,
20 };
21
22 /// <summary>
23 /// 衝突判定List
24 /// </summary>
25 using CollisionList = std::bitset<COLLISION_TAG_CNT>;
26
28 {
30 };
31
32
33
34 /// <summary>
35 /// 衝突判定の構造体
36 /// </summary>
38 {
39 CollisionTable(std::unordered_map<CollisionTag, CollisionList> _table) : table{_table}
40 { }
41
42 /// <summary>
43 /// 衝突判定リスト
44 /// 対象のタグ { 判定するタグたち }
45 /// </summary>
46 std::unordered_map<CollisionTag, CollisionList> table;
47
48 const CollisionTable& operator+=(std::unordered_map<CollisionTag, CollisionList> _collTable)
49 {
50 for (auto& [key, value] : _collTable)
51 {
52 //存在するなら
53 if (table.count(key) == true)
54 {
55 value |= value;
56 }
57 else
58 {
59 table.emplace(key, value);
60 }
61 }
62
63 return table;
64 }
65
67 {
68 return table[_tag];
69 }
70
71 operator std::unordered_map<CollisionTag, CollisionList>&()
72 {
73 return table;
74 }
75 };
76
78 {
79 public:
80
81 static void Add(CollisionTable);
82 static void Set(CollisionTable);
83
84 static const CollisionTable& Get();
85 };
86
87}
Definition Collision_tag.hpp:78
static void Set(CollisionTable)
Definition Collision_tag.cpp:44
static const CollisionTable & Get()
Definition Collision_tag.cpp:49
static void Add(CollisionTable)
Definition Collision_tag.cpp:39
Definition Accessor.hpp:110
CollisionTag
Definition Collision_tag.hpp:11
@ Default
Definition Collision_tag.hpp:12
@ MyTag04
Definition Collision_tag.hpp:16
@ MyTag06
Definition Collision_tag.hpp:18
@ MyTag05
Definition Collision_tag.hpp:17
@ MyTag07
Definition Collision_tag.hpp:19
@ MyTag02
Definition Collision_tag.hpp:14
@ MyTag01
Definition Collision_tag.hpp:13
@ MyTag03
Definition Collision_tag.hpp:15
std::bitset< COLLISION_TAG_CNT > CollisionList
衝突判定List
Definition Collision_tag.hpp:25
static const CollisionList DEFAULT_COLLISION
Definition Collision_tag.hpp:27
衝突判定の構造体
Definition Collision_tag.hpp:38
CollisionList & operator[](CollisionTag _tag)
Definition Collision_tag.hpp:66
const CollisionTable & operator+=(std::unordered_map< CollisionTag, CollisionList > _collTable)
Definition Collision_tag.hpp:48
CollisionTable(std::unordered_map< CollisionTag, CollisionList > _table)
Definition Collision_tag.hpp:39
std::unordered_map< CollisionTag, CollisionList > table
衝突判定リスト 対象のタグ { 判定するタグたち }
Definition Collision_tag.hpp:46