コード例 #1
0
 static void Postfix(PropulsionCannon __instance)
 {
     if (Player.main.GetVehicle() != null)
     {
         __instance.animator.SetBool("cangrab_propulsioncannon", __instance.grabbedObject != null);
     }
 }
コード例 #2
0
        public static bool Filter(InventoryItem item, PropulsionCannon __instance, ref bool __result)
        {
            var baseInstance = (MonoBehaviour)__instance;

            __result = !(item == null || item.item == null || baseInstance.transform.IsChildOf(item.item.GetComponent <Transform>()));

            return(false);
        }
コード例 #3
0
        public static bool ValidateNewObject(GameObject go, PropulsionCannon __instance, ref bool __result)
        {
            bool result = false;

            ValidateObject(go, __instance, ref result);

            __result = result;
            return(false);
        }
コード例 #4
0
        public static void TraceForGrabTargetPre(PropulsionCannon __instance)
        {
            var c = C;

            __instance.maxMass           = float.MaxValue;
            __instance.maxAABBVolume     = float.MaxValue;
            __instance.pickupDistance    = c.PickupDistance;
            __instance.attractionForce   = c.AttractionForce;
            __instance.shootForce        = c.ShootForce;
            __instance.massScalingFactor = c.MassScalingFactor;
        }
コード例 #5
0
        public static bool ValidateObject(GameObject go, PropulsionCannon __instance, ref bool __result)
        {
            if (!go.activeSelf || !go.activeInHierarchy)
            {
                __result = false;
                Debug.Log("object is inactive");
                return(false);
            }

            __result = go.GetComponent <Rigidbody>() != null;
            return(false);
        }
コード例 #6
0
 private void Start()
 {
     ThisSeamoth.gameObject.AddIfNeedComponent <ImmuneToPropulsioncannon>();
     propulsionCannon = GetComponent <PropulsionCannon>();
     propulsionCannon.energyInterface   = ThisSeamoth.GetComponent <EnergyInterface>();
     propulsionCannon.shootForce        = 60f;
     propulsionCannon.attractionForce   = 145f;
     propulsionCannon.massScalingFactor = 0.005f;
     propulsionCannon.pickupDistance    = 25f;
     propulsionCannon.maxMass           = 1800f;
     propulsionCannon.maxAABBVolume     = 400f;
 }
コード例 #7
0
        public static bool ReleaseGrabbedObject(PropulsionCannon __instance)
        {
            if (__instance.grabbedObject != null)
            {
                PropulseCannonAmmoHandler component = __instance.grabbedObject.GetComponent <PropulseCannonAmmoHandler>();

                if (component != null)
                {
                    component.UndoChanges();
                    UnityEngine.Object.Destroy(component);
                }

                __instance.grabbedObject = null;
            }

            return(false);
        }
コード例 #8
0
        public static bool Prefix(PropulsionCannon __instance)
        {
            GameObject grabbed = __instance.grabbedObject;

            if (!grabbed)
            {
                return(false);
            }

            NitroxId            id = NitroxEntity.GetId(grabbed);
            SimulationOwnership simulationOwnership = NitroxServiceLocator.LocateService <SimulationOwnership>();

            // Request to be downgraded to a transient lock so we can still simulate the positioning.
            simulationOwnership.RequestSimulationLock(id, SimulationLockType.TRANSIENT);

            return(true);
        }
コード例 #9
0
        void ISeamothArm.SetSide(Arm arm)
        {
            if (propulsionCannon == null)
            {
                propulsionCannon = GetComponent <PropulsionCannon>();
            }

            if (arm == Arm.Right)
            {
                transform.localScale = new Vector3(-0.8f, 0.8f, 0.8f);
                propulsionCannon.localObjectOffset = new Vector3(0.75f, 0f, 0f);
            }
            else
            {
                transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
                propulsionCannon.localObjectOffset = new Vector3(-0.75f, 0f, 0f);
            }
        }
コード例 #10
0
        public static void TraceForGrabTarget(PropulsionCannon __instance, ref GameObject __result)
        {
            if (__result != null)
            {
                return;
            }

            Vector3    position       = MainCamera.camera.transform.position;
            int        layerMask      = ~(1 << LayerMask.NameToLayer("Player"));
            int        num            = UWE.Utils.SpherecastIntoSharedBuffer(position, 1.2f, MainCamera.camera.transform.forward, __instance.pickupDistance, layerMask);
            GameObject result         = null;
            float      num2           = float.PositiveInfinity;
            var        checkedObjects = new HashSet <GameObject>();

            for (int i = 0; i < num; i++)
            {
                RaycastHit raycastHit = UWE.Utils.sharedHitBuffer[i];

                var layer = raycastHit.collider.gameObject.layer;
                if (raycastHit.collider.isTrigger && (layer <= 8 || layer >= 19))
                {
                    continue;
                }

                GameObject entityRoot = UWE.Utils.GetEntityRoot(raycastHit.collider.gameObject);
                if (!(entityRoot != null) || checkedObjects.Contains(entityRoot))
                {
                    continue;
                }

                float sqrMagnitude = (raycastHit.point - position).sqrMagnitude;
                if (sqrMagnitude < num2 && __instance.ValidateNewObject(entityRoot, raycastHit.point))
                {
                    result = entityRoot;
                    num2   = sqrMagnitude;
                }
                checkedObjects.Add(entityRoot);
            }

            __result = result;
        }
コード例 #11
0
 // Token: 0x0600002D RID: 45 RVA: 0x00003124 File Offset: 0x00001324
 public static bool Prefix(PropulsionCannon __instance)
 {
     SkinnedMeshRenderer[] allComponentsInChildren  = __instance.GetAllComponentsInChildren <SkinnedMeshRenderer>();
     MeshRenderer[]        allComponentsInChildren2 = __instance.GetAllComponentsInChildren <MeshRenderer>();
     foreach (SkinnedMeshRenderer skinnedMeshRenderer in allComponentsInChildren)
     {
         bool flag = skinnedMeshRenderer.name.Contains("Propulsion_Cannon_geo");
         if (flag)
         {
             skinnedMeshRenderer.material.color = new Color32(Convert.ToByte(MainPatch.config.Propulsionvalue), Convert.ToByte(MainPatch.config.Propulsiongvalue), Convert.ToByte(MainPatch.config.Propulsionbvalue), 1);
         }
     }
     foreach (MeshRenderer meshRenderer in allComponentsInChildren2)
     {
         bool flag2 = meshRenderer.name.Contains("Propulsion_Cannon");
         if (flag2)
         {
             meshRenderer.material.color = new Color32(Convert.ToByte(MainPatch.config.Propulsionvalue), Convert.ToByte(MainPatch.config.Propulsiongvalue), Convert.ToByte(MainPatch.config.Propulsionbvalue), 1);
         }
     }
     return(true);
 }
コード例 #12
0
        public static bool Prefix(PropulsionCannon __instance, GameObject target)
        {
            if (skipPrefixPatch)
            {
                return(true);
            }

            SimulationOwnership simulationOwnership = NitroxServiceLocator.LocateService <SimulationOwnership>();

            NitroxId id = NitroxEntity.GetId(target);

            if (simulationOwnership.HasExclusiveLock(id))
            {
                Log.Debug($"Already have an exclusive lock on the grabbed propulsion cannon object: {id}");
                return(true);
            }

            PropulsionGrab context = new(__instance, target);
            LockRequest <PropulsionGrab> lockRequest = new(id, SimulationLockType.EXCLUSIVE, ReceivedSimulationLockResponse, context);

            simulationOwnership.RequestSimulationLock(lockRequest);

            return(false);
        }
コード例 #13
0
 void Start()
 {
     _propulsionCannon = GetComponent <PropulsionCannon>();
     _exosuit          = GetComponentInParent <Exosuit>();
 }
コード例 #14
0
        protected override void ModifyGameObject()
        {
            GameObject freezeCannon = Object.Instantiate(Main.assetBundle.LoadAsset <GameObject>("FreezeCannonNew"), _GameObject.transform);

            PropulsionCannon propulsionCannon = _GameObject.GetComponent <PropulsionCannon>();

            Object.DestroyImmediate(_GameObject.GetComponent <PropulsionCannonWeapon>());
            Object.DestroyImmediate(_GameObject.transform.Find("PropulsionCannonGrabbedEffect").gameObject);
            Object.DestroyImmediate(_GameObject.transform.Find("objectHolder").gameObject);

            FreezeCannonWeapon cannonWeapon = _GameObject.AddComponent <FreezeCannonWeapon>();

            cannonWeapon.freezeCannon = _GameObject.AddComponent <FreezeCannon>();

            cannonWeapon.pickupable   = _GameObject.GetComponent <Pickupable>();
            cannonWeapon.mainCollider = _GameObject.GetComponent <Collider>();

            cannonWeapon.freezeCannon.fxBeam        = Object.Instantiate(propulsionCannon.fxBeam, cannonWeapon.transform);
            cannonWeapon.freezeCannon.fxTrailPrefab = Object.Instantiate(propulsionCannon.fxTrailPrefab, cannonWeapon.transform);
            cannonWeapon.freezeCannon.muzzle        = freezeCannon.FindChild("muzzle").transform;

            cannonWeapon.freezeCannon.fxControl    = propulsionCannon.fxControl;
            cannonWeapon.freezeCannon.connectSound = propulsionCannon.grabbingSound;

            cannonWeapon.freezeCannon.shootSound      = ScriptableObject.CreateInstance <FMODAsset>();
            cannonWeapon.freezeCannon.shootSound.name = "fire";
            cannonWeapon.freezeCannon.shootSound.path = "event:/tools/gravcannon/fire";

            cannonWeapon.freezeCannon.validTargetSound      = ScriptableObject.CreateInstance <FMODAsset>();
            cannonWeapon.freezeCannon.validTargetSound.name = "ready";
            cannonWeapon.freezeCannon.validTargetSound.path = "event:/tools/gravcannon/ready";

            //Object.DestroyImmediate(propulsionCannon);

            cannonWeapon.reloadMode               = PlayerTool.ReloadMode.Direct;
            cannonWeapon.drawTime                 = 0;
            cannonWeapon.holsterTime              = 0.1f;
            cannonWeapon.dropTime                 = 0;
            cannonWeapon.ikAimRightArm            = true;
            cannonWeapon.ikAimLeftArm             = true;
            cannonWeapon.useLeftAimTargetOnPlayer = true;

            cannonWeapon.leftHandIKTarget = freezeCannon.FindChild("leftHandTarget").transform;
            cannonWeapon.socket           = PlayerTool.Socket.RightHand;

            cannonWeapon.reloadSound      = ScriptableObject.CreateInstance <FMODAsset>();
            cannonWeapon.reloadSound.name = "reload";
            cannonWeapon.reloadSound.path = "event:/tools/gravcannon/reload";

            cannonWeapon.drawSound      = ScriptableObject.CreateInstance <FMODAsset>();
            cannonWeapon.drawSound.name = "deploy";
            cannonWeapon.drawSound.path = "event:/tools/gravcannon/deploy";

            freezeCannon.transform.localScale    = new Vector3(0.14f, 0.14f, 0.14f);
            freezeCannon.transform.localPosition = new Vector3(0.0f, -0.04F, -0.13f);
            freezeCannon.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);

            Texture2D _MainTex = Main.assetBundle.LoadAsset <Texture2D>("freezeCannon_main");
            Texture2D _Illum   = Main.assetBundle.LoadAsset <Texture2D>("freezeCannon_illum");
            Texture2D _BumpMap = Main.assetBundle.LoadAsset <Texture2D>("freezeCannon_bump");
            Texture2D _SpecTex = Main.assetBundle.LoadAsset <Texture2D>("freezeCannon_spec");

            Shader marmoShader = Shader.Find("MarmosetUBER");

            MeshRenderer freezeRenderer = freezeCannon.GetComponent <MeshRenderer>();

            for (int i = 0; i < freezeRenderer.materials.Length; i++)
            {
                Material material = freezeRenderer.materials[i];

                switch (i)
                {
                case 0:
                    material.shader = marmoShader;
                    //material.EnableKeyword("UWE_3COLOR");
                    //material.EnableKeyword("MARMO_NORMALMAP");
                    material.EnableKeyword("_ZWRITE_ON");
                    material.SetTexture(Shader.PropertyToID("_MainTex"), _MainTex);
                    material.SetTexture(Shader.PropertyToID("_BumpMap"), _BumpMap);
                    break;

                case 1:
                    material.shader = marmoShader;
                    //material.EnableKeyword("UWE_3COLOR");
                    //material.EnableKeyword("MARMO_NORMALMAP");
                    material.EnableKeyword("MARMO_EMISSION");
                    material.EnableKeyword("_ZWRITE_ON");
                    material.SetTexture(Shader.PropertyToID("_MainTex"), _MainTex);
                    material.SetTexture(Shader.PropertyToID("_BumpMap"), _BumpMap);
                    material.SetTexture(Shader.PropertyToID("_Illum"), _Illum);
                    break;

                default:
                    material.shader = marmoShader;
                    //material.EnableKeyword("UWE_3COLOR");
                    break;
                }


                material.DisableKeyword("_NORMALMAP");

                //material.EnableKeyword("MARMO_SPECMAP");
                //material.SetTexture(Shader.PropertyToID("_SpecTex"), _SpecTex);
            }
        }
コード例 #15
0
        public override GameObject GetGameObject()
        {
            try
            {
                GameObject     gun       = techpistol.darktest.LoadAsset <GameObject>("techpistol.prefab");
                MeshRenderer[] allshader = gun.FindChild("HandGun").GetComponentsInChildren <MeshRenderer>();
                foreach (MeshRenderer setshader in allshader)
                {
                    setshader.material.shader = Shader.Find("MarmosetUBER");
                    setshader.material.SetColor("_Emission", new Color(1f, 1f, 1f));
                }
                gun.transform.Find("Cannonmode/shoot/shoo").gameObject.AgComponent <cool>();

                gun.AgComponent <PrefabIdentifier>().ClassId   = ClassID;
                gun.AgComponent <LargeWorldEntity>().cellLevel = LargeWorldEntity.CellLevel.Near;
                gun.AgComponent <Pickupable>().isPickupable    = true;;
                gun.AgComponent <TechTag>().type   = TechType;
                gun.AgComponent <Fixer>().techType = TechType;
                gun.AgComponent <Fixer>().ClassId  = ClassID;
                WorldForces World = gun.AgComponent <WorldForces>();
                Rigidbody   body  = gun.AgComponent <Rigidbody>();
                World.underwaterGravity = 0;
                World.useRigidbody      = body;

                EnergyMixin battery = gun.AgComponent <EnergyMixin>();
                battery.storageRoot             = gun.FindChild("BatteryRoot").AgComponent <ChildObjectIdentifier>();
                battery.allowBatteryReplacement = true;
                battery.compatibleBatteries     = new List <TechType>
                {
                    TechType.PrecursorIonBattery,
                    TechType.Battery,
                    TechType.PrecursorIonPowerCell,
                    TechType.PowerCell
                };
                battery.batteryModels = new EnergyMixin.BatteryModels[]
                {
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PrecursorIonPowerCell,
                        model    = gun.transform.Find("BatteryRoot/PrecursorIonPowerCell").gameObject
                    },
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.Battery,
                        model    = gun.transform.Find("BatteryRoot/Battery").gameObject
                    },
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PrecursorIonBattery,
                        model    = gun.transform.Find("BatteryRoot/PrecursorIonBattery").gameObject
                    },
                    new EnergyMixin.BatteryModels
                    {
                        techType = TechType.PowerCell,
                        model    = gun.transform.Find("BatteryRoot/PowerCell").gameObject
                    }
                };
                Gun              biggun         = gun.AgComponent <Gun>();
                RepulsionCannon  Boo            = CraftData.InstantiateFromPrefab(TechType.RepulsionCannon).GetComponent <RepulsionCannon>();
                StasisRifle      Boo2           = CraftData.InstantiateFromPrefab(TechType.StasisRifle).GetComponent <StasisRifle>();
                PropulsionCannon build          = CraftData.InstantiateFromPrefab(TechType.PropulsionCannon).GetComponent <PropulsionCannon>();
                Welder           laserloop      = CraftData.InstantiateFromPrefab(TechType.Welder).GetComponent <Welder>();
                VFXFabricating   vfxfabricating = gun.FindChild("HandGun").AgComponent <VFXFabricating>();
                vfxfabricating.localMinY   = -3f;
                vfxfabricating.localMaxY   = 3f;
                vfxfabricating.posOffset   = new Vector3(0f, 0, 0f);
                vfxfabricating.eulerOffset = new Vector3(0f, 90f, -90f);
                vfxfabricating.scaleFactor = 1f;
                biggun.shoot1                   = Boo.shootSound;
                biggun.shoot2                   = Boo2.fireSound;
                biggun.xulikai                  = Boo2.chargeBegin;
                biggun.modechang                = build.shootSound;
                biggun.laseroopS                = laserloop.weldSound;
                biggun.mainCollider             = gun.GetComponent <BoxCollider>();
                biggun.ikAimRightArm            = true;
                biggun.useLeftAimTargetOnPlayer = true;
                UnityEngine.Object.Destroy(Boo2);
                UnityEngine.Object.Destroy(build);
                UnityEngine.Object.Destroy(Boo);
                UnityEngine.Object.Destroy(laserloop);
                return(gun);
            }
            catch
            {
                Console.WriteLine("初始化错误");
                return(new GameObject());
            }
        }
コード例 #16
0
 public PropulsionGrab(PropulsionCannon Cannon, GameObject GrabbedObject)
 {
     this.Cannon        = Cannon;
     this.GrabbedObject = GrabbedObject;
 }