/* Copyright (c) 2006, NIF File Format Library and Tools All rights reserved. Please see niflib.h for licence. */ #include <string> #include <iostream> #include "../../include/gen/enums.h" #include "../../include/gen/enums_intl.h" namespace Niflib { /*! * ForceType */ void NifStream( ForceType & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = ForceType(temp); } void NifStream( ForceType const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, ForceType const & val ) { switch ( val ) { case FORCE_PLANAR: return out << "FORCE_PLANAR"; case FORCE_SPHERICAL: return out << "FORCE_SPHERICAL"; case FORCE_UNKNOWN: return out << "FORCE_UNKNOWN"; default: return out << "Invalid Value! - " << uint(val); } } /*! * HavokMaterial */ void NifStream( HavokMaterial & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = HavokMaterial(temp); } void NifStream( HavokMaterial const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, HavokMaterial const & val ) { switch ( val ) { case HAV_MAT_STONE: return out << "HAV_MAT_STONE"; case HAV_MAT_CLOTH: return out << "HAV_MAT_CLOTH"; case HAV_MAT_DIRT: return out << "HAV_MAT_DIRT"; case HAV_MAT_GLASS: return out << "HAV_MAT_GLASS"; case HAV_MAT_GRASS: return out << "HAV_MAT_GRASS"; case HAV_MAT_METAL: return out << "HAV_MAT_METAL"; case HAV_MAT_ORGANIC: return out << "HAV_MAT_ORGANIC"; case HAV_MAT_SKIN: return out << "HAV_MAT_SKIN"; case HAV_MAT_WATER: return out << "HAV_MAT_WATER"; case HAV_MAT_WOOD: return out << "HAV_MAT_WOOD"; case HAV_MAT_HEAVY_STONE: return out << "HAV_MAT_HEAVY_STONE"; case HAV_MAT_HEAVY_METAL: return out << "HAV_MAT_HEAVY_METAL"; case HAV_MAT_HEAVY_WOOD: return out << "HAV_MAT_HEAVY_WOOD"; case HAV_MAT_CHAIN: return out << "HAV_MAT_CHAIN"; case HAV_MAT_SNOW: return out << "HAV_MAT_SNOW"; case HAV_MAT_STONE_STAIRS: return out << "HAV_MAT_STONE_STAIRS"; case HAV_MAT_CLOTH_STAIRS: return out << "HAV_MAT_CLOTH_STAIRS"; case HAV_MAT_DIRT_STAIRS: return out << "HAV_MAT_DIRT_STAIRS"; case HAV_MAT_GLASS_STAIRS: return out << "HAV_MAT_GLASS_STAIRS"; case HAV_MAT_GRASS_STAIRS: return out << "HAV_MAT_GRASS_STAIRS"; case HAV_MAT_METAL_STAIRS: return out << "HAV_MAT_METAL_STAIRS"; case HAV_MAT_ORGANIC_STAIRS: return out << "HAV_MAT_ORGANIC_STAIRS"; case HAV_MAT_SKIN_STAIRS: return out << "HAV_MAT_SKIN_STAIRS"; case HAV_MAT_WATER_STAIRS: return out << "HAV_MAT_WATER_STAIRS"; case HAV_MAT_WOOD_STAIRS: return out << "HAV_MAT_WOOD_STAIRS"; case HAV_MAT_HEAVY_STONE_STAIRS: return out << "HAV_MAT_HEAVY_STONE_STAIRS"; case HAV_MAT_HEAVY_METAL_STAIRS: return out << "HAV_MAT_HEAVY_METAL_STAIRS"; case HAV_MAT_HEAVY_WOOD_STAIRS: return out << "HAV_MAT_HEAVY_WOOD_STAIRS"; case HAV_MAT_CHAIN_STAIRS: return out << "HAV_MAT_CHAIN_STAIRS"; case HAV_MAT_SNOW_STAIRS: return out << "HAV_MAT_SNOW_STAIRS"; case HAV_MAT_ELEVATOR: return out << "HAV_MAT_ELEVATOR"; default: return out << "Invalid Value! - " << uint(val); } } /*! * CompareMode */ void NifStream( CompareMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = CompareMode(temp); } void NifStream( CompareMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, CompareMode const & val ) { switch ( val ) { case TEST_NEVER: return out << "TEST_NEVER"; case TEST_LESS: return out << "TEST_LESS"; case TEST_EQUAL: return out << "TEST_EQUAL"; case TEST_LESSEQUAL: return out << "TEST_LESSEQUAL"; case TEST_GREATER: return out << "TEST_GREATER"; case TEST_GREATEREQUAL: return out << "TEST_GREATEREQUAL"; case TEST_ALWAYS: return out << "TEST_ALWAYS"; default: return out << "Invalid Value! - " << uint(val); } } /*! * TexFilterMode */ void NifStream( TexFilterMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = TexFilterMode(temp); } void NifStream( TexFilterMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, TexFilterMode const & val ) { switch ( val ) { case FILTER_NEAREST: return out << "FILTER_NEAREST"; case FILTER_BILERP: return out << "FILTER_BILERP"; case FILTER_TRILERP: return out << "FILTER_TRILERP"; case FILTER_NEAREST_MIPNEAREST: return out << "FILTER_NEAREST_MIPNEAREST"; case FILTER_NEAREST_MIPLERP: return out << "FILTER_NEAREST_MIPLERP"; case FILTER_BILERP_MIPNEAREST: return out << "FILTER_BILERP_MIPNEAREST"; default: return out << "Invalid Value! - " << uint(val); } } /*! * LightMode */ void NifStream( LightMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = LightMode(temp); } void NifStream( LightMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, LightMode const & val ) { switch ( val ) { case LIGHT_MODE_EMISSIVE: return out << "LIGHT_MODE_EMISSIVE"; case LIGHT_MODE_EMI_AMB_DIF: return out << "LIGHT_MODE_EMI_AMB_DIF"; default: return out << "Invalid Value! - " << uint(val); } } /*! * MipMapFormat */ void NifStream( MipMapFormat & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = MipMapFormat(temp); } void NifStream( MipMapFormat const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, MipMapFormat const & val ) { switch ( val ) { case MIP_FMT_NO: return out << "MIP_FMT_NO"; case MIP_FMT_YES: return out << "MIP_FMT_YES"; case MIP_FMT_DEFAULT: return out << "MIP_FMT_DEFAULT"; default: return out << "Invalid Value! - " << uint(val); } } /*! * StencilAction */ void NifStream( StencilAction & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = StencilAction(temp); } void NifStream( StencilAction const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, StencilAction const & val ) { switch ( val ) { case ACTION_KEEP: return out << "ACTION_KEEP"; case ACTION_ZERO: return out << "ACTION_ZERO"; case ACTION_REPLACE: return out << "ACTION_REPLACE"; case ACTION_INCREMENT: return out << "ACTION_INCREMENT"; case ACTION_DECREMENT: return out << "ACTION_DECREMENT"; case ACTION_INVERT: return out << "ACTION_INVERT"; default: return out << "Invalid Value! - " << uint(val); } } /*! * OblivionLayer */ void NifStream( OblivionLayer & val, istream& in, uint version ) { byte temp; NifStream( temp, in, version ); val = OblivionLayer(temp); } void NifStream( OblivionLayer const & val, ostream& out, uint version ) { NifStream( byte(val), out, version ); } ostream & operator<<( ostream & out, OblivionLayer const & val ) { switch ( val ) { case OL_UNIDENTIFIED: return out << "OL_UNIDENTIFIED"; case OL_STATIC: return out << "OL_STATIC"; case OL_ANIM_STATIC: return out << "OL_ANIM_STATIC"; case OL_TRANSPARENT: return out << "OL_TRANSPARENT"; case OL_CLUTTER: return out << "OL_CLUTTER"; case OL_WEAPON: return out << "OL_WEAPON"; case OL_PROJECTILE: return out << "OL_PROJECTILE"; case OL_SPELL: return out << "OL_SPELL"; case OL_BIPED: return out << "OL_BIPED"; case OL_TREES: return out << "OL_TREES"; case OL_PROPS: return out << "OL_PROPS"; case OL_WATER: return out << "OL_WATER"; case OL_TRIGGER: return out << "OL_TRIGGER"; case OL_TERRAIN: return out << "OL_TERRAIN"; case OL_TRAP: return out << "OL_TRAP"; case OL_NONCOLLIDABLE: return out << "OL_NONCOLLIDABLE"; case OL_CLOUD_TRAP: return out << "OL_CLOUD_TRAP"; case OL_GROUND: return out << "OL_GROUND"; case OL_PORTAL: return out << "OL_PORTAL"; case OL_STAIRS: return out << "OL_STAIRS"; case OL_CHAR_CONTROLLER: return out << "OL_CHAR_CONTROLLER"; case OL_AVOID_BOX: return out << "OL_AVOID_BOX"; case OL_UNKNOWN1: return out << "OL_UNKNOWN1"; case OL_UNKNOWN2: return out << "OL_UNKNOWN2"; case OL_CAMERA_PICK: return out << "OL_CAMERA_PICK"; case OL_ITEM_PICK: return out << "OL_ITEM_PICK"; case OL_LINE_OF_SIGHT: return out << "OL_LINE_OF_SIGHT"; case OL_PATH_PICK: return out << "OL_PATH_PICK"; case OL_CUSTOM_PICK_1: return out << "OL_CUSTOM_PICK_1"; case OL_CUSTOM_PICK_2: return out << "OL_CUSTOM_PICK_2"; case OL_SPELL_EXPLOSION: return out << "OL_SPELL_EXPLOSION"; case OL_DROPPING_PICK: return out << "OL_DROPPING_PICK"; case OL_OTHER: return out << "OL_OTHER"; case OL_HEAD: return out << "OL_HEAD"; case OL_BODY: return out << "OL_BODY"; case OL_SPINE1: return out << "OL_SPINE1"; case OL_SPINE2: return out << "OL_SPINE2"; case OL_L_UPPER_ARM: return out << "OL_L_UPPER_ARM"; case OL_L_FOREARM: return out << "OL_L_FOREARM"; case OL_L_HAND: return out << "OL_L_HAND"; case OL_L_THIGH: return out << "OL_L_THIGH"; case OL_L_CALF: return out << "OL_L_CALF"; case OL_L_FOOT: return out << "OL_L_FOOT"; case OL_R_UPPER_ARM: return out << "OL_R_UPPER_ARM"; case OL_R_FOREARM: return out << "OL_R_FOREARM"; case OL_R_HAND: return out << "OL_R_HAND"; case OL_R_THIGH: return out << "OL_R_THIGH"; case OL_R_CALF: return out << "OL_R_CALF"; case OL_R_FOOT: return out << "OL_R_FOOT"; case OL_TAIL: return out << "OL_TAIL"; case OL_SIDE_WEAPON: return out << "OL_SIDE_WEAPON"; case OL_SHEILD: return out << "OL_SHEILD"; case OL_QUIVER: return out << "OL_QUIVER"; case OL_BACK_WEAPON: return out << "OL_BACK_WEAPON"; case OL_BACK_WEAPON2: return out << "OL_BACK_WEAPON2"; case OL_PONYTAIL: return out << "OL_PONYTAIL"; case OL_WING: return out << "OL_WING"; case OL_NULL: return out << "OL_NULL"; default: return out << "Invalid Value! - " << uint(val); } } /*! * FaceDrawMode */ void NifStream( FaceDrawMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = FaceDrawMode(temp); } void NifStream( FaceDrawMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, FaceDrawMode const & val ) { switch ( val ) { case DRAW_CCW_OR_BOTH: return out << "DRAW_CCW_OR_BOTH"; case DRAW_CCW: return out << "DRAW_CCW"; case DRAW_CW: return out << "DRAW_CW"; case DRAW_BOTH: return out << "DRAW_BOTH"; default: return out << "Invalid Value! - " << uint(val); } } /*! * AlphaFormat */ void NifStream( AlphaFormat & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = AlphaFormat(temp); } void NifStream( AlphaFormat const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, AlphaFormat const & val ) { switch ( val ) { case ALPHA_NONE: return out << "ALPHA_NONE"; case ALPHA_BINARY: return out << "ALPHA_BINARY"; case ALPHA_SMOOTH: return out << "ALPHA_SMOOTH"; case ALPHA_DEFAULT: return out << "ALPHA_DEFAULT"; default: return out << "Invalid Value! - " << uint(val); } } /*! * KeyType */ void NifStream( KeyType & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = KeyType(temp); } void NifStream( KeyType const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, KeyType const & val ) { switch ( val ) { case LINEAR_KEY: return out << "LINEAR_KEY"; case QUADRATIC_KEY: return out << "QUADRATIC_KEY"; case TBC_KEY: return out << "TBC_KEY"; case XYZ_ROTATION_KEY: return out << "XYZ_ROTATION_KEY"; case UNKNOWN_KEY: return out << "UNKNOWN_KEY"; default: return out << "Invalid Value! - " << uint(val); } } /*! * VertMode */ void NifStream( VertMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = VertMode(temp); } void NifStream( VertMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, VertMode const & val ) { switch ( val ) { case VERT_MODE_SRC_IGNORE: return out << "VERT_MODE_SRC_IGNORE"; case VERT_MODE_SRC_EMISSIVE: return out << "VERT_MODE_SRC_EMISSIVE"; case VERT_MODE_SRC_AMB_DIF: return out << "VERT_MODE_SRC_AMB_DIF"; default: return out << "Invalid Value! - " << uint(val); } } /*! * ApplyMode */ void NifStream( ApplyMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = ApplyMode(temp); } void NifStream( ApplyMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, ApplyMode const & val ) { switch ( val ) { case APPLY_REPLACE: return out << "APPLY_REPLACE"; case APPLY_DECAL: return out << "APPLY_DECAL"; case APPLY_MODULATE: return out << "APPLY_MODULATE"; case APPLY_HILIGHT: return out << "APPLY_HILIGHT"; case APPLY_HILIGHT2: return out << "APPLY_HILIGHT2"; default: return out << "Invalid Value! - " << uint(val); } } /*! * MotionSystem */ void NifStream( MotionSystem & val, istream& in, uint version ) { byte temp; NifStream( temp, in, version ); val = MotionSystem(temp); } void NifStream( MotionSystem const & val, ostream& out, uint version ) { NifStream( byte(val), out, version ); } ostream & operator<<( ostream & out, MotionSystem const & val ) { switch ( val ) { case MO_SYS_BOX: return out << "MO_SYS_BOX"; case MO_SYS_KEYFRAMED: return out << "MO_SYS_KEYFRAMED"; default: return out << "Invalid Value! - " << uint(val); } } /*! * BillboardMode */ void NifStream( BillboardMode & val, istream& in, uint version ) { ushort temp; NifStream( temp, in, version ); val = BillboardMode(temp); } void NifStream( BillboardMode const & val, ostream& out, uint version ) { NifStream( ushort(val), out, version ); } ostream & operator<<( ostream & out, BillboardMode const & val ) { switch ( val ) { case ALWAYS_FACE_CAMERA: return out << "ALWAYS_FACE_CAMERA"; case ROTATE_ABOUT_UP: return out << "ROTATE_ABOUT_UP"; case RIGID_FACE_CAMERA: return out << "RIGID_FACE_CAMERA"; case ALWAYS_FACE_CENTER: return out << "ALWAYS_FACE_CENTER"; case RIGID_FACE_CENTER: return out << "RIGID_FACE_CENTER"; default: return out << "Invalid Value! - " << uint(val); } } /*! * TexType */ void NifStream( TexType & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = TexType(temp); } void NifStream( TexType const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, TexType const & val ) { switch ( val ) { case BASE_MAP: return out << "BASE_MAP"; case DARK_MAP: return out << "DARK_MAP"; case DETAIL_MAP: return out << "DETAIL_MAP"; case GLOSS_MAP: return out << "GLOSS_MAP"; case GLOW_MAP: return out << "GLOW_MAP"; case BUMP_MAP: return out << "BUMP_MAP"; case DECAL_0_MAP: return out << "DECAL_0_MAP"; case DECAL_1_MAP: return out << "DECAL_1_MAP"; default: return out << "Invalid Value! - " << uint(val); } } /*! * PixelLayout */ void NifStream( PixelLayout & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = PixelLayout(temp); } void NifStream( PixelLayout const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, PixelLayout const & val ) { switch ( val ) { case PIX_LAY_PALETTISED: return out << "PIX_LAY_PALETTISED"; case PIX_LAY_HIGH_COLOR_16: return out << "PIX_LAY_HIGH_COLOR_16"; case PIX_LAY_TRUE_COLOR_32: return out << "PIX_LAY_TRUE_COLOR_32"; case PIX_LAY_COMPRESSED: return out << "PIX_LAY_COMPRESSED"; case PIX_LAY_BUMPMAP: return out << "PIX_LAY_BUMPMAP"; case PIX_LAY_DEFAULT: return out << "PIX_LAY_DEFAULT"; default: return out << "Invalid Value! - " << uint(val); } } /*! * TexClampMode */ void NifStream( TexClampMode & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = TexClampMode(temp); } void NifStream( TexClampMode const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, TexClampMode const & val ) { switch ( val ) { case CLAMP_S_CLAMP_T: return out << "CLAMP_S_CLAMP_T"; case CLAMP_S_WRAP_T: return out << "CLAMP_S_WRAP_T"; case WRAP_S_CLAMP_T: return out << "WRAP_S_CLAMP_T"; case WRAP_S_WRAP_T: return out << "WRAP_S_WRAP_T"; default: return out << "Invalid Value! - " << uint(val); } } /*! * MotionQuality */ void NifStream( MotionQuality & val, istream& in, uint version ) { byte temp; NifStream( temp, in, version ); val = MotionQuality(temp); } void NifStream( MotionQuality const & val, ostream& out, uint version ) { NifStream( byte(val), out, version ); } ostream & operator<<( ostream & out, MotionQuality const & val ) { switch ( val ) { case MO_QUAL_MOVING: return out << "MO_QUAL_MOVING"; case MO_QUAL_FIXED: return out << "MO_QUAL_FIXED"; case MO_QUAL_KEYFRAMED: return out << "MO_QUAL_KEYFRAMED"; case MO_QUAL_MOVING2: return out << "MO_QUAL_MOVING2"; case MO_QUAL_MOVING3: return out << "MO_QUAL_MOVING3"; case MO_QUAL_CRITICAL: return out << "MO_QUAL_CRITICAL"; case MO_QUAL_BULLET: return out << "MO_QUAL_BULLET"; case MO_QUAL_USER: return out << "MO_QUAL_USER"; case MO_QUAL_NULL: return out << "MO_QUAL_NULL"; default: return out << "Invalid Value! - " << uint(val); } } /*! * PixelFormat */ void NifStream( PixelFormat & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = PixelFormat(temp); } void NifStream( PixelFormat const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, PixelFormat const & val ) { switch ( val ) { case PX_FMT_RGB8: return out << "PX_FMT_RGB8"; case PX_FMT_RGBA8: return out << "PX_FMT_RGBA8"; case PX_FMT_PAL8: return out << "PX_FMT_PAL8"; default: return out << "Invalid Value! - " << uint(val); } } /*! * CycleType */ void NifStream( CycleType & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = CycleType(temp); } void NifStream( CycleType const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, CycleType const & val ) { switch ( val ) { case CYCLE_LOOP: return out << "CYCLE_LOOP"; case CYCLE_REVERSE: return out << "CYCLE_REVERSE"; case CYCLE_CLAMP: return out << "CYCLE_CLAMP"; default: return out << "Invalid Value! - " << uint(val); } } /*! * FieldType */ void NifStream( FieldType & val, istream& in, uint version ) { uint temp; NifStream( temp, in, version ); val = FieldType(temp); } void NifStream( FieldType const & val, ostream& out, uint version ) { NifStream( uint(val), out, version ); } ostream & operator<<( ostream & out, FieldType const & val ) { switch ( val ) { case FIELD_WIND: return out << "FIELD_WIND"; case FIELD_POINT: return out << "FIELD_POINT"; default: return out << "Invalid Value! - " << uint(val); } } }