2017-04-17 06:17:10 -06:00

128 lines
3.5 KiB
C++
Executable File

/*
* MAXKeys.h - MAX controller keyframe access classes
*
* Copyright © John Wainwright 1996
*
*/
#ifndef _H_MAXKEYS
#define _H_MAXKEYS
#include "Max.h"
#include "MaxObj.h"
visible_class (MAXKeyArray)
class MAXKeyArray : public Value
{
public:
MAXControl* controller; /* the controller */
ENABLE_STACK_ALLOCATE(MAXKeyArray);
ScripterExport MAXKeyArray(Control* icont, ParamDimension* idim);
classof_methods (MAXKeyArray, Value);
BOOL _is_collection() { return 1; }
void collect() { delete this; }
void gc_trace();
ScripterExport void sprin1(CharStream* s);
/* operations */
#include "defimpfn.h"
# include "arraypro.h"
def_generic ( sortKeys, "sortKeys");
def_generic ( addNewKey, "addNewKey");
def_generic ( deleteKeys, "deleteKeys");
def_generic ( deleteKey, "deleteKey");
// def_generic ( append_key, "appendKey"); // RK: 6/19/02, Commenting these, breaks the SDK
// def_generic ( assign_key, "assignKey"); // RK: 6/19/02, Commenting these, breaks the SDK
def_generic (show_props, "showProperties");
def_generic (get_props, "getPropNames");
ScripterExport Value* map(node_map& m);
/* built-in property accessors */
def_property ( count );
};
#define ToTCBUI(a) (((a)+1.0f)*25.0f) // HEY!! pinched from TCBINTRP.CPP, why not in a header or documented?
#define FromTCBUI(a) (((a)/25.0f)-1.0f)
#define ToEaseUI(a) ((a)*50.0f)
#define FromEaseUI(a) ((a)/50.0f)
visible_class (MAXKey)
class MAXKey : public Value
{
public:
MAXControl* controller; /* MAX-side controller */
int key_index;
ENABLE_STACK_ALLOCATE(MAXKey);
ScripterExport MAXKey (Control* icont, int ikey, ParamDimension* dim);
ScripterExport MAXKey (Control* icont, int ikey);
ScripterExport MAXKey (MAXControl* icont, int ikey);
static void setup();
classof_methods (MAXKey, Value);
void collect() { delete this; }
void gc_trace();
ScripterExport void sprin1(CharStream* s);
def_generic ( delete, "delete");
def_generic ( copy, "copy");
def_generic ( show_props, "showProperties");
def_generic ( get_props, "getPropNames");
ScripterExport IKey* setup_key_access(AnyKey& ak, IKeyControl** kip);
def_property (time);
def_property (selected);
def_property (value);
def_property (inTangent);
def_property (outTangent);
def_property (inTangentLength);
def_property (outTangentLength);
def_property (inTangentType);
def_property (outTangentType);
def_property (x_locked);
def_property (y_locked);
def_property (z_locked);
def_property (w_locked);
def_property (constantVelocity);
def_property (freeHandle);
def_property (tension);
def_property (continuity);
def_property (bias);
def_property (easeTo);
def_property (easeFrom);
#if 0 // HEY!! obsolete
def_nested_prop ( angle );
def_nested_prop ( x_rotation );
def_nested_prop ( y_rotation );
def_nested_prop ( z_rotation );
def_nested_prop ( axis );
def_nested_prop ( x );
def_nested_prop ( y );
def_nested_prop ( z );
#endif
// add implementations of the recursive time controller fns here to complain
// since they wuill default to operating on the key's controller which can be very confusing
// the user should use them on the controller or track, not the key
#ifdef def_time_fn
# undef def_time_fn
#endif
#define def_time_fn(_fn) \
Value* MAXKey::_fn##_vf(Value** arg_list, int count) { ABSTRACT_FUNCTION(#_fn, this, Value*); }
#include "time_fns.h"
};
#endif