コード例 #1
0
LodDistanceControl::~LodDistanceControl()
{
    for(int32 iDist = 0; iDist < LodNode::MAX_LOD_LAYERS; ++iDist)
    {
        SafeRelease(distanceText[iDist]);
        SafeRelease(distanceTextValues[iDist]);
    }
    
    ReleaseControls();
}
コード例 #2
0
LodDistanceControl::~LodDistanceControl()
{
    for(int32 iDist = 0; iDist < LodComponent::MAX_LOD_LAYERS; ++iDist)
    {
        SafeRelease(distanceText[iDist]);
        SafeRelease(distanceTextValues[iDist]);
        
        SafeRelease(trianglesText[iDist]);
        SafeRelease(trianglesTextValues[iDist]);
    }
    
    SafeRelease(distanceToCameraText);
    SafeRelease(distanceToCameraValue);
    
    ReleaseControls();
}
コード例 #3
0
ファイル: vuedlg.cpp プロジェクト: artemeliy/inf4715
INT_PTR RendVueParamDlg::WndProc(
      HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
   {
   switch (msg) {
      case WM_INITDIALOG:
         if (prog) InitProgDialog(hWnd);
         else InitParamDialog(hWnd);
         break;
      
      case WM_DESTROY:
         if (!prog) ReleaseControls();
         break;
      default:
         return FALSE;
      }
   return TRUE;
   }
コード例 #4
0
void LodDistanceControl::SetDistances(float32 *newDistances, int32 newCount)
{
    Vector2 newSize = GetSize();
    newSize.y = (newCount + 1) * ControlsFactory::BUTTON_HEIGHT;
    SetSize(newSize);
    
    ReleaseControls();
    
    if(1 < newCount)
    {
        count = newCount;
        Memcpy(distances, newDistances, count * sizeof(float32));
        
        zones = new UIControl*[count];
        
        maxDistance = (distances[count - 1] < LodNode::MAX_LOD_DISTANCE) 
                                        ? LodNode::MAX_LOD_DISTANCE 
                                        : (LodNode::MAX_LOD_DISTANCE * 1.1f);
        
        Rect fullRect = GetRect();
        
        Color initialColor(0.8f, 0.5f, 0.1f, 1.0f);
        
        for(int32 iZone = 0; iZone < count; ++iZone)
        {
            float32 x = (iZone) ? distances[iZone] : 0.f;
            float32 dx = (iZone != count - 1) ? (distances[iZone + 1] - x) : (maxDistance - distances[iZone]);

            x = x * fullRect.dx / maxDistance;
            dx = dx * fullRect.dx / maxDistance;
            
            
            zones[iZone] = new UIControl(Rect(x, 0, dx, ControlsFactory::BUTTON_HEIGHT));
            zones[iZone]->SetInputEnabled(false, false);
            zones[iZone]->GetBackground()->SetDrawType(UIControlBackground::DRAW_FILL);
            
            float32 color = distances[iZone] / maxDistance;
            
            Color zoneColor;
            zoneColor.r = initialColor.r + color;
            zoneColor.g = initialColor.g + color;
            zoneColor.b = initialColor.b + color;
            zoneColor.a = 1.0f;
            
            if(1.0f < zoneColor.r) zoneColor.r -= (int32)zoneColor.r;
            if(1.0f < zoneColor.g) zoneColor.g -= (int32)zoneColor.g;
            if(1.0f < zoneColor.b) zoneColor.b -= (int32)zoneColor.b;
            
            zones[iZone]->GetBackground()->SetColor(zoneColor);
            
            AddControl(zones[iZone]);
        }
        
        sliders = new UIControl*[count - 1];
        for(int32 iSlider = 0; iSlider < count - 1; ++iSlider)
        {
            float32 x = distances[iSlider + 1] / maxDistance * fullRect.dx;
            sliders[iSlider] = new UIControl(Rect(x - 1, 0, 3, ControlsFactory::BUTTON_HEIGHT));
            sliders[iSlider]->SetInputEnabled(false, false);
            sliders[iSlider]->GetBackground()->SetDrawType(UIControlBackground::DRAW_FILL);
            sliders[iSlider]->GetBackground()->SetColor(Color(1.0f, 0.0f, 0.0f, 1.0f));
            
            AddControl(sliders[iSlider]);
        }
    }
    
    for(int32 iDist = 0; iDist < LodNode::MAX_LOD_LAYERS; ++iDist)
    {
        RemoveControl(distanceText[iDist]);
        RemoveControl(distanceTextValues[iDist]);
        
        if(iDist < count)
        {
            AddControl(distanceText[iDist]);
            distanceText[iDist]->SetText(Format(L"Distance_%d:", iDist));

            AddControl(distanceTextValues[iDist]);
            distanceTextValues[iDist]->SetText(Format(L"%3.0f", distances[iDist]));
        }
    }
}
コード例 #5
0
void LodDistanceControl::WillDisappear()
{
    ReleaseControls();    

    UIControl::WillDisappear();
}