// Wild Magic Source Code
// David Eberly
// http://www.geometrictools.com
// Copyright (c) 1998-2007
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2.1 of the License, or (at
// your option) any later version.  The license is available for reading at
// either of the locations:
//     http://www.gnu.org/copyleft/lgpl.html
//     http://www.geometrictools.com/License/WildMagicLicense.pdf
//
// Version: 4.0.0 (2006/06/28)

#ifndef WMATERIALTREE_H
#define WMATERIALTREE_H

#include "Wm4MaterialState.h"
#include "WTextureTree.h"
#include <vector>

class WMaterialTree
{
public:
    WMaterialTree (Wm4::MaterialState* pkMState = 0);

    // material subtree
    void SetMChildQuantity (int iQuantity);
    int GetMChildQuantity () const;
    void SetMaterial (Wm4::MaterialState* pkMState);
    Wm4::MaterialStatePtr GetMaterial () const;
    WMaterialTree& GetMChild (int i);

    // texture subtree
    void SetTChildQuantity (int iQuantity);
    int GetTChildQuantity () const;
    Wm4::TextureEffectPtr GetEffect (int i);
    WTextureTree& GetTChild (int i);

private:
    Wm4::MaterialStatePtr m_spkMState;
    std::vector<WMaterialTree> m_kMChild;
    std::vector<WTextureTree> m_kTChild;
};

#endif
