mirror of
				https://github.com/isledecomp/isle.git
				synced 2025-10-26 09:54:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "legomesh.h"
 | |
| 
 | |
| #include "misc/legostorage.h"
 | |
| 
 | |
| DECOMP_SIZE_ASSERT(LegoMeshUnkComponent, 0x1c)
 | |
| DECOMP_SIZE_ASSERT(LegoMesh, 0x24)
 | |
| 
 | |
| // FUNCTION: LEGO1 0x100d3810
 | |
| LegoMesh::LegoMesh()
 | |
| {
 | |
| 	m_alpha = 0.0F;
 | |
| 	m_shading = e_flat;
 | |
| 	m_unk0x14 = 0;
 | |
| 	m_textureName = NULL;
 | |
| 	m_unk0x0d = 0;
 | |
| 	m_unk0x10 = NULL;
 | |
| 	m_unk0x20 = 0;
 | |
| 	m_unk0x21 = FALSE;
 | |
| 	m_materialName = NULL;
 | |
| }
 | |
| 
 | |
| // FUNCTION: LEGO1 0x100d3860
 | |
| LegoMesh::~LegoMesh()
 | |
| {
 | |
| 	if (m_textureName != NULL) {
 | |
| 		delete[] m_textureName;
 | |
| 	}
 | |
| 
 | |
| 	if (m_materialName != NULL) {
 | |
| 		delete[] m_materialName;
 | |
| 	}
 | |
| 
 | |
| 	if (m_unk0x10 != NULL) {
 | |
| 		delete m_unk0x10;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // FUNCTION: LEGO1 0x100d38f0
 | |
| LegoResult LegoMesh::Read(LegoStorage* p_storage)
 | |
| {
 | |
| 	LegoResult result;
 | |
| 	LegoU32 textureLength, materialLength;
 | |
| 	if ((result = m_color.Read(p_storage)) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if ((result = p_storage->Read(&m_alpha, sizeof(m_alpha))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if ((result = p_storage->Read(&m_shading, sizeof(m_shading))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if ((result = p_storage->Read(&m_unk0x0d, sizeof(m_unk0x0d))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if ((result = p_storage->Read(&m_unk0x20, sizeof(m_unk0x20))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if ((result = p_storage->Read(&m_unk0x21, sizeof(m_unk0x21))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 
 | |
| 	if ((result = p_storage->Read(&textureLength, sizeof(textureLength))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if (textureLength) {
 | |
| 		m_textureName = new LegoChar[textureLength + 1];
 | |
| 
 | |
| 		if ((result = p_storage->Read(m_textureName, textureLength)) != SUCCESS) {
 | |
| 			return result;
 | |
| 		}
 | |
| 
 | |
| 		m_textureName[textureLength] = '\0';
 | |
| 		strlwr(m_textureName);
 | |
| 	}
 | |
| 
 | |
| 	if ((result = p_storage->Read(&materialLength, sizeof(materialLength))) != SUCCESS) {
 | |
| 		return result;
 | |
| 	}
 | |
| 	if (materialLength) {
 | |
| 		m_materialName = new LegoChar[materialLength + 1];
 | |
| 
 | |
| 		if ((result = p_storage->Read(m_materialName, materialLength)) != SUCCESS) {
 | |
| 			return result;
 | |
| 		}
 | |
| 
 | |
| 		m_materialName[materialLength] = '\0';
 | |
| 		strlwr(m_materialName);
 | |
| 	}
 | |
| 
 | |
| 	return SUCCESS;
 | |
| }
 | 
