Exemplo n.º 1
0
void LLCCEP_tools::commandLineParametersParser::parse(int argn, char **argv)
{
	for (int i = 1; i < argn; i++) {
		auto param = isParam(argv[i]);

		if (param != flags.end()) {
			bool follow = followed(argv[i]);

			if (follow && i == argn - 1) {
				throw RUNTIME_EXCEPTION(CONSTRUCT_MSG(
					"Sudden end after '%s'",
					argv[i]));
			} else if (follow) {
				param->following = argv[++i];
			} else if (!follow) {
				param->following = "1";
			}
		} else if (maxFreeParams != (static_cast<size_t>(-1)) &&
		           freeParams.size() > maxFreeParams) {
			throw RUNTIME_EXCEPTION(CONSTRUCT_MSG(
				"Too many free parameters"));
		} else {
			freeParams.push_back(argv[i]);
		}
	}
}
//-----------------------------------------------------------------------------
//
physx::PxTransform FollowPoseComponent::updatePose()
{
	GameObjectRef wTargetGO = followed();
	if (wTargetGO == nullptr)
		return _lastPose;

	IPoseInterfaceRef wPoseInterface = wTargetGO->as<IPoseInterface>();
	if (wPoseInterface == nullptr)
		return _lastPose;

	physx::PxTransform wPose = wPoseInterface->pose();
	if (_poseAdjustment == nullptr)
		return wPose;

	wPose = _poseAdjustment(wPose);
	return wPose;
}