1
Graphics / Help with unordered set using vertex
« on: June 01, 2021, 12:55:36 am »
hello,
I'm trying to implement a version of Achtung die Kurve,
i'd like to store every line in std::unordered set
so if there's a collision i could tell a player its lost
every player is a line that add each point to the end.
its not working because i couldn't succeeded doing hash and equal function of vertices.
latest sfml, visual studio 2017
error represents:
fast insertion and find
please advice,
thank you
I'm trying to implement a version of Achtung die Kurve,
i'd like to store every line in std::unordered set
so if there's a collision i could tell a player its lost
every player is a line that add each point to the end.
its not working because i couldn't succeeded doing hash and equal function of vertices.
latest sfml, visual studio 2017
Code: [Select]
#pragma once
#include <SFML/Graphics.hpp>
#include <unordered_set>
#include <functional>
size_t hash(const sf::Vertex& vertex) {
std::size_t seed = 0;
seed ^= std::hash<unsigned int>()((unsigned int)vertex.position.x) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
seed ^= std::hash<unsigned int>()((unsigned int)vertex.position.y) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
return seed;
};
bool equal(sf::Vertex const& lhs, sf::Vertex const& rhs)
{
return lhs.position.x == rhs.position.y && lhs.position.y == rhs.position.y;
};
class VertexSet : public sf::Drawable
{
public:
VertexSet();
private:
using equal_type = bool (*)(const sf::Vertex&, const sf::Vertex&);
using hash_type = std::size_t(*)(const sf::Vertex&);
std::unordered_set<sf::Vertex, hash_type, equal_type> m_vertices = std::unordered_set<sf::Vertex, hash_type, equal_type>(0, hash, equal);
sf::PrimitiveType m_primitiveType;
};
its not working actually,error represents:
Code: [Select]
Severity Code Description Project File Line Suppression State
Error LNK2005 "bool __cdecl equal(class sf::Vertex const &,class sf::Vertex const &)" (?equal@@YA_NAEBVVertex@sf@@0@Z)
I want to have a set of points that i can draw the things,fast insertion and find
please advice,
thank you