메뉴 건너뛰기

Fastbird Dev Studio

FBPimpler

한 줄 설명

핌플 방식으로 코딩할 때, 함수들을 자동으로 Impl쪽으로 포워딩 해주는 스크립트입니다.

 

자세한 설명

이 스크립트는 .cpp에 있는 헤더에서 금방 복사해논 함수들을 편집해서 Impl 클래스의 함수를 호출하는 코드를 자동으로 생성해주는 스크립트입니다.

 

이 스크립트는 아래와 같은 순서대로 사용합니다.

 

1. 핌플링 하려는 함수들을 .h에서 .cpp로 카피한다.


2. 카피된 함수들의 최상단에 //#!PimplStart라고 기입하고, 최하단에 //#1PimplEnd라고 기입한다. 아래와 같은 모습이 된다.

 

//#!PimplStart
void SetMaterial(const char* path, RENDER_PASS pass);
void AttachToScene();
void AttachToScene(IScenePtr scene);
void DetachFromScene();
MaterialPtr GetMaterial() const;
void UpdateEnvironmentMap(const Vec3& pos);
/// Attach as a blending sky of the main scene.
void AttachToBlend();
void SetAlpha(float alpha);
void PrepareInterpolation(float time, SkyFacadePtr startFrom);
void AttachBlendingSky(SkyFacadePtr blending);
void SetInterpolationData(unsigned index, const Vec4& data);
//#!PimplEnd

 

3. 명령창에서 아래와 같이 타이핑하여 스크립트를 실행한다. fastbird engine의 솔루션 폴더가 있는 곳에서 실행한다고 가정한다.

 

<YourLuaPath>/lua52.exe Scripts/FBPimpler.lua <YourSourceFile.cpp>

 

4. 결과를 확인한다.

 

void SkyFacade::SetMaterial(const char* path, RENDER_PASS pass) {
    mImpl->SetMaterial(path, pass);
}
void SkyFacade::AttachToScene() {
    mImpl->AttachToScene();
}
void SkyFacade::AttachToScene(IScenePtr scene) {
    mImpl->AttachToScene(scene);
}
void SkyFacade::DetachFromScene() {
    mImpl->DetachFromScene();
}
MaterialPtr SkyFacade::GetMaterial() const {
    return mImpl->GetMaterial();
}
void SkyFacade::UpdateEnvironmentMap(const Vec3& pos) {
    mImpl->UpdateEnvironmentMap(pos);
}
void SkyFacade::AttachToBlend() {
    mImpl->AttachToBlend();
}
void SkyFacade::SetAlpha(float alpha) {
    mImpl->SetAlpha(alpha);
}
void SkyFacade::PrepareInterpolation(float time, SkyFacadePtr startFrom) {
    mImpl->PrepareInterpolation(time, startFrom);
}
void SkyFacade::AttachBlendingSky(SkyFacadePtr blending) {
    mImpl->AttachBlendingSky(blending);
}
void SkyFacade::SetInterpolationData(unsigned index, const Vec4& data) {
    mImpl->SetInterpolationData(index, data);
}


이 스크립트는 단순히 lua의 regex 기능을 기반으로 문자열들을 분석하여 작업을 수행하며, //#!PimplStart와 //#!PimpleEnd 로 마크된 영역 밖에는 아무런 영향이 없습니다. 매번 명령창으로 나가서 루아를 실행하는 것은 번거로운 일입니다. 레지스트리를 조금 만지면 탐색기에서 마우스 우클릭하면 나타나는 컨텍스트 메뉴에서 이 일을 수행할 수 있습니다. 먼저 아래의 내용으로 .bat파일을 만듭니다.

 

<YourLuaPath>\lua52.exe <YourPimplerPath>\FBPimpler.lua %1
PAUSE


<>안의 경로는 절대 경로로 하시면 됩니다. 이제 레지스트리를 열어서 아래 항목을 추가합니다.

 

FBPimpler_Reg.gif


VisualStudio.cpp를 찾아서 shell 아래에 FBPimpler를 추가하고 또 그 아래 Command를 추가한 후에 만들어둔 .bat파일 경로를 넣어줍니다. 이렇게 하면 .cpp파일을 마우스 우클릭할 때 아래처럼 컨텍스트 메뉴에 핌플러 명령이 나타납니다.

 

FBPimpler_Expl.gif

 

다운로드

실행하기 위해서는  Lua가 필요합니다. Lua 5.2 버전에서 테스트되었습니다.

FBPimpler.zip (2.2 kb)