Пример #1
0
void plLODAvatarComponent::RemoveBone(int index)
{
    int group = GetCurGroupIdx();
    int boneIdx = GetStartIndex(group) + index;
    
    fCompPB->Delete(ParamID(kBoneList), boneIdx, 1);
    fCompPB->SetValue(ParamID(kGroupTotals), 0, fCompPB->GetInt(ParamID(kGroupTotals), 0, group) - 1, group);
}
Пример #2
0
///////////////////////////////////////////////////////////////////////////////////////////////
// IExtendGeoEdit-Methoden
// --------------------------------------------------------------------------------------------
// das lONr-Objekt rechtwinklig machen
//   [in] rfLine     Modus für Bestimmung der Bezugsstrecke
//   [in] dEps90     Epsilon für die Winkel nahe" 90° bzw. "nahe" 270°
//   [in] dEps180    Epsilon für die Winkel nahe" 180°
//   [in] dEpsCom    Epsilon für  die Stützpunktgleichheit mit den angrenzenden Objekten
//   [in] pEnumIn    ObjNummern der Objekte, die auf eine gemeinsame Strecke getestet werden
//                   sollen
//   [out] ppEnumOut ObjNummern der Objekte, die verändert wurden
STDMETHODIMP_ (HRESULT) CGeoEditExtension::MakeRectangular_ONr (long lONr, RefLine rfLine,
												 double dEps90, double dEps180, double dEpsCom,
												 IEnumLONG* pEnumIn, IEnumLONG** ppEnumOut)
{
long lStartInd;		// Startindex

	GetStartIndex (lONr, rfLine, pEnumIn, lStartInd);

	try
	{
		// eine (möglicherweise bis jetzt) aktive IEditOperation abmelden
		if (m_wEditOper.IsValid())
		{
			m_wEditOper->SetEditExtensionSite (NULL);
			m_wEditOper.Assign(NULL);
		}

	WEditOperation wEditOper (CLSID_ObjectModify);	// throws_com_error

		THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this));
		m_wEditOper = wEditOper;

	int iKInd = 0;	// Bezugsstrecke ist bei externem Aufruf immer Teil der Außenkontur

	WModifyOperation wModOper (CLSID_MakeRectangular);		// throws_com_error

	// die anschließende Befehlszeile ersetzt die 3 nachfolgend herauskommentierten Zeilen;
	// die aktuelle EditierOperation m_wEditOper (u.z. ObjectModify) wird durch QueryInterface
	// nach dem Interface-ID von IModifyClassSite gefragt, der in pISite bereitgestellt wird;
	// IModifyClassSite ist das Interface, das die CObjectModify-Klasse für die
	// ModifyOperation's (u.a. MakeRectangular) bereitstellt, d.h. das Interface, über das z.B.
	// MakeRectangular die CObjectModify-Klasse rufen kann
	WModifyClassSite pISite (m_wEditOper);

		// nächste Zeile ist für CreateInterfaceTO() notwendig
		THROW_FAILED_HRESULT (wModOper->SetModifyClassSite(this, pISite));
		THROW_FAILED_HRESULT (wModOper->Rectangularity (lONr, iKInd, lStartInd, dEps90,
							  dEps180, dEpsCom, (IEnumObjectsByNumber**)ppEnumOut));

		// ModifyOperation "Rechtwinkligkeit" wieder abmelden
		if (wModOper.IsValid())
		{
			wModOper->SetModifyClassSite (NULL, NULL);
			wModOper.Assign (NULL);
		}

		// EditOperation "ObjektModifizierung" wieder abmelden
		if (m_wEditOper.IsValid())
		{
			m_wEditOper->SetEditExtensionSite (NULL);
			m_wEditOper.Assign(NULL);
		}
	}
	catch (_com_error& e)
	{
		return _COM_ERROR (e);
	}
	
	return S_OK;

} // MakeRectangular_ONr
Пример #3
0
int plLODAvatarComponent::GetEndIndex(int group)
{
    return GetStartIndex(group) + fCompPB->GetInt(ParamID(kGroupTotals), 0, group);
}