//***************************************************************************** void CBCGPRibbonSlider::OnMouseMove (CPoint point) { ASSERT_VALID (this); CBCGPBaseRibbonElement::OnMouseMove (point); if (IsDisabled ()) { return; } int nHighlightedOld = m_nHighlighted; m_nHighlighted = GetHitTest (point); if (nHighlightedOld != m_nHighlighted) { Redraw (); } if (m_bIsPressed) { if (m_nPressed == nThumbIndex) { int nPos = GetPosFromPoint (point); if (nPos != m_nPos) { SetPos (nPos); NotifyCommand (); } } } }
//***************************************************************************** void CBCGPRibbonSlider::OnLButtonDown (CPoint point) { ASSERT_VALID (this); CBCGPBaseRibbonElement::OnLButtonDown (point); if (!IsDisabled ()) { m_nPressed = GetHitTest (point); Redraw (); } }
HRESULT CprojectileIGC::Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize) { TmodelIGC<IprojectileIGC>::Initialize(pMission, now, data, dataSize); ZRetailAssert (data && (dataSize == sizeof(DataProjectileIGC))); { DataProjectileIGC* dataProjectile = (DataProjectileIGC*)data; m_projectileType = pMission->GetProjectileType(dataProjectile->projectileTypeID); if (m_projectileType) { m_projectileType->AddRef(); DataProjectileTypeIGC* dataProjectileType = (DataProjectileTypeIGC*)m_projectileType->GetData(); assert (dataProjectileType); //Load the model for the projectile if (iswalpha(dataProjectileType->modelName[0])) { HRESULT hr = Load(0, dataProjectileType->modelName, dataProjectileType->textureName, NULL, c_mtCastRay | c_mtNotPickable); assert (SUCCEEDED(hr)); SetRadius(dataProjectileType->radius); } else { HRESULT hr = LoadDecal(dataProjectileType->textureName, NULL, Color((float)dataProjectileType->color.r, (float)dataProjectileType->color.g, (float)dataProjectileType->color.b, (float)dataProjectileType->color.a), dataProjectileType->bDirectional, dataProjectileType->width, c_mtCastRay | c_mtNotPickable); assert (SUCCEEDED(hr)); GetHitTest()->SetRadius(0.0f); GetThingSite()->SetRadius(dataProjectileType->radius); } //position set after being initialized SetVelocity(dataProjectile->velocity); { Orientation o(dataProjectile->forward); SetOrientation(o); } { Rotation r(dataProjectile->forward, dataProjectileType->rotation); SetRotation(r); } { HitTest* ht = GetHitTest(); //lifespan == 0 => immortal projectile that can hit until it gets terminated on the next update; this is bad assert (dataProjectile->lifespan > 0.0f); ht->SetTimeStart(now); ht->SetTimeStop(m_timeExpire = now + dataProjectile->lifespan); //intentional assignment assert (m_timeExpire != now); } SetMass(0.0f); } } return S_OK; }