128 lines
3.5 KiB
C++
Executable File
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
|