// static bool LLVolumeMessage::constrainVolumeParams(LLVolumeParams& params) { U32 bad = 0; // This is called immediately after an unpack. feed the raw data // through the checked setters to constraint it to a valid set of // volume params. bad |= params.setType(params.getProfileParams().getCurveType(), params.getPathParams().getCurveType()) ? 0 : 1; bad |= params.setBeginAndEndS(params.getProfileParams().getBegin(), params.getProfileParams().getEnd()) ? 0 : 2; bad |= params.setBeginAndEndT(params.getPathParams().getBegin(), params.getPathParams().getEnd()) ? 0 : 4; bad |= params.setHollow(params.getProfileParams().getHollow()) ? 0 : 8; bad |= params.setTwistBegin(params.getPathParams().getTwistBegin()) ? 0 : 0x10; bad |= params.setTwistEnd(params.getPathParams().getTwistEnd()) ? 0 : 0x20; bad |= params.setRatio(params.getPathParams().getScaleX(), params.getPathParams().getScaleY()) ? 0 : 0x40; bad |= params.setShear(params.getPathParams().getShearX(), params.getPathParams().getShearY()) ? 0 : 0x80; bad |= params.setTaper(params.getPathParams().getTaperX(), params.getPathParams().getTaperY()) ? 0 : 0x100; bad |= params.setRevolutions(params.getPathParams().getRevolutions()) ? 0 : 0x200; bad |= params.setRadiusOffset(params.getPathParams().getRadiusOffset()) ? 0 : 0x400; bad |= params.setSkew(params.getPathParams().getSkew()) ? 0 : 0x800; if(bad) { LL_WARNS() << "LLVolumeMessage::constrainVolumeParams() - " << "forced to constrain incoming volume params: " << llformat("0x%04x",bad) << LL_ENDL; } return bad ? false : true; }
void llprimitive_object_t::test<6>() { set_test_name("Test setVolume creation of new NOT-unique volume."); LLPrimitive primitive; LLVolumeParams params; // Make sure volume starts off null ensure(primitive.getVolume() == NULL); // Make sure we have no texture entries before setting the volume ensure_equals(primitive.getNumTEs(), 0); // Test that GEOMETRY has not been flagged as changed. ensure(!primitive.isChanged(LLXform::GEOMETRY)); // Make sure setVolume returns true ensure(primitive.setVolume(params, 0, false) == TRUE); LLVolume* new_volume = primitive.getVolume(); // make sure new volume was actually created ensure(new_volume != NULL); // Make sure that now that we've set the volume we have texture entries ensure_not_equals(primitive.getNumTEs(), 0); // Make sure that the number of texture entries equals the number of faces in the volume (should be 6) ensure_equals(new_volume->getNumFaces(), 6); ensure_equals(primitive.getNumTEs(), new_volume->getNumFaces()); // Test that GEOMETRY has been flagged as changed. ensure(primitive.isChanged(LLXform::GEOMETRY)); // Run it twice to make sure it doesn't create a different one if params are the same ensure(primitive.setVolume(params, 0, false) == FALSE); ensure(new_volume == primitive.getVolume()); // Change the param definition and try setting it again. params.setRevolutions(4); ensure(primitive.setVolume(params, 0, false) == TRUE); // Ensure that we now have a different volume ensure(new_volume != primitive.getVolume()); }