예제 #1
0
파일: glMain.cpp 프로젝트: MGZero/Harvest
HVSTGFX::CAnimationTrigger::CAnimationTrigger()
{
	CBaseEvent * animEnd = new CBaseEvent("Animation End");
	CBaseEvent * animBegin = new CBaseEvent("Animation Begin");
	CBaseEvent * animFrame = new CBaseEvent("Animation Frame");

	_addEvent(animEnd);
	_addEvent(animBegin);
	_addEvent(animFrame);
}
예제 #2
0
void doStep(ModelInstance* comp, fmi2IntegerTime hLocal, int inBetween) {

    if (inBetween == 0) {


    } else {
        if ((comp->eventInfo.nextEventTimeDefined && (comp->time  == comp->eventInfo.nextEventTime)) ||
                getEventIndicator(comp) < 0) {
            fmi2IntegerTime currentTime = comp->time;
            if (_isTime(comp)) {
                _removeLast(comp);
                comp->eventInfo.nextEventTimeDefined  = fmi2False;
            }
            if (!_isEmpty(comp)) {
                Event nextEvent = _getLast(comp);
                comp->eventInfo.nextEventTime = nextEvent.time;
                comp->eventInfo.nextEventTimeDefined  = fmi2True;
            }
            if (hr(input_) == present_) {
                _addEvent(comp, r(input_), currentTime + i(delay_));
                comp->eventInfo.nextEventTimeDefined  = fmi2True;
                comp->eventInfo.nextEventTime = _getTime(comp);
            }
        }
        comp->time += hLocal;
        if (hLocal > 0) comp->microstep = 0;
        else comp->microstep++;
    }

}
예제 #3
0
// Used to set the next time event, if any.
void eventUpdate(ModelInstance* comp, fmi2EventInfo* eventInfo, int isTimeEvent) {
    long currentTime = comp->time;
    if (_isTime(comp)) {
        _removeLast(comp);
        eventInfo->nextEventTimeDefined  = fmi2False;
    }
    if (!_isEmpty(comp)) {
        Event nextEvent = _getLast(comp);
        comp->eventInfo.nextEventTime = nextEvent.time;
        eventInfo->nextEventTimeDefined  = fmi2True;
    }
    if (hr(input_) == present_) {
        _addEvent(comp, r(input_), currentTime + i(delay_));
        eventInfo->nextEventTimeDefined  = fmi2True;
        comp->eventInfo.nextEventTime = _getTime(comp);
    }
}
// Used to set the next time event, if any.
void eventUpdate(ModelInstance* comp, fmi2EventInfo* eventInfo, int isTimeEvent) {
    long currentTime = comp->time;
    // printf("DELAY: eventUpdate, time = %ld, _isTime(comp) = %d\n", comp->time, _isTime(comp));
    if (_isTime(comp)) {
        _removeLast();
        eventInfo->nextEventTimeDefined  = fmi2False;
    }
    if (!_isEmpty()) {
        Event nextEvent = _getLast();
        comp->eventInfo.nextEventTime = nextEvent.time;
        eventInfo->nextEventTimeDefined  = fmi2True;
        // printf("- not empty\n");
        // printf("- eventInfo->nextEventTimeDefined = fmi2True\n");
        // printf("- addedEvent at time %ld, %ld\n", _getTime(), _getIndex());
    }
    if (hr(input_) == present_) {
        _addEvent(comp, r(input_), currentTime + i(delay_));
        eventInfo->nextEventTimeDefined  = fmi2True;
        comp->eventInfo.nextEventTime = _getTime();
        // printf("- present\n");
        // printf("- eventInfo->nextEventTimeDefined = fmi2True\n");
        // printf("- addedEvent at time %ld, %ld\n", _getTime(), _getIndex());
    }
}
예제 #5
0
CTimerTrigger::CTimerTrigger()
{
	CBaseEvent * timerEnd = new CBaseEvent;
	_addEvent(timerEnd);
}