/project/Naruto_ninja_story/Scene/ScenePromoA.cpp
http://narutortsproject.googlecode.com/ · C++ · 679 lines · 518 code · 128 blank · 33 comment · 76 complexity · 275f3f44697cd6820c95389f1809497e MD5 · raw file
- #include "ScenePromoA.h"
-
- #include "Core/Core.h"
- #include "../Naruto_controls.h"
- #include "tools/Speedometr.h"
- #include "tools/tools.h"
- #include "Graphick/Texture/Texture.h"
- #include "Graphick/Texture/TextureContainer.h"
- #include "Graphick/Graphick.h"
- #include "Graphick/OpenGL/OpenGl.h"
- #include "Graphick/OpenGL/vertex_shader.h"
- #include "Graphick/OpenGL/fragment_shader.h"
-
- ScenePromoA::ScenePromoA()
- {
- m_promo_string_date[0] = 0;
-
- m_cancel_key = 0;
-
- m_body_naruto_title = 0;
- m_body_ninja_story_title = 0;
- m_shade_bg = 0;
-
- m_credits_scroll = 0.0;
- m_credits_count = 0;
- m_credits_line_width = 0;
- m_credits_lines = 0;
-
- for (int i = 0; i < m_chars_bg_max; i ++)
- {
- m_chars_bg[i] = 0;
- }
-
- m_glsl_sample_shader = 0;
- m_glsl_particle_shader = 0;
- m_glsl_outline_shader = 0;
- m_glsl_simple_shadow = 0;
-
- m_show_timer_max = 0.0;
- m_show_timer = 0.0;
- m_show_timer_alpha = 500.0;
- m_show_rotation = 0.0;
- m_show_rotation_vel = 0.0;
-
- m_show_rotation_bet = 0.0;
- m_show_rotation_bet_vel = 0.0;
-
- m_welcome_timer = 0.0;
-
- m_show_posx = 0.0;
- m_show_posy = 0.0;
- m_show_posz = 0.0;
-
- m_show_velx = 0.0;
- m_show_vely = 0.0;
- m_show_velz = 0.0;
-
- m_track_id = -1;
-
- m_menu_item_start = -1;
- m_menu_item_exit = -1;
- m_menu_activated = false;
-
- m_menu_menu_player_count = -1;
- m_menu_item_player_1 = -1;
- m_menu_item_player_2 = -1;
- m_menu_item_player_3 = -1;
-
- m_press_start_message[0] = 0;
- };
-
- ScenePromoA::~ScenePromoA()
- {
-
- };
-
- void ScenePromoA::InitShow()
- {
- m_show_timer_max = rndf(3000.0f, 6000.0f);
- m_show_timer = 0.0;
- m_show_timer_alpha = 1000.0f;
-
- m_show_rotation = rndf(0.0f, 360.0f);
- m_show_rotation_vel = rndf(0.0f, 10.0f);
-
- m_show_rotation_bet = rndf(-80.0f, -45.0f);
- m_show_rotation_bet_vel = rndf(-4.0f, 4.0f);
-
- m_show_posx = rndf(-30.0f, 30.0f);
- m_show_posy = rndf(-10.0f, 0.0f);
- m_show_posz = rndf(30.0f, 50.0f);
-
- m_show_velx = rndf(-2.0f, 2.0f);
- m_show_vely = rndf(-2.0f, 2.0f);
- m_show_velz = rndf(-1.0f, 2.0f);
-
- int new_char = rand()%m_chars_bg_max;
- while (m_show_character == new_char)
- new_char = rand()%m_chars_bg_max;
-
- m_show_character = new_char;
- };
-
- void ScenePromoA::Control()
- {
- double duration = m_speedometer->GetFrameDuration();
-
- if (duration < 0.001)
- duration = 0.001;
-
- if (duration > 40.0)
- duration = 40.0;
-
- if (m_menu_activated)
- {
- m_menu.Control(duration);
-
- if (m_key_down && m_key_controller->is_hit(m_key_down))
- m_menu.SetNextItem();
-
- if (m_key_up && m_key_controller->is_hit(m_key_up))
- m_menu.SetPreviousItem();
-
- if (m_start_key && m_key_controller->is_hit(m_start_key))
- m_menu.DoStartItem();
-
- if (m_cancel_key && m_key_controller->is_hit(m_cancel_key))
- m_menu.DoBackItem();
- }
-
- if (m_start_key && m_key_controller->is_hit(m_start_key))
- {
- if (m_menu_activated)
- {
-
- } else
- if (m_welcome_timer >= 2000.0)
- {
- m_menu_activated = true;
- }
- }
-
- //m_menu_bg->Control(duration);
- //m_object->Control(duration);
- if (m_show_timer >= m_show_timer_max)
- InitShow();
-
- double mv = duration / 1000.0;
- m_show_timer += duration;
- m_show_posx += m_show_velx*mv;
- m_show_posy += m_show_vely*mv;
- m_show_posz += m_show_velz*mv;
-
- m_show_rotation += m_show_rotation_vel*mv;
-
- m_show_rotation_bet += m_show_rotation_bet_vel*mv;
-
- double inv_time = m_show_timer_max - m_show_timer;
- if (m_show_timer <= m_show_timer_alpha)
- {
- int alpha = 255 - int(255*(m_show_timer/m_show_timer_alpha));
- if (alpha < 0)
- alpha = 0;
- if (alpha > 255)
- alpha = 255;
- m_shade_bg->SetColorDiffuse(20, 40, 70, alpha);
- }
- else
- if (inv_time <= m_show_timer_alpha)
- {
- int alpha = 255 - int(255*(inv_time/m_show_timer_alpha));
- if (alpha < 0)
- alpha = 0;
- if (alpha > 255)
- alpha = 255;
- m_shade_bg->SetColorDiffuse(20, 40, 70, alpha);
- }
- else
- m_shade_bg->SetColorDiffuse(20, 40, 70, 0);
-
- m_welcome_timer += duration;
-
- m_credits_scroll += 0.03*mv;
- }
-
- void ScenePromoA::Paint()
- {
- double time = m_speedometer->GetTime();
- if (time > 1500)
- {
- //m_bg_changed = true;
- //SetClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- };
-
- m_graphick->PushMatrix();
-
- glTranslatef(0.0f, -30.0f, -100.0f);
- glTranslated(m_show_posx, m_show_posy, m_show_posz);
-
- //glRotatef(-70.0f, 1.0f, 0.0f, 0.0f);
- glRotatef(float(m_show_rotation_bet), 1.0f, 0.0f, 0.0f);
- glRotatef(float(m_show_rotation), 0.0f, 0.0f, 1.0f);
-
- //m_show_posx += m_show_velx*mv;
- //m_show_posy += m_show_vely*mv;
- //m_show_posz += m_show_velz*mv;
-
- //m_show_rotation += m_show_rotation_vel*mv;
- //glRotatef(0.0f, 0.0f, 0.0f, 1.0f);
- if (m_glsl_sample_shader && m_glsl_outline_shader)
- {
- glEnable(GL_CULL_FACE);
- glCullFace(GL_BACK);
- m_chars_bg[m_show_character]->SetShader(m_glsl_sample_shader);
- m_chars_bg[m_show_character]->paint();
- glCullFace(GL_FRONT);
- m_chars_bg[m_show_character]->SetShader(m_glsl_outline_shader);
- m_chars_bg[m_show_character]->paint();
- glDisable(GL_CULL_FACE);
-
- m_chars_bg[m_show_character]->SetShader(m_glsl_simple_shadow);
- m_chars_bg[m_show_character]->paint();
-
- //Tmatrix matrix_shadow;
- //CalculateShadowMatrix(matrix_shadow.matrix.elements_16, 0.0f, 0.0f, 1.0f, -1.0, 0.0f, 0.0f, 100.0f, 1.0f);
- //glMultMatrixf(matrix_shadow.matrix.elements_16);
-
- //m_menu_bg->paint();
-
- }else
- {
- m_chars_bg[m_show_character]->paint();
- }
- m_graphick->PopMatrix();
-
- m_shade_bg->Paint();
-
- m_body_naruto_title->Animate(time);
- m_body_ninja_story_title->Animate(time);
-
- m_graphick->SetBlend(false);
-
- //Draw credits
- double text_height = 0.03;
- int credit_position = int(m_credits_scroll / text_height);
- double small_offset = m_credits_scroll - double(credit_position)*text_height;
- credit_position %= m_credits_count;
-
- int line_out = 16;
- double alpha_level = text_height*4.0;
- double height = text_height*double(line_out);
- double left = -m_graphick->GetVirtualWidth()/2.0 + 0.1;
-
- for (int i = 0; i < line_out; i ++)
- {
- double y_pos = text_height*double(i) - small_offset;
- double y_end_pos = height - y_pos - text_height;
-
- double alpha = 1.0;
- if (y_pos < alpha_level)
- alpha = y_pos/alpha_level;
-
- if (y_end_pos < alpha_level)
- alpha = y_end_pos/alpha_level;
-
- int ialpha = int(alpha*255.0);
- if (ialpha < 0)
- ialpha = 0;
- if (ialpha > 255)
- ialpha = 255;
-
- int pos = (credit_position + i) % m_credits_count;
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_credits_lines[pos], float(left), -0.0f - float(y_pos), -1.0f, float(text_height), 0xcfcfcf + (ialpha << 24));
- }
-
- //sprintf_s(m_promo_string, 2048, "Naruto Ninja Story Project. Restorate Team. Kuznietsov IEvgeny");
- m_core->TextDraw(Core_base::FONT_DEFAULT, "Naruto Ninja Story Project by Restorate Team", -0.3f, -0.62f, -1.0f, 0.03f, 0xffffffff);
- m_core->TextDraw(Core_base::FONT_DEFAULT, "Visit us http://res-team.ucoz.com", -0.22f, -0.65f, -1.0f, 0.03f, 0xffffffff);
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_promo_string_date, -m_graphick->GetVirtualWidth()/2.0f, -0.75f, -1.0f, 0.03f, 0xffffffff);
-
- if (!m_menu_activated)
- {
- if (m_welcome_timer < 1000.0)
- {
- float alpha = float(1000.0 - m_welcome_timer)/1000.0f;
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_press_start_message, -0.1f + alpha, -0.50f, -1.0f, 0.05f, 0xffffffff);
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_press_start_message, -0.1f - alpha, -0.50f, -1.0f, 0.05f, 0xffffffff);
- } else
- if (m_welcome_timer < 2000.0)
- {
- float alpha = float(m_welcome_timer - 1000.0)/1000.0f;
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_press_start_message, -0.1f - alpha*0.1f, -0.50f - alpha*0.025f, -1.0f, 0.05f + alpha*0.05f, 0xffffff + (unsigned int(255 - alpha*255) << 24));
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_press_start_message, -0.1f, -0.50f, -1.0f, 0.05f, 0xffffffff);
- } else
- {
- float alpha = float((1.0 + cos((2000.0 - m_welcome_timer)/200.0))/2.0)*0.7f + 0.3f;
- m_core->TextDraw(Core_base::FONT_DEFAULT, m_press_start_message, -0.1f, -0.50f, -1.0f, 0.05f, 0xffffff + (unsigned int(alpha*255) << 24));
- };
- } else
- {
- m_menu.Paint();
- }
- //if (time > 9500.0)
- // finish();
-
- Scene_base::Paint();
- };
-
- void ScenePromoA::CreateMenu()
- {
- //Fill menu
- m_menu.SetCore(m_core);
-
- //Start, Exit menu
- {
- TMenu* menu_start_exit = new TMenu;
- menu_start_exit->SetCore(m_core);
- menu_start_exit->SetNotify(this);
- m_menu_menu_start_exit = menu_start_exit->GetId();
-
- MenuItem* item_start = new MenuItem;
- item_start->SetPos(-0.1f, -0.40f);
- item_start->SetText(m_core->GetLocaleString("menu_start"));
- m_menu_item_start = item_start->GetId();
- menu_start_exit->AddMenuItem(item_start);
-
- MenuItem* item_exit = new MenuItem;
- item_exit->SetPos(-0.1f, -0.45f);
- item_exit->SetText(m_core->GetLocaleString("menu_exit"));
- m_menu_item_exit = item_exit->GetId();
- menu_start_exit->AddMenuItem(item_exit);
-
- menu_start_exit->SetCurrent(m_menu_item_start);
-
- m_menu.AddMenu(menu_start_exit);
-
- m_menu.SetMenu(m_menu_menu_start_exit);
- }
-
- //Player Quantity
- {
- TMenu* menu_player_count = new TMenu;
- menu_player_count->SetCore(m_core);
- menu_player_count->SetNotify(this);
- m_menu_menu_player_count = menu_player_count->GetId();
-
- MenuItem* item_player_1 = new MenuItem;
- item_player_1->SetPos(-0.1f, -0.40f);
- item_player_1->SetText(m_core->GetLocaleString("menu_start_1p"));
- m_menu_item_player_1 = item_player_1->GetId();
- menu_player_count->AddMenuItem(item_player_1);
-
- MenuItem* item_player_2 = new MenuItem;
- item_player_2->SetPos(-0.1f, -0.45f);
- item_player_2->SetText(m_core->GetLocaleString("menu_start_2p"));
- m_menu_item_player_2 = item_player_2->GetId();
- menu_player_count->AddMenuItem(item_player_2);
-
- MenuItem* item_player_3 = new MenuItem;
- item_player_3->SetPos(-0.1f, -0.50f);
- item_player_3->SetText(m_core->GetLocaleString("menu_start_3p"));
- m_menu_item_player_3 = item_player_3->GetId();
- menu_player_count->AddMenuItem(item_player_3);
-
- MenuItem* item_back = new MenuItem;
- item_back->SetPos(-0.1f, -0.55f);
- item_back->SetText(m_core->GetLocaleString("menu_return"));
- m_menu_menu_player_count_back = item_back->GetId();
- menu_player_count->AddMenuItem(item_back);
-
- menu_player_count->SetCurrent(m_menu_item_player_1);
- m_menu.AddMenu(menu_player_count);
- }
- };
-
- void ScenePromoA::LoadCredits()
- {
- char credits_name[1024];
- m_core->GetLocaleStringFolder(credits_name, 1024);
- strcat_s(credits_name, 1024, "credits.txt");
-
- FILE * file = 0;
- fopen_s(&file, credits_name, "rb");
- if (!file)
- {
- m_core->OnCoreWarning("W:Can't load Credits '");
- m_core->OnCoreWarning(credits_name);
- m_core->OnCoreWarning("'\n");
- return;
- }
-
- _fseeki64(file, 0, SEEK_END);
- long long file_size = _ftelli64(file);
- _fseeki64(file, 0, SEEK_SET);
-
- if (file_size > 65536)
- file_size = 65536;
-
- //Read data
- char* credits_string = new char[int(file_size)+1];
- fread(credits_string, 1, int(file_size), file);
- credits_string[file_size] = 0;
- fclose(file);
-
- //Initialize credits
- m_credits_count = 0;
- for (unsigned int i = 0; i < strlen(credits_string); i ++)
- {
- if (credits_string[i] == '\n')
- {
- m_credits_count ++;
- }
- }
-
- m_credits_line_width = new double[m_credits_count];
- m_credits_lines = new char*[m_credits_count];
-
- for (int i = 0; i < m_credits_count; i ++)
- {
- m_credits_line_width[i] = 0;
- m_credits_lines[i] = new char[512];
- };
-
- int line_pos = 0;
- int credit_num = 0;
- for (unsigned int i = 0; i < strlen(credits_string); i ++)
- {
- if (credits_string[i] == '\n')
- {
- m_credits_line_width[credit_num] = line_pos;
- m_credits_lines[credit_num][line_pos] = 0;
- credit_num ++;
- line_pos = 0;
- if (credit_num < m_credits_count)
- m_credits_lines[credit_num][0] = 0;
- } else
- {
- m_credits_lines[credit_num][line_pos] = credits_string[i];
- m_credits_line_width[credit_num] = 0;
- line_pos++;
- if (line_pos >= 512)
- line_pos = 511;
- }
- }
-
- delete[] credits_string;
- };
-
- void ScenePromoA::OnItemEnter(long long id)
- {
- if (id == m_menu_item_exit)
- {
- ShutDown();
- } else
- if (id == m_menu_item_start)
- {
- m_menu.SetMenu(m_menu_menu_player_count);
- m_menu.SetMenuItem(m_menu_item_player_1);
- } else
- if (id == m_menu_menu_player_count_back)
- {
- m_menu.SetMenu(m_menu_menu_start_exit);
- m_menu.SetMenuItem(m_menu_item_start);
- } else
- if (id == m_menu_item_player_1)
- {
- m_core->StoreValue("game_player_count", 1.0);
- Finish();
- } else
- if (id == m_menu_item_player_2)
- {
- m_core->StoreValue("game_player_count", 2.0);
- Finish();
- } else
- if (id == m_menu_item_player_3)
- {
- m_core->StoreValue("game_player_count", 3.0);
- Finish();
- };
- }
-
- void ScenePromoA::OnItemBack(long long id)
- {
-
- }
-
- bool ScenePromoA::Initialize()
- {
- if (!Scene_base::Initialize())
- return false;
-
- if (((graphick_OpenGl*)m_graphick)->GlslSupport())
- {
- m_glsl_sample_shader = new GlslShader;
- if (!m_glsl_sample_shader->Create(vertex_cartoon_shader, fragment_cartoon_shader))
- {
- delete m_glsl_sample_shader;
- m_glsl_sample_shader = 0;
- }
- m_glsl_particle_shader = new GlslShader;
- if (!m_glsl_particle_shader->Create(vertex_particle_shader, 0))
- {
- delete m_glsl_particle_shader;
- m_glsl_particle_shader = 0;
- }
-
- m_glsl_outline_shader = new GlslShader;
- if (!m_glsl_outline_shader->Create(vertex_contur_shader, fragment_contur_shader))
- {
- delete m_glsl_outline_shader;
- m_glsl_outline_shader = 0;
- }
- m_glsl_simple_shadow = new GlslShader;
- if (!m_glsl_simple_shadow->Create(vertex_simple_shadow_shader, 0))
- {
- delete m_glsl_simple_shadow;
- m_glsl_simple_shadow = 0;
- }
- }
-
- strcpy_s(m_press_start_message, 4096, m_core->GetLocaleString("menu_press_start"));
-
- sprintf_s(m_promo_string_date, 2048, "%s Kuznietsov IEvgeny %s %s", m_core->GetLocaleString("menu_build_by"), __DATE__, __TIME__);
-
- m_chars_bg[0] = new Object_base;
- InitializeObject(m_chars_bg[0]);
- m_chars_bg[0]->load("../../data/object/MainMenuRockLee.n3d");
-
- m_chars_bg[1] = new Object_base;
- InitializeObject(m_chars_bg[1]);
- m_chars_bg[1]->load("../../data/object/MainMenuTenTen.n3d");
-
- m_chars_bg[2] = new Object_base;
- InitializeObject(m_chars_bg[2]);
- m_chars_bg[2]->load("../../data/object/MainMenuSasuke.n3d");
-
- m_chars_bg[3] = new Object_base;
- InitializeObject(m_chars_bg[3]);
- m_chars_bg[3]->load("../../data/object/MainMenuHinata.n3d");
-
- //m_menu_bg->set_animation(10.0*40.0, 100.0*40.0, true);
-
- {
- m_shade_bg = new Body_animate;
- Mesh_base* mesh_shade = new Mesh_base;
-
- mesh_shade->CreatePlane(3.0f, 3.0f, 1,1);
- m_shade_bg->SetMesh(mesh_shade);
- m_shade_bg->Move(0.0f, 0.0f, -1.01f);
- m_shade_bg->SetColorDiffuse(20, 40, 70, 0);
- m_object->insert_body(m_shade_bg);
- }
-
- {
- m_body_naruto_title = new Body_animate;
- Mesh_base* mesh_naruto_title = new Mesh_base;
- Texture_instance* txt_naruto_title = m_texture->load_texture("../../data/texture/gui/game_menu/Naruto_title.bmp", Texture_instance::TXT_CLAMPING_EDGE);
-
- mesh_naruto_title->CreatePlane(2.0f, 1.0f, 1,1);
- mesh_naruto_title->SetTexture(txt_naruto_title);
- m_body_naruto_title->SetMesh(mesh_naruto_title);
- m_body_naruto_title->Move(2.0f, 0.0f, -1.0f);
- m_body_naruto_title->SetColorDiffuse(255, 255, 255, 255);
- m_body_naruto_title->SetAlphaTest(true);
- m_object->insert_body(m_body_naruto_title);
-
- Body_state state;
- state.s_time = 0.0;
- Translatef(state.s_matrix.matrix.elements_16, 2.0f,0.0f,-1.0f);
- m_body_naruto_title->AddState(&state);
-
- state.s_time = 500.0;
- Translatef(state.s_matrix.matrix.elements_16, -3.0f,0.0f,0.0f);
- m_body_naruto_title->AddState(&state);
-
- state.s_time = 1000.0;
- Translatef(state.s_matrix.matrix.elements_16, 1.0f,0.4f,0.0f);
- Scalef(state.s_matrix.matrix.elements_16, 0.7f,0.7f,1.0f);
- m_body_naruto_title->AddState(&state);
- }
-
- {
- //m_body_ninja_story_title
- //Ninja_story_title.bmp
-
- m_body_ninja_story_title = new Body_animate;
- Mesh_base* mesh_ninja_story_title = new Mesh_base;
- Texture_instance* txt_ninja_story_title = m_texture->load_texture("../../data/texture/gui/game_menu/Ninja_story_title.bmp", Texture_instance::TXT_CLAMPING_EDGE);
-
- mesh_ninja_story_title->CreatePlane(0.4f*1.5f, 0.1f*1.5f, 1,1);
- mesh_ninja_story_title->SetTexture(txt_ninja_story_title);
- m_body_ninja_story_title->SetMesh(mesh_ninja_story_title);
- m_body_ninja_story_title->Move(0.0f, 0.0f, -1.0f);
- m_body_ninja_story_title->SetColorDiffuse(255, 255, 255, 255);
- //m_body_ninja_story_title->SetAlphaTest(true);
- m_object->insert_body(m_body_ninja_story_title);
-
- Body_state state;
- state.s_time = 0.0;
- state.s_color.a = 0.0;
- Translatef(state.s_matrix.matrix.elements_16, 0.4f,0.2f,-1.0f);
- m_body_ninja_story_title->AddState(&state);
-
- state.s_time = 1200.0;
- //Translatef(state.s_matrix.matrix.elements_16, -3.0,0.0,0.0);
- m_body_ninja_story_title->AddState(&state);
-
- state.s_time = 1700.0;
- state.s_color.a = 1.0;
- //Translatef(state.s_matrix.matrix.elements_16, 1.0,0.4,0.0);
- //Scalef(state.s_matrix.matrix.elements_16, 0.7,0.7,1.0);
- m_body_ninja_story_title->AddState(&state);
- }
-
- LoadCredits();
- m_credits_scroll = 0.0;
-
- //int m_credits_count;
- //double* m_credits_line_width;
- //double m_credits_scroll;
-
- if (m_sound_engine)
- {
- m_track_id = m_sound_engine->PlayTrack("../../data/music/Toshiro Masuda - Bunta.ogg", true);
- }
- m_cancel_key = KeyFind(CTRL_P1_CANCEL);
- m_start_key = KeyFind(CTRL_P1_START);
-
- m_key_down = KeyFind(CTRL_P1_GO_BACK);
- m_key_up = KeyFind(CTRL_P1_GO_FORWARD);
-
- SetClearColor(20.0f/255.0f, 40.0f/255.0f, 70.0f/255.0f, 0.0f);
-
- CreateMenu();
-
- return true;
- };
-
- void ScenePromoA::Destroy()
- {
- if (m_sound_engine && m_track_id > -1)
- {
- m_sound_engine->StopTrack(m_track_id);
- }
-
- if (m_credits_line_width)
- delete [] m_credits_line_width;
- m_credits_line_width = 0;
-
- if (m_credits_lines)
- {
- for (int i = 0; i < m_credits_count; i ++)
- {
- delete [] m_credits_lines[i];
- }
- delete [] m_credits_lines;
- }
- m_credits_lines = 0;
-
- if (m_glsl_sample_shader)
- delete m_glsl_sample_shader;
- m_glsl_sample_shader = 0;
-
- if (m_glsl_outline_shader)
- delete m_glsl_outline_shader;
- m_glsl_outline_shader = 0;
-
- if (m_glsl_simple_shadow)
- delete m_glsl_simple_shadow;
- m_glsl_simple_shadow = 0;
-
- for (int i = 0; i < m_chars_bg_max; i ++)
- {
- if (m_chars_bg[i])
- delete m_chars_bg[i];
- m_chars_bg[i] = 0;
- }
- Scene_base::Destroy();
- };