Esempio n. 1
0
TGrass *GrassCreate(const float pX,
                    const float pY,
                    const float pZ,
                    const uint32 pNumSegments,
                    const TGrassType pType)
{
    TRenderEntity *lSegment = RenderEntityCreateQuadTextured(1.0f, 1.0f, FLARE_TEXTURE);
    if(lSegment == NULL)
        return NULL;
        
    TShader *lShader = ShaderCreate(BILLBOARDING_SHADER_VS, NULL);

    if(lShader!=NULL)
    {
        MaterialAddShader(lSegment->mMaterial, lShader);
        ShaderDestroy(lShader);
        lShader = 0;
    }

    CLASS_CREATE(TGrass);
    
    Matrix4GetIdentity(&this->mModelView);
    this->mSegment = lSegment;
    this->mTTT = RANDOM(512)+10.0f;

    GrassSetColor(this, 1.0f, 1.0f, 1.0f, 1.0f);
    GrassSetPosition(this, pX, pY, pZ);
    GrassSetNumSegments(this, pNumSegments);
    GrassSetType(this, pType);
    
    CLASS_INSTANCE();
}
void ResourceManager::Init()
{
    AddMesh( MODEL_UNIT_SWORD, MESH_KEY_UNIT_SWORD );
    AddMesh( MODEL_UNIT_PIKE, MESH_KEY_UNIT_PIKE );
    AddMesh( MODEL_UNIT_ARROW, MESH_KEY_UNIT_ARROW );
    AddMesh( MODEL_UNIT_KNIGHT, MESH_KEY_UNIT_KNIGHT );
    AddMesh( MODEL_UNIT_GUARD, MESH_KEY_UNIT_GUARD );
    AddMesh( MODEL_UNIT_KING, MESH_KEY_UNIT_KING );

    AddMesh( MODEL_CORPS_DESTROY_A, MESH_KEY_CORPS_DESTROY_ENEMY );
    AddMesh( MODEL_CORPS_DEFENSE_A, MESH_KEY_CORPS_DEFENSE_ENEMY );
    AddMesh( MODEL_CORPS_RUSH_A, MESH_KEY_CORPS_RUSH_ENEMY );
    AddMesh( MODEL_CORPS_DESTROY_B, MESH_KEY_CORPS_DESTROY_MINE );
    AddMesh( MODEL_CORPS_DEFENSE_B, MESH_KEY_CORPS_DEFENSE_MINE );
    AddMesh( MODEL_CORPS_RUSH_B, MESH_KEY_CORPS_RUSH_MINE );

    AddMap( HEIGHT_MAP, HEIGHT_TEX, MAP_KEY_TEST );
    CreateMap( MAP_KEY_TEST );

    //////////////////////////////////////////////////////////////////////////
    // 쿼드트리를 적용하기 위해 하이트 맵은 2^n 형태의 크기로 만들어야 합니다.
    //
    // 주의! 실제 하이트맵 크기는 한 변이 2^n + 1 사이즈여야 합니다!
    //////////////////////////////////////////////////////////////////////////
    InitGroundMesh( 128, 128 );
    CreateRawGround( 128, 128, 5.0f );

    if ( FAILED( InitHeightMap( HEIGHT_MAP, 5.0f ) ) )
    {
        m_IsMapForQuadTreeReady = false;
    }
    else
    {
        m_IsMapForQuadTreeReady = true;
    }

    MapManager::GetInstance()->SetPixelSize( 5.0f );

    m_MapSize = 640;
    m_IsMapReady = true;

    InitSkyBoxMesh( 640 );

    SetSkyBoxTexture( SPRITE_SKYBOX_BACK, SKY_BOX_BACK );
    SetSkyBoxTexture( SPRITE_SKYBOX_FRONT, SKY_BOX_FRONT );
    SetSkyBoxTexture( SPRITE_SKYBOX_LEFT, SKY_BOX_LEFT );
    SetSkyBoxTexture( SPRITE_SKYBOX_RIGHT, SKY_BOX_RIGHT );
    SetSkyBoxTexture( SPRITE_SKYBOX_TOP, SKY_BOX_TOP );
    SetSkyBoxTexture( SPRITE_SKYBOX_BOTTOM, SKY_BOX_BOTTOM );

    InitCursor( CURSOR_MAX, MouseManager::GetInstance()->GetMousePositionX(), MouseManager::GetInstance()->GetMousePositionY() );
    CreateCursorImage( SPRITE_CURSOR_DEFAULT, CURSOR_DEFAULT );
    CreateCursorImage( SPRITE_CURSOR_ATTACK, CURSOR_ATTACK );
    CreateCursorImage( SPRITE_CURSOR_CLICK, CURSOR_CLICK );
    CreateCursorImage( SPRITE_CURSOR_OVER_CORPS, CURSOR_OVER_CORPS );
    CreateCursorImage( SPRITE_CURSOR_UNRECHEABLE, CURSOR_UNRECHEABLE );
    CreateCursorImage( SPRITE_CURSOR_CAMERA_ROTATING, CURSOR_CAMERA_ROTATING );
    CreateCursorImage( SPRITE_CURSOR_CORPS_MOVABLE, CURSOR_CORPS_MOVABLE );
    CreateCursorImage( SPRITE_CURSOR_CORPS_MOVABLE_CLICK, CURSOR_CORPS_MOVABLE_CLICK );
    CreateCursorImage( SPRITE_CURSOR_OVER_PICKED_CORPS, CURSOR_OVER_PICKED_CORPS );

    m_ISCursorReady = true;

    CreateSprite();

    ShaderCreate( SHADER_TYPE_MAX );
    ShaderImport( SELECT_SHADER, SHADER_SELECT );
    ShaderImport( FIGHT_SHADER, SHADER_FIGHT );
    ShaderImport( MAP_SHADER, SHADER_MAP );

    MeshTextureCreateBySize( CORPS_TEXTURE_MAX );
    MeshTextureImport( SPRITE_CORPS_TYPE_ARROW, CORPS_TEXTURE_ARROW );
    MeshTextureImport( SPRITE_CORPS_TYPE_GUARD, CORPS_TEXTURE_GUARD );
    MeshTextureImport( SPRITE_CORPS_TYPE_KING, CORPS_TEXTURE_KING );
    MeshTextureImport( SPRITE_CORPS_TYPE_KNIGHT, CORPS_TEXTURE_KNIGHT );
    MeshTextureImport( SPRITE_CORPS_TYPE_PIKE, CORPS_TEXTURE_PIKE );
    MeshTextureImport( SPRITE_CORPS_TYPE_SWORD, CORPS_TEXTURE_SWORD );
}