//メッシュコンテナ削除
HRESULT MyAllocateHierarchy::DestroyMeshContainer(THIS_ LPD3DXMESHCONTAINER pMeshContainerToFree)
{
	SDELETE(pMeshContainerToFree->Name); //名前

	//メッシュ
	RELEASE(pMeshContainerToFree->MeshData.pMesh);

	//マテリアル
	for (DWORD i = 0; i < pMeshContainerToFree->NumMaterials; i++)
		SDELETE(pMeshContainerToFree->pMaterials->pTextureFilename);
	SDELETE(pMeshContainerToFree->pMaterials);

	//エフェクト
	for (DWORD i = 0; i < pMeshContainerToFree->pEffects->NumDefaults; i++)
	{
		SDELETE(pMeshContainerToFree->pEffects->pDefaults[i].pParamName);
		SDELETE(pMeshContainerToFree->pEffects->pDefaults[i].pValue);
	}
	SDELETE(pMeshContainerToFree->pEffects->pEffectFilename);
	SDELETE(pMeshContainerToFree->pEffects->pDefaults);
	SDELETE(pMeshContainerToFree->pEffects);

	//隣接ポリゴンインデックス
	SDELETE(pMeshContainerToFree->pAdjacency);
	RELEASE(pMeshContainerToFree->pSkinInfo);

	return D3D_OK;
}
Esempio n. 2
0
	TTFontAsset *Assets::RequestTTFont(const std::string &filename)
	{
		TTFontAsset *asset = NULL;
		std::string name = GetContentPath() + filename;
		asset = (TTFontAsset *)GetAssetByFilename(name);

		if (!asset)
		{
			asset = new TTFontAsset();
			if (asset->Load(name))
			{
				StoreAsset(asset);
				std::cout << asset->m_filename << ": Load" << std::endl;
			}
			else
			{
				std::cout << asset->m_filename << ": Loading failed!" << std::endl;
				SDELETE(asset);
			}
		}

		if (asset)
		{
			asset->AddReference();
			std::cout << asset->m_filename << ": RefCount (" << asset->m_iRefCount << ")" << std::endl;
		}

		return asset;
	}
/// <summary>
/// Closes this instance.
/// </summary>
void HashJoinOperator::Close()
{
	mInputRight.Close();
	for ( uint32_t i = 0; i < mInputRegisterLeft.size(); ++i )
	{
		SDELETE( mOutputRegister[i] );
	}
}
Esempio n. 4
0
	TextureAtlas::~TextureAtlas()
	{
		for (auto i : m_entries)
		{
			SDELETE(i.second);
		}
		m_entries.clear();
	}
Esempio n. 5
0
	TileMap::~TileMap()
	{
		for (auto i : m_TileSet)
		{
			SDELETE(i);
		}
		m_TileTexture->RemoveReference();
	}
Esempio n. 6
0
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nWinMode)
{
	int Return = 0;

	App *pAppObj = new App(Return, hInstance); //Appオブジェクトを作成
	SDELETE(pAppObj); //Appオブジェクトを削除

	return Return;
}
Esempio n. 7
0
//全ての箱オブジェクトを削除
void BoxWorld::DeleteAllBoxObj() 
{
	for (std::list<Box *>::iterator itr = listpBoxObj.begin(); itr != listpBoxObj.end();)
	{
		SDELETE(*itr);
		itr = listpBoxObj.erase(itr);
	}

	return;
}
//フレーム削除
HRESULT MyAllocateHierarchy::DestroyFrame(THIS_ LPD3DXFRAME pFrameToFree)
{
	SDELETE(pFrameToFree->Name);

	if (pFrameToFree->pMeshContainer)
		DestroyMeshContainer(pFrameToFree->pMeshContainer);

	if (pFrameToFree->pFrameSibling)
		DestroyFrame(pFrameToFree->pFrameSibling);

	if (pFrameToFree->pFrameFirstChild)
		DestroyFrame(pFrameToFree->pFrameFirstChild);

	return D3D_OK;
}
Esempio n. 9
0
//一定以上離れた物体を消去
void BoxWorld::BorderClamp() 
{
	for (std::list<Box *>::iterator itr = listpBoxObj.begin(); itr != listpBoxObj.end();) //箱オブジェクトを走査
	{
		Tofu3D::Body *pBodyObj = pTofu3DObj->GetpBodyObj((*itr)->GetTofuID()); //箱のBodyオブジェクトを取得
		if (pBodyObj->GetvecPos().y < -60.0) //60m以上低い場所だった場合
		{
			SDELETE(*itr); //箱オブジェクトを消去
			itr = listpBoxObj.erase(itr);
		} else {
			itr++;
		}
	}

	return;
}
Esempio n. 10
0
//デストラクタ
App::~App() 
{
	pDebugObj->Output(TEXT("終了処理を開始。"), ho::Debug::Log);

	SDELETE(pMainObj); //メインオブジェクトを削除
	SDELETE(pMyDirectXGObj); //DirectXGオブジェクトを削除
	SDELETE(pMessageLoopObj); //メッセージループオブジェクトを削除
	SDELETE(pMyFrameControlObj); //フレームレート制御オブジェクトを削除
	SDELETE(pWindowManagerObj); //ウィンドウマネージャオブジェクトを削除
	SDELETE(pDebugObj); //デバッグオブジェクトを削除
}
Esempio n. 11
0
// Test if we can read and write from multiple threads without failures
TEST_P(BufferTest, MultiThreadScanAndWrite)
{
	// Start scan thread
	bool stop = false;
	uint32_t fails = 0;
	std::thread scanThread( Scan, mgr, GetParam().pagesOnDisk, std::ref(stop), std::ref(fails) );

	// Start read/write threads
	std::vector<std::future<uint32_t>> readWriteFutures;
	for ( uint32_t i = 0; i < GetParam().threads; i++ )
	{
		readWriteFutures.push_back( std::async( ReadWrite, mgr, i, 
												GetParam().threads, GetParam().pagesOnDisk ) );
	}

	// Wait for read/write threads
	uint32_t totalCount = 0;
	for ( uint32_t i = 0; i < GetParam().threads; i++ )
	{
		totalCount += readWriteFutures[i].get();
	}

	// Wait for scan thread
	stop = true;
	scanThread.join();
	EXPECT_EQ( 0, fails );

	// Restart buffer manager
	SDELETE(mgr);
	mgr = new BufferManager( GetParam().pagesInMemory );

	// Verify results
	uint32_t totalCountOnDisk = 0;
	for ( uint32_t i = 0; i < GetParam().pagesOnDisk; i++ )
	{
		BufferFrame& bf = mgr->FixPage( BufferManager::MergePageId( DB_TEST_SEGMENT, i ), false );
		totalCountOnDisk += reinterpret_cast<uint32_t*>(bf.GetData())[0];
		mgr->UnfixPage( bf, false );
	}
	EXPECT_EQ( totalCount, totalCountOnDisk );
}
Esempio n. 12
0
/// <summary>
/// Opens this instance.
/// </summary>
void HashJoinOperator::Open()
{
	// Empty all hashmaps
	mHashInt.clear();
	mHashString.clear();
	mIteratorOffest = 0;

	// Empty all registers
	for ( uint32_t i = 0; i < mInputRegisterLeft.size(); ++i )
	{
		SDELETE( mOutputRegister[i] );
	}
	mOutputRegister.clear();
	mInputRegisterLeft.clear();
	mInputRegisterRight.clear();

	mInputLeft.Open();
	mInputRegisterLeft = mInputLeft.GetOutput();
	// Detect left side comparison attribute
	uint32_t curidx = 0;
	bool found = false;
	for ( Register* r : mInputRegisterLeft )
	{
		if ( r->GetAttributeName() == mLeftAttrName )
		{
			found = true;
			mLeftId = curidx;
			if ( r->GetType() == SchemaTypes::Tag::Char )
				mAttrIsString = true;
			else
				mAttrIsString = false;
			break;
		}
		++curidx;
	}
	assert( found );
	// Prepare output registers associated with left side
	// these we have to build ourselves
	for ( Register* r : mInputRegisterLeft )
	{
		mOutputRegister.push_back( new Register() );
		mOutputRegister.back()->mType = r->GetType();
		mOutputRegister.back()->mAttrName = r->GetAttributeName();
	}

	// Go over left input and store it completely in the hashmap
	while (mInputLeft.Next())
	{
		std::vector<Register> stored;
		for ( Register* r : mInputRegisterLeft )
		{
			stored.push_back( *r );
		}
		if (mAttrIsString)
			mHashString.insert( std::make_pair( mInputRegisterLeft[mLeftId]->GetString(), stored ) );
		else
			mHashInt.insert( std::make_pair( mInputRegisterLeft[mLeftId]->GetInteger(), stored ) );
	}
	mInputLeft.Close();

	// Prepare right side
	mInputRight.Open();
	mInputRegisterRight = mInputRight.GetOutput();
	curidx = 0;
	found = false;
	for ( Register* r : mInputRegisterRight )
	{
		if ( r->GetAttributeName() == mRightAttrName )
		{
			found = true;
			mRightId = curidx;
			if ( mAttrIsString )
				assert( r->GetType() == SchemaTypes::Tag::Char );
			else
				assert( r->GetType() == SchemaTypes::Tag::Integer );
			break;
		}
		++curidx;
	}
	assert( found );
	// Prepare output registers associated with right side
	// Leave out the register containing the right side attribute since that is already included in the left side
	for ( Register* r : mInputRegisterRight )
	{
		if ( r->GetAttributeName() != mRightAttrName )
		{
			mOutputRegister.push_back( r );
		}
	}
	mInputRight.Next(); // Load the first tuple from the right
}
Esempio n. 13
0
//デストラクタ
Tofu3D::~Tofu3D() 
{
	SDELETE(pWorldObj); //世界クラスオブジェクトを削除
}
Esempio n. 14
0
	virtual void TearDown() override
	{
		SDELETE( core );
	}
Esempio n. 15
0
//デストラクタ
WindowManager::~WindowManager()
{
	//全てのWindowオブジェクトを削除
	for (int i = 0; i < (signed)vectorpWindowObj.size(); i++)
		SDELETE(vectorpWindowObj.at(i));
}
Esempio n. 16
0
	virtual void TearDown() override
	{
		SDELETE(mgr);
	}
Esempio n. 17
0
//デストラクタ
Body::~Body() 
{
	SDELETE(pMeshObj);
}
Esempio n. 18
0
	SpriteAnimation::~SpriteAnimation()
	{
		for (auto i : m_clips) {
			SDELETE(i);
		}
	}
Esempio n. 19
0
//デストラクタ
Element::~Element()
{
	//すべての子供エレメントを削除
	for (std::map<int, Element *>::iterator itr = mappChildElementObj.begin(); itr != mappChildElementObj.end(); itr++)
		SDELETE(itr->second);
}
Esempio n. 20
0
//デストラクタ
GUI::~GUI() 
{
	SDELETE(pTopElementObj); //一番上の階層にあるエレメントを削除
}
Esempio n. 21
0
//デストラクタ
BoxWorld::~BoxWorld() 
{
	DeleteAllBoxObj(); //全ての箱オブジェクトを削除
	SDELETE(pUserInputObj);
}
Esempio n. 22
0
DWORD   DumpResourceToFile(__in __nullterminated WCHAR*   wzFileName)
{

    BYTE*   pbResBase;
    FILE*   pF = NULL;
    DWORD ret = 0;
    DWORD   dwResDirRVA;
    DWORD   dwResDirSize;
    unsigned ulNumResNodes=0;
    DynamicArray<ResourceNode*> g_prResNodePtr;

    if (g_pPELoader->IsPE32())
    {
        IMAGE_OPTIONAL_HEADER32 *pOptHeader = &(g_pPELoader->ntHeaders32()->OptionalHeader);

        dwResDirRVA = VAL32(pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress);
        dwResDirSize = VAL32(pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size);
    }
    else
    {
        IMAGE_OPTIONAL_HEADER64 *pOptHeader = &(g_pPELoader->ntHeaders64()->OptionalHeader);

        dwResDirRVA = VAL32(pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress);
        dwResDirSize = VAL32(pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size);
    }

    if(dwResDirRVA && dwResDirSize)
    {
        if(g_pPELoader->getVAforRVA(dwResDirRVA, (void **) &pbResBase))
        {
            // First, pull out all resource nodes (tree leaves), see ResourceNode struct
            PIMAGE_RESOURCE_DIRECTORY pirdType = (PIMAGE_RESOURCE_DIRECTORY)pbResBase;
            PIMAGE_RESOURCE_DIRECTORY_ENTRY pirdeType = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(pbResBase+sizeof(IMAGE_RESOURCE_DIRECTORY));
            DWORD	dwTypeID;
            unsigned short i = 0,N = pirdType->NumberOfNamedEntries+pirdType->NumberOfIdEntries;
            PAL_CPP_TRY {
                for(i=0; i < N; i++, pirdeType++)
                {
                    dwTypeID = VAL32(IMAGE_RDE_NAME(pirdeType));
                    if(IMAGE_RDE_OFFSET_FIELD(pirdeType, DataIsDirectory))
                    {
                        BYTE*   pbNameBase = pbResBase + VAL32(IMAGE_RDE_OFFSET_FIELD(pirdeType, OffsetToDirectory));
                        PIMAGE_RESOURCE_DIRECTORY pirdName = (PIMAGE_RESOURCE_DIRECTORY)pbNameBase;
                        PIMAGE_RESOURCE_DIRECTORY_ENTRY pirdeName = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(pbNameBase+sizeof(IMAGE_RESOURCE_DIRECTORY));
                        DWORD   dwNameID;
                        unsigned short i,N = VAL16(pirdName->NumberOfNamedEntries)+VAL16(pirdName->NumberOfIdEntries);

                        for(i=0; i < N; i++, pirdeName++)
                        {
                            dwNameID = VAL32(IMAGE_RDE_NAME(pirdeName));
                            if(IMAGE_RDE_OFFSET_FIELD(pirdeName, DataIsDirectory))
                            {
                                BYTE*   pbLangBase = pbResBase + VAL32(IMAGE_RDE_OFFSET_FIELD(pirdeName, OffsetToDirectory));
                                PIMAGE_RESOURCE_DIRECTORY pirdLang = (PIMAGE_RESOURCE_DIRECTORY)pbLangBase;
                                PIMAGE_RESOURCE_DIRECTORY_ENTRY pirdeLang = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(pbLangBase+sizeof(IMAGE_RESOURCE_DIRECTORY));
                                DWORD   dwLangID;
                                unsigned short i,N = VAL16(pirdLang->NumberOfNamedEntries)+VAL16(pirdLang->NumberOfIdEntries);

                                for(i=0; i < N; i++, pirdeLang++)
                                {
                                    dwLangID = VAL32(IMAGE_RDE_NAME(pirdeLang));
                                    if(IMAGE_RDE_OFFSET_FIELD(pirdeLang, DataIsDirectory))
                                    {
                                        _ASSERTE(!"Resource hierarchy exceeds three levels");
                                    }
                                    else
                                    {
                                        g_prResNodePtr[ulNumResNodes++] = new ResourceNode(dwTypeID,dwNameID,dwLangID, VAL32(IMAGE_RDE_OFFSET(pirdeLang)),pbResBase);
                                    }
                                }
                            }
                            else
                            {
                                g_prResNodePtr[ulNumResNodes++] = new ResourceNode(dwTypeID,dwNameID,0,VAL32(IMAGE_RDE_OFFSET(pirdeName)),pbResBase);
                            }
                        }
                    }
                    else
                    {
                        g_prResNodePtr[ulNumResNodes++] = new ResourceNode(dwTypeID,0,0,VAL32(IMAGE_RDE_OFFSET(pirdeType)),pbResBase);
                    }
                }
            } PAL_CPP_CATCH_ALL {
                ret= 0xDFFFFFFF;
                ulNumResNodes = 0;
            }
            PAL_CPP_ENDTRY
            // OK, all tree leaves are in ResourceNode structs, and ulNumResNodes ptrs are in g_prResNodePtr
            if(ulNumResNodes)
            {
                ret = 1;
#ifdef RES_FILE_DUMP_ENABLED

                _wfopen_s(&pF,wzFileName,L"wb");
                if(pF)
                {
                    // Dump them to pF
                    // Write dummy header
                    ResourceHeader  *pRH = new ResourceHeader();
                    fwrite(pRH,sizeof(ResourceHeader),1,pF);
                    SDELETE(pRH);
                    // For each resource write header and data
                    PAL_CPP_TRY {
                        for(i=0; i < ulNumResNodes; i++)
                        {
                            /*
                            sprintf_s(szString,SZSTRING_SIZE,"// Res.# %d Type=0x%X Name=0x%X Lang=0x%X DataOffset=0x%X DataLength=%d",
                                i+1,
                                g_prResNodePtr[i]->ResHdr.dwTypeID,
                                g_prResNodePtr[i]->ResHdr.dwNameID,
                                g_prResNodePtr[i]->ResHdr.wLangID,
                                VAL32(g_prResNodePtr[i]->DataEntry.OffsetToData),
                                VAL32(g_prResNodePtr[i]->DataEntry.Size));
                            printLine(NULL,szString);
                            */
                            g_prResNodePtr[i]->Save(pF);
                            SDELETE(g_prResNodePtr[i]);
                        }
                    }
                    PAL_CPP_CATCH_ALL {
                        ret= 0xDFFFFFFF;
                    }
                    PAL_CPP_ENDTRY
                    fclose(pF);
                }// end if file opened
                else ret = 0xEFFFFFFF;
#else
                // Dump to text, using wzFileName as GUICookie
                //char szString[4096];
                void* GUICookie = (void*)wzFileName;
                BYTE* pbData;
                printLine(GUICookie,"");
                sprintf(szString,"// ========== Win32 Resource Entries (%d) ========",ulNumResNodes);
                for(i=0; i < ulNumResNodes; i++)
                {
                    printLine(GUICookie,"");
                    sprintf(szString,"// Res.# %d Type=0x%X Name=0x%X Lang=0x%X DataOffset=0x%X DataLength=%d",
                        i+1,
                        g_prResNodePtr[i]->ResHdr.dwTypeID,
                        g_prResNodePtr[i]->ResHdr.dwNameID,
                        g_prResNodePtr[i]->ResHdr.wLangID,
                        VAL32(g_prResNodePtr[i]->DataEntry.OffsetToData),
                        VAL32(g_prResNodePtr[i]->DataEntry.Size));
                    printLine(GUICookie,szString);
                    if(g_pPELoader->getVAforRVA(VAL32(g_prResNodePtr[i]->DataEntry.OffsetToData), (void **) &pbData))
                    {
                        strcat(g_szAsmCodeIndent,"//  ");
                        strcpy(szString,g_szAsmCodeIndent);
                        DumpByteArray(szString,pbData,VAL32(g_prResNodePtr[i]->DataEntry.Size),GUICookie);
                        printLine(GUICookie,szString);
                        g_szAsmCodeIndent[strlen(g_szAsmCodeIndent)-4] = 0;
                    }
                    SDELETE(g_prResNodePtr[i]);
                }
                ret = 1;
#endif
            } // end if there are nodes
        }// end if got ptr to resource
Esempio n. 23
0
	void Assets::RemoveAsset(Asset *asset)
	{
		SDELETE(asset);
		m_assets.remove(asset);
	}