Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename T>
- VMResultArray<T> CreateArray(StaticFunctionTag* base, UInt32 size, T fillValue, UInt32 limit)
- {
- VMResultArray<T> data;
- if(size > limit)
- size = limit;
- data.resize(size, fillValue);
- return data;
- }
- VMResultArray<TESFaction*> GetFactions(Actor* thisActor, SInt32 gte, SInt32 lte)
- {
- VMResultArray<TESFaction*> factions;
- if(thisActor) {
- if(gte > SCHAR_MAX)
- gte = SCHAR_MAX;
- if(gte < SCHAR_MIN)
- gte = SCHAR_MIN;
- if(lte < SCHAR_MIN)
- lte = SCHAR_MIN;
- if(lte > SCHAR_MAX)
- lte = SCHAR_MAX;
- FactionRankSet rankSet;
- CollectUniqueFactions factionVisitor(&rankSet, gte, lte);
- thisActor->VisitFactions(factionVisitor);
- for(FactionRankSet::iterator it = rankSet.begin(); it != rankSet.end(); ++it)
- factions.push_back(*it);
- }
- return factions;
- }
- VMResultArray<TESForm*> GetContainerForms(TESObjectREFR* pContainerRef)
- {
- VMResultArray<TESForm*> result;
- if(pContainerRef) {
- ExtraContainerChanges* pXContainerChanges = static_cast<ExtraContainerChanges*>(pContainerRef->extraData.GetByType(kExtraData_ContainerChanges));
- if (pXContainerChanges) {
- TESContainer* pContainer = NULL;
- TESForm* pBaseForm = pContainerRef->baseForm;
- if (pBaseForm)
- pContainer = DYNAMIC_CAST(pBaseForm, TESForm, TESContainer);
- // Declare the container to receive the forms
- ExtraContainerArray formContainer(&result);
- ExtraContainerInfo info(pXContainerChanges ? pXContainerChanges->data->objList : NULL);
- // first walk the base container
- if (pContainer) {
- // Fill the container
- ExtraContainerFiller formFiller(info, &formContainer);
- pContainer->Visit(formFiller);
- }
- // Fill the container with remaining forms
- info.GetRemainingForms(&formContainer);
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement