Files
Leviathan/Client/Game/game/Resource/ModelEffectResource.h
T
2026-06-01 12:46:52 +02:00

111 lines
2.0 KiB
C

#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];
};