d6b268e84e
* Sever dependency on legacy resource selector host Audio resource selectors (browse dialogs) no longer need to be registered with the legacy IResourceSelectorHost system. Set up a new EBus specifically to handle browse button presses and directly invokes the dialog. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Hook up legacy audio control selector to new EBus Remaining use of legacy audio selectors (trackview) need to be able to bypass ResourceSelectorHost now. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Removes ResourceSelectorHost and legacy selectors This removes various Variable types that were tied to resource selectors, such as GeomCache, Model, Animation, File. Removes the ResourceSelectorHost completely. The two things that still appeared to have selectors in TrackView are Audio Controls and Texture. Fixed the audio control selector to work via EBus and the Texture selector didn't seem to work at all, but left it in as it was. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Make the default audio selector return old value Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Fix some signed/unsigned comparison warnings Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Remove deleted function from Editor Mock Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com> * Change audio selector api to use string_view Per feedback. Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
304 lines
10 KiB
C++
304 lines
10 KiB
C++
/*
|
|
* Copyright (c) Contributors to the Open 3D Engine Project.
|
|
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
*
|
|
*/
|
|
|
|
#ifndef CRYINCLUDE_EDITOR_UTILS_REFLECTEDVARWRAPPER_H
|
|
#define CRYINCLUDE_EDITOR_UTILS_REFLECTEDVARWRAPPER_H
|
|
#pragma once
|
|
|
|
#include "Util/Variable.h"
|
|
#include <Util/VariablePropertyType.h>
|
|
#include "ReflectedVar.h"
|
|
|
|
#include <QScopedPointer>
|
|
|
|
struct CUIEnumsDatabase_SEnum;
|
|
class ReflectedPropertyItem;
|
|
|
|
// Class to wrap the CReflectedVars and sync them with corresponding IVariable.
|
|
// Most of this code is ported from CPropertyItem functions that marshal data between
|
|
// IVariable and editor widgets.
|
|
|
|
class EDITOR_CORE_API ReflectedVarAdapter
|
|
{
|
|
public:
|
|
virtual ~ReflectedVarAdapter(){};
|
|
|
|
// update the range limits in CReflectedVar to range specified in IVariable
|
|
virtual void UpdateRangeLimits([[maybe_unused]] IVariable* pVariable) {};
|
|
|
|
//set IVariable for this property and create a CReflectedVar to represent it
|
|
virtual void SetVariable(IVariable* pVariable) = 0;
|
|
|
|
//update the ReflectedVar to current value of IVar
|
|
virtual void SyncReflectedVarToIVar(IVariable* pVariable) = 0;
|
|
|
|
//update the internal IVariable as result of ReflectedVar changing
|
|
virtual void SyncIVarToReflectedVar(IVariable* pVariable) = 0;
|
|
|
|
// Callback called when variable change. SyncReflectedVarToIVar will be called after
|
|
virtual void OnVariableChange([[maybe_unused]] IVariable* var) {};
|
|
|
|
virtual bool UpdateReflectedVarEnums() { return false; }
|
|
|
|
virtual CReflectedVar* GetReflectedVar() = 0;
|
|
|
|
//needed for containers that can have new values filled in
|
|
virtual void ReplaceVarBlock([[maybe_unused]] CVarBlock* varBlock) {};
|
|
|
|
virtual bool Contains(CReflectedVar* var) { return GetReflectedVar() == var; }
|
|
};
|
|
|
|
|
|
class EDITOR_CORE_API ReflectedVarIntAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void UpdateRangeLimits(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarInt > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
float m_valueMultiplier = 1.0f;
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarFloatAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void UpdateRangeLimits(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarFloat > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
float m_valueMultiplier = 1.0f;
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarStringAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarString > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarBoolAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarBool > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarEnumAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
ReflectedVarEnumAdapter();
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
virtual void OnVariableChange(IVariable* var);
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
|
|
protected:
|
|
//update the ReflectedVar with the allowable enum options
|
|
bool UpdateReflectedVarEnums() override;
|
|
|
|
//virtual function to allow derived classes to update the enum list before syncing with ReflectedVar.
|
|
virtual void updateIVariableEnumList([[maybe_unused]] IVariable* pVariable) {};
|
|
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarEnum<AZStd::string> > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
|
|
IVariable* m_pVariable;
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
IVarEnumListPtr m_enumList;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
bool m_updatingEnums;
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarDBEnumAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarEnum<AZStd::string> > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
|
|
CUIEnumsDatabase_SEnum* m_pEnumDBItem;
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarVector2Adapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarVector2 > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarVector3Adapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarVector3 > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarVector4Adapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarVector4 > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
|
|
class EDITOR_CORE_API ReflectedVarColorAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarColor > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarResourceAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarResource> m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarUserAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable *pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable *pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable *pVariable) override;
|
|
CReflectedVar *GetReflectedVar() override {
|
|
return m_reflectedVar.data();
|
|
}
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarUser> m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarSplineAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
ReflectedVarSplineAdapter(ReflectedPropertyItem *parentItem, PropertyType propertyType);
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override {
|
|
return m_reflectedVar.data();
|
|
}
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarSpline > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
bool m_bDontSendToControl;
|
|
PropertyType m_propertyType;
|
|
ReflectedPropertyItem *m_parentItem;
|
|
};
|
|
|
|
|
|
class EDITOR_CORE_API ReflectedVarGenericPropertyAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
ReflectedVarGenericPropertyAdapter(PropertyType propertyType);
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarGenericProperty > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
PropertyType m_propertyType;
|
|
};
|
|
|
|
class EDITOR_CORE_API ReflectedVarMotionAdapter
|
|
: public ReflectedVarAdapter
|
|
{
|
|
public:
|
|
void SetVariable(IVariable* pVariable) override;
|
|
void SyncReflectedVarToIVar(IVariable* pVariable) override;
|
|
void SyncIVarToReflectedVar(IVariable* pVariable) override;
|
|
CReflectedVar* GetReflectedVar() override { return m_reflectedVar.data(); }
|
|
private:
|
|
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
QScopedPointer<CReflectedVarMotion > m_reflectedVar;
|
|
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
|
};
|
|
|
|
|
|
#endif // CRYINCLUDE_EDITOR_UTILS_REFLECTEDVARWRAPPER_H
|