// Token: 0x06000D6F RID: 3439 RVA: 0x0003C4CB File Offset: 0x0003A6CB
        private IEnumerator HighlightNewItem(ItemIndex itemIndex)
        {
            yield return(new WaitForSeconds(0.05f));

            CharacterMaster component = base.GetComponent <CharacterMaster>();

            if (component)
            {
                GameObject bodyObject = component.GetBodyObject();
                if (bodyObject)
                {
                    ModelLocator component2 = bodyObject.GetComponent <ModelLocator>();
                    if (component2)
                    {
                        Transform modelTransform = component2.modelTransform;
                        if (modelTransform)
                        {
                            CharacterModel component3 = modelTransform.GetComponent <CharacterModel>();
                            if (component3)
                            {
                                component3.HighlightItemDisplay(itemIndex);
                            }
                        }
                    }
                }
            }
            yield break;
        }
        // Token: 0x06000EBE RID: 3774 RVA: 0x000489C0 File Offset: 0x00046BC0
        public void SimpleMuzzleFlash(GameObject effectPrefab, GameObject obj, string muzzleName, bool transmit)
        {
            if (!obj)
            {
                return;
            }
            ModelLocator component = obj.GetComponent <ModelLocator>();

            if (component && component.modelTransform)
            {
                ChildLocator component2 = component.modelTransform.GetComponent <ChildLocator>();
                if (component2)
                {
                    int       childIndex = component2.FindChildIndex(muzzleName);
                    Transform transform  = component2.FindChild(childIndex);
                    if (transform)
                    {
                        EffectData effectData = new EffectData
                        {
                            origin = transform.position
                        };
                        effectData.SetChildLocatorTransformReference(obj, childIndex);
                        EffectManager.instance.SpawnEffect(effectPrefab, effectData, transmit);
                    }
                }
            }
        }
 // Token: 0x060015D7 RID: 5591 RVA: 0x0005D1FC File Offset: 0x0005B3FC
 private Transform FindAttachmentTransform()
 {
     this.projectileGhostController = base.GetComponent <ProjectileGhostController>();
     if (this.projectileGhostController)
     {
         Transform authorityTransform = this.projectileGhostController.authorityTransform;
         if (authorityTransform)
         {
             ProjectileController component = authorityTransform.GetComponent <ProjectileController>();
             if (component)
             {
                 GameObject owner = component.owner;
                 if (owner)
                 {
                     ModelLocator component2 = owner.GetComponent <ModelLocator>();
                     if (component2)
                     {
                         Transform modelTransform = component2.modelTransform;
                         if (modelTransform)
                         {
                             ChildLocator component3 = modelTransform.GetComponent <ChildLocator>();
                             if (component3)
                             {
                                 return(component3.FindChild(this.attachmentString));
                             }
                         }
                     }
                 }
             }
         }
     }
     return(null);
 }
示例#4
0
        // Token: 0x06000A12 RID: 2578 RVA: 0x000322FF File Offset: 0x000304FF
        private static IEnumerator GeneratePortraits()
        {
            ModelPanel modelPanel = UnityEngine.Object.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/UI/IconGenerator")).GetComponentInChildren <ModelPanel>();

            yield return(new WaitForEndOfFrame());

            int num;

            for (int i = 0; i < BodyCatalog.bodyPrefabs.Length; i = num)
            {
                if (BodyCatalog.bodyPrefabBodyComponents[i] && (!BodyCatalog.bodyPrefabBodyComponents[i].portraitIcon || BodyCatalog.bodyPrefabBodyComponents[i].portraitIcon.name == "texDifficultyNormalIcon"))
                {
                    try
                    {
                        Debug.LogFormat("Generating portrait for {0}", new object[]
                        {
                            BodyCatalog.bodyPrefabs[i].name
                        });
                        ModelPanel   modelPanel2 = modelPanel;
                        ModelLocator component   = BodyCatalog.bodyPrefabs[i].GetComponent <ModelLocator>();
                        modelPanel2.modelPrefab = ((component != null) ? component.modelTransform.gameObject : null);
                        modelPanel.SetAnglesForCharacterThumbnail(true);
                    }
                    catch (Exception message)
                    {
                        Debug.Log(message);
                    }
                    yield return(new WaitForSeconds(1f));

                    modelPanel.SetAnglesForCharacterThumbnail(true);
                    yield return(new WaitForEndOfFrame());

                    yield return(new WaitForEndOfFrame());

                    try
                    {
                        Texture2D     texture2D = new Texture2D(modelPanel.renderTexture.width, modelPanel.renderTexture.height, TextureFormat.ARGB32, false, false);
                        RenderTexture active    = RenderTexture.active;
                        RenderTexture.active = modelPanel.renderTexture;
                        texture2D.ReadPixels(new Rect(0f, 0f, (float)modelPanel.renderTexture.width, (float)modelPanel.renderTexture.height), 0, 0, false);
                        RenderTexture.active = active;
                        byte[] array = texture2D.EncodeToPNG();
                        using (FileStream fileStream = new FileStream("Assets/RoR2/GeneratedPortraits/" + BodyCatalog.bodyPrefabs[i].name + ".png", FileMode.Create, FileAccess.Write))
                        {
                            fileStream.Write(array, 0, array.Length);
                        }
                    }
                    catch (Exception message2)
                    {
                        Debug.Log(message2);
                    }
                    yield return(new WaitForEndOfFrame());
                }
                num = i + 1;
            }
            UnityEngine.Object.Destroy(modelPanel.transform.root.gameObject);
            yield break;
        }
示例#5
0
 // Token: 0x060003EF RID: 1007 RVA: 0x0000F7B4 File Offset: 0x0000D9B4
 private static void SetBodyPrefabs([NotNull] GameObject[] newBodyPrefabs)
 {
     BodyCatalog.bodyPrefabs = HGArrayUtilities.Clone <GameObject>(newBodyPrefabs);
     BodyCatalog.bodyPrefabBodyComponents = new CharacterBody[BodyCatalog.bodyPrefabs.Length];
     BodyCatalog.bodyNames      = new string[BodyCatalog.bodyPrefabs.Length];
     BodyCatalog.bodyComponents = new Component[BodyCatalog.bodyPrefabs.Length][];
     BodyCatalog.skillSlots     = new GenericSkill[BodyCatalog.bodyPrefabs.Length][];
     BodyCatalog.skins          = new SkinDef[BodyCatalog.bodyPrefabs.Length][];
     BodyCatalog.nameToIndexMap.Clear();
     for (int i = 0; i < BodyCatalog.bodyPrefabs.Length; i++)
     {
         GameObject gameObject = BodyCatalog.bodyPrefabs[i];
         string     name       = gameObject.name;
         BodyCatalog.bodyNames[i]      = name;
         BodyCatalog.bodyComponents[i] = gameObject.GetComponents <Component>();
         BodyCatalog.skillSlots[i]     = gameObject.GetComponents <GenericSkill>();
         BodyCatalog.nameToIndexMap.Add(name, i);
         BodyCatalog.nameToIndexMap.Add(name + "(Clone)", i);
         (BodyCatalog.bodyPrefabBodyComponents[i] = gameObject.GetComponent <CharacterBody>()).bodyIndex = i;
         Texture2D    texture2D = Resources.Load <Texture2D>("Textures/BodyIcons/" + name);
         SkinDef[][]  array     = BodyCatalog.skins;
         int          num       = i;
         ModelLocator component = gameObject.GetComponent <ModelLocator>();
         SkinDef[]    array2;
         if (component == null)
         {
             array2 = null;
         }
         else
         {
             Transform modelTransform = component.modelTransform;
             if (modelTransform == null)
             {
                 array2 = null;
             }
             else
             {
                 ModelSkinController component2 = modelTransform.GetComponent <ModelSkinController>();
                 array2 = ((component2 != null) ? component2.skins : null);
             }
         }
         array[num] = (array2 ?? Array.Empty <SkinDef>());
         if (texture2D)
         {
             BodyCatalog.bodyPrefabBodyComponents[i].portraitIcon = texture2D;
         }
         else if (BodyCatalog.bodyPrefabBodyComponents[i].portraitIcon == null)
         {
             BodyCatalog.bodyPrefabBodyComponents[i].portraitIcon = Resources.Load <Texture2D>("Textures/MiscIcons/texMysteryIcon");
         }
         if (Language.IsTokenInvalid(BodyCatalog.bodyPrefabBodyComponents[i].baseNameToken))
         {
             BodyCatalog.bodyPrefabBodyComponents[i].baseNameToken = "UNIDENTIFIED";
         }
     }
     BodyCatalog.bodyCount = BodyCatalog.bodyPrefabs.Length;
 }
        // Token: 0x06000CC3 RID: 3267 RVA: 0x0003F598 File Offset: 0x0003D798
        private void Start()
        {
            this.UpdateAuthority();
            ModelLocator component = base.GetComponent <ModelLocator>();

            if (component)
            {
                this.modelAnimator = component.modelTransform.GetComponent <Animator>();
            }
        }
            // Token: 0x06000EE1 RID: 3809 RVA: 0x000420A4 File Offset: 0x000402A4
            private static ChildLocator LookUpChildLocator(Transform rootObject)
            {
                ModelLocator component = rootObject.GetComponent <ModelLocator>();

                if (!component)
                {
                    return(null);
                }
                Transform modelTransform = component.modelTransform;

                if (!modelTransform)
                {
                    return(null);
                }
                return(modelTransform.GetComponent <ChildLocator>());
            }
示例#8
0
        // Token: 0x06001630 RID: 5680 RVA: 0x0006A479 File Offset: 0x00068679
        private void Awake()
        {
            ModelLocator component = base.GetComponent <ModelLocator>();
            HurtBoxGroup hurtBoxGroup;

            if (component == null)
            {
                hurtBoxGroup = null;
            }
            else
            {
                Transform modelTransform = component.modelTransform;
                hurtBoxGroup = ((modelTransform != null) ? modelTransform.GetComponent <HurtBoxGroup>() : null);
            }
            this.hurtBoxGroup = hurtBoxGroup;
        }
示例#9
0
        // Token: 0x0600042E RID: 1070 RVA: 0x000111E4 File Offset: 0x0000F3E4
        public void Fire()
        {
            Vector3[] array = new Vector3[this.bulletCount];
            Vector3   up    = Vector3.up;
            Vector3   axis  = Vector3.Cross(up, this.aimVector);
            int       num   = 0;

            while ((long)num < (long)((ulong)this.bulletCount))
            {
                float   x      = UnityEngine.Random.Range(this.minSpread, this.maxSpread);
                float   z      = UnityEngine.Random.Range(0f, 360f);
                Vector3 vector = Quaternion.Euler(0f, 0f, z) * (Quaternion.Euler(x, 0f, 0f) * Vector3.forward);
                float   y      = vector.y;
                vector.y = 0f;
                float angle  = (Mathf.Atan2(vector.z, vector.x) * 57.29578f - 90f) * this.spreadYawScale;
                float angle2 = Mathf.Atan2(y, vector.magnitude) * 57.29578f * this.spreadPitchScale;
                array[num] = Quaternion.AngleAxis(angle, up) * (Quaternion.AngleAxis(angle2, axis) * this.aimVector);
                num++;
            }
            int     muzzleIndex = -1;
            Vector3 vector2     = this.origin;

            if (!this.weapon)
            {
                this.weapon = this.owner;
            }
            if (this.weapon)
            {
                ModelLocator component = this.weapon.GetComponent <ModelLocator>();
                if (component && component.modelTransform)
                {
                    ChildLocator component2 = component.modelTransform.GetComponent <ChildLocator>();
                    if (component2)
                    {
                        muzzleIndex = component2.FindChildIndex(this.muzzleName);
                    }
                }
            }
            int num2 = 0;

            while ((long)num2 < (long)((ulong)this.bulletCount))
            {
                this.FireSingle(array[num2], muzzleIndex);
                num2++;
            }
        }
        // Token: 0x06000CD8 RID: 3288 RVA: 0x00039A5C File Offset: 0x00037C5C
        public GameObject ResolveGameObject()
        {
            if (this.hurtBoxIndexPlusOne == 0)
            {
                return(this.rootObject);
            }
            GameObject gameObject = this.rootObject;

            HurtBox[] array;
            if (gameObject == null)
            {
                array = null;
            }
            else
            {
                ModelLocator component = gameObject.GetComponent <ModelLocator>();
                if (component == null)
                {
                    array = null;
                }
                else
                {
                    Transform modelTransform = component.modelTransform;
                    if (modelTransform == null)
                    {
                        array = null;
                    }
                    else
                    {
                        HurtBoxGroup component2 = modelTransform.GetComponent <HurtBoxGroup>();
                        array = ((component2 != null) ? component2.hurtBoxes : null);
                    }
                }
            }
            HurtBox[] array2 = array;
            if (array2 != null)
            {
                int num = (int)(this.hurtBoxIndexPlusOne - 1);
                if (num < array2.Length)
                {
                    return(array2[num].gameObject);
                }
            }
            return(null);
        }
        // Token: 0x060010DC RID: 4316 RVA: 0x00049D8C File Offset: 0x00047F8C
        private void Start()
        {
            this.characterDirection = base.GetComponent <CharacterDirection>();
            this.inputBank          = base.GetComponent <InputBankTest>();
            this.characterBody      = base.GetComponent <CharacterBody>();
            this.railGraph          = SceneInfo.instance.railNodes;
            ModelLocator component = base.GetComponent <ModelLocator>();

            if (component)
            {
                this.modelAnimator = component.modelTransform.GetComponent <Animator>();
            }
            this.nodeA = this.railGraph.FindClosestNode(base.transform.position, this.characterBody.hullClassification);
            NodeGraph.LinkIndex[] activeNodeLinks = this.railGraph.GetActiveNodeLinks(this.nodeA);
            this.currentLink = activeNodeLinks[0];
            this.UpdateNodeAndLinkInfo();
            this.useRootMotion = this.characterBody.rootMotionInMainState;
        }
 // Token: 0x06000AD6 RID: 2774 RVA: 0x000357B8 File Offset: 0x000339B8
 public Transform ResolveChildLocatorTransformReference()
 {
     if (this.rootObject)
     {
         if (this.modelChildIndex == -1)
         {
             return(this.rootObject.transform);
         }
         ModelLocator component = this.rootObject.GetComponent <ModelLocator>();
         if (component && component.modelTransform)
         {
             ChildLocator component2 = component.modelTransform.GetComponent <ChildLocator>();
             if (component2)
             {
                 return(component2.FindChild((int)this.modelChildIndex));
             }
         }
     }
     return(null);
 }
        // Token: 0x060007F7 RID: 2039 RVA: 0x00022934 File Offset: 0x00020B34
        public void OnDeath()
        {
            if (Util.HasEffectiveAuthority(base.gameObject))
            {
                if (this.deathStateMachine)
                {
                    this.deathStateMachine.SetNextState(EntityState.Instantiate(this.deathState));
                }
                EntityStateMachine[] array = this.idleStateMachine;
                for (int i = 0; i < array.Length; i++)
                {
                    array[i].SetNextState(new Idle());
                }
            }
            base.gameObject.layer = LayerIndex.debris.intVal;
            CharacterMotor component = base.GetComponent <CharacterMotor>();

            if (component)
            {
                component.Motor.RebuildCollidableLayers();
            }
            ILifeBehavior[] components = base.GetComponents <ILifeBehavior>();
            for (int i = 0; i < components.Length; i++)
            {
                components[i].OnDeathStart();
            }
            ModelLocator component2 = base.GetComponent <ModelLocator>();

            if (component2)
            {
                Transform modelTransform = component2.modelTransform;
                if (modelTransform)
                {
                    components = modelTransform.GetComponents <ILifeBehavior>();
                    for (int i = 0; i < components.Length; i++)
                    {
                        components[i].OnDeathStart();
                    }
                }
            }
        }
示例#14
0
        public CharacterMaster OpenSummonReturnMaster(Interactor activator)
        {
            if (!NetworkServer.active)
            {
                Debug.LogWarning("[Server] function 'RoR2.CharacterMaster RoR2.SummonMasterBehavior::OpenSummonReturnMaster(RoR2.Interactor)' called on client");
                return(null);
            }
            float           d = 0f;
            CharacterMaster characterMaster = new MasterSummon
            {
                masterPrefab          = this.masterPrefab,
                position              = base.transform.position + Vector3.up * d,
                rotation              = base.transform.rotation,
                summonerBodyObject    = ((activator != null) ? activator.gameObject : null),
                ignoreTeamMemberLimit = true
            }.Perform();

            if (characterMaster)
            {
                GameObject bodyObject = characterMaster.GetBodyObject();
                if (bodyObject)
                {
                    ModelLocator component = bodyObject.GetComponent <ModelLocator>();
                    if (component && component.modelTransform)
                    {
                        TemporaryOverlay temporaryOverlay = component.modelTransform.gameObject.AddComponent <TemporaryOverlay>();
                        temporaryOverlay.duration              = 0.5f;
                        temporaryOverlay.animateShaderAlpha    = true;
                        temporaryOverlay.alphaCurve            = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
                        temporaryOverlay.destroyComponentOnEnd = true;
                        temporaryOverlay.originalMaterial      = Resources.Load <Material>("Materials/matSummonDrone");
                        temporaryOverlay.AddToCharacerModel(component.modelTransform.GetComponent <CharacterModel>());
                    }
                }
            }
            if (this.destroyAfterSummoning)
            {
                UnityEngine.Object.Destroy(base.gameObject);
            }
            return(characterMaster);
        }
 // Token: 0x060016AB RID: 5803 RVA: 0x0006C140 File Offset: 0x0006A340
 public override void OnStartClient()
 {
     base.OnStartClient();
     if (this.target)
     {
         ModelLocator component = this.target.GetComponent <ModelLocator>();
         if (component)
         {
             Transform modelTransform = component.modelTransform;
             if (modelTransform)
             {
                 CharacterModel component2 = modelTransform.GetComponent <CharacterModel>();
                 if (component2)
                 {
                     TeleportOutController.AddTPOutEffect(component2, 0f, 1f, 2f);
                     if (component2.rendererInfos.Length != 0)
                     {
                         Renderer renderer = component2.rendererInfos[component2.rendererInfos.Length - 1].renderer;
                         if (renderer)
                         {
                             ParticleSystem.ShapeModule shape = this.bodyGlowParticles.shape;
                             if (renderer is MeshRenderer)
                             {
                                 shape.shapeType    = ParticleSystemShapeType.MeshRenderer;
                                 shape.meshRenderer = (renderer as MeshRenderer);
                             }
                             else if (renderer is SkinnedMeshRenderer)
                             {
                                 shape.shapeType           = ParticleSystemShapeType.SkinnedMeshRenderer;
                                 shape.skinnedMeshRenderer = (renderer as SkinnedMeshRenderer);
                             }
                         }
                     }
                 }
             }
         }
     }
     this.bodyGlowParticles.Play();
     Util.PlaySound(TeleportOutController.tpOutSoundString, base.gameObject);
 }
        // Token: 0x06001155 RID: 4437 RVA: 0x0005635C File Offset: 0x0005455C
        private Transform FindWings()
        {
            ModelLocator component = this.targetObject.GetComponent <ModelLocator>();

            if (component)
            {
                Transform modelTransform = component.modelTransform;
                if (modelTransform)
                {
                    CharacterModel component2 = modelTransform.GetComponent <CharacterModel>();
                    if (component2)
                    {
                        List <GameObject> equipmentDisplayObjects = component2.GetEquipmentDisplayObjects(EquipmentIndex.Jetpack);
                        if (equipmentDisplayObjects.Count > 0)
                        {
                            return(equipmentDisplayObjects[0].transform);
                        }
                    }
                }
            }
            return(null);
        }
        // Token: 0x06000A94 RID: 2708 RVA: 0x0002E1BC File Offset: 0x0002C3BC
        public Transform FindActiveEquipmentDisplay()
        {
            ModelLocator component = base.GetComponent <ModelLocator>();

            if (component)
            {
                Transform modelTransform = component.modelTransform;
                if (modelTransform)
                {
                    CharacterModel component2 = modelTransform.GetComponent <CharacterModel>();
                    if (component2)
                    {
                        List <GameObject> equipmentDisplayObjects = component2.GetEquipmentDisplayObjects(this.equipmentIndex);
                        if (equipmentDisplayObjects.Count > 0)
                        {
                            return(equipmentDisplayObjects[0].transform);
                        }
                    }
                }
            }
            return(null);
        }
        // Token: 0x06000AD4 RID: 2772 RVA: 0x00035740 File Offset: 0x00033940
        public GameObject ResolveHurtBoxReference()
        {
            if (this.modelChildIndex == -1)
            {
                return(this.rootObject);
            }
            GameObject gameObject = this.rootObject;

            if (gameObject == null)
            {
                return(null);
            }
            ModelLocator component = gameObject.GetComponent <ModelLocator>();

            if (component == null)
            {
                return(null);
            }
            Transform modelTransform = component.modelTransform;

            if (modelTransform == null)
            {
                return(null);
            }
            HurtBoxGroup component2 = modelTransform.GetComponent <HurtBoxGroup>();

            if (component2 == null)
            {
                return(null);
            }
            HurtBox hurtBox = component2.hurtBoxes.ElementAtOrDefault((int)this.modelChildIndex);

            if (hurtBox == null)
            {
                return(null);
            }
            return(hurtBox.gameObject);
        }
 // Token: 0x060014D8 RID: 5336 RVA: 0x00058D2C File Offset: 0x00056F2C
 public void SetOwner(GameObject newOwner)
 {
     this.ownerInputBank     = null;
     this.ownerCharacterBody = null;
     this.isCrit             = false;
     this.Networkowner       = newOwner;
     if (this.owner)
     {
         this.ownerInputBank     = this.owner.GetComponent <InputBankTest>();
         this.ownerCharacterBody = this.owner.GetComponent <CharacterBody>();
         ModelLocator component = this.owner.GetComponent <ModelLocator>();
         if (component)
         {
             Transform modelTransform = component.modelTransform;
             if (modelTransform)
             {
                 ChildLocator component2 = modelTransform.GetComponent <ChildLocator>();
                 if (component2)
                 {
                     this.targetTransform = component2.FindChild("Chest");
                     if (this.targetTransform)
                     {
                         base.transform.rotation = this.targetTransform.rotation;
                     }
                 }
             }
         }
         base.transform.position = this.owner.transform.position + Vector3.down * 20f;
         if (NetworkServer.active && this.ownerCharacterBody)
         {
             CharacterMaster master = this.ownerCharacterBody.master;
             if (master)
             {
                 this.isCrit = Util.CheckRoll(this.ownerCharacterBody.crit, master);
             }
         }
     }
 }
        // Token: 0x06000A4B RID: 2635 RVA: 0x0002CD80 File Offset: 0x0002AF80
        private void FixedUpdate()
        {
            GameObject victimObject = this.victimObject;

            if (!victimObject)
            {
                if (NetworkServer.active)
                {
                    UnityEngine.Object.Destroy(base.gameObject);
                }
                return;
            }
            if (NetworkServer.active)
            {
                for (DotController.DotIndex dotIndex = DotController.DotIndex.Bleed; dotIndex < DotController.DotIndex.Count; dotIndex++)
                {
                    DotController.DotDef dotDef = this.GetDotDef(dotIndex);
                    float num = this.dotTimers[(int)dotIndex] - Time.fixedDeltaTime;
                    if (num <= 0f)
                    {
                        num += dotDef.interval;
                        int num2 = 0;
                        this.EvaluateDotStacksForType(dotIndex, dotDef.interval, out num2);
                        byte b = (byte)(1 << (int)dotIndex);
                        this.NetworkactiveDotFlags = (this.activeDotFlags & ~b);
                        if (num2 != 0)
                        {
                            this.NetworkactiveDotFlags = (this.activeDotFlags | b);
                        }
                    }
                    this.dotTimers[(int)dotIndex] = num;
                }
                if (this.dotStackList.Count == 0)
                {
                    UnityEngine.Object.Destroy(base.gameObject);
                }
            }
            if ((this.activeDotFlags & 1) != 0)
            {
                if (!this.bleedEffect)
                {
                    this.bleedEffect = UnityEngine.Object.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/BleedEffect"), base.transform);
                }
            }
            else if (this.bleedEffect)
            {
                UnityEngine.Object.Destroy(this.bleedEffect);
                this.bleedEffect = null;
            }
            if ((this.activeDotFlags & 2) != 0 || (this.activeDotFlags & 8) != 0)
            {
                if (!this.burnEffectController)
                {
                    ModelLocator component = victimObject.GetComponent <ModelLocator>();
                    if (component && component.modelTransform)
                    {
                        this.burnEffectController            = base.gameObject.AddComponent <BurnEffectController>();
                        this.burnEffectController.effectType = BurnEffectController.normalEffect;
                        this.burnEffectController.target     = component.modelTransform.gameObject;
                    }
                }
            }
            else if (this.burnEffectController)
            {
                UnityEngine.Object.Destroy(this.burnEffectController);
                this.burnEffectController = null;
            }
            if ((this.activeDotFlags & 4) != 0)
            {
                if (!this.helfireEffectController)
                {
                    ModelLocator component2 = victimObject.GetComponent <ModelLocator>();
                    if (component2 && component2.modelTransform)
                    {
                        this.helfireEffectController            = base.gameObject.AddComponent <BurnEffectController>();
                        this.helfireEffectController.effectType = BurnEffectController.helfireEffect;
                        this.helfireEffectController.target     = component2.modelTransform.gameObject;
                    }
                }
            }
            else if (this.helfireEffectController)
            {
                UnityEngine.Object.Destroy(this.helfireEffectController);
                this.helfireEffectController = null;
            }
            if ((this.activeDotFlags & 16) != 0)
            {
                if (!this.poisonEffect)
                {
                    this.poisonEffect = UnityEngine.Object.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/PoisonEffect"), base.transform);
                    return;
                }
            }
            else if (this.poisonEffect)
            {
                UnityEngine.Object.Destroy(this.poisonEffect);
                this.poisonEffect = null;
            }
        }
示例#21
0
        // Token: 0x060003F0 RID: 1008 RVA: 0x0000F96A File Offset: 0x0000DB6A
        private static IEnumerator GeneratePortraits(bool forceRegeneration)
        {
            BodyCatalog.< > c__DisplayClass33_0 CS$ < > 8__locals1 = new BodyCatalog.< > c__DisplayClass33_0();
            Debug.Log("Starting portrait generation.");
            CS$ < > 8__locals1.modelPanel = UnityEngine.Object.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/UI/IconGenerator")).GetComponentInChildren <ModelPanel>();
            yield return(new WaitForEndOfFrame());

            int num2;

            for (int i = 0; i < BodyCatalog.bodyPrefabs.Length; i = num2)
            {
                CharacterBody characterBody = BodyCatalog.bodyPrefabBodyComponents[i];
                if (characterBody && (forceRegeneration || !characterBody.portraitIcon || characterBody.portraitIcon.name == "texMysteryIcon"))
                {
                    float num = 1f;
                    try
                    {
                        Debug.LogFormat("Generating portrait for {0}", new object[]
                        {
                            BodyCatalog.bodyPrefabs[i].name
                        });
                        ModelPanel   modelPanel = CS$ < > 8__locals1.modelPanel;
                        ModelLocator component  = BodyCatalog.bodyPrefabs[i].GetComponent <ModelLocator>();
                        modelPanel.modelPrefab = ((component != null) ? component.modelTransform.gameObject : null);
                        CS$ < > 8__locals1.modelPanel.SetAnglesForCharacterThumbnail(true);
                        GameObject      modelPrefab = CS$ < > 8__locals1.modelPanel.modelPrefab;
                        PrintController printController;
                        if ((printController = ((modelPrefab != null) ? modelPrefab.GetComponentInChildren <PrintController>() : null)) != null)
                        {
                            num = Mathf.Max(num, printController.printTime + 1f);
                        }
                        GameObject       modelPrefab2 = CS$ < > 8__locals1.modelPanel.modelPrefab;
                        TemporaryOverlay temporaryOverlay;
                        if ((temporaryOverlay = ((modelPrefab2 != null) ? modelPrefab2.GetComponentInChildren <TemporaryOverlay>() : null)) != null)
                        {
                            num = Mathf.Max(num, temporaryOverlay.duration + 1f);
                        }
                    }
                    catch (Exception message)
                    {
                        Debug.Log(message);
                    }
                    RoR2Application.onLateUpdate += CS$ < > 8__locals1.< GeneratePortraits > g__UpdateCamera | 0;
                    yield return(new WaitForSeconds(num));

                    CS$ < > 8__locals1.modelPanel.SetAnglesForCharacterThumbnail(true);
                    yield return(new WaitForEndOfFrame());

                    yield return(new WaitForEndOfFrame());

                    try
                    {
                        Texture2D     texture2D = new Texture2D(CS$ < > 8__locals1.modelPanel.renderTexture.width, CS$ < > 8__locals1.modelPanel.renderTexture.height, TextureFormat.ARGB32, false, false);
                        RenderTexture active    = RenderTexture.active;
                        RenderTexture.active = CS$ < > 8__locals1.modelPanel.renderTexture;
                        texture2D.ReadPixels(new Rect(0f, 0f, (float)CS$ < > 8__locals1.modelPanel.renderTexture.width, (float)CS$ < > 8__locals1.modelPanel.renderTexture.height), 0, 0, false);
                        RenderTexture.active = active;
                        byte[] array = texture2D.EncodeToPNG();
                        using (FileStream fileStream = new FileStream("Assets/RoR2/GeneratedPortraits/" + BodyCatalog.bodyPrefabs[i].name + ".png", FileMode.Create, FileAccess.Write))
                        {
                            fileStream.Write(array, 0, array.Length);
                        }
                    }
                    catch (Exception message2)
                    {
                        Debug.Log(message2);
                    }
                    RoR2Application.onLateUpdate -= CS$ < > 8__locals1.< GeneratePortraits > g__UpdateCamera | 0;
                    yield return(new WaitForEndOfFrame());
                }
                num2 = i + 1;
            }
            UnityEngine.Object.Destroy(CS$ < > 8__locals1.modelPanel.transform.root.gameObject);
            Debug.Log("Portrait generation complete.");
            yield break;
        }