Beispiel #1
0
Bool CDynamicStringSet::ReadElement(BaseFile* pFile, String* pElement, Int32 lLevel)
{
#ifdef __API_INTERN__
	Int32  len=0;
	Char	*c = nullptr;

	if (!pFile->ReadInt32(&len)) return false;
	if (!len) { *pElement=String(); return true; }

	c = NewMemClear(Char, len);
	if (!c)
	{
		return false;
	}
	if (!pFile->ReadBytes(c,len))
	{
		DeleteMem(c);
		return false;
	}

	pElement->SetCString(c,len-1);
	DeleteMem(c);

	return true;
#else
	return pFile->ReadString(pElement) != 0;
#endif // __API_INTERN__
}
Beispiel #2
0
Bool CDynamicFilenameArray::ReadElement(BaseFile* pFile, Filename* pElement, Int32 lLevel)
{
#ifdef __API_INTERN__
	Int32  len=0;
	Char	*c = nullptr;

	if (!pFile->ReadInt32(&len)) return false;
	if (!len) { *pElement = Filename(); return true; }

	c = NewMemClear(Char, len);
	if (!c)
	{
		return false;
	}
	if (!pFile->ReadBytes(c,len))
	{
		DeleteMem(c);
		return false;
	}

	String str;
	str.SetCString(c, len-1);
	*pElement = Filename(str);
	DeleteMem(c);

	return true;
#else
	return pFile->ReadFilename(pElement) != 0;
#endif // __API_INTERN__
}
DeferredRendering::~DeferredRendering()
{
	DeleteMem(m_DREffect);
	DeleteMem(m_DiffuseRT);
	DeleteMem(m_NormalRT);
	DeleteMem(m_DepthRT);
}
AEResult GameObjectScriptGOC::RemoveGameObjectScriptInstance()
{
	/////////////////////////////////////////
	//Pre-checks
	if (!m_IsReady)
	{
		return AEResult::NotReady;
	}

	AEAssert(m_GameObjectScriptInstance != nullptr);
	if (m_GameObjectScriptInstance == nullptr)
	{
		return AEResult::NullObj;
	}

	/////////////////////////////////////////
	//Remove Instance
	m_GameObjectScriptManager->Remove(m_GameObjectScriptInstance->m_Name);

	DeleteMem(m_GameObjectScriptProperties);

	DeleteMem(m_GameObjectScriptInstance);

	/////////////////////////////////////////
	//Finish
	return AEResult::Ok;
}
Beispiel #5
0
DebugStats::~DebugStats()
{
	DeleteMem(m_SpriteFontAE);
	DeleteMem(m_SpriteBatchAE);
	DeleteMem(m_GridVertexBuffer);
	DeleteMem(m_AxisVertexBuffer);
	DeleteMem(m_BasicColorMaterial);
}
KDNode::~KDNode()
{
	if(m_interior){
		DeleteMem(m_lChild);
		DeleteMem(m_rChild);
	}
	else{
		DeleteMem(m_points);
	}
}
Beispiel #7
0
String EncryptPassword(const String& str)
{
	Int32 lLen = str.GetCStringLen(STRINGENCODING_8BIT);
	if (lLen <= 0)
		return str;

	Int32 lCryptLen = (lLen + 256) / 256;
	lCryptLen *= 256;
	Int32 i;
	Random rnd;
	rnd.Init(97355832);
	Int32 plKey[30];
	char ch[3];
	String strCrypt;

	GeCipher256 c;

	char* pchPassword = NewMemClear(Char,lCryptLen);
	if (!pchPassword)
		return str;
	str.GetCString(pchPassword, lLen + 1, STRINGENCODING_8BIT);
	pchPassword[lLen] = 0;
	for (i = 0; i < lCryptLen; i++)
	{
		rnd.Get01();
		pchPassword[i] ^= (rnd.GetSeed() & 0xff);
	}

	rnd.Init(956612571);
	for (i = 0; i < 30; i++)
	{
		rnd.Get01();
		plKey[i] = rnd.GetSeed();
		lIntel(&(plKey[i]));
	}

	if (!c.Open((UChar*)plKey, sizeof(plKey), true))
	{
		DeleteMem(pchPassword);
		return str;
	}

	for (i = 0; i < lCryptLen; i += 256)
		c.Encrypt((UChar*)&pchPassword[i], 256);

	for (i = 0; i < lCryptLen; i++)
	{
		sprintf_safe(ch, sizeof(ch), "%02x", ((int)pchPassword[i]) & 0xff);
		DebugAssert(ch[2] == 0);
		strCrypt += ch;
	}

	DeleteMem(pchPassword);
	return strCrypt;
}
AEResult SkinningMaterial::CreateVertexShaderConstantBuffer()
{
	AEResult ret = AEResult::Ok;
	
	/////////////////////////////////////////////////////
	//Create Constant Buffer 
	//	- _AE_CB_World_View_Proj
	//	- _AE_CB_Bones
	//
	
	/****************************************************************************
	*Constant Buffer #1: _AE_CB_World_View_Proj
	****************************************************************************/
	ConstantBuffer* cbWVP = nullptr;

	ret = AEBuiltInMaterialsHelpers::BuildCBWVP(m_GraphicDevice, &cbWVP);

	if(ret != AEResult::Ok)
	{
		return AEResult::ConstantBufferInitFailed;
	}

	ret = m_VSProps->AddConstantBuffer(cbWVP);

	if(ret != AEResult::Ok)
	{
		DeleteMem(cbWVP);

		return AEResult::ConstantBufferInitFailed;
	}
	
	/****************************************************************************
	*Constant Buffer #2: _AE_CB_Bones
	****************************************************************************/
	ConstantBuffer* cbBones = nullptr;

	ret = AEBuiltInMaterialsHelpers::BuildCBBones(m_GraphicDevice, &cbBones);

	ret = m_VSProps->AddConstantBuffer(cbBones);

	if(ret != AEResult::Ok)
	{
		DeleteMem(cbBones);

		return AEResult::ConstantBufferInitFailed;
	}
	
	/****************************************************************************
	*Finish
	****************************************************************************/
	return AEResult::Ok;
}
GameLightsUpdate::~GameLightsUpdate()
{
	DeleteMem(m_SpotLightShadowViewport);
	DeleteMem(m_VarianceShadowMaterial);
	DeleteMem(m_VarianceSkinningShadowMaterial);
	AERelease(m_SpotLightShadowTexturesDS);
	AERelease(m_DirLightShadowTexturesDS);

	for (size_t i = 0; i < m_DirLightShadowViewports.size(); i++)
	{
		DeleteMem(m_DirLightShadowViewports[i]);
	}
}
Beispiel #10
0
void WaitForCurrProcess(void)
{
	unl objs = 1;
	unl res = 0;
	HANDLE proc[2];
	proc[0] = CurrProc;
	proc[1] = 0;

	while (!StopCommand) {
		res = MsgWaitForMultipleObjects(objs, proc, FALSE,
				                            INFINITE, QS_ALLINPUT);
		if (res == WAIT_OBJECT_0)
			break;
		if (res == WAIT_FAILED) {
			ExitType = 1;
			LocalExitCode = GetLastError();
			break;
		}
		if (res == (WAIT_OBJECT_0 + objs)) {
			MSG msg;
			while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { 
				// if it's a quit message we're out of here 
        if (msg.message == WM_QUIT)
					return; 
				// otherwise dispatch it 
				TranslateMessage(&msg);
				DispatchMessage(&msg); 
				if (((msg.message == WM_KEYDOWN)
					&& (msg.wParam == VK_CANCEL))
				 || ((msg.message == WM_CHAR)
					&& (msg.wParam == 0x03))) {
					ExitType = 6;
					LocalExitCode = 1;
					StopCommand = true;
					break;
				}
			} // end of PeekMessage while loop 
		}
	}
	if (!StopCommand
	 && !GetExitCodeProcess(procInfo->hProcess, &LocalExitCode)) {
		ExitType = 2;
		LocalExitCode = GetLastError();
	}
	CloseHandle(procInfo->hProcess);
	CloseHandle(procInfo->hThread);
	DeleteMem(startInfo);
	DeleteMem(procInfo);
}
AEResult QuadTextureMaterial::CreateVertexShaderConstantBuffer()
{
	AEResult ret = AEResult::Ok;
	
	/////////////////////////////////////////////////////
	//Create Constant Buffer 
	//	- _AE_CB_HalfPixel
	//
	
	/****************************************************************************
	*Constant Buffer #1: _AE_CB_HalfPixel
	****************************************************************************/
	ConstantBuffer* cb = nullptr;

	ret = AEBuiltInMaterialsHelpers::BuildCBHalfPixel(m_GraphicDevice, &cb);

	if(ret != AEResult::Ok)
	{
		return AEResult::ConstantBufferInitFailed;
	}

	ret = m_VSProps->AddConstantBuffer(cb);

	if(ret != AEResult::Ok)
	{
		DeleteMem(cb);

		return AEResult::ConstantBufferInitFailed;
	}
	
	/****************************************************************************
	*Finish
	****************************************************************************/
	return AEResult::Ok;
}
XBoxGamepadManager::~XBoxGamepadManager()
{
	for (uint32_t i = 0; i < XUSER_MAX_COUNT; i++)
	{
		DeleteMem(m_Gamepads[i]);
	}
}
//----------------------------------------------------------------------------------------
// Create default filter settings
// Function result:		filter settings oder 0 (not enough memory)
//----------------------------------------------------------------------------------------
static FILTER_PARAM	filter_new_settings(FI_REF fi, const BaseContainer* t_bc)
{
	PRIVATE_SETTINGS* settings;

	settings = NewMemClear(PRIVATE_SETTINGS, 1);
	if (settings)
	{
		settings->magic = PRIVATE_SETTINGS_MAGIC;
		settings->matrix_opacity = 1.0;
		settings->angle = DFLT_ANGLE;
		settings->scale_matrix = true;
		settings->type = 0;
		settings->tile_flags = TILE_REPEAT_BORDER;

		settings->emr = 0;												// no effect matrix so far
		settings->emr_lock = Semaphore::Alloc();	// create a semaphore for the matrix object

		if (settings->emr_lock == 0)							// failed to allocate the semaphore?
		{
			DeleteMem(settings);
			settings = 0;
		}
	}

	return (FILTER_PARAM)settings;
}
Beispiel #14
0
static
Float
getMedian(const GeDynamicArray<Vector> &points, const Int32 *pnts, Int32 numPoints, Random &rng, INT axis, Sorter &sorter)
{
	Int32 maxSamples = 20;
	Int32 numSamples = numPoints < maxSamples ? numPoints : maxSamples;
	Float* samples = NewMemClear(Float,numSamples);
	for(Int32 i=0;i<numSamples;i++){
		Float val = rng.Get01();
		Int32 a = val * (numPoints-1);
		switch(axis){
			case 0:
				samples[i] = points[pnts[a]].x;
				break;
			case 1:
				samples[i] = points[pnts[a]].y;
				break;
			case 2:
				samples[i] = points[pnts[a]].z;
				break;
		}
		
	}
	sorter.Sort(samples,numSamples,sizeof(Float));
	Float ret = samples[numSamples/2];
	DeleteMem(samples);
	return ret;
}
Beispiel #15
0
PaintUndoTile::~PaintUndoTile()
{
	if (m_pData)
	{
		DeleteMem(m_pData);
	}
}
void GameObjectMaterialComponentsWidget::on_m_AddMaterialButton_clicked()
{
	if(!m_IsReady)
	{
		return;
	}

	////////////////////////////////
	//Create New Mesh Material GOC
	AETODO("Add literal from Localization");
	MeshMaterialGOC* meshMaterialGOC = new MeshMaterialGOC(m_GameObject, L"Empty Mesh Material");

	////////////////////////////////
	//Add it to Game Object
	AEResult ret = m_GameObject->AddMeshMaterialGOC(meshMaterialGOC);

	if(ret != AEResult::Ok)
	{
		AETODO("Add log and window message");

		DeleteMem(meshMaterialGOC);

		return;
	}

	////////////////////////////////
	//New Index will be the Top Level Count
	uint32_t selectedIndex = m_GameObjectMaterialComponentsWidgetQtUI.m_MaterialsTree->topLevelItemCount();

	////////////////////////////////
	//Repopulate tree with new data
	PopulateMaterialsTree(selectedIndex);
}
Beispiel #17
0
	AEResult ConvertToMeshContent(const MeshPartHolder& meshPartHolder, MeshPartContent** meshPartContent, bool generateTangentBinormal)
	{
		if(meshPartContent == nullptr)
		{
			return AEResult::NullParameter;
		}

		MeshPartContent* meshContentTemp = new MeshPartContent();
	
		meshContentTemp->m_MatID = meshPartHolder.m_MaterialID;

		meshContentTemp->m_VertexType = meshPartHolder.m_VertexType;

		AEResult ret = BuildVertexBufferContent(meshContentTemp->m_VertexType, meshPartHolder.m_VtxHolderVec, &meshContentTemp->m_VtxBuff, generateTangentBinormal, meshPartHolder.m_IndexHolder);

		if(ret != AEResult::Ok)
		{
			DeleteMem(meshContentTemp);
			return ret;
		}

		uint32_t idxSize = (uint32_t)meshPartHolder.m_IndexHolder.size();
		meshContentTemp->m_IdxSize = idxSize;
		meshContentTemp->m_IdxBuf16 = new uint16_t[idxSize];
		ZeroMemory(meshContentTemp->m_IdxBuf16, idxSize * sizeof(uint16_t));

		for (uint32_t i = 0; i < idxSize; ++i)
		{
			meshContentTemp->m_IdxBuf16[i] = meshPartHolder.m_IndexHolder[i];
		}

		(*meshPartContent) = meshContentTemp;

		return AEResult::Ok;
	}
Beispiel #18
0
/*********************************************************************\
	Function name    : CLanguageList::Init
	Description      :
	Created at       : 26.09.01, @ 16:11:23
	Created by       : Thomas Kunert
	Modified by      :
\*********************************************************************/
void CLanguageList::Init()
{
	Filename resourcepath = GeGetStartupPath() + Filename("resource");

	if (GetC4DVersion() >= 16000) {
		// R16 has a new resource directory structure. The c4d_language.str
		// files we are searching for are in resource/modules/c4dplugin/strings_xx.
		// Fix for https://github.com/nr-plugins/resedit/issues/4
		resourcepath = resourcepath + "modules" + "c4dplugin";
	}

	AutoAlloc <BrowseFiles> pBrowse;
	pBrowse->Init(resourcepath, false);

	while (pBrowse->GetNext())
	{
		if (pBrowse->IsDir())
		{
			Filename fn = pBrowse->GetFilename();
			if (fn.GetString().SubStr(0, 8).ToLower() == "strings_")
			{
				String idx = fn.GetString();
				idx.Delete(0, 8);

				Filename stringname = resourcepath + fn+Filename("c4d_language.str");
				AutoAlloc <BaseFile> pFile;
				if (!pFile)
					return;
				if (!GeFExist(stringname))
				{
					GeOutString("Missing c4d_language.str to identify the string directory!!!", GEMB_ICONEXCLAMATION);
				}
				else if (pFile->Open(stringname))
				{
					Int32 len = pFile->GetLength();
					Char *buffer = NewMemClear(Char,len + 2);
					if (buffer)
					{
						pFile->ReadBytes(buffer,len);
						buffer[len]=0;

						Int32 i;

						for (i = 0; i < len && buffer[i] >= ' '; i++) { }
						buffer[i] = 0;

						for (i--; i > 0 && buffer[i]== ' '; i--) { }
						buffer[i + 1] = 0;

						AddLanguage(buffer, idx);
						DeleteMem(buffer);
					}
				}
			}
		}
	}

	CriticalAssert(GetNumLanguages() > 0);
}
Beispiel #19
0
Bool PickObjectTool::MouseInput(BaseDocument* doc, BaseContainer& data, BaseDraw* bd, EditorWindow* win, const BaseContainer& msg)
{
	Int32						mode = data.GetInt32(MDATA_PICKOBJECT_MODE);
	Int32						x, y, l, xr = 0, yr = 0, wr = 0, hr = 0;
	Matrix4d				m;
	ViewportPixel** pix = nullptr;
	String					str;
	char ch[200];
	Bool ret = false;
	AutoAlloc<C4DObjectList> list;
	if (!list)
		return false;

	VIEWPORT_PICK_FLAGS flags = VIEWPORT_PICK_FLAGS_ALLOW_OGL | VIEWPORT_PICK_FLAGS_USE_SEL_FILTER;
	if (data.GetBool(MDATA_PICKOBJECT_ONLY_VISIBLE))
		flags |= VIEWPORT_PICK_FLAGS_OGL_ONLY_VISIBLE;
	x = msg.GetInt32(BFM_INPUT_X);
	y = msg.GetInt32(BFM_INPUT_Y);
	Float64 timer = 0.0;
	if (mode == MDATA_PICKOBJECT_MODE_CIRCLE)
	{
		Int32 rad = data.GetInt32(MDATA_PICKOBJECT_CIRCLE_RAD);
		timer = GeGetMilliSeconds();
		ret = ViewportSelect::PickObject(bd, doc, x, y, rad, xr, yr, wr, hr, pix, flags, nullptr, list, &m);
		timer = GeGetMilliSeconds() - timer;
	}
	else if (mode == MDATA_PICKOBJECT_MODE_RECTANGLE)
	{
		Int32 width	 = data.GetInt32(MDATA_PICKOBJECT_RECT_W);
		Int32 height = data.GetInt32(MDATA_PICKOBJECT_RECT_H);
		x -= width / 2;
		y -= height / 2;
		timer = GeGetMilliSeconds();
		ret = ViewportSelect::PickObject(bd, doc, x, y, x + width, y + height, xr, yr, wr, hr, pix, flags, nullptr, list, &m);
		timer = GeGetMilliSeconds() - timer;
	}
	if (ret)
	{
		sprintf(ch, "Picking region from (%d, %d), size (%d, %d)|", xr, yr, wr, hr);
		str += ch;
		for (l = 0; l < list->GetCount(); l++)
		{
			sprintf(ch, ", z = %.4f|", list->GetZ(l));
			str += "Found Object " + list->GetObject(l)->GetName() + ch;
		}
	}
	else
	{
		str	= "PickObject failed";
	}
	sprintf(ch, "|Time: %.2f us", float(timer) * 1000.0f);
	str += ch;

	DeleteMem(pix);
	GeOutString(str, GEMB_OK);

	return true;
}
Beispiel #20
0
void Mesh::CleanUp()
{
	uint32_t size = (uint32_t)m_MeshPartVector.size();
	for (uint32_t i = 0; i < size; ++i)
	{
		DeleteMem(m_MeshPartVector[i]);
	}
	m_MeshPartVector.clear();
}
Bool ApplinkDialog::Command(Int32 id, const BaseContainer& msg)
{
	dirty = true;
	saveSettings();
    
	switch(id)
	{
        case IDC_BTN_EXPORT:
		{
			BaseDocument* doc = GetActiveDocument();
			ApplinkExporter* exporter = NewObjClear(ApplinkExporter);
			exporter->Execute(doc, &gPreferences);			
            
			String exeCoat = gPreferences.GetString(IDC_COAT_EXE_PATH);
			if(gPreferences.GetBool(IDC_CHK_COAT_START) && exeCoat != "")
			{
				if(!Find3DCoat())
				{
					Int32 length = exeCoat.GetCStringLen(STRINGENCODING_8BIT) + 1;
					char* buffer = NewMemClear(char,length);
					exeCoat.GetCString(buffer, length, STRINGENCODING_8BIT);
                    
#if defined _WIN32 || defined _WIN64
					SHELLEXECUTEINFO ExecuteInfo;
                    
					memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
                    
					ExecuteInfo.cbSize       = sizeof(ExecuteInfo);
					ExecuteInfo.fMask        = 0;                
					ExecuteInfo.hwnd         = 0;                
					ExecuteInfo.lpVerb       = TEXT("open");                      // Operation to perform

					wchar_t *pBuffer = (wchar_t *)malloc(MAX_PATH);
					mbstowcs(pBuffer, buffer, MAX_PATH);
					ExecuteInfo.lpFile       = pBuffer;  // Application name

					ExecuteInfo.lpDirectory  = 0;                           // Default directory
					ExecuteInfo.nShow        = SW_SHOWNORMAL;
					ExecuteInfo.hInstApp     = 0;
                    
					if(ShellExecuteEx(&ExecuteInfo) == false)
					{
						GePrint("3D-Coat.exe not found!");
					}
#elif __APPLE__
                    string str = "open " + string(buffer);
                    system(str.c_str());
                    GePrint("Start 3D-Coat: " + String(buffer));
#endif
					DeleteMem(buffer);
				}
				else
				{
					GePrint("3D-Coat.exe is run!");
				}
			}
		}
Beispiel #22
0
void MemStatDialog::CheckMaxMemory(Int32 mbblocks)
{
	maxon::BaseArray<void*> blocks;
	Int32 i;

	for (i = 0; true; i++)
	{
		void* block = nullptr;
		if (mbblocks > 0)
			block = NewMem(UChar, mbblocks * 1024 * 1024);
		if (!block)
			break;
		InitValues();
		if (!blocks.Append(block))
		{
			DeleteMem(block);
			break;
		}
		InitValues();
	}

	BaseContainer stat;
	GeGetMemoryStat(stat);

	for (i = 0; i < blocks.GetCount(); i++)
	{
		void* block = blocks[i];
		if (block)
			DeleteMem(block);
	}

	InitValues();

	String memstr = String::MemoryToString(stat.GetInt64(C4D_MEMORY_STAT_MEMORY_INUSE));

	switch (mbblocks)
	{
		case 1:			SetString(IDC_MEMORY_TEST_1MB_RES, memstr); break;
		case 10:		SetString(IDC_MEMORY_TEST_10MB_RES, memstr); break;
		case 100:		SetString(IDC_MEMORY_TEST_100MB_RES, memstr); break;
	}

	GeOutString("Max memory allocation: " + memstr, GEMB_OK);
}
Beispiel #23
0
void UpdateCRC(Crc32 &crc, const String &str)
{
	Int32 lLen = str.GetCStringLen();
	Char* pchString = NewMem(Char,lLen + 2);
	if (!pchString)
		return;
	str.GetCString(pchString, lLen + 1);
	crc.Update(pchString, lLen);
	DeleteMem(pchString);
}
Beispiel #24
0
void Skeleton::CleanUp()
{
	uint32_t size = (uint32_t)m_BoneHierarchy.size();
	for(uint32_t i = 0; i < size; ++i)
	{
		DeleteMem(m_BoneHierarchy[i]);
	}

	m_BoneHierarchy.clear();
}
Beispiel #25
0
void PhysicsActor::CleanUp()
{
	for each (auto collider in m_PhysicColliderMap)
	{
		PhysicCollider* physicCollider = collider.second;

		m_PxRigidActor->detachShape(*physicCollider->GetPxShape());

		DeleteMem(physicCollider);
	}
Beispiel #26
0
ModelContent::~ModelContent()
{
	//Clean Skeleton
	DeleteMem(m_SkeletonContent);

	//Clean Animations
	for(auto itAnim : m_Animations)
	{
		DeleteMem(itAnim.second);
	}

	m_Animations.clear();

	//Clean Meshes
	for(auto itMesh : m_Meshes)
	{
		DeleteMem(itMesh.second);
	}

	m_Meshes.clear();
}
GameObjectScriptGOC::~GameObjectScriptGOC()
{
	RemoveGameObjectScriptAsset();

	if (m_ASContext != nullptr)
	{
		m_ASContext->Unprepare();

		ReleaseAngel(m_ASContext);
	}

	DeleteMem(m_TempGameObjectScriptProperties);
}
Beispiel #28
0
IMAGERESULT BFFSaverData::Save(const Filename& name, BaseBitmap* bm, BaseContainer* data, SAVEBIT savebits)
{
	Int32	 y, bw, bh;
	Bool	 ok = true;
	UChar* line = nullptr;
	AutoAlloc<BaseFile> file;
	if (!file)
		return IMAGERESULT_OUTOFMEMORY;

	if (!file->Open(name, FILEOPEN_WRITE, FILEDIALOG_NONE, BYTEORDER_MOTOROLA))
		return IMAGERESULT_FILEERROR;

	bw = bm->GetBw();
	bh = bm->GetBh();

	file->WriteInt32(0x42464600);
	file->WriteInt32(bw);
	file->WriteInt32(bh);

	if (bw > 0)
		line = NewMemClear(UChar, 3 * bw);
	if (!line)
	{
		DeleteMem(line);
		return IMAGERESULT_OUTOFMEMORY;
	}

	for (y = 0; y < bh; y++)
	{
		bm->GetPixelCnt(0, y, bw, line, COLORBYTES_RGB, COLORMODE_RGB, PIXELCNT_0);
		file->WriteBytes(line, bw * 3);
	}

	ok = file->GetError() == FILEERROR_NONE;
	DeleteMem(line);

	return ok ? IMAGERESULT_OK : IMAGERESULT_FILEERROR;
}
AEResult GameObjectScriptGOC::ClearGameObjectScriptAsset(bool informGameAsset)
{
	if (m_GameObjectScript.m_ResourceAsset != nullptr)
	{
		if (m_GameObjectScript.m_OnListenerObjDeletionEvent != nullptr && informGameAsset)
		{
			m_GameObjectScript.m_OnListenerObjDeletionEvent(m_GameObjectScript.m_CallerID);
		}

		m_GameObjectScript.m_AssetID					= 0;
		m_GameObjectScript.m_GameAsset					= nullptr;
		m_GameObjectScript.m_CallerID					= 0;
		m_GameObjectScript.m_OnListenerObjDeletionEvent	= nullptr;

		AERelease(m_GameObjectScript.m_ResourceAsset);

		DeleteMem(m_GameObjectScriptProperties);

		DeleteMem(m_GameObjectScriptInstance);
	}

	return AEResult::Ok;
}
Beispiel #30
0
IMAGERESULT BFFLoaderData::Load(const Filename& name, BaseBitmap* bm, Int32 frame)
{
	Int32	 y, bw, bh, header;
	Bool	 ok = true;
	UChar* line = nullptr;
	AutoAlloc<BaseFile>	file;
	if (!file)
		return IMAGERESULT_OUTOFMEMORY;

	if (!file->Open(name, FILEOPEN_READ, FILEDIALOG_NONE, BYTEORDER_MOTOROLA))
		return IMAGERESULT_FILEERROR;

	file->ReadInt32(&header);
	file->ReadInt32(&bw);
	file->ReadInt32(&bh);

	if (bw > 0)
		line = NewMemClear(UChar, 3 * bw);

	if (bm->Init(bw, bh, 24) != IMAGERESULT_OK || !line)
	{
		DeleteMem(line);
		return IMAGERESULT_OUTOFMEMORY;
	}

	for (y = 0; y < bh && ok; y++)
	{
		// check if current thread is canceled and return IMAGERESULT_THREADCANCELED
		file->ReadBytes(line, bw * 3);
		ok = bm->SetPixelCnt(0, y, bw, line, COLORBYTES_RGB, COLORMODE_RGB, PIXELCNT_0);
	}

	ok = ok && file->GetError() == FILEERROR_NONE;
	DeleteMem(line);

	return ok ? IMAGERESULT_OK : IMAGERESULT_FILEERROR;
}