Beispiel #1
0
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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
/**
 * @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;
}
Beispiel #5
0
// 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);
}
Beispiel #6
0
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));
}