public bool GetEquipmentToEject(EquipmentModelDefinition eqToApply, out HashSet <AvatarModel.Part> ejectedParts, out HashSet <EquipmentModelDefinition> ejectedEquipment) { ejectedParts = new HashSet <AvatarModel.Part>(); ejectedEquipment = new HashSet <EquipmentModelDefinition>(); EquipmentModelDefinition.Part[] array = eqToApply.Parts; for (int i = 0; i < array.Length; i++) { EquipmentModelDefinition.Part part = array[i]; AvatarModel.Part modelPart = null; bool flag = this.TryGetEquippedPart(part.SlotIndex, part.PartType, out modelPart); if (!flag) { flag = (part.PartType == EquipmentPartType.BaseMeshAddition && this.TryGetEquippedPart(part.SlotIndex, EquipmentPartType.BaseMeshReplacement, out modelPart)); } if (!flag) { flag = (part.PartType == EquipmentPartType.BaseMeshReplacement && this.TryGetEquippedPart(part.SlotIndex, EquipmentPartType.BaseMeshAddition, out modelPart)); } if (flag) { this.ejectPart(ejectedParts, ejectedEquipment, modelPart); } } return(ejectedParts.Count > 0); }
private void changePart(EquipmentModelDefinition.Part newPartDef, AvatarModel.Part newPart) { int slotIndex = newPartDef.SlotIndex; int partType = (int)newPartDef.PartType; this.changePart(slotIndex, partType, newPart); }
public void LateUpdate() { if (!modelDirty || base.IsBusy) { return; } modelDirty = false; startWork(); cleanup(); partViews.Clear(); List <KeyValuePair <TypedAssetContentKey <Texture2D>, Action <Texture2D> > > list = new List <KeyValuePair <TypedAssetContentKey <Texture2D>, Action <Texture2D> > >(); List <KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> > > list2 = new List <KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> > >(); foreach (AvatarModel.Part item in Model.IterateParts()) { ViewPart viewPart = new ViewPart(); if (item.Equipment != null) { EquipmentModelDefinition.Part eqPart = item.Equipment.Parts[item.Index]; list2.Add(AvatarView.CreatePartContent(Model, viewPart, item, eqPart)); if (item.Decals != null) { AvatarView.CreateDecalContent(viewPart, item, list); } } else { BodyViewDefinition bodyViewDefinition = Model.Definition.Slots[item.Index].LOD[Model.LodLevel]; bodyViewDefinition.ApplyToViewPart(viewPart); } partViews.Add(viewPart); } partsRequest = outfitService.Load(list2, outfitService.EquipmentPartCache); decalsRequest = outfitService.Load(list, outfitService.DecalCache); }
public void LateUpdate() { if (this.modelDirty && !base.IsBusy) { this.modelDirty = false; base.startWork(); this.cleanup(); this.partViews.Clear(); List <KeyValuePair <TypedAssetContentKey <Texture2D>, Action <Texture2D> > > list = new List <KeyValuePair <TypedAssetContentKey <Texture2D>, Action <Texture2D> > >(); List <KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> > > list2 = new List <KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> > >(); foreach (AvatarModel.Part current in this.Model.IterateParts()) { ViewPart viewPart = new ViewPart(); if (current.Equipment != null) { EquipmentModelDefinition.Part eqPart = current.Equipment.Parts[current.Index]; list2.Add(AvatarView.CreatePartContent(this.Model, viewPart, current, eqPart)); if (current.Decals != null) { AvatarView.CreateDecalContent(viewPart, current, list); } } else { BodyViewDefinition bodyViewDefinition = this.Model.Definition.Slots[current.Index].LOD[this.Model.LodLevel]; bodyViewDefinition.ApplyToViewPart(viewPart); } this.partViews.Add(viewPart); } this.partsRequest = this.outfitService.Load <EquipmentViewDefinition>(list2, this.outfitService.EquipmentPartCache, null); this.decalsRequest = this.outfitService.Load <Texture2D>(list, this.outfitService.DecalCache, null); } }
private void ejectRemainingParts(HashSet <AvatarModel.Part> partsToEject) { foreach (AvatarModel.Part current in partsToEject) { EquipmentModelDefinition.Part partDefinition = this.GetPartDefinition(current); AvatarModel.Part part = this.GetPart(partDefinition.SlotIndex, partDefinition.PartType); if (part == current) { this.changePart(partDefinition, null); } } }
private void ejectRemainingParts(HashSet <Part> partsToEject) { foreach (Part item in partsToEject) { EquipmentModelDefinition.Part partDefinition = GetPartDefinition(item); Part part = GetPart(partDefinition.SlotIndex, partDefinition.PartType); if (part == item) { changePart(partDefinition, null); } } }
private void applyParts(EquipmentModelDefinition eqDefToApply, DCustomEquipment customEqToApply, HashSet <AvatarModel.Part> partsAdded) { for (int i = 0; i < eqDefToApply.Parts.Length; i++) { DCustomEquipmentDecal[] decals = null; EquipmentModelDefinition.Part newPartDef = eqDefToApply.Parts[i]; if (customEqToApply.Parts != null) { for (int j = 0; j < customEqToApply.Parts.Length; j++) { if (customEqToApply.Parts[j].SlotIndex == newPartDef.SlotIndex) { decals = customEqToApply.Parts[j].Decals; break; } } } AvatarModel.Part part = new AvatarModel.Part(eqDefToApply, i, decals); this.changePart(newPartDef, part); partsAdded.Add(part); } }
public void Apply(AvatarModel.Part newPart) { base.startWork(); if (newPart != null) { if (newPart.Equipment != null) { this.cleanupLoading(); EquipmentModelDefinition.Part eqPart = newPart.Equipment.Parts[newPart.Index]; KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> >[] content = new KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> >[] { AvatarView.CreatePartContent(this.Model, this.partView, newPart, eqPart) }; List <KeyValuePair <TypedAssetContentKey <Texture2D>, Action <Texture2D> > > list = new List <KeyValuePair <TypedAssetContentKey <Texture2D>, Action <Texture2D> > >(); if (newPart.Decals != null) { AvatarView.CreateDecalContent(this.partView, newPart, list); } this.loadingEquipmentRequest = this.outfitService.Load <EquipmentViewDefinition>(content, this.outfitService.EquipmentPartCache, null); this.loadingDecalRequest = this.outfitService.Load <Texture2D>(list, this.outfitService.DecalCache, null); } else { this.cleanupCurrent(); BodyViewDefinition bodyViewDefinition = this.Model.Definition.Slots[newPart.Index].LOD[this.Model.LodLevel]; bodyViewDefinition.ApplyToViewPart(this.partView); this.setupRenderer(); base.stopWork(); } base.gameObject.SetActive(true); } else { base.gameObject.SetActive(false); this.cleanupCurrent(); base.stopWork(); } }
public TypedAssetContentKey <EquipmentViewDefinition> CreatePartKey(EquipmentModelDefinition equipment, EquipmentModelDefinition.Part eqPart, int lodLevel) { string text = $"{equipment.Name}_{PartTypeStrings[(int)eqPart.PartType]}_{Slots[eqPart.SlotIndex].Name}_{lodLevel}LOD"; return(new TypedAssetContentKey <EquipmentViewDefinition>(DEFINITION_KEYPATTERN, text)); }
private AvatarModel.Part _GetConnectedParts_b__6(EquipmentModelDefinition.Part p) { return(this.GetPart(p.SlotIndex, p.PartType)); }
public static KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> > CreatePartContent(AvatarModel model, ViewPart partView, AvatarModel.Part modelPart, EquipmentModelDefinition.Part eqPart) { TypedAssetContentKey <EquipmentViewDefinition> key = model.Definition.CreatePartKey(modelPart.Equipment, eqPart, model.LodLevel); return(new KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> >(key, delegate(EquipmentViewDefinition eq) { onPartDefinitionLoaded(partView, eq); })); }
public TypedAssetContentKey <EquipmentViewDefinition> CreatePartKey(EquipmentModelDefinition equipment, EquipmentModelDefinition.Part eqPart, int lodLevel) { string text = string.Format("{0}_{1}_{2}_{3}LOD", new object[] { equipment.Name, AvatarDefinition.PartTypeStrings[(int)eqPart.PartType], this.Slots[eqPart.SlotIndex].Name, lodLevel }); return(new TypedAssetContentKey <EquipmentViewDefinition>(AvatarDefinition.DEFINITION_KEYPATTERN, new string[] { text })); }
public static KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> > CreatePartContent(AvatarModel model, ViewPart partView, AvatarModel.Part modelPart, EquipmentModelDefinition.Part eqPart) { AvatarView.__c__DisplayClass1 __c__DisplayClass = new AvatarView.__c__DisplayClass1(); __c__DisplayClass.partView = partView; TypedAssetContentKey <EquipmentViewDefinition> key = model.Definition.CreatePartKey(modelPart.Equipment, eqPart, model.LodLevel); return(new KeyValuePair <TypedAssetContentKey <EquipmentViewDefinition>, Action <EquipmentViewDefinition> >(key, new Action <EquipmentViewDefinition>(__c__DisplayClass._CreatePartContent_b__0))); }