XSPBaseLayer XBaseLayer::sCreate( xSpr::xtLayer type ) { XSPBaseLayer spBaseLayer; switch( type ) { case xSpr::xLT_IMAGE: spBaseLayer = xSPLayerImage( new XLayerImage ); break; case xSpr::xLT_OBJECT: spBaseLayer = XSPLayerObject( new XLayerObject ); break; case xSpr::xLT_SOUND: spBaseLayer = XSPLayerSound( new XLayerSound ); break; case xSpr::xLT_EVENT: spBaseLayer = XSPLayerEvent( new XLayerEvent ); break; case xSpr::xLT_DUMMY: spBaseLayer = XSPLayerDummy( new XLayerDummy ); break; default: XBREAKF( 1, "알수없는 레이어 타입:type=%d", type ); break; } if( spBaseLayer ) spBaseLayer->OnCreate(); return spBaseLayer; }
XSPBaseLayer XLayerEvent::CreateCopy( XSPActObjConst spActObjSrc ) const { auto spNewLayer = XSPLayerEvent( new XLayerEvent( *this ) ); spNewLayer->OnCreate(); return spNewLayer; }