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

87 lines
2.1 KiB
C++
Executable File

/* MSTime.h - the time family of classes for MAXScript
*
* Copyright (c) John Wainwright, 1996
*
*
*/
#ifndef _H_MSTIME
#define _H_MSTIME
#include "Max.h"
/* ------------------------ Time ------------------------------ */
visible_class (MSTime)
class MSTime : public Value
{
public:
TimeValue time;
ENABLE_STACK_ALLOCATE(MSTime);
MSTime (TimeValue t);
static ScripterExport Value* intern(TimeValue t);
# define is_time(o) ((o)->tag == class_tag(MSTime))
classof_methods (MSTime, Value);
void collect() { delete this; }
ScripterExport void sprin1(CharStream* s);
#include "defimpfn.h"
# include "timepro.h"
def_generic ( coerce, "coerce");
def_property ( ticks );
def_property ( frame );
def_property ( normalized );
TimeValue to_timevalue() { return time; }
float to_float() { return (float)time / GetTicksPerFrame(); }
int to_int() { return (int)time / GetTicksPerFrame(); }
void to_fpvalue(FPValue& v) { v.i = time; v.type = TYPE_TIMEVALUE; }
Value* widen_to(Value* arg, Value** arg_list);
BOOL comparable(Value* arg);
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
};
/* ------------------------ Interval ------------------------------ */
applyable_class (MSInterval)
class MSInterval : public Value
{
public:
Interval interval;
ENABLE_STACK_ALLOCATE(MSInterval);
MSInterval () {};
ScripterExport MSInterval (Interval i);
ScripterExport MSInterval (TimeValue s, TimeValue e);
# define is_interval(o) ((o)->tag == class_tag(MSInterval))
classof_methods (MSInterval, Value);
void collect() { delete this; }
ScripterExport void sprin1(CharStream* s);
#include "defimpfn.h"
def_property ( start );
def_property ( end );
Interval to_interval() { return interval; }
void to_fpvalue(FPValue& v) { v.intvl = new Interval (interval.Start(), interval.End()); v.type = TYPE_INTERVAL; }
// scene I/O
IOResult Save(ISave* isave);
static Value* Load(ILoad* iload, USHORT chunkID, ValueLoader* vload);
};
#endif