private void OverrideClawArm()
        {
            Main.graphics.ArmsTemplateCache.TryGetValue(ArmTemplate.ClawArm, out GameObject armPrefab);

            SkinnedMeshRenderer smr = armPrefab.GetComponentInChildren <SkinnedMeshRenderer>();
            Mesh clawMesh           = smr.sharedMesh;

            MeshFilter mf = PrefabClone.GetComponentInChildren <MeshFilter>();

            mf.sharedMesh = Object.Instantiate(clawMesh);

            MeshRenderer mr = PrefabClone.GetComponentInChildren <MeshRenderer>();

            mr.materials = (Material[])smr.materials.Clone();

            Object.Destroy(PrefabClone.GetComponentInChildren <CapsuleCollider>());

            BoxCollider bc_1 = PrefabClone.FindChild("collider").AddComponent <BoxCollider>();

            bc_1.size   = new Vector3(1.29f, 0.33f, 0.42f);
            bc_1.center = new Vector3(-0.53f, 0f, 0.04f);

            GameObject collider2 = new GameObject("collider2");

            collider2.transform.SetParent(PrefabClone.transform, false);
            collider2.transform.localPosition = new Vector3(-1.88f, 0.07f, 0.50f);
            collider2.transform.localRotation = Quaternion.Euler(0, 34, 0);

            BoxCollider bc_2 = collider2.AddComponent <BoxCollider>();

            bc_2.size   = new Vector3(1.06f, 0.23f, 0.31f);
            bc_2.center = new Vector3(0, -0.08f, 0);
        }
Esempio n. 2
0
        public override GameObject GetGameObject()
        {
            base.GetGameObject();

            var exosuit = ArmServices.main.ExosuitResource;

            GameObject armPrefab = null;

            for (int i = 0; i < exosuit.armPrefabs.Length; i++)
            {
                if (exosuit.armPrefabs[i].techType == TechType.ExosuitClawArmModule)
                {
                    armPrefab = exosuit.armPrefabs[i].prefab;
                    break;
                }
            }

            SkinnedMeshRenderer smr = armPrefab.GetComponentInChildren <SkinnedMeshRenderer>();
            Mesh clawMesh           = smr.sharedMesh;

            MeshFilter mf = PrefabClone.GetComponentInChildren <MeshFilter>();

            mf.sharedMesh      = UnityEngine.Object.Instantiate(clawMesh);
            mf.sharedMesh.name = "seamoth_hand_geo";

            MeshRenderer mr = PrefabClone.GetComponentInChildren <MeshRenderer>();

            mr.materials = (Material[])smr.materials.Clone();

            PrefabClone.transform.Find("model/exosuit_rig_armLeft:exosuit_drill_geo").gameObject.name = "seamoth_claw_arm_geo";

            UnityEngine.Object.Destroy(PrefabClone.GetComponentInChildren <CapsuleCollider>());

            BoxCollider bc_1 = PrefabClone.FindChild("collider").AddComponent <BoxCollider>();

            bc_1.size   = new Vector3(1.29f, 0.33f, 0.42f);
            bc_1.center = new Vector3(-0.53f, 0f, 0.04f);

            GameObject collider2 = new GameObject("collider2");

            collider2.transform.SetParent(PrefabClone.transform, false);
            collider2.transform.localPosition = new Vector3(-1.88f, 0.07f, 0.50f);
            collider2.transform.localRotation = Quaternion.Euler(0, 34, 0);

            BoxCollider bc_2 = collider2.AddComponent <BoxCollider>();

            bc_2.size   = new Vector3(1.06f, 0.23f, 0.31f);
            bc_2.center = new Vector3(0, -0.08f, 0);

            PrefabClone.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);

            return(PrefabClone);
        }