QVariant QPropertyModel::data(const QModelIndex& index, int role) const { if( !index.isValid() ) return QVariant(); if( role != Qt::DisplayRole && role != Qt::ToolTipRole && role != Qt::StatusTipRole ) return QVariant(); Property* prop = GetProperty(index); if( role == Qt::ToolTipRole || role == Qt::StatusTipRole ) return QVariant(prop->GetDescription()); if( index.column() == PROPERTY_COLUMN ) { if( IsComponent(index) ) return QVariant(prop->GetComponentName(index.row())); else return QVariant(prop->GetName()); } else { String str; if( IsComponent(index) ) prop->GetComponentValueString(mEdited, GetComponentIndex(index), str); else prop->GetValueString(mEdited, str); return QVariant(str.c_str()); } }
plComponentBase *plMaxNodeBase::ConvertToComponent() { if (IsComponent()) return (plComponentBase*)GetObjectRef(); return nil; }
Handle<Value> COEquals(const Arguments& args) { if(!IsComponent(args[0])) { return False(); } dtEntity::Component* component = UnwrapComponent(args.This()); dtEntity::Component* other = UnwrapComponent(args[0]); return (other == component) ? True() : False(); }
QModelIndex QPropertyModel::parent(const QModelIndex& idx) const { if( !idx.isValid() ) return QModelIndex(); if( !IsComponent(idx) ) return QModelIndex(); else { return index( (size_t)idx.internalPointer(), 0, QModelIndex() ); } }
void plMaxNodeBase::SetMaxNodeData(plMaxNodeData * pdat) { const char* dbgNodeName = GetName(); // If object is a component, don't add node data if (IsComponent()) return; AppDataChunk *adc = GetAppDataChunk(PLASMA_MAX_CLASSID, GUP_CLASS_ID, kPlasmaMaxNodeDataChunk); // If pointer is nil, remove any data if (!pdat) { if( adc ) { plMaxNodeData *pDataChunk = (plMaxNodeData*)adc->data; pDataChunk->DeInit(); } RemoveAppDataChunk(PLASMA_MAX_CLASSID, GUP_CLASS_ID, kPlasmaMaxNodeDataChunk); return; } if (!adc) { // Does not exist, create a new one... int len = sizeof(plMaxNodeData); plMaxNodeData *pDataChunk = (plMaxNodeData *)MAX_new(len); memcpy(pDataChunk, pdat, sizeof(*pdat)); pDataChunk->Init(); *pDataChunk = *pdat; AddAppDataChunk(PLASMA_MAX_CLASSID, GUP_CLASS_ID, kPlasmaMaxNodeDataChunk, len, pDataChunk); } else { plMaxNodeData *pDataChunk = (plMaxNodeData*)adc->data; // if someone does a GetMaxNodeData, they get a pointer to the data, // No need to set it, other wise set the Data chunk from the MaxNodeData passed in if (pDataChunk != pdat) *pDataChunk = *pdat; } }
plComponentBase *plMaxNodeBase::IRefMakerToComponent(ReferenceMaker *maker, bool all) { if (!maker) return nil; // Is the refmaker a paramblock? If so, it may be the // targets block of a component if (maker->SuperClassID() == PARAMETER_BLOCK2_CLASS_ID) { IParamBlock2 *pb = (IParamBlock2*)maker; ReferenceMaker *pbowner = pb->GetOwner(); // Is the owner of the paramblock a helper object (component superclass)? if (pbowner && pbowner->SuperClassID() == HELPER_CLASS_ID) { Object *obj = (Object*)pbowner; // Is the owner of the paramblock a component? if (IsComponent(obj)) { plComponentBase *comp = (plComponentBase*)obj; if (!all) { // Does this component actually ref us? (A component can have other // refs to a node, like a proxy object, so we want to make sure this // node is actually in the target list.) for (uint32_t i = 0; i < comp->NumTargets(); i++) { if (comp->GetTarget(i) == this) return comp; } } else return comp; } } } return nil; }
bool QPropertyModel::setData( const QModelIndex& pIndex, const QVariant& pValue, int role ) { if( !pIndex.isValid() ) return false; if( role != Qt::DisplayRole ) return false; dataChanged(pIndex, pIndex); Property* prop = QPropertyModel::GetProperty(pIndex); if( IsComponent(pIndex) ) { dataChanged(pIndex.parent(), pIndex); } else if( prop->GetComponentCount() ) { dataChanged(createIndex(0, pIndex.column(), pIndex.row()), createIndex(prop->GetComponentCount()-1, pIndex.column(), pIndex.row())); } return false; }
UInt32 QPropertyModel::GetComponentIndex(const QModelIndex& index) { return IsComponent(index) ? (UInt32)index.row() : Property::InvalidComponent; }