b2Body::SetUserData 是否已弃用
Is b2Body::SetUserData deprecated
我正在设置一个 box2d 主体,使用一些旧代码作为参考,在我的旧代码中我在设置主体的最后,这一行
body->SetUserData(this);
如果我查看 box2d 源代码,我可以找到这个函数
inline void b2Body::SetUserData(void* data)
{
m_userData = data;
}
然而,当我尝试在我的新项目中设置此用户数据时(可能使用更新版本的 box2d),该功能并不存在。
该功能是否已弃用?还是我以某种方式设法删除了应该存在的功能?
经过进一步调查,我发现该函数已被弃用,因为用户数据的设置已更改为具有包装器结构。
旧设置如下:
class b2Body
{
public:
/// Get the user data pointer that was provided in the body definition.
void* GetUserData() const;
/// Set the user data. Use this to store your application specific data.
void SetUserData(void* data);
private:
void* m_userData;
};
inline void b2Body::SetUserData(void* data)
{
m_userData = data;
}
inline void* b2Body::GetUserData() const
{
return m_userData;
}
但是现在已经更改为:
class B2_API b2Body
{
public:
/// Get the user data pointer that was provided in the body definition.
b2BodyUserData& GetUserData();
private:
b2BodyUserData m_userData;
};
inline b2BodyUserData& b2Body::GetUserData()
{
return m_userData;
}
这个结构 b2BodyUserData
定义为
struct B2_API b2BodyUserData
{
b2BodyUserData()
{
pointer = 0;
}
/// For legacy compatibility
uintptr_t pointer;
};
因此设置用户数据的方法不再需要 SetUserData()
,因为 GetUserData()
returns non-const
对该结构的引用可以修改,以提供相同的功能。
我正在设置一个 box2d 主体,使用一些旧代码作为参考,在我的旧代码中我在设置主体的最后,这一行
body->SetUserData(this);
如果我查看 box2d 源代码,我可以找到这个函数
inline void b2Body::SetUserData(void* data)
{
m_userData = data;
}
然而,当我尝试在我的新项目中设置此用户数据时(可能使用更新版本的 box2d),该功能并不存在。
该功能是否已弃用?还是我以某种方式设法删除了应该存在的功能?
经过进一步调查,我发现该函数已被弃用,因为用户数据的设置已更改为具有包装器结构。
旧设置如下:
class b2Body
{
public:
/// Get the user data pointer that was provided in the body definition.
void* GetUserData() const;
/// Set the user data. Use this to store your application specific data.
void SetUserData(void* data);
private:
void* m_userData;
};
inline void b2Body::SetUserData(void* data)
{
m_userData = data;
}
inline void* b2Body::GetUserData() const
{
return m_userData;
}
但是现在已经更改为:
class B2_API b2Body
{
public:
/// Get the user data pointer that was provided in the body definition.
b2BodyUserData& GetUserData();
private:
b2BodyUserData m_userData;
};
inline b2BodyUserData& b2Body::GetUserData()
{
return m_userData;
}
这个结构 b2BodyUserData
定义为
struct B2_API b2BodyUserData
{
b2BodyUserData()
{
pointer = 0;
}
/// For legacy compatibility
uintptr_t pointer;
};
因此设置用户数据的方法不再需要 SetUserData()
,因为 GetUserData()
returns non-const
对该结构的引用可以修改,以提供相同的功能。