87 lines
2.1 KiB
C++
Executable File
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
|