예제 #1
0
bool	GameObjectManager::collisionGroups(const std::string &group1,
					 const std::string &group2,
					 bool reverse) const
{
  return (this->_collisionGroups.count(stringPair(group1, group2)) > 0) ? true :
	  reverse && this->_collisionGroups.count(stringPair(group2, group1));
}
예제 #2
0
void	GameObjectManager::setCollisionGroups(
			const std::string &group1, const std::string &group2,
			void (*function)(GameObject&, GameObject&))
{
	_collisionGroups[stringPair(group1, group2)] =
		new PhysicsSubscriber3(function);
}
예제 #3
0
void	GameObjectManager::callCollision(PhysicObject &obj1,
										 PhysicObject &obj2)
{
		collisionGroupsMap::iterator it =
			this->_collisionGroups.find(stringPair(obj1.getGroup()->getName(),
								   			obj2.getGroup()->getName()));

		if (it != this->_collisionGroups.end())
			(*it->second)(obj1, obj2);
}
예제 #4
0
OptionsWrapper::stringTripleVec OptionsWrapper::getOptions(Enum::GameOption modmapFlag) const
{
	stringTripleVec list;
	GameOptionsMapCIter optIt = m_opts.find((int)modmapFlag);
	if (optIt != m_opts.end()) {
		const GameOptions& gameoptions = optIt->second;
		for (OptionMapBoolConstIter it = gameoptions.bool_map.begin(); it != gameoptions.bool_map.end(); ++it) {
			list.push_back(stringTriple((*it).first, stringPair(it->second.name, Util::ToIntString(it->second.value))));
		}

		for (OptionMapStringConstIter it = gameoptions.string_map.begin(); it != gameoptions.string_map.end(); ++it) {
			list.push_back(stringTriple((*it).first, stringPair(it->second.name, it->second.value)));
		}

		for (OptionMapFloatConstIter it = gameoptions.float_map.begin(); it != gameoptions.float_map.end(); ++it) {
			list.push_back(stringTriple((*it).first, stringPair(it->second.name, Util::ToFloatString(it->second.value))));
		}

		for (OptionMapListConstIter it = gameoptions.list_map.begin(); it != gameoptions.list_map.end(); ++it) {
			list.push_back(stringTriple((*it).first, stringPair(it->second.name, it->second.value)));
		}
	}
	return list;
}