mirror of
https://github.com/JulianGro/overte.git
synced 2025-07-14 08:06:33 +02:00
37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
//
|
|
// ContactEvent.cpp
|
|
// libraries/physics/src
|
|
//
|
|
// Created by Andrew Meadows 2015.01.20
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
#include "ContactInfo.h"
|
|
|
|
void ContactInfo::update(uint32_t currentStep, const btManifoldPoint& p) {
|
|
_lastStep = currentStep;
|
|
positionWorldOnB = p.m_positionWorldOnB;
|
|
normalWorldOnB = p.m_normalWorldOnB;
|
|
distance = p.m_distance1;
|
|
}
|
|
|
|
const uint32_t STEPS_BETWEEN_CONTINUE_EVENTS = 9;
|
|
|
|
ContactEventType ContactInfo::computeType(uint32_t thisStep) {
|
|
if (_continueExpiry == 0) {
|
|
_continueExpiry = thisStep + STEPS_BETWEEN_CONTINUE_EVENTS;
|
|
return CONTACT_EVENT_TYPE_START;
|
|
}
|
|
return (_lastStep == thisStep) ? CONTACT_EVENT_TYPE_CONTINUE : CONTACT_EVENT_TYPE_END;
|
|
}
|
|
|
|
bool ContactInfo::readyForContinue(uint32_t thisStep) {
|
|
if (thisStep > _continueExpiry) {
|
|
_continueExpiry = thisStep + STEPS_BETWEEN_CONTINUE_EVENTS;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|