#pragma once #pragma pack( 1 ) #include "KTypes.h" namespace { const short MAX_BONE_EFFECT = 15; }; struct ModelEffectResource { ModelEffectResource() { id = 0; effect_file_ID = 0; effect_loop = 0; effect_position = 0; swap_event_id = 0; swap_model_ID = 0; for( int i(0); MAX_BONE_EFFECT>i; i++ ) { bone_name[i][255] = '\0'; bone_effect[i] = 0; } } int id; ///< -- 01 int effect_file_ID; ///< INT NOT NULL, -- 02 int effect_loop; ///< INT NOT NULL, -- 03 int effect_position; ///< -- 04 int swap_event_id; ///< -- 05 int swap_model_ID; ///< INT NOT NULL, -- 06 char bone_name[MAX_BONE_EFFECT][256]; int bone_effect[MAX_BONE_EFFECT]; ///< -- 36 }; #pragma pack() struct ModelEffectResourceGame { ModelEffectResourceGame() { id = 0; effect_file_ID = 0; effect_loop = 0; effect_position = 0; swap_event_id = 0; swap_model_ID = 0; for( int i(0); MAX_BONE_EFFECT>i; i++ ) { bone_name[i] = NULL; bone_effect[i] = NULL; bUseEffect[i] = false; } } ~ModelEffectResourceGame() { for( int i(0); MAX_BONE_EFFECT>i; i++ ) { SAFE_DELETE_ARRAY( bone_name[i] ); } } void SetData( ModelEffectResource & data ) { id = data.id; effect_file_ID = data.effect_file_ID; effect_loop = data.effect_loop; effect_position = data.effect_position; swap_event_id = data.swap_event_id; swap_model_ID = data.swap_model_ID; int n03Size = 0; for( int i(0); MAX_BONE_EFFECT>i; i++ ) { bone_effect[i] = data.bone_effect[i]; n03Size = strlen( data.bone_name[i] ); if( n03Size > 1 ) { bone_name[i] = new char[n03Size+1]; memcpy( bone_name[i], data.bone_name[i], n03Size+1 ); bone_name[i][n03Size] = '\0'; bUseEffect[i] = true; } } } int id; int effect_file_ID; int effect_loop; int effect_position; int swap_event_id; int swap_model_ID; char *bone_name[MAX_BONE_EFFECT]; int bone_effect[MAX_BONE_EFFECT]; bool bUseEffect[MAX_BONE_EFFECT]; };