void MoveScript::runScripts() { if(useFaceTarget) { faceTarget(); } if(useGlobalRotate) { globalRotate(); } if(useLocalRotate) { localRotate(); } if(useLocalTrans) { localTrans(); } if(useGlobalTrans) { globalTrans(); } if(useSetScale) { setScale(); } if(useLimitedTrans) { localTransLimited(); } if(useFollowPlayer) { followPlayer(); } if(useBulletTrans) { bulletTranslation(); } }
// TODO: switch camera to using a physics/velocity model // so that interactions are consistent. // the current method could be unstable to framerate // and event processing speeds. void Camera::handleKeyEvent(window::KeyEvent e) { if (e.action == window::action::PRESSED || e.action == window::action::REPEAT) { switch (e.key) { default: break; // zoom = move forward/back case window::key::W: zoom(0.2f); break; case window::key::S: zoom(-0.2f); break; // move (slide) case window::key::C: localTranslate({0, -0.2f, 0}); break; case window::key::E: localTranslate({0, 0.2f, 0}); break; case window::key::A: localTranslate({-0.2f,0,0}); break; case window::key::D: localTranslate({0.2f,0,0}); break; // look around case window::key::I: if (e.mods == window::mods::SHIFT) rotateAroundTarget(quat4f(Eigen::AngleAxisf(0.1f, vec3f::UnitX()))); else localRotate(quat4f(Eigen::AngleAxisf(0.1f, vec3f::UnitX()))); break; case window::key::J: if (e.mods == window::mods::SHIFT) rotateAroundTarget(quat4f(Eigen::AngleAxisf(0.1f, vec3f::UnitY()))); else localRotate(quat4f(Eigen::AngleAxisf(0.1f, vec3f::UnitY()))); break; case window::key::K: if (e.mods == window::mods::SHIFT) rotateAroundTarget(quat4f(Eigen::AngleAxisf(-0.1f, vec3f::UnitX()))); else localRotate(quat4f(Eigen::AngleAxisf(-0.1f, vec3f::UnitX()))); break; case window::key::L: if (e.mods == window::mods::SHIFT) rotateAroundTarget(quat4f(Eigen::AngleAxisf(-0.1f, vec3f::UnitY()))); else localRotate(quat4f(Eigen::AngleAxisf(-0.1f, vec3f::UnitY()))); break; // rolling case window::key::U: localRotate(quat4f(Eigen::AngleAxisf(0.1f, vec3f::UnitZ()))); break; case window::key::O: localRotate(quat4f(Eigen::AngleAxisf(-0.1f, vec3f::UnitZ()))); break; } } }