Visual Studio 2008 SP1 Beta i .NET 3.5 SP1 Beta

Parę dni temu coś mnie podkusiło do instalacji wersji beta nowego service packa do VS2008 i .NET3.5. Instalacja przeszła względnie bezboleśnie (musiałem tylko zwolnić trochę miejsca na dysku;) ).

I wszystko byłoby OK, gdyby nie fakt, że RubiksCube v2 przestał działać..
A dokładniej po wykonaniu dowolnego ruchu wywalał się bliżej nieokreślony błąd w PresentationCore.dll (bliżej nieokreślony, bo opisu błędu wogóle nie było). Co lepsze przed SP1 Beta aplikacja działała prawidłowo...

Błędu szukałem komentując po kolei poszczególne fragmenty kodu i dotarłem do takiej konstrukcji

  1. if (model == null)
  2. {
  3. model = new Model3DGroup();
  4. }
  5. else
  6. {
  7. model.Children.Clear();
  8. }

Gdzie model jest typu Model3DGroup. Doszedłem do tego, że aplikacja wywalała się przez linijkę 7. Nie wiem dlaczego tak się zachowywał, ale błąd naprawiłem w następujący sposób:

  1. if (model == null)
  2. {
  3. model = new Model3DGroup();
  4. }
  5. else
  6. {
  7. model.Children = new Model3DCollection();
  8. }

I jak na razie aplikacja śmiga :P

RubikCube v2 – dowolne obroty warstw

No to udało mi się w końcu opanować wszystkie animacje :) Dodatkowo zastosowałem tani chwyt i zmodyfikowałem trochę kod, aby była możliwość zmiany rozmiarów kostki. Od teraz będzie można układać kostki 2x2x2, 3x3x3, 4x4x4, 10x10x10 i wszystkie pośrednie (włącznie z wszystkimi prostopadłościanami).
Niestety czy rozmiarach większych niż 6x6x6 wydajność już dosyć znacznie spadła. Będę musiał zoptymalizować jakoś ten kod. A swoją drogą w Visual Studio w wersji proffesional brakuje mi profiler'a. Znacznie by ułatwił pracę, niestety jest dostępny jedynie w edycji Team Suite :(

Poniżej mała demonstracja:
Get the Flash Player to see this player.

RubikCube v2 – animacje obrotów ścian

Oto screencast z prezentacji pierwszej prototypowej wersji RubiksCube. Jak narazie wielu efektów nie widać, ale to jest prawie, że dopiero początek.
W tej chwili jest zrobiony silnik do obsługi kostki Rubika oraz wizualizacja z wykorzystaniem technologi WPF.
Get the Flash Player to see this player.

WPF

Zastanawiam się nad wyborem silnika graficznego do mojego projektu kostki Rubika. Wpierw miałem zamiar oprzeć go na Direct3D, ale jakoś mają ciężkostrawny interfejs obsługi. I wygląda na bardziej zagmatwane niż OpenGL. Ostatecznie chyba zrezygnuję z obu na rzecz WPF z .NET 3.0 :)

Dzisiaj zacząłem dopiero poznawać tę technologię i mogę powiedzieć, że nawet taka zła to to ona nie jest jak mi się wydawało. Jeśli chodzi o WPF z punktu widzenia programisty to jest całkiem prosty. Formatka i wszystkie okienka są opisane językiem XAML opartym na XML'u. Z tego co widzę to jest także obsługa grafiki 3D. Narazie udało mi się narysować sześcian, ale to chyba dobry początek.