void Vehicle::evaluate() { float m[16]; for (int i=0;i<m_vehicle->getNumWheels();i++) { if (wheels[i]->getSteering()) { m_vehicle->setSteeringValue(gVehicleSteering,i); } if (wheels[i]->getBraking()) { m_vehicle->setBrake(gBreakingForce,i); } if (wheels[i]->getDriving()) { m_vehicle->applyEngineForce(gEngineForce,i); } //synchronize the wheels with the (interpolated) chassis worldtransform m_vehicle->updateWheelTransform(i,true); m_vehicle->getWheelTransformWS(i).getOpenGLMatrix(m); wheels[i]->wheelObj.setMatrix(m); wheels[i]->wheelObj.clearTransform(); wheels[i]->wheelRef.clearTransform(); wheels[i]->wheelObj.calcAABB(); } RigidSceneObject::evaluate(); calcAABB(); }
void CCollider::Init(E_COLLIDER_TYPE type, CTransform & transform, E_X_START xStart, E_Y_START yStart, bool active) { this->m_type = type; this->m_xStart = xStart; this->m_yStart = yStart; this->m_active = active; calcAABB(transform); calcDist(transform); }
void Mesh::normalizeSize(float scale) { AABB& aabb = calcAABB(); float width = aabb.width(), height = aabb.height(), depth = aabb.depth(); float avg = (width + height + depth) / 3.0f; for (unsigned i=0; i<vertices.size(); ++i) { Vector& v = vertices[i]; if (width) v.x /= avg; if (height) v.y /= avg; if (depth) v.z /= avg; v.x *= scale; v.y *= scale; v.z *= scale; } }
void CCollider::Update(CTransform & transform) { calcAABB(transform); calcDist(transform); }
void CCollider::SetType(E_COLLIDER_TYPE type, CTransform& transform) { this->m_type = type; calcAABB(transform); calcDist(transform); }