Sleeping Wombat GUI  0.100
swGUI
Todo List
Member DefaultInterpolators::Create (InterpolatorType type, const Key< KeyType > &leftKey, const Key< KeyType > &rightKey, UPtr< const IInterpolator< KeyType > > &leftInterpolator, UPtr< const IInterpolator< KeyType > > &rightInterpolator)
Implement Bezier interpolator.
globalScope> Member DEFINE_CONFIG_VALUE_DEFAULT (type, name, defaultValue)
Write base class for configs and make automatic serialization and deserialization.
Member DirectProperty< KeyType >::m_object
Change to typed pointer some way.
Member DX11Buffer::CopyData () override
Nie trzeba by wykonywać kopiowania na GPU, gdyby bufor był stworzony z flagą D3D11_USAGE_STAGING lub D3D11_USAGE_DEFAULT. Trzeba sprawdzić flagi i robić kopiowanie tylko, gdy to konieczne.
Member DX11RenderTarget::CreateRenderTarget (const std::wstring &name, const RenderTargetDescriptor &renderTargetDescriptor)
W przyszłości powinna być możliwość tworzenia tekstur innych niż 2D. Poza tym renderować powinno się móc do dowolnego poziomu mipmap. Decyzja powinna być podejmowana w runtimie, więc trzeba chyba stworzyć wiele widoków (???). Przydatne to jest w przypadku Environmental mappingu. Jeżeli obiekt jest mocno oddalony, to nie ma co renderować mu mapy z dużą rozdzielczością.
Member DX11RenderTarget::CreateScreenRenderTarget ()
Wersja troszkę niewłaściwa. RenderTarget jest już stworzony wcześniej przy zwykłej inicjalizacji DX11APIObjects. Tutaj jest jedynie tworzony obiekt silnikowy, który potrafi to obsłużyć. Trzeba to zmienić, żeby całe tworzenie render targetu odbywało się tutaj.
Member DX11SwapChain::CreateScreenSwapChain (RenderTargetObject *screenRT)
Wersja troszkę niewłaściwa. SwapChain jest już stworzony wcześniej przy zwykłej inicjalizacji DX11APIObjects. Tutaj jest jedynie tworzony obiekt silnikowy, który potrafi to obsłużyć. Trzeba to zmienić, żeby całe tworzenie render targetu odbywało się tutaj.
Member DX11Texture::CreateFromMemory (const MemoryChunk &texData, TextureInfo &&texInfo)
Trzeba zacząć kiedyś obśługiwac inne typy tekstur.
Member DX11VertexShader::CreateFromFile (const std::wstring &fileName, const std::string &shaderName, ShaderInputLayout **layout, InputLayoutDescriptor *layout_desc, const char *shaderModel="vs_4_0")
Lepiej obsłużyć ten błąd.
globalScope> Member EditorName
Zaimplementować.
Class EngineObject
Dobrze by było, gdyby EngineObject implementował domyślną serializację, ale wtedy jest problem, że nie wiadomo, która z bibliotek powinna tę implementację kompilować.
Module Interpolators
Complete description.
Member KeySet< KeyType >::Evaluate (TimeType time)
Check if we can find keywith std::lower_bound or FindPlace. Messure performance in cases with multiple keys and choose better version.
Module Reflection
W obecnej wersji silnika wymaganie posiadania EngineObject w hierarchii nie jest już konieczne z punktu widzenia edytora. W kolejnych wersjach trzeba zmienić mechanizmy serializacji, żeby potrafiły zapisywać również takie struktury.
Member RenderTargetObject::GetResourceName () const override
RenderTargety powinny mieć swoje nazwy.
Class ResourceContainer< TYPE >

Dodać IDki obok ścieżek.

Kontrner powinien obsługiwać ścieżki, jako obiekty typu Path zamiast wstringów.

Class ResourceManager
This class should implement generic high level asssets managment.
Member ResourceManager::AddRenderTarget (RenderTargetObject *renderTarget, const std::wstring &name)
Nie może tak zostać, że ktoś dodaje renderTarget i musi sprawdzić czy nie dostał innego. Nie można też zmuszać kogoś do zwalniania pamięci po renderTargecie. Wogóle dodawanie renderTargetów musi się odbywać jakoś inaczej. Najlepiej, żeby były one tworzone przez ResourceManager, ale wtedy trzeba wymyśleć sposób dodawania renderTargetu związanego z buforem okna.
Member ResourceManager::CreateRenderTarget (const std::wstring &name, const RenderTargetDescriptor &renderTargetDescriptor)
Przy dodawaniu tekstur nie jest sprawdzane czy one już istnieją. Trzeba albo to sprawdzać, albo zapewnić np. jakąś polityką nazewnictwa, że w ten sposób nie nadpisujemy istniejącej tekstury.
Member ResourceManager::LoadVertexShader (const std::wstring &fileName, const std::string &shaderEntry, ShaderInputLayout **layout, InputLayoutDescriptor *layout_desc)
Ten kod to jakiś totalny shit. Jak komuś się będzie nudziło kiedyś (ha ha), to może niech poprawi.
Class ResourceObject
Zliczanie referencji w ResourceObject nie nadaje się do wielowątkowości. Poprawić w odpowiednim momencie.
Member ResourceObject::m_objectReferences
To powinien być std::atomic_uint, ale wtedy nie kompiluje się z CLRem.
Member Serialization::DeserializeArrayTypes (IDeserializer *deser, const rttr::instance &object, rttr::property &prop)
Error handling.
Member Serialization::DeserializeProperty (IDeserializer *deser, rttr::property prop, const rttr::instance &object)
Można zoptymalizować pobieranie nazwy z właściwości i ograniczyć alokację stringów.
Member Serialization::SerializeProperty (ISerializer *ser, rttr::property prop, const rttr::instance &object)
Można zoptymalizować pobieranie nazwy z właściwości i ograniczyć alokację stringów.
globalScope> Member ShowInEditor
Zaimplementować filtrowanie w edytorze propertiesów.
Class sw::gui::CommandLineArgs
Move to separate file.
Member sw::gui::CreateNativeGUI ()
This should be moved domewhere else.
Member sw::gui::DelegatesContainer< EventArgType >::m_delegates
Consider using linked list to minimize memory usage.
Class sw::gui::DelegatesContainerBase
Consider extracting intrusive list as separate class.
Member sw::gui::DependencyObject::m_dataContext
Consider using std::shared_ptr.
Class sw::gui::GUISystem
Supply project templates.
Member sw::gui::GUISystem::MainLoopCore ()
Consider making this function virtual in future.
Member sw::gui::HostLogic::HandleKeyInput (const input::DeviceEvent &event, input::Device *device)

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Member sw::gui::HostLogic::HandleMouseButtonInput (const input::DeviceEvent &event, input::Device *device)

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Handle failing during event raising.

Member sw::gui::HostLogic::m_invalidated
Move to different logic. Separate rearrangement and redraw.
Class sw::gui::UIElement
Implement logical focus in future. (Check in WPF)
Member sw::gui::UIElement::m_isEnabled
Maybe it's something from higher level.
Member sw::gui::Visual::HitTest (const Position &point)=0
We must specify if point is in relative coordinates or absolut.
Member sw::gui::Visual::m_position
Relative to parent ???)
Class sw::input::DirectInputModule

Zrobić obsługę wielu urządzeń tego samego typu i jousticka.

Pozbyć się includowania direct input z EngineCore.

Member sw::input::DirectInputModule::m_keyboardInput
Pewnie to powienien być wektor.
Member sw::input::DirectInputModule::m_mouseInput
Pewnie to powienien być wektor.
Member sw::input::DirectInputModule::Update (float timeInterval) override
Repair
Member sw::input::DirectInputModule::UpdateKeyboard (int idx)
Repair
Member sw::input::DirectInputModule::UpdateMouse (int idx)
Repair
Member sw::input::EventCapture::QueryEvent (Size frameNum)
Don't ignore frameNum
Member sw::input::EventCapture::QueueEvent (const DebugEvent &event)
Sort events.
Class sw::input::IInput

Deal with situation when we must have two different IInput objects to handle input. For example WinAPI deals with keyboard and mouse and other IINput with Joysticks.

We must think about handling other devices. For example WPF have such types as StylusDevice, TouchDevice and TabletDevice. Can we do it as combinations of keyboard, mouse and joysticks or we must introduce new API for that.

DirectInput should be created one per window. In this moment we have one input in whole application. We must rethink it.

Member sw::input::WinApiInputProxy::KeyboardChange (int keyId, bool pressed)
W przyszłości może trzeba będzie dodać informację o zmienie stanu. Mógłby to być np któryć bit ustawiony na 1 czy coś.
Member sw::input::WinApiInputProxy::LostFocus ()
Dokończyć
Member sw::input::WinApiInputProxy::MouseButtonChange (int button, bool pressed)
W przyszłości może trzeba będzie dodać informację o zmienie stanu. Mógłby to być np któryć bit ustawiony na 1 czy coś.
Member sw::input::WPFInputProxy::LostFocus ()
Dokończyć
Member sw::input::WPFInputProxy::MouseButtonChange (int button, bool pressed)
W przyszłości może trzeba będzie dodać informację o zmienie stanu. Mógłby to być np któryć bit ustawiony na 1 czy coś.
Class sw::ThreadsBarrier
Implement
globalScope> Member UPtr
Use std::unique_ptr instead. Unique_ptr didn't want to compile in current visual compiler.