Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        private void changePart(EquipmentModelDefinition.Part newPartDef, AvatarModel.Part newPart)
        {
            int slotIndex = newPartDef.SlotIndex;
            int partType  = (int)newPartDef.PartType;

            this.changePart(slotIndex, partType, newPart);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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);
         }
     }
 }
Ejemplo n.º 6
0
 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);
         }
     }
 }
Ejemplo n.º 7
0
 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();
     }
 }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
 private AvatarModel.Part _GetConnectedParts_b__6(EquipmentModelDefinition.Part p)
 {
     return(this.GetPart(p.SlotIndex, p.PartType));
 }
Ejemplo n.º 11
0
        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
            }));
        }
Ejemplo n.º 13
0
        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)));
        }