static void Postfix(PropulsionCannon __instance) { if (Player.main.GetVehicle() != null) { __instance.animator.SetBool("cangrab_propulsioncannon", __instance.grabbedObject != null); } }
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); }
public static bool ValidateNewObject(GameObject go, PropulsionCannon __instance, ref bool __result) { bool result = false; ValidateObject(go, __instance, ref result); __result = result; return(false); }
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; }
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); }
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; }
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); }
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); }
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); } }
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; }
// 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); }
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); }
void Start() { _propulsionCannon = GetComponent <PropulsionCannon>(); _exosuit = GetComponentInParent <Exosuit>(); }
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); } }
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()); } }
public PropulsionGrab(PropulsionCannon Cannon, GameObject GrabbedObject) { this.Cannon = Cannon; this.GrabbedObject = GrabbedObject; }