void gkTickState::initialize(int rate) { m_rate = gkMax<unsigned long>(1, rate); m_ticks = 1000 / m_rate; // time out at 1/5 rate m_skip = gkMax<unsigned long>(m_rate / 5, 1); m_invt = gkScalar(1.0) / (gkScalar)m_ticks; m_fixed = gkScalar(1.0) / (gkScalar)m_rate; if (m_clock) delete m_clock; m_clock = new btClock(); m_init = false; }
void gkBlenderSceneConverter::convertObjectCamera(gkGameObject* gobj, Blender::Object* bobj) { GK_ASSERT(gobj->getType() == GK_CAMERA && bobj->data); gkCamera* obj = static_cast<gkCamera*>(gobj); Blender::Camera* camera = static_cast<Blender::Camera*>(bobj->data); gkCameraProperties& props = obj->getCameraProperties(); if (camera->type == CAM_ORTHO) props.m_type = gkCameraProperties::CA_ORTHOGRAPHIC; else props.m_type = gkCameraProperties::CA_PERSPECTIVE; props.m_clipend = camera->clipend; props.m_clipstart = camera->clipsta; props.m_fov = gkScalar(360) * gkMath::ATan(gkScalar(16) / camera->lens).valueRadians() / gkPi; props.m_orthoscale = camera->ortho_scale; props.m_start = m_bscene->camera == bobj; }
void gkDebugScreen::pushText(const gkString& text) { utStringUtils::split(m_splitBuf, text, "\n\r"); Ogre::TextAreaOverlayElement* textArea = static_cast<Ogre::TextAreaOverlayElement*>(m_ele); const gkVector2& winSize = gkWindowSystem::getSingleton().getMouse()->winsize; gkScalar che = textArea->getCharHeight(); for (UTsize i = 0; i < m_splitBuf.size(); ++i) { ScreenBufferItem* item = m_lineBuffer.alloc(); item->clear(); item->m_buf = m_splitBuf.at(i); m_lines.push_back(item); gkScalar size = gkScalar(m_lines.size()) * che; if (size > winSize.y) m_lineBuffer.dealloc(m_lines.pop_front()); } m_splitBuf.clear(true); if (!m_lines.empty()) { // write lines m_txtBuffer.resize(0); ScreenBufferItem* node = m_lines.begin(); while (node) { m_txtBuffer += node->m_buf + "\n"; node = node->getNext(); } } _getClipped(); }
gkScalar gkEngine::getStepRate(void) { return gkScalar(1.0) / m_tickRate; }