The first frame, we will not get register pointer.
Get viewport.
Add pick.
@breif Sub pick.
@breif Single Select.
@breif Cancle Select.
The first frame, we will not get register pointer.
Get viewport.
Add pick.
@breif Sub pick.
@breif Single Select.
@breif Cancle Select.
28 {
30
35
40
42
43 if (
m_ViewPort.lock()->GetMousePosInViewport().first < 0 ||
45 m_ViewPort.lock()->GetMousePosInViewport().second < 0 ||
47 )
48 {
49 return false;
50 }
51
53 {
58 {
59 auto pair =
m_ViewPort.lock()->GetMousePosInViewport();
60
62 ->AccessRowResource("EntityID")
63 ->CopyImageTexelToBuffer(
64 pair.first,
65 pair.second,
67 );
68
70 std::string entityName = *entity.GetComponent<TagComponent>().GetTag().begin();
71
73
74 std::stringstream ss;
75 ss << "Select entity: " << entityName;
76
77 SPICES_CORE_TRACE(ss.str())
78 }
79
84 {
85 auto pair =
m_ViewPort.lock()->GetMousePosInViewport();
86
88 ->AccessRowResource("EntityID")
89 ->CopyImageTexelToBuffer(
90 pair.first,
91 pair.second,
93 );
94
96 if (ptr)
97 {
98 std::stringstream ss;
99 ss << "Deselect entity: " << *ptr;
100
101 SPICES_CORE_TRACE(ss.str())
102
103 FrameInfo::Get().m_PickEntityID.erase(static_cast<
int>(
m_WorldPickID[0]));
104 }
105 }
106
110 else
111 {
113
114 auto pair =
m_ViewPort.lock()->GetMousePosInViewport();
115
117 ->AccessRowResource("EntityID")
118 ->CopyImageTexelToBuffer(
119 pair.first,
120 pair.second,
122 );
123
125 std::string entityName = *entity.GetComponent<TagComponent>().GetTag().begin();
126
128
129 std::stringstream ss;
130 ss << "Select entity: " << entityName;
131
132 SPICES_CORE_TRACE(ss.str())
133 }
134 }
135
140 {
142
143 SPICES_CORE_TRACE("Cancel all selected entity")
144 }
145
146 return false;
147 }
#define SPICES_PROFILE_ZONE
static FrameInfo & Get()
Get FrameInfo.
scl::linked_unordered_map< int, std::string > m_PickEntityID
static std::shared_ptr< SlateRegister > GetRegister()
Get slate register.
static std::shared_ptr< RendererResourcePool > GetRendererResourcePool()
Get RendererResourcePool in use.
std::weak_ptr< ImguiViewport > m_ViewPort
viewport pointer.
float m_WorldPickID[4]
World Picked entity id (only use channel 0).
V * find_value(const K &key)
Find the value by key.
void clear()
Clear this container's data.
void push_back(const K &key, const V &value)
Add a element to this container.