void Start()
    {
        PlanarShadows.ShadowingLightDirection = ShadowingLight.transform.forward;
        PlanarShadows.ShadowColor             = ShadowColor;

        foreach (GameObject[] soldierGOs in _allSoldierGOs)
        {
            List <SkinnedMeshRenderer> teamSkinnedMeshRenderers = new List <SkinnedMeshRenderer>();
            Bounds localBounds = new Bounds(new Vector3(0.0f, 1f, 0.0f), new Vector3(10, 5f, 8f));

            foreach (GameObject soldierGO in soldierGOs)
            {
                SkinnedMeshRenderer[] soldierSkinnedMeshRenderers = soldierGO.GetComponentsInChildren <SkinnedMeshRenderer>();
                for (int i = 0; i < soldierSkinnedMeshRenderers.Length; ++i)
                {
                    teamSkinnedMeshRenderers.Add(soldierSkinnedMeshRenderers[i]);
                }

                Animation anim = soldierGO.GetComponent <Animation>();
                //AnimationState animState = anim["run"];
                //animState.time = Random.Range( 0f, animState.length - 0.1f );
                anim.CrossFade(_animationNames[Random.Range(0, _animationNames.Length - 1)]);
                //anim.Play( "run" );
            }

            GameObject teamGO = SkinnedMeshCombiner.Combine(teamSkinnedMeshRenderers, localBounds);
            PlanarShadows.EnableShadowOnGameObject(teamGO, true);
        }
    }
Exemple #2
0
 // Token: 0x06001284 RID: 4740 RVA: 0x0006E6A0 File Offset: 0x0006C8A0
 private static AvatarDecorator CreateAvatarMesh(AvatarGearParts gear)
 {
     SkinnedMeshCombiner.Combine(gear.Base, gear.Parts);
     gear.Parts.ForEach(delegate(GameObject obj)
     {
         UnityEngine.Object.Destroy(obj);
     });
     return(gear.Base.GetComponent <AvatarDecorator>());
 }
Exemple #3
0
    // Token: 0x06001282 RID: 4738 RVA: 0x0006E5A4 File Offset: 0x0006C7A4
    public static AvatarDecoratorConfig InstantiateRagdoll(AvatarGearParts gear, Color skinColor)
    {
        SkinnedMeshCombiner.Combine(gear.Base, gear.Parts);
        LayerUtil.SetLayerRecursively(gear.Base.transform, UberstrikeLayer.Ragdoll);
        gear.Base.GetComponent <SkinnedMeshRenderer>().updateWhenOffscreen = true;
        AvatarDecoratorConfig component = gear.Base.GetComponent <AvatarDecoratorConfig>();

        component.SetSkinColor(skinColor);
        return(component);
    }
Exemple #4
0
    // Token: 0x06001502 RID: 5378 RVA: 0x00076CDC File Offset: 0x00074EDC
    private AvatarDecoratorConfig CreateLutzRavinoff(Loadout gearLoadout)
    {
        AvatarDecoratorConfig defaultRagdoll        = PrefabManager.Instance.DefaultRagdoll;
        AvatarDecoratorConfig avatarDecoratorConfig = UnityEngine.Object.Instantiate(defaultRagdoll) as AvatarDecoratorConfig;
        List <GameObject>     list = new List <GameObject>();

        SkinnedMeshCombiner.Combine(avatarDecoratorConfig.gameObject, list);
        foreach (GameObject obj in list)
        {
            UnityEngine.Object.Destroy(obj);
        }
        return(avatarDecoratorConfig);
    }
Exemple #5
0
    // Token: 0x06001503 RID: 5379 RVA: 0x00076D5C File Offset: 0x00074F5C
    private AvatarDecoratorConfig CreateHolo(IUnityItem holo)
    {
        AvatarDecoratorConfig avatarDecoratorConfig = null;
        GameObject            gameObject            = holo.Create(Vector3.zero, Quaternion.identity);
        HoloGearItem          component             = gameObject.GetComponent <HoloGearItem>();

        if (component && component.Configuration.Ragdoll)
        {
            avatarDecoratorConfig = (UnityEngine.Object.Instantiate(component.Configuration.Ragdoll) as AvatarDecoratorConfig);
            LayerUtil.SetLayerRecursively(avatarDecoratorConfig.transform, UberstrikeLayer.Ragdoll);
            SkinnedMeshCombiner.Combine(avatarDecoratorConfig.gameObject, new List <GameObject>());
        }
        UnityEngine.Object.Destroy(gameObject);
        return(avatarDecoratorConfig);
    }
Exemple #6
0
    IEnumerator LoadAvatar()
    {
        if (isLoading)
        {
            Debug.Log("Now Loading!");
            yield break;
        }

        // ルートボーン用のファイルを読み込む
        Debug.Log("rootBoneFileName " + rootBoneFileName);
        ResourceRequest bornReq = Resources.LoadAsync <GameObject>(rootBoneFileName);

        // 各パーツのファイルを読み込む
        for (int i = 0; i < partsNum; i++)
        {
            resourceReqs[i] = Resources.LoadAsync <Object>(selectedFileNames[i]);
        }

        // ロード待ち
        while (true)
        {
            bool isLoadEnd = true;
            for (int i = 0; i < partsNum; i++)
            {
                if (!resourceReqs[i].isDone)
                {
                    isLoadEnd = false;
                }
            }

            if (isLoadEnd)
            {
                break;
            }
            yield return(null);
        }

        while (!bornReq.isDone)
        {
            yield return(null);
        }

        // Resourcesから必要なファイルを読み込み終わったら、空のGameObjectを生成
        GameObject root = new GameObject();

        root.transform.position   = Vector3.zero;
        root.transform.localScale = Vector3.one;
        root.name = "Avatar";

        // 生成した空のGameObjectにSkinnedMeshCombinerを追加する(以下、Root)
        SkinnedMeshCombiner smc = root.AddComponent <SkinnedMeshCombiner>();

        if (bornReq.asset == null)
        {
            Debug.LogError("born asset is null");
        }
        // ルートボーン用のファイルをInstantiateする
        GameObject rootBone = (GameObject)Instantiate(bornReq.asset as GameObject);

        if (rootBone != null)
        {
            rootBone.transform.parent        = root.transform;
            rootBone.transform.localPosition = Vector3.zero;
            rootBone.transform.localScale    = Vector3.one;
            rootBone.transform.localRotation = Quaternion.identity;
            smc.rootBoneObject = rootBone.transform;
        }
        else
        {
            Debug.LogError("Root Bone Instantiate Error!");
            yield break;
        }

        // Rootの下に読み込んだファイル一式をInstanTiateする
        for (int i = 0; i < partsNum; i++)
        {
            GameObject obj = (GameObject)Instantiate(resourceReqs[i].asset);
            if (obj != null)
            {
                Debug.Log("[" + i + "] " + obj.name);
                obj.transform.parent        = root.transform;
                obj.transform.localPosition = Vector3.zero;
                obj.transform.localScale    = Vector3.one;
                obj.transform.localRotation = Quaternion.identity;
                // 生成したモデルをRootのSkinnedMeshCombinerの各種プロパティに設定する
                smc.equipPartsObjectList[i] = obj;
            }
        }

        // レッツ・コンバイン
        smc.Combine();

        // AvatarTest.playerにRootを割り当てる(古いRootは削除する)
        if (player != null)
        {
            GameObject.DestroyImmediate(player);
            player = null;
        }

        player = root;
    }