3ds Max C++ API Reference
|
A pure virtual interface for implementing grips. More...
#include <igrip.h>
Classes | |
struct | ComboLabel |
The label and icon that make up each individual option for Type::eCombo grip item. More... | |
struct | GripValue |
The grip value that's used by the grip item when it's value is retrieved via GetValue or set via SetValue. More... | |
Public Types | |
enum | Type { eInvalid = -1 , eInt = 0 , eFloat , eTime , eUniverse , eCombo , eToggle , eAction , eCommand , eStatus } |
enum | Customization { eSameRow = 0x1 , eTurnOffLabel = 0x2 , eDisableAlt = 0x4 } |
![]() | |
enum | LifetimeType { noRelease , immediateRelease , wantsRelease , serverControlled } |
Public Member Functions | |
virtual | ~IBaseGrip () |
Deconstructor. | |
virtual void | GetGripName (MSTR &string)=0 |
Get the name of the grip. | |
virtual int | GetNumGripItems ()=0 |
Get the number of grip items this grip contains. | |
virtual IBaseGrip::Type | GetType (int which)=0 |
Get the type that the specified grip item will control. | |
virtual bool | GetText (int which, MSTR &string)=0 |
Get the name of the specified grip item. | |
virtual bool | GetResolvedIconName (int which, MSTR &string)=0 |
Get the file path of the icon that represents the specified grip item. | |
virtual DWORD | GetCustomization (int which)=0 |
Get any special customization flags that this grip item needs to follow. | |
virtual bool | GetComboOptions (int which, Tab< ComboLabel * > &comboOptions)=0 |
Get the option possibilities for this combo grip item. | |
virtual bool | GetCommandIcon (int which, MSTR &string)=0 |
Get an icon for the IBaseGrip::eCommand grip item. | |
virtual bool | GetValue (int which, TimeValue t, IBaseGrip::GripValue &value)=0 |
Get the value of the specified grip item. | |
virtual bool | ShowKeyBrackets (int which, TimeValue t)=0 |
Whether or not key brackets, which will show in a spinner that a key is present, should be shown at the specified time. | |
virtual bool | GetRange (int which, IBaseGrip::GripValue &minRange, IBaseGrip::GripValue &maxRange)=0 |
Get the range of this grip values. | |
virtual bool | GetResetValue (int which, IBaseGrip::GripValue &resetValue)=0 |
Get the reset value of the grip. | |
virtual bool | ResetValue (TimeValue t, int which)=0 |
Reset the specified grip. | |
Operations | |
The Okay, Cancel and Apply operations that a grip may implement. | |
virtual bool | SupportsOkayApplyCancel ()=0 |
Whether or not, the Okay, Apply and Cancel grip buttons will get shown or not. | |
virtual void | Okay (TimeValue t)=0 |
Accept any necessary changes and disable the grip to close the UI. | |
virtual void | Cancel ()=0 |
Disregard and cancel any necessary changes and disable the grip to close the UI. | |
virtual void | Apply (TimeValue t)=0 |
Accept any necessary changes and perform any pending action if needed. | |
Set Functions | |
Set of functions which are called when setting a value. Note that SetValue may be called multiple times within each StartSetValue \ EndSetValue pair. | |
virtual bool | SetValue (int which, TimeValue t, IBaseGrip::GripValue &value)=0 |
Set the value of the specified. | |
virtual bool | StartSetValue (int which, TimeValue t)=0 |
Get ready to set this value. | |
virtual bool | EndSetValue (int which, TimeValue t, bool accepted)=0 |
The value is done setting values. | |
Scaling Functions | |
Set of functions which are called when the grip is scaled by either incrementing or decrementing it. This value is the value that will thus added or subtracted from it. Only supports those grip items which have spinners. | |
virtual bool | GetAutoScale (int which)=0 |
Whether or nor we will use auto scaling when incrementing or decrementing this item. | |
virtual bool | GetScale (int which, IBaseGrip::GripValue &scaleValue)=0 |
Get the scale value for this item when we increment or decrement it. | |
virtual bool | GetScaleInViewSpace (int which, float &depth)=0 |
Get the scale value for this grip in view space, if one exists. | |
![]() | |
virtual UtilExport | ~BaseInterface () |
Destructor. | |
UtilExport BaseInterface * | GetInterface (Interface_ID id) override |
virtual UtilExport Interface_ID | GetID () |
virtual LifetimeType | LifetimeControl () |
virtual bool | RegisterNotifyCallback (InterfaceNotifyCallback *incb) |
virtual void | UnRegisterNotifyCallback (InterfaceNotifyCallback *incb) |
virtual BaseInterface * | AcquireInterface () |
virtual void | ReleaseInterface () |
virtual void | DeleteInterface () |
virtual BaseInterface * | CloneInterface (void *remapDir=nullptr) |
![]() | |
virtual UtilExport | ~InterfaceServer () |
Destructor. | |
virtual UtilExport BaseInterface * | GetInterface (Interface_ID id) |
template<class InterfaceType > | |
InterfaceType * | GetTypedInterface () |
Additional Inherited Members | |
![]() | |
static UtilExport void * | operator new (size_t size) |
Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e) |
Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. | |
static UtilExport void * | operator new (size_t size, const char *filename, int line) |
New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new (size_t size, int block_type, const char *filename, int line) |
New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e, const char *filename, int line) |
New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. | |
static UtilExport void * | operator new (size_t size, unsigned long flags) |
New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new (size_t size, const std::nothrow_t &e, unsigned long flags) |
New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. | |
static UtilExport void * | operator new[] (size_t size) |
New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e) |
New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. | |
static UtilExport void * | operator new[] (size_t size, const char *filename, int line) |
New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new[] (size_t size, int block_type, const char *filename, int line) |
New operator used to allocate arrays of objects. | |
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line) |
New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. | |
static UtilExport void * | operator new[] (size_t size, unsigned long flags) |
New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. | |
static UtilExport void * | operator new[] (size_t size, const std::nothrow_t &e, unsigned long flags) |
New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. | |
static UtilExport void | operator delete (void *ptr) |
Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e) |
Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. | |
static UtilExport void | operator delete (void *ptr, const char *filename, int line) |
Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete (void *ptr, int block_type, const char *filename, int line) |
Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line) |
Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. | |
static UtilExport void | operator delete (void *ptr, unsigned long flags) |
Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags) |
Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. | |
static UtilExport void | operator delete[] (void *ptr) |
Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e) |
Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. | |
static UtilExport void | operator delete[] (void *ptr, const char *filename, int line) |
Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete[] (void *ptr, int block_type, const char *filename, int line) |
Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line) |
Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. | |
static UtilExport void | operator delete[] (void *ptr, unsigned long flags) |
Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. | |
static UtilExport void | operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags) |
Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. | |
static UtilExport void * | operator new (size_t size, void *placement_ptr) |
Placement new operator. | |
static UtilExport void | operator delete (void *ptr, void *placement_ptr) |
Placement delete operator. | |
static UtilExport void * | aligned_malloc (size_t size, size_t alignment) |
Allocates memory on a specified alignment boundary. | |
static UtilExport void * | aligned_realloc (void *ptr, size_t size, size_t alignment) |
Reallocates memory on a specified alignment boundary. | |
static UtilExport void | aligned_free (void *ptr) |
Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. | |
A pure virtual interface for implementing grips.
A Grip or Caddy is a collection of modeless, transparent, in canvas UI elements that lets a user perform actions or modify values. A user can create their own grip by inheriting from IBaseGrip, implementing IBaseGrip's pure virtual functions, and then enable it on via the IGripManager interface. Based upon the number of grip items the grip contains and the type each item is, the system will create a set of in canvas UI representations for each item, which then interact with the IBaseGrip item via various functions. Usually the implementation of the IBaseGrip acts as a bridge between some existing data and the in canvas UI. For example if a grip was created to modify different soft selection values in a modifier, the grip would get the values from that modifier and then set the values back onto it. The grip itself will get displayed via the IGripManager::EnableGrip function which basically calls various IBaseGrip functions to set up the in canvas UI and then ferry messages to and from the UI to the grip.
|
inlinevirtual |
Deconstructor.
|
pure virtual |
Whether or not, the Okay, Apply and Cancel grip buttons will get shown or not.
Accept any necessary changes and disable the grip to close the UI.
Basically do whatever operations you would do similar if the Okay button was pressed in a modeless dialog. Note that it's the implementations responsibility to disable the grip.
[in] | t | The time at which to perform the okay. |
|
pure virtual |
Disregard and cancel any necessary changes and disable the grip to close the UI.
Basically do whatever operations you would do similar if the Cancel button was pressed in a modeless dialog. Note that it's the implementations responsibility to disable the grip.
Accept any necessary changes and perform any pending action if needed.
Unlike Okay, after an Apply the grip stays active and displayed.
[in] | t | The time at which to perform the apply. |
Get the name of the grip.
[out] | string | The name of the grip. |
|
pure virtual |
Get the number of grip items this grip contains.
|
pure virtual |
Get the type that the specified grip item will control.
[in] | which | The zero based index of the item. |
Get the name of the specified grip item.
[in] | which | The zero based index of the item. |
[out] | string | The name of the specified grip item. |
Get the file path of the icon that represents the specified grip item.
Every grip item no matter it's type should try to provide an icon that represents the string that's returned by GetText.
[in] | which | The zero based index of the grip item. |
[out] | string | The name of the resolved path of the icon. It's this functions responsibility to resolve the path completely. |
|
pure virtual |
Get any special customization flags that this grip item needs to follow.
[in] | which | The zero based index of the item. |
|
pure virtual |
Get the option possibilities for this combo grip item.
[in] | which | The zero based index of the item. |
[out] | comboOptions | A returned tab of labels that describes each possible option for the IBaseGrip::eCombo type grip button. These values will be presented in the UI as the possible options which can be selected. Note that it's the responsibility of the client of this function to delete each allocated ComboLabel pointer in the Tab. |
Get an icon for the IBaseGrip::eCommand grip item.
Since a IBaseGrip::eCommand can have two different states,
the grip item can show additional icons, in addition to the one returned by GetResolvedIconName, to represent these states.
[in] | which | The zero based index of the grip item. |
[out] | string | The name of the resolved path of the icon. It's this functions responsibility to resolve the path completely. |
|
pure virtual |
Get the value of the specified grip item.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which to get the value. |
[out] | value | The value for that grip. See IBaseGrip::GripValue to see the values that are supported. |
|
pure virtual |
Set the value of the specified.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which to set the value. |
[in] | value | The value for that grip. See IBaseGrip::GripValue to see the values that are supported. |
Get ready to set this value.
Sometimes an item needs to do some setup before a value get's set, for example cache some values, or get ready for an undo. This is called before SetValue is called and SetValue may be called multiple times after StartSetValue is called.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which to set the value. |
The value is done setting values.
Sometimes an item needs to do some cleanup after a value get's set, for example delete some cached values or accept an undo. This will get called immediately after the last SetValue function get's called.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which the value was set. |
[in] | accepted | If true the setvalue operation has succeeded and any undo's may be accepted if needed. If false then the setvalue operation was canceled and it's the implementors responsibility to rever the value back to it's original value it had when StartSetValue was called, for example it could do this by canceling the hold. |
Whether or not key brackets, which will show in a spinner that a key is present, should be shown at the specified time.
Usually this function will check to see if a key exists at this time.
[in] | which | The zero based index of the grip item, which we are checking key brackets for. Will only check for those grip items which have spinners. |
[in] | t | The time at which we are checking to see if we should show a key bracket. |
|
pure virtual |
Whether or nor we will use auto scaling when incrementing or decrementing this item.
[in] | which | The zero based index of the grip item. |
|
pure virtual |
Get the scale value for this item when we increment or decrement it.
Will normally only get used if GetAutoScale and GetSCaleInViewSpace returns false.
[in] | which | The zero based index of the grip item. |
[out] | scaleValue | The value of the scale. |
|
pure virtual |
Get the scale value for this grip in view space, if one exists.
[in] | which | The zero based index of the grip item. |
[out] | depth | The screen space depth that the scale should use. /see ViewExp::MapScreenToView for a more in depth description on screen depth. -200 is usually a good default value. |
|
pure virtual |
Get the range of this grip values.
[in] | which | The grip item |
[in] | minRange | The minimum range value for this grip. If the grip type is Type::eAction then no valid value is expected. |
[in] | maxRange | The maximum range value for this grip. If the grip type is Type::eAction then no valid value is expected. |
|
pure virtual |
Get the reset value of the grip.
[in] | which | The grip item whose reset value we will get. |
[out] | resetValue | The resetValue for that value. If the grip type is eAction then no valid value is expected. |