6 #include <qabstractitemmodel.h> 11 #include <glm/glm.hpp> 12 #include <glm/gtc/matrix_transform.hpp> 13 #include <glm/gtc/type_ptr.hpp> 18 #include "nesteddefs.h" 80 void moveChild(
int oldIndex,
int newIndex);
87 if (i < 0 || i >= components.size())
return NULL;
88 return dynamic_cast<T*
>(components[i]);
95 for (
auto component : components) {
96 if (dynamic_cast<T*>(component)) {
97 return dynamic_cast<T*
>(component);
117 QModelIndex index(
int row,
int column,
const QModelIndex &parent = QModelIndex())
const;
119 QModelIndex parent(
const QModelIndex &index)
const;
121 int rowCount(
const QModelIndex &parent = QModelIndex())
const;
123 int columnCount(
const QModelIndex &parent = QModelIndex())
const;
125 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const;
129 bool setData(
const QModelIndex & index,
const QVariant & value,
int role);
131 Qt::ItemFlags flags(
const QModelIndex &index)
const;
133 QVariant headerData(
int section, Qt::Orientation orientation,
int role = Qt::DisplayRole)
const;
void callRecursively(const std::function< void(HierarchyObject *)> &func, bool requireEnabled=false)
递归遍历子树
Definition: HierarchyObject.cpp:108
int componentsCount()
本节点挂载的组件数量
Definition: HierarchyObject.h:54
HierarchyObject * popChild(int index)
取出子节点
Definition: HierarchyObject.cpp:60
Component * addComponent(Component *component)
挂载组件
Definition: HierarchyObject.cpp:84
int findChild(HierarchyObject *child)
找到子节点序号
Definition: HierarchyObject.cpp:21
组件的基类。里面的事件会由widget调用
Definition: Component.h:15
glm::mat4 worldToLocal()
从世界坐标转局部坐标的矩阵
Definition: HierarchyObject.h:67
HierarchyObject * getParent()
获取父节点
Definition: HierarchyObject.h:56
bool enabled
如果为false,则其上及子节点上组件的onUpdate不会被调用
Definition: HierarchyObject.h:43
void updateRecursively()
递归更新子树
Definition: HierarchyObject.cpp:93
int childrenCount()
子节点数量
Definition: HierarchyObject.h:46
glm::mat4 transform
该节点局部到该节点父节点局部坐标的变换阵
Definition: HierarchyObject.h:39
表示场景树中的节点
Definition: HierarchyObject.h:27
void insertChild(int index, HierarchyObject *child)
放入子节点
Definition: HierarchyObject.cpp:68
QString name
节点名称
Definition: HierarchyObject.h:41
void moveChild(int oldIndex, int newIndex)
调整子节点顺序
Definition: HierarchyObject.cpp:74
HierarchyObject * parentObj
该节点的父节点
Definition: HierarchyObject.h:35
glm::mat4 localToWorld()
从局部坐标转世界坐标的矩阵
Definition: HierarchyObject.cpp:37
T * getComponent(int i)
获取第i个组件,cast成指定类型
Definition: HierarchyObject.h:86
std::vector< Component * > components
该节点挂载的组件列表
Definition: HierarchyObject.h:33
T * getComponent()
获取第一个指定类型的组件
Definition: HierarchyObject.h:94
std::vector< HierarchyObject * > children
子节点列表
Definition: HierarchyObject.h:31
HierarchyObject * getChildren(int i)
获取第i个子节点
Definition: HierarchyObject.h:48