added everything
This commit is contained in:
157
lib/maxsdk70/include/iADTStyle.h
Executable file
157
lib/maxsdk70/include/iADTStyle.h
Executable file
@@ -0,0 +1,157 @@
|
||||
/**********************************************************************
|
||||
|
||||
FILE: IADTStyle.h
|
||||
|
||||
DESCRIPTION: Public intefaces that defines the concept of ADT Styles
|
||||
|
||||
CREATED BY: Attila Szabo, Discreet
|
||||
|
||||
HISTORY: - created Sep 29, 2002
|
||||
|
||||
*> Copyright (c) 1998-2002, All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef _IADTSTYLE_H_
|
||||
#define _IADTSTYLE_H_
|
||||
|
||||
#include "iFnPub.h"
|
||||
#include "maxtypes.h"
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// Forward declarations
|
||||
class IADTCategory;
|
||||
class BitArray;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// class IADTStyle
|
||||
//
|
||||
// This interface models an ADT Style that can have components
|
||||
// A number of ADT objects can be associated with the same style. These
|
||||
// objects are reffered to as style instances. The components of these
|
||||
// objects are associated with style components and are also reffered to as
|
||||
// style instance.
|
||||
//
|
||||
// Once a style is created through the ADT Object Manager, instances of that
|
||||
// style can be created and components can be added to it
|
||||
// See iADTObjMgr for more details.
|
||||
//________________________________________________________________________
|
||||
class IADTStyle : public ReferenceTarget, public FPMixinInterface
|
||||
{
|
||||
public:
|
||||
using ReferenceTarget::GetInterface;
|
||||
typedef int InstIterator;
|
||||
|
||||
// Access to the name of the style. The name is not case sensitive.
|
||||
virtual const TCHAR* GetName() const = 0;
|
||||
virtual void SetName(const TCHAR* pName) = 0;
|
||||
|
||||
// Creates an instance of the desired style, by associating it with a node.
|
||||
// If the node represents an instance of another style,
|
||||
// that association will be destroyed first, and then a new one created.
|
||||
// - INode& styleInst - The node that will represent an instance of this style
|
||||
// - const bool hasCompVisOverride - A value of 'true' means that this particular
|
||||
// style instance has the visibility of some of its components overriden, i.e.
|
||||
// set to a different value than the visibility defined by the style for those
|
||||
// components.
|
||||
// - Returns an iterator that can be used later to get to this particular instance
|
||||
// of this style. A negative value means failure, while a positive value means success
|
||||
virtual InstIterator SetInstance(INode& styleInst, const bool hasCompVisOverride) = 0;
|
||||
|
||||
// Destroys the association between the given node and this style, and between
|
||||
// the instances of the components of this style and their style components.
|
||||
// To find out if a node is a style instance, call
|
||||
// IADTStyle* IADTObjMgr::IsStyleInstance(INode& n) const;
|
||||
// - INode& n - Node representing a style instance
|
||||
// - Returns false if the node is not a style instance.
|
||||
virtual bool RemoveInstance(INode& n) = 0;
|
||||
|
||||
// Adds a component to this style, and in the same time, creates an instance
|
||||
// of the style component. This instance becomes a component of the style instance
|
||||
// represented by the iterator. If the style already has a component with the given
|
||||
// name, a new one won't be created. If the given node is already an instance
|
||||
// of another style or style component, this operation changes that and makes
|
||||
// it an instance of this style component.
|
||||
// The style component names are case in-sensitive, thus if a component with
|
||||
// this name exists aleady, an new one won't be created.
|
||||
// - const Iterator& i - This iterator represents the style instance whose
|
||||
// component we are creating
|
||||
// - INode& styleCompInst - The node that will represent an instance of the
|
||||
// style component
|
||||
// - const TCHAR* pCompName - The name of the style component. Cannot be NULL.
|
||||
// It's not case sensitive
|
||||
// - const bool mtlOverride - A value of 'true' means that the material of this
|
||||
// style component instance is different than that defined by the style component
|
||||
// - const bool keepRelTransf - A value of 'true' means that the transform
|
||||
// of the style component instance relative to the style instance should not be
|
||||
// changed by this operation
|
||||
// - Returns a pointer to the style component
|
||||
virtual IADTStyle* SetComponent(const InstIterator& instIt,
|
||||
INode& styleCompInst,
|
||||
const TCHAR* pCompName,
|
||||
const bool hasMtlOverride,
|
||||
const bool keepRelTransf) = 0;
|
||||
|
||||
// A style component can be removed from a style if that style component
|
||||
// has zero instances associated with it.
|
||||
// - const TCHAR* pCompName - The name of the style component. Cannot be NULL.
|
||||
// It's not case sensitive
|
||||
// - Returns false if the component cannot be found or it still has instances
|
||||
virtual bool RemoveComponent(const TCHAR* pCompName) = 0;
|
||||
|
||||
// Returns NULL if the style component does not exist
|
||||
virtual IADTStyle* FindComponent(const TCHAR* pCompName) const = 0;
|
||||
|
||||
// TODO: style component iteration
|
||||
virtual unsigned long NumComponents() const = 0;
|
||||
virtual unsigned long GetComponents(Tab<IADTStyle*>& components) const = 0;
|
||||
|
||||
// Returns NULL if the Style doesn't belong to a category.
|
||||
// This indicates an inconsistency in the scene
|
||||
virtual IADTCategory* GetCategory() const = 0;
|
||||
|
||||
// If this style is a component of another style, it returns that style
|
||||
// owtherwise itself
|
||||
virtual IADTStyle* GetCompositeStyle() = 0;
|
||||
|
||||
// Returns the number of all nodes in the scene that represent instances of
|
||||
// this style.
|
||||
virtual unsigned long NumInstances() const = 0;
|
||||
|
||||
// Fills out the provided arrays with all the nodes in the scene that represent
|
||||
// instances of this style and their material override flags. Returns their count
|
||||
virtual unsigned long GetInstances(Tab<INode*>& instances, BitArray* pMtlOverrides = NULL) const = 0;
|
||||
|
||||
// Searches the instances of this style for a match with the provided style
|
||||
// instance. If it finds it, returns the iterator withis this style to it,
|
||||
// material and visibility override information for the style instance.
|
||||
// - INode& styleInst - The alleged style instance to search for
|
||||
// - bool* pMtlOverride - The material override flag for the instance
|
||||
// - Returns an iterator to the found style instance. If the provided style
|
||||
// instance is not an instance of this style, the iterator value will be
|
||||
// negative.
|
||||
virtual InstIterator FindInstance(INode& styleInst, bool* pMtlOverride = NULL) const = 0;
|
||||
|
||||
// Returns true if the given style instance needs a selection box displayed
|
||||
// around it when selected
|
||||
virtual bool IsSelectionBoxNeeded(INode& styleInst) const = 0;
|
||||
|
||||
// Creates a name that is unique among the names of all style components and it's
|
||||
// based on the given name. The unique name is seeded by passing in a seed-name
|
||||
// through the TSTR&
|
||||
// - TSTR& - Input\Output parameter. As input parameter, it represents a seed
|
||||
// for the the unique name. As output parameter, it holds the unique name that
|
||||
// was generated
|
||||
virtual void MakeUniqueComponentName(TSTR& name) const = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define ADT_STYLE_INTERFACE Interface_ID(0x4cd242c8, 0x554201b3)
|
||||
inline IADTStyle* GetADTStyleInterface(BaseInterface* baseIfc)
|
||||
{
|
||||
DbgAssert( baseIfc != NULL);
|
||||
return static_cast<IADTStyle*>(baseIfc->GetInterface(ADT_STYLE_INTERFACE));
|
||||
}
|
||||
|
||||
#endif //_IADTSTYLE_H_
|
||||
Reference in New Issue
Block a user