int main(void) { setup(); all_off(); onboardled(ON); around_the_world(); // blink while (1) { if(PIND & (1<<5)) { onboardled(ON); ultraviolet(ON); headlamp(ON); handlebars(ON); forks(ON); backleft(ON); backright(ON); rack(OFF); _delay_ms(250); forks(OFF); rack(ON); _delay_ms(150); forks(ON); handlebars(OFF); backleft(ON); backright(OFF); rack(OFF); _delay_ms(250); handlebars(ON); backleft(OFF); backright(ON); _delay_ms(250); } else { all_off(); onboardled(ON); _delay_ms(350); onboardled(OFF); _delay_ms(350); } } }
void all_off() { onboardled(OFF); ultraviolet(OFF); headlamp(OFF); handlebars(OFF); forks(OFF); rack(OFF); backleft(OFF); backright(OFF); }
void CStationaryObject::FollowTerrain(void) { float offset = 0.0f; Plane p; // Clamp it to ground first CObjFrame frame = *m_OBB.Frame; CVector3f pos; frame.GetPosition(&pos); g_pCurrLevel->GetPlaneAtPoint(pos.x, pos.z, &p); pos.y += ClampToPlane(&pos, &p, m_OBB.y + offset); frame.SetPosition(&pos); // Figure out orientation float hw = m_OBB.x; float hh = m_OBB.y; float hl = m_OBB.z; CQuaternion q; CVector3f front(0.0f, -hh, hl); frame.RotateToWorldPoint(&front, &front); g_pCurrLevel->GetPlaneAtPoint(front.x, front.z, &p); front.y += ClampToPlane(&front, &p, 0.0f); CVector3f backleft(hw, -hh, -hl); frame.RotateToWorldPoint(&backleft, &backleft); g_pCurrLevel->GetPlaneAtPoint(backleft.x, backleft.z, &p); backleft.y += ClampToPlane(&backleft, &p, 0.0f); CVector3f backright(-hw, -hh, -hl); frame.RotateToWorldPoint(&backright, &backright); g_pCurrLevel->GetPlaneAtPoint(backright.x, backright.z, &p); backright.y += ClampToPlane(&backright, &p, 0.0f); GetOrientationFromPoints(&q, &front, &backleft, &backright); frame.SetOrientation(&q); SetFrame(&frame, 0); }