void bufRxManager::receive(epicsUInt8* raw,unsigned int usedlen) { /* CONTAINER doesn't work when the member is a pointer * because the GNU version's check isn't correct buffer *buf=CONTAINER(raw, buffer, data); */ buffer *buf=(buffer*)((char*)(raw) - offsetof(buffer, data)); if (usedlen>bsize()) throw std::out_of_range("User admitted overflowing Rx buffer"); buf->used=usedlen; if (usedlen==0) { // buffer returned w/o being used { SCOPED_LOCK(guard); ellAdd(&freebufs, &buf->node); } return; } { SCOPED_LOCK(guard); ellAdd(&usedbufs, &buf->node); } callbackRequest(&received_cb); }
BOOL obj_ServerBarricade::OnCreate() { ObjFlags |= OBJFLAG_SkipCastRay; // set FileName based on itemid for ReadPhysicsConfig() in OnCreate() r3dPoint3D bsize(1, 1, 1); if(m_ItemID == WeaponConfig::ITEMID_BarbWireBarricade) { FileName = "Data\\ObjectsDepot\\Weapons\\Item_Barricade_BarbWire_Built.sco"; bsize = r3dPoint3D(5.320016f, 1.842704f, 1.540970f); } else if(m_ItemID == WeaponConfig::ITEMID_WoodShieldBarricade) { FileName = "Data\\ObjectsDepot\\Weapons\\Item_Barricade_WoodShield_Built.sco"; bsize = r3dPoint3D(1.582400f, 2.083451f, 0.708091f); } else if(m_ItemID == WeaponConfig::ITEMID_RiotShieldBarricade) { FileName = "Data\\ObjectsDepot\\Weapons\\Item_Riot_Shield_01.sco"; bsize = r3dPoint3D(1.726829f, 2.136024f, 0.762201f); } else if(m_ItemID == WeaponConfig::ITEMID_SandbagBarricade) { FileName = "Data\\ObjectsDepot\\Weapons\\item_barricade_Sandbag_built.sco"; bsize = r3dPoint3D(1.513974f, 1.057301f, 1.111396f); } else if(m_ItemID == WeaponConfig::ITEMID_AirHorn) { FileName = "Data\\ObjectsDepot\\Weapons\\item_airhorn.sco"; bsize = r3dPoint3D(1.513974f, 1.057301f, 1.111396f); } else r3dError("unknown barricade item\n"); parent::OnCreate(); // add navigational obstacle r3dBoundBox obb; obb.Size = bsize; obb.Org = r3dPoint3D(GetPosition().x - obb.Size.x/2, GetPosition().y, GetPosition().z - obb.Size.z/2); m_ObstacleId = gAutodeskNavMesh.AddObstacle(obb, GetRotationVector().x); // calc 2d radius m_Radius = R3D_MAX(obb.Size.x, obb.Size.z) / 2; gServerLogic.NetRegisterObjectToPeers(this); return 1; }
epicsUInt8* bufRxManager::getFree(unsigned int* blen) { ELLNODE *node; { SCOPED_LOCK(guard); node=ellGet(&freebufs); } if (!node) return NULL; buffer *buf=CONTAINER(node, buffer, node); if (blen) *blen=bsize(); buf->used=0; return buf->data; }
/** * @brief Load a skin file * * @param file the skin file * * @return false on an error */ bool Settings::load(const QString& file) { qDebug() << "Settings: load"; delete m_image; GError *err = NULL; m_private = new SettingsPrivate; if(skin_load(m_private,file.toLocal8Bit().data(),&err) != 0) { qDebug() << "Settings: couldn't load"; return false; } m_image = new QImage(); GdkPixbuf* pixbuf = m_private->raw; const uchar* bdata = (const uchar*)gdk_pixbuf_get_pixels(pixbuf); QSize bsize(gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf)); int stride = gdk_pixbuf_get_rowstride(pixbuf); QImage im(bdata, bsize.width(), bsize.height(), stride, QImage::Format_RGB888 ); *m_image = im.rgbSwapped(); if(m_image->isNull()) { qDebug() << "Image Error"; delete m_image; return false; } m_keyPos.clear(); for(int iii = 0; iii < SKIN_KEYS; iii++) { QRect r = transform(m_private->keys_pos[iii]); if(!r.isValid()) break; m_keyPos << r; } return true; }
// Loads a character script. void Character::handleScript(const String &file) { lua_State *L = ScriptManager::get().getL(); bool res = false; FtsEvaluator ev(L); LuaEngine::RunFile(L, file); res = ev.evalNumber("Character.JumpForce", jump_force); res = ev.evalNumber("Character.WalkSpeed", walk_speed); double mass = 0; res = ev.evalNumber("Character.Mass", mass); double yaw = 0; res = ev.evalNumber("Character.Yaw", yaw); this->yaw = yaw; Ogre::Vector3 size; res = ev.evalVector3("Character.Size", size); double scale = 1; res = ev.evalNumber("Character.Scale", scale); node->yaw(Ogre::Degree(yaw)); node->setScale(scale, scale, scale); entity->getSkeleton()->setBlendMode(Ogre::ANIMBLEND_CUMULATIVE); btVector3 bsize(size.x, size.y, size.z); btCollisionShape *shape = &physics::ShapesManager::getInstance().getBoxShape(bsize); setCenterOffset(physics::vector3(Ogre::Vector3(0,0,0))); createBody(mass, *shape, this); LuaEngine::BeginCallEx(L, "Character.OnCreate"); LuaEngine::PushPointer(L, this, "Character *"); LuaEngine::EndCall(L, 1); }
int main() { printf("TEXTBW40 - %d\n", bsize(40,25,4)); printf("TEXTC40 - %d\n", bsize(40,25,4)); printf("TEXTBW80 - %d\n", bsize(80,25,4)); printf("TEXTC40 - %d\n", bsize(80,25,4)); printf("MRES4COLOR - %d\n", bsize(320,200,2)); printf("MRESNOCOLOR - %d\n", bsize(320,200,2)); printf("HRESBW - %d\n", bsize(640,200,1)); printf("TEXTMONO - %d\n", bsize(80,25,1)); printf("MRES16COLOR - %d\n", bsize(320,200,4)); printf("HRES16COLOR - %d\n", bsize(640,200,4)); printf("ERESNOCOLOR - %d\n", bsize(320,350,1)); printf("ERESCOLOR - %d\n", bsize(340,350,6)); printf("VRES2COLOR - %d\n", bsize(640,480,1)); printf("VRES16COLOR - %d\n", bsize(640,480,4)); printf("MRES256COLOR - %d\n", bsize(320,200,8)); }