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 ); }