Skip to content

Commit

Permalink
viewer#1131 gltf model upload UI WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
akleshchev committed Jul 1, 2024
1 parent 59cc180 commit c7bd452
Show file tree
Hide file tree
Showing 13 changed files with 525 additions and 15 deletions.
4 changes: 4 additions & 0 deletions indra/newview/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ set(viewer_SOURCE_FILES
llfloaterfonttest.cpp
llfloaterforgetuser.cpp
llfloatergesture.cpp
llfloatergltfasseteditor.cpp
llfloatergodtools.cpp
llfloatergotoline.cpp
llfloatergridstatus.cpp
Expand Down Expand Up @@ -313,6 +314,7 @@ set(viewer_SOURCE_FILES
llgesturemgr.cpp
llgiveinventory.cpp
llglsandbox.cpp
llgltffolderviews.cpp
llgltfmateriallist.cpp
llgltfmaterialpreviewmgr.cpp
llgroupactions.cpp
Expand Down Expand Up @@ -879,6 +881,7 @@ set(viewer_HEADER_FILES
llfloaterfonttest.h
llfloaterforgetuser.h
llfloatergesture.h
llfloatergltfasseteditor.h
llfloatergodtools.h
llfloatergotoline.h
llfloatergridstatus.h
Expand Down Expand Up @@ -975,6 +978,7 @@ set(viewer_HEADER_FILES
llgesturelistener.h
llgesturemgr.h
llgiveinventory.h
llgltffolderviews.h
llgltfmateriallist.h
llgltfmaterialpreviewmgr.h
llgroupactions.h
Expand Down
2 changes: 2 additions & 0 deletions indra/newview/gltfscenemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "llviewertexturelist.h"
#include "llimagej2c.h"
#include "llfloaterperms.h"
#include "llfloaterreg.h"
#include "llagentbenefits.h"
#include "llfilesystem.h"
#include "boost/json.hpp"
Expand Down Expand Up @@ -314,6 +315,7 @@ void GLTFSceneManager::load(const std::string& filename)
{
mObjects.push_back(obj);
}
LLFloaterReg::showInstance("gltf_asset_editor");
}
}
else
Expand Down
5 changes: 0 additions & 5 deletions indra/newview/llfloateravatar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@
* $/LicenseInfo$
*/

/**
* Floater that appears when buying an object, giving a preview
* of its contents and their permissions.
*/

#include "llviewerprecompiledheaders.h"

#include "llfloateravatar.h"
Expand Down
5 changes: 0 additions & 5 deletions indra/newview/llfloaterdestinations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@
* $/LicenseInfo$
*/

/**
* Floater that appears when buying an object, giving a preview
* of its contents and their permissions.
*/

#include "llviewerprecompiledheaders.h"

#include "llfloaterdestinations.h"
Expand Down
5 changes: 0 additions & 5 deletions indra/newview/llfloaterfonttest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@
* $/LicenseInfo$
*/

/**
* Floater that appears when buying an object, giving a preview
* of its contents and their permissions.
*/

#include "llviewerprecompiledheaders.h"

#include "llfloaterfonttest.h"
Expand Down
111 changes: 111 additions & 0 deletions indra/newview/llfloatergltfasseteditor.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/**
* @file llfloatergltfasseteditor.cpp
* @author Brad Payne
* @brief LLFloaterFontTest class implementation
*
* $LicenseInfo:firstyear=2008&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/

#include "llviewerprecompiledheaders.h"

#include "llfloatergltfasseteditor.h"

#include "llfolderviewitem.h"
#include "llgltffolderviews.h"

bool LLGLTFSort::operator()(const LLGLTFItem* const& a, const LLGLTFItem* const& b) const
{
// Comparison operator: returns "true" is a comes before b, "false" otherwise
S32 compare = LLStringUtil::compareDict(a->getName(), b->getName());
return (compare < 0);
}

/// LLGLTFViewModel

LLGLTFViewModel::LLGLTFViewModel()
: base_t(new LLGLTFSort(), new LLGLTFFilter())
{}

void LLGLTFViewModel::sort(LLFolderViewFolder* folder)
{
base_t::sort(folder);
}

/// LLGLTFNode
// LLUICtrlFactory::create<LLGLTFNode>(params);
class LLGLTFNode : public LLFolderViewItem
{
public:
struct Params : public LLInitParam::Block<Params, LLFolderViewItem::Params>
{
Params();
};
~LLGLTFNode();
protected:
LLGLTFNode(const Params& p);
};

LLGLTFNode::LLGLTFNode(const LLGLTFNode::Params& p)
: LLFolderViewItem(p)
{
}

LLGLTFNode::~LLGLTFNode()
{
}

LLFloaterGltfAssetEditor::LLFloaterGltfAssetEditor(const LLSD& key)
: LLFloater(key)
{
setTitle("GLTF Asset Editor (WIP)");
}

/// LLFloaterGltfAssetEditor

LLFloaterGltfAssetEditor::~LLFloaterGltfAssetEditor()
{
}

bool LLFloaterGltfAssetEditor::postBuild()
{
mItemListPanel = getChild<LLPanel>("item_list_panel");

// Create the root model and view for all conversation sessions
LLGLTFItem* base_item = new LLGLTFItem(mGLTFViewModel);

LLFolderView::Params p(LLUICtrlFactory::getDefaultParams<LLFolderView>());
p.name = getName();
p.title = getLabel();
p.rect = LLRect(0, 0, getRect().getWidth(), 0);
p.parent_panel = mItemListPanel;
p.tool_tip = p.name;
p.listener = base_item;
p.view_model = &mGLTFViewModel;
p.root = NULL;
p.use_ellipses = true;
p.options_menu = "menu_gltf.xml"; // *TODO : create this or fix to be optional
mConversationsRoot = LLUICtrlFactory::create<LLFolderView>(p);
mConversationsRoot->setCallbackRegistrar(&mCommitCallbackRegistrar);
mConversationsRoot->setEnableRegistrar(&mEnableCallbackRegistrar);

return true;
}
114 changes: 114 additions & 0 deletions indra/newview/llfloatergltfasseteditor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/**
* @file llfloatergltfasseteditor.h
* @author Brad Payne
* @brief floater to exercise standard fonts
*
* $LicenseInfo:firstyear=2024&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2024, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/

#ifndef LL_LLFLOATERGLTFASSETEDITOR_H
#define LL_LLFLOATERGLTFASSETEDITOR_H

#include "llfloater.h"

#include "llfolderviewmodel.h"
#include "llgltffolderviews.h"

class LLGLTFViewModel;
class LLFolderViewFolder;
class LLFolderViewModelItem;

class LLGLTFSort
{
public:
LLGLTFSort() { }
bool operator()(const LLGLTFItem* const& a, const LLGLTFItem* const& b) const;
private:
};

class LLGLTFFilter : public LLFolderViewFilter
{
public:
LLGLTFFilter() { mEmpty = ""; }
~LLGLTFFilter() {}

bool check(const LLFolderViewModelItem* item) { return true; }
bool checkFolder(const LLFolderViewModelItem* folder) const { return true; }
void setEmptyLookupMessage(const std::string& message) { }
std::string getEmptyLookupMessage(bool is_empty_folder = false) const { return mEmpty; }
bool showAllResults() const { return true; }
std::string::size_type getStringMatchOffset(LLFolderViewModelItem* item) const { return std::string::npos; }
std::string::size_type getFilterStringSize() const { return 0; }

bool isActive() const { return false; }
bool isModified() const { return false; }
void clearModified() { }
const std::string& getName() const { return mEmpty; }
const std::string& getFilterText() { return mEmpty; }
void setModified(EFilterModified behavior = FILTER_RESTART) { }

void resetTime(S32 timeout) { }
bool isTimedOut() { return false; }

bool isDefault() const { return true; }
bool isNotDefault() const { return false; }
void markDefault() { }
void resetDefault() { }

S32 getCurrentGeneration() const { return 0; }
S32 getFirstSuccessGeneration() const { return 0; }
S32 getFirstRequiredGeneration() const { return 0; }
private:
std::string mEmpty;
};

class LLGLTFViewModel
: public LLFolderViewModel<LLGLTFSort, LLGLTFItem, LLGLTFItem, LLGLTFFilter>
{
public:
typedef LLFolderViewModel< LLGLTFSort, LLGLTFItem, LLGLTFItem, LLGLTFFilter> base_t;
LLGLTFViewModel();

void sort(LLFolderViewFolder* folder);
bool startDrag(std::vector<LLFolderViewModelItem*>& items) { return false; }

private:
};

class LLFloaterGltfAssetEditor : public LLFloater
{
public:
LLFloaterGltfAssetEditor(const LLSD& key);
~LLFloaterGltfAssetEditor();

bool postBuild() override;

LLGLTFViewModel& getRootViewModel() { return mGLTFViewModel; }

private:
LLGLTFViewModel mGLTFViewModel;

LLPanel* mItemListPanel = nullptr;
LLFolderView* mConversationsRoot = nullptr;
};

#endif LL_LLFLOATERGLTFASSETEDITOR_H
Loading

0 comments on commit c7bd452

Please sign in to comment.