Esempio n. 1
0
    // Token: 0x06000422 RID: 1058 RVA: 0x00021830 File Offset: 0x0001FA30
    public GameObject[] Create(Vector3 pos, Quaternion rot, Transform parent = null, float scale = 1f)
    {
        List <GameObject> list = new List <GameObject>();

        for (int i = 0; i < this.m_effectPrefabs.Length; i++)
        {
            EffectList.EffectData effectData = this.m_effectPrefabs[i];
            if (effectData.m_enabled)
            {
                if (parent && this.m_effectPrefabs[i].m_inheritParentRotation)
                {
                    rot = parent.rotation;
                }
                if (effectData.m_randomRotation)
                {
                    rot = UnityEngine.Random.rotation;
                }
                GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(effectData.m_prefab, pos, rot);
                if (effectData.m_scale)
                {
                    if (parent && this.m_effectPrefabs[i].m_inheritParentScale)
                    {
                        Vector3 localScale = parent.localScale * scale;
                        gameObject.transform.localScale = localScale;
                    }
                    else
                    {
                        gameObject.transform.localScale = new Vector3(scale, scale, scale);
                    }
                }
                else if (parent && this.m_effectPrefabs[i].m_inheritParentScale)
                {
                    gameObject.transform.localScale = parent.localScale;
                }
                if (effectData.m_attach && parent != null)
                {
                    gameObject.transform.SetParent(parent);
                }
                list.Add(gameObject);
            }
        }
        return(list.ToArray());
    }
        public void CompileAndAddPiece()
        {
            Piece myPieceData = myPiece.GetComponent <Piece>();

            if (myPieceData != null)
            {
                myPieceData.m_craftingStation = MyReferences.listOfCraftingStations[craftingStationName.GetStableHashCode()];
                //Compile Place Effects
                if (placeEffectNames != null && placeEffectNames.Count > 0)
                {
                    EffectList newList = new EffectList();
                    List <EffectList.EffectData> newEffectData = new List <EffectList.EffectData>();
                    foreach (string effectName in placeEffectNames)
                    {
                        EffectList.EffectData compiledEffectData = new EffectList.EffectData();
                        compiledEffectData.m_prefab = MyReferences.listOfEffects[effectName.GetStableHashCode()];
                        newEffectData.Add(compiledEffectData);
                    }
                    newList.m_effectPrefabs   = newEffectData.ToArray();
                    myPieceData.m_placeEffect = newList;
                }
            }

            WearNTear myWearNTear = myPiece.GetComponent <WearNTear>();

            if (myWearNTear != null)
            {
                //Compile Destroyed, Hit, and Switch Effects
                if (destoryedEffectNames != null && destoryedEffectNames.Count > 0)
                {
                    EffectList newList = new EffectList();
                    List <EffectList.EffectData> newEffectData = new List <EffectList.EffectData>();
                    foreach (string effectName in destoryedEffectNames)
                    {
                        EffectList.EffectData compiledEffectData = new EffectList.EffectData();
                        compiledEffectData.m_prefab = MyReferences.listOfEffects[effectName.GetStableHashCode()];
                        newEffectData.Add(compiledEffectData);
                    }
                    newList.m_effectPrefabs       = newEffectData.ToArray();
                    myWearNTear.m_destroyedEffect = newList;
                }

                if (hitEffectNames != null && hitEffectNames.Count > 0)
                {
                    EffectList newList = new EffectList();
                    List <EffectList.EffectData> newEffectData = new List <EffectList.EffectData>();
                    foreach (string effectName in hitEffectNames)
                    {
                        EffectList.EffectData compiledEffectData = new EffectList.EffectData();
                        compiledEffectData.m_prefab = MyReferences.listOfEffects[effectName.GetStableHashCode()];
                        newEffectData.Add(compiledEffectData);
                    }
                    newList.m_effectPrefabs = newEffectData.ToArray();
                    myWearNTear.m_hitEffect = newList;
                }

                if (switchEffectNames != null && switchEffectNames.Count > 0)
                {
                    EffectList newList = new EffectList();
                    List <EffectList.EffectData> newEffectData = new List <EffectList.EffectData>();
                    foreach (string effectName in switchEffectNames)
                    {
                        EffectList.EffectData compiledEffectData = new EffectList.EffectData();
                        compiledEffectData.m_prefab = MyReferences.listOfEffects[effectName.GetStableHashCode()];
                        newEffectData.Add(compiledEffectData);
                    }
                    newList.m_effectPrefabs    = newEffectData.ToArray();
                    myWearNTear.m_switchEffect = newList;
                }
            }

            UpdateRequirements();

            AddPiece();
        }