25 std::unique_ptr<ISolver>
makeSolver(
Physics::PhysicsBody* body,
const std::unordered_map<std::string, double> &knowns,
const std::string &unknown)
const;
28 std::vector<std::vector<std::string>>
getRequiredKeys(
const std::string& unknown)
const;
33 using SolverFactory = std::function<std::unique_ptr<ISolver>(
Physics::PhysicsBody* body,
const std::unordered_map<std::string,double>&)>;
36 std::vector<std::string> requiredKeys;
37 SolverFactory factory;
40 bool areRequirementsMet(
const std::vector<std::string>& required,
const std::unordered_map<std::string, double>& knowns)
const;
44 std::unordered_map<std::string, std::vector<SolverEntry>> solverMap;
45 void registerKinematicsProblems();