bool ckCdt::intersect(ckVec* pos, const Ray& ray, const Tri& tri) { if (!checkTouch(ray.m_aabb, tri.m_aabb)) { return false; } ckVec ray_dir = ray.m_to - ray.m_from; r32 dist; if (intersectTri(&dist, ray.m_from, ray_dir, tri) && dist <= 1.0f) { if (pos) { *pos = ray.m_from + ray_dir * dist; } return true; } else { return false; } }
bool ckCdt::intersect(ckVec* pos, const Ray& ray, const Box& box) { if (!checkTouch(ray.m_aabb, box.m_aabb)) { return false; } ckVec rel_pos = ray.m_from.toLocalOf(box.m_world); ckVec dir = ray.m_to - ray.m_from; ckVec rel_dir = dir.toLocalOf_noTrans(box.m_world); r32 min_dist, max_dist; if (intersectLocalBox(&min_dist, &max_dist, rel_pos, rel_dir, box.m_half_size) && min_dist <= 1.0f) { if (pos) { *pos = ray.m_from + dir * min_dist; } return true; } else { return false; } }
bool Container::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){ if(!isVisible()) return false; if(checkTouch(pTouch)){ onSelect();activate(); } return true; }
void Container::update(float fDelta){ if(mLasto && m_iState != C_STATE_SELECT){ if(checkTouch(mLasto)){ onHover(); }else{ onNormal(); CC_SAFE_RELEASE_NULL(mLasto); } } }
bool ckCdt::intersect(ckVec* pos, const Ray& ray, const Sph& sph) { if (!checkTouch(ray.m_aabb, sph.m_aabb)) { return false; } ckVec m = sph.getPos() - ray.m_from; r32 c = m.sqLength() - sph.getRadius() * sph.getRadius(); if (c <= 0.0f) { if (pos) { *pos = ray.m_from; } return true; } ckVec d = ray.m_to - ray.m_from; r32 b = m.dot(d); if (b < 0.0f) { return false; } r32 sq_d = d.sqLength(); c /= sq_d; b /= sq_d; r32 discr = b * b - c; if (discr < 0.0f) { return false; } r32 dist = b - ckMath::sqrt(discr); if (dist > 1.0f) { return false; } if (pos) { *pos = ray.m_from + d * dist; } return true; }
//Goes forward and checks color of the object and the distance to the ball //Stores these values void checkBall(int & color, int & distance){ nMotorEncoder[motorA] = 0; motor[motorA] = 30; motor[motorC] = 30; while (!checkTouch()){} distance = nMotorEncoder[motorA]; motor[motorA] = 0; motor[motorC] = 0; wait10Msec(100); color = checkColour(); }
/*----------------------------------------------------------------------------*/ void TouchMIDI_appli(void) { if ( mbrWriteConfigErr ){ if ( event100msec ){ setMidiBuffer( 0xb0, 0x10, mbrWriteConfigErr & 0x7f );} } if ( mbrSelfCheckErr ){ if ( event100msec ){ setMidiBuffer( 0xb0, 0x11, mbrSelfCheckErr & 0x7f );} } if ( mbrReadTouchErr ){ if ( event100msec ){ setMidiBuffer( 0xb0, 0x12, mbrReadTouchErr & 0x7f );} } else { checkTouch(); // Heartbeat if ( IN1 ){ OUT1 = (counter10msec & 0x0020)? 0:1; } if ( IN2 ){ OUT2 = (counter10msec & 0x0020)? 0:1; } if ( IN3 ){ OUT3 = (counter10msec & 0x0020)? 0:1; } if ( IN4 ){ OUT4 = (counter10msec & 0x0020)? 0:1; } } }