⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lwo2parser.h

📁 最新osg包
💻 H
📖 第 1 页 / 共 2 页
字号:
				FORM::SURF::BUMP *chk = new FORM::SURF::BUMP;				chk->strength = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "SIDE") {				FORM::SURF::SIDE *chk = new FORM::SURF::SIDE;				chk->sidedness = read_U2(it);				return chk;			}			if (tag == "SMAN") {				FORM::SURF::SMAN *chk = new FORM::SURF::SMAN;				chk->max_smoothing_angle = read_ANG4(it);				return chk;			}			if (tag == "RFOP") {				FORM::SURF::RFOP *chk = new FORM::SURF::RFOP;				chk->reflection_options = read_U2(it);				return chk;			}			if (tag == "RIMG") {				FORM::SURF::RIMG *chk = new FORM::SURF::RIMG;				chk->image = read_VX(it);				return chk;			}			if (tag == "RSAN") {				FORM::SURF::RSAN *chk = new FORM::SURF::RSAN;				chk->seam_angle = read_ANG4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "RBLR") {				FORM::SURF::RBLR *chk = new FORM::SURF::RBLR;				chk->blur_percentage = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "RIND") {				FORM::SURF::RIND *chk = new FORM::SURF::RIND;				chk->refractive_index = read_F4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "TROP") {				FORM::SURF::TROP *chk = new FORM::SURF::TROP;				chk->transparency_options = read_U2(it);				return chk;			}			if (tag == "TIMG") {				FORM::SURF::TIMG *chk = new FORM::SURF::TIMG;				chk->image = read_VX(it);				return chk;			}			if (tag == "TBLR") {				FORM::SURF::TBLR *chk = new FORM::SURF::TBLR;				chk->blur_percentage = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "CLRH") {				FORM::SURF::CLRH *chk = new FORM::SURF::CLRH;				chk->color_highlights = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "CLRF") {				FORM::SURF::CLRF *chk = new FORM::SURF::CLRF;				chk->color_filter = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "ADTR") {				FORM::SURF::ADTR *chk = new FORM::SURF::ADTR;				chk->additive = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "GLOW") {				FORM::SURF::GLOW *chk = new FORM::SURF::GLOW;				chk->type = read_U2(it);				chk->intensity = read_F4(it);				chk->intensity_envelope = read_VX(it);				chk->size = read_F4(it);				chk->size_envelope = read_VX(it);				return chk;			}			if (tag == "LINE") {				FORM::SURF::LINE *chk = new FORM::SURF::LINE;				chk->flags = read_U2(it);				if (it < end) {					chk->size = read_F4(it);					chk->size_envelope = read_VX(it);					if (it < end) {						chk->color = read_COL12(it);						chk->color_envelope = read_VX(it);					}				}				return chk;			}			if (tag == "ALPH") {				FORM::SURF::ALPH *chk = new FORM::SURF::ALPH;				chk->mode = read_U2(it);				chk->value = read_FP4(it);				return chk;			}			if (tag == "VCOL") {				FORM::SURF::VCOL *chk = new FORM::SURF::VCOL;				chk->intensity = read_FP4(it);				chk->envelope = read_VX(it);				chk->vmap_type = read_ID4(it);				chk->name = read_S0(it);				return chk;			}			// surface blocks			if (tag == "BLOK") {				FORM::SURF::BLOK *chk = new FORM::SURF::BLOK;				std::string hid;				for (Iter tempit=it; tempit<(it+4); ++tempit) hid += *tempit;				chk->header = parse_subchunk(it, "FORM::SURF::BLOK");				while (it < end) {					chk->attributes.push_back(parse_subchunk(it, "FORM::SURF::BLOK::" + hid));				}				return chk;			}		}		if (context == "FORM::SURF::BLOK") {	// block headers			if (tag == "IMAP") {				FORM::SURF::BLOK::IMAP *chk = new FORM::SURF::BLOK::IMAP;				chk->ordinal = read_S0(it);				while (it < end) {					chk->block_attributes.push_back(parse_subchunk(it, "FORM::SURF::BLOK"));				}				return chk;			}			if (tag == "PROC") {				FORM::SURF::BLOK::PROC *chk = new FORM::SURF::BLOK::PROC;				chk->ordinal = read_S0(it);				while (it < end) {					chk->block_attributes.push_back(parse_subchunk(it, "FORM::SURF::BLOK"));				}				return chk;			}			if (tag == "GRAD") {				FORM::SURF::BLOK::GRAD *chk = new FORM::SURF::BLOK::GRAD;				chk->ordinal = read_S0(it);				while (it < end) {					chk->block_attributes.push_back(parse_subchunk(it, "FORM::SURF::BLOK"));				}				return chk;			}			if (tag == "SHDR") {				FORM::SURF::BLOK::SHDR *chk = new FORM::SURF::BLOK::SHDR;				chk->ordinal = read_S0(it);				while (it < end) {					chk->block_attributes.push_back(parse_subchunk(it, "FORM::SURF::BLOK"));				}				return chk;			}		}		if (context == "FORM::SURF::BLOK") {	// attributes common to all block headers			if (tag == "CHAN") {				FORM::SURF::BLOK::CHAN *chk = new FORM::SURF::BLOK::CHAN;				chk->texture_channel = read_ID4(it);				return chk;			}			if (tag == "ENAB") {				FORM::SURF::BLOK::ENAB *chk = new FORM::SURF::BLOK::ENAB;				chk->enable = read_U2(it);				return chk;			}			if (tag == "OPAC") {				FORM::SURF::BLOK::OPAC *chk = new FORM::SURF::BLOK::OPAC;				chk->type = read_U2(it);				chk->opacity = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "AXIS") {				FORM::SURF::BLOK::AXIS *chk = new FORM::SURF::BLOK::AXIS;				chk->displacement_axis = read_U2(it);				return chk;			}		}		if (context == "FORM::SURF::BLOK::IMAP" || context == "FORM::SURF::BLOK::PROC") {			if (tag == "TMAP") {				FORM::SURF::BLOK::IMAP::TMAP *chk = new FORM::SURF::BLOK::IMAP::TMAP;				while (it < end) chk->attributes.push_back(parse_subchunk(it, "FORM::SURF::BLOK::IMAP/PROC::TMAP"));				return chk;			}		}		if (context == "FORM::SURF::BLOK::IMAP/PROC::TMAP") {			if (tag == "CNTR") {				FORM::SURF::BLOK::IMAP::TMAP::CNTR *chk = new FORM::SURF::BLOK::IMAP::TMAP::CNTR;				chk->vector = read_VEC12(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "SIZE") {				FORM::SURF::BLOK::IMAP::TMAP::SIZE *chk = new FORM::SURF::BLOK::IMAP::TMAP::SIZE;				chk->vector = read_VEC12(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "ROTA") {				FORM::SURF::BLOK::IMAP::TMAP::ROTA *chk = new FORM::SURF::BLOK::IMAP::TMAP::ROTA;				chk->vector = read_VEC12(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "OREF") {				FORM::SURF::BLOK::IMAP::TMAP::OREF *chk = new FORM::SURF::BLOK::IMAP::TMAP::OREF;				chk->object_name = read_S0(it);				return chk;			}			if (tag == "FALL") {				FORM::SURF::BLOK::IMAP::TMAP::FALL *chk = new FORM::SURF::BLOK::IMAP::TMAP::FALL;				chk->type = read_U2(it);				chk->vector = read_VEC12(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "CSYS") {				FORM::SURF::BLOK::IMAP::TMAP::CSYS *chk = new FORM::SURF::BLOK::IMAP::TMAP::CSYS;				chk->type = read_U2(it);				return chk;			}		}		if (context == "FORM::SURF::BLOK::IMAP") {			if (tag == "PROJ") {				FORM::SURF::BLOK::IMAP::PROJ *chk = new FORM::SURF::BLOK::IMAP::PROJ;				chk->projection_mode = read_U2(it);				return chk;			}			if (tag == "AXIS") {				FORM::SURF::BLOK::IMAP::AXIS *chk = new FORM::SURF::BLOK::IMAP::AXIS;				chk->texture_axis = read_U2(it);				return chk;			}			if (tag == "IMAG") {				FORM::SURF::BLOK::IMAP::IMAG *chk = new FORM::SURF::BLOK::IMAP::IMAG;				chk->texture_image = read_VX(it);				return chk;			}			if (tag == "WRAP") {				FORM::SURF::BLOK::IMAP::WRAP *chk = new FORM::SURF::BLOK::IMAP::WRAP;				chk->width_wrap = read_U2(it);				chk->height_wrap = read_U2(it);				return chk;			}			if (tag == "WRPW") {				FORM::SURF::BLOK::IMAP::WRPW *chk = new FORM::SURF::BLOK::IMAP::WRPW;				chk->cycles = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "WRPH") {				FORM::SURF::BLOK::IMAP::WRPH *chk = new FORM::SURF::BLOK::IMAP::WRPH;				chk->cycles = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}			if (tag == "VMAP") {				FORM::SURF::BLOK::IMAP::VMAP *chk = new FORM::SURF::BLOK::IMAP::VMAP;				chk->txuv_map_name = read_S0(it);				return chk;			}			if (tag == "AAST") {				FORM::SURF::BLOK::IMAP::AAST *chk = new FORM::SURF::BLOK::IMAP::AAST;				chk->flags = read_U2(it);				chk->antialiasing_strength = read_FP4(it);				return chk;			}			if (tag == "PIXB") {				FORM::SURF::BLOK::IMAP::PIXB *chk = new FORM::SURF::BLOK::IMAP::PIXB;				chk->flags = read_U2(it);				return chk;			}			if (tag == "STCK") {				FORM::SURF::BLOK::IMAP::STCK *chk = new FORM::SURF::BLOK::IMAP::STCK;				chk->on_off = read_U2(it);				chk->time = read_FP4(it);				return chk;			}			if (tag == "TAMP") {				FORM::SURF::BLOK::IMAP::TAMP *chk = new FORM::SURF::BLOK::IMAP::TAMP;				chk->amplitude = read_FP4(it);				chk->envelope = read_VX(it);				return chk;			}		}		if (context == "FORM::SURF::BLOK::PROC") {			if (tag == "AXIS") {				FORM::SURF::BLOK::PROC::AXIS *chk = new FORM::SURF::BLOK::PROC::AXIS;				chk->axis = read_U2(it);				return chk;			}			if (tag == "VALU") {				FORM::SURF::BLOK::PROC::VALU *chk = new FORM::SURF::BLOK::PROC::VALU;				while (it < end) chk->value.push_back(read_FP4(it));				return chk;			}			if (tag == "FUNC") {				FORM::SURF::BLOK::PROC::FUNC *chk = new FORM::SURF::BLOK::PROC::FUNC;				chk->algorithm_name = read_S0(it);				while (it < end) chk->data.push_back(read_U1(it));				return chk;			}		}		if (context == "FORM::SURF::BLOK::GRAD") {			if (tag == "PNAM") {				FORM::SURF::BLOK::GRAD::PNAM *chk = new FORM::SURF::BLOK::GRAD::PNAM;				chk->parameter = read_S0(it);				return chk;			}			if (tag == "INAM") {				FORM::SURF::BLOK::GRAD::INAM *chk = new FORM::SURF::BLOK::GRAD::INAM;				chk->item_name = read_S0(it);				return chk;			}			if (tag == "GRST") {				FORM::SURF::BLOK::GRAD::GRST *chk = new FORM::SURF::BLOK::GRAD::GRST;				chk->input_range = read_FP4(it);				return chk;			}			if (tag == "GREN") {				FORM::SURF::BLOK::GRAD::GREN *chk = new FORM::SURF::BLOK::GRAD::GREN;				chk->input_range = read_FP4(it);				return chk;			}			if (tag == "GRPT") {				FORM::SURF::BLOK::GRAD::GRPT *chk = new FORM::SURF::BLOK::GRAD::GRPT;				chk->repeat_mode = read_U2(it);				return chk;			}			if (tag == "FKEY") {				FORM::SURF::BLOK::GRAD::FKEY *chk = new FORM::SURF::BLOK::GRAD::FKEY;				while (it < end) {					FORM::SURF::BLOK::GRAD::FKEY::value_type val;					val.input = read_FP4(it);					for (int i=0; i<4; ++i) val.output[i] = read_FP4(it);					chk->values.push_back(val);				}				return chk;			}			if (tag == "IKEY") {				FORM::SURF::BLOK::GRAD::IKEY *chk = new FORM::SURF::BLOK::GRAD::IKEY;				while (it < end) chk->interpolation.push_back(read_U2(it));				return chk;			}		}		if (context == "FORM::SURF::BLOK::SHDR") {			if (tag == "FUNC") {				FORM::SURF::BLOK::SHDR::FUNC *chk = new FORM::SURF::BLOK::SHDR::FUNC;				chk->algorithm_name = read_S0(it);				while (it < end) chk->data.push_back(read_U1(it));				return chk;			}		}		return 0;	}	LP_TMP iff::Chunk *Parser<Iter>::parse_subchunk(Iter &it, const std::string &context)	{		std::string tag;		for (int i=0; i<4; ++i) tag += *(it++);		unsigned int len = ((static_cast<unsigned int>(*(it++)) & 0xFF) << 8) |			(static_cast<unsigned int>(*(it++)) & 0xFF);		this->os() << "DEBUG INFO: lwo2parser: reading subchunk " << tag << ", length = " << len << ", context = " << context << "\n";		iff::Chunk *chk = parse_chunk_data(tag, context, it, it+len);		if (!chk) this->os() << "DEBUG INFO: lwo2parser: \tprevious subchunk not handled\n";		it += len;		if ((len % 2) != 0) ++it;		return chk;	}}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -