public static void Prefix(PlayerManager __instance) { var gameObject = __instance.GetObjectToPlace(); if (BetterPlacing.IsStackableGearItem(gameObject)) { BetterPlacing.AddGearItemsToPhysicalCollisionMask(); } else if (BetterPlacing.IsPlaceableFurniture(gameObject)) { BetterPlacing.RemoveFurnitureFromPhysicalCollisionMask(); } }
private static void Postfix(PlayerManager __instance, GameObject objectToPlace, bool __result) { if (__result) { BetterPlacing.InitializeRotation(__instance); if (BetterPlacing.IsStackableGearItem(objectToPlace)) { objectToPlace.layer = vp_Layer.NPC; } else if (BetterPlacing.IsPlaceableFurniture(objectToPlace)) { vp_Layer.Set(objectToPlace, vp_Layer.NPC, true); } } }
public static bool Prefix(PlayerManager __instance) { var gameObject = __instance.m_InteractiveObjectUnderCrosshair; if (BetterPlacing.IsPlaceableFurniture(gameObject)) { BetterPlacing.PreparePlacableFurniture(gameObject); GameObject root = BetterPlacing.getFurnitureRoot(gameObject); __instance.StartPlaceMesh(root, 5f, PlaceMeshFlags.None); return(false); } return(true); }
public static bool Prefix(PlayerManager __instance, ref Collider __result) { BetterPlacing.AddNpcToPhysicalCollisionMask(); var gameObject = __instance.GetObjectToPlace(); if (!BetterPlacing.IsPlaceableFurniture(gameObject)) { return(true); } Collider[] colliders = gameObject.GetComponentsInChildren <Collider>(); foreach (var eachCollider in colliders) { Collider[] otherColliders = Physics.OverlapSphere(eachCollider.bounds.center, eachCollider.bounds.size.magnitude / 2, 918016); foreach (var eachOtherCollider in otherColliders) { if (!eachOtherCollider.gameObject.activeInHierarchy) { continue; } if (eachOtherCollider.transform.IsChildOf(gameObject.transform)) { continue; } Vector3 direction; float distance; if (Physics.ComputePenetration(eachCollider, eachCollider.transform.position, eachCollider.transform.rotation, eachOtherCollider, eachOtherCollider.transform.position, eachOtherCollider.transform.rotation, out direction, out distance)) { __result = eachOtherCollider; return(false); } } } __result = null; return(false); }
private static void Prefix(PlayerManager __instance) { var gameObject = __instance.GetObjectToPlace(); if (BetterPlacing.IsStackableGearItem(gameObject)) { BetterPlacing.RemoveGearItemsFromPhysicalCollisionMask(); } else if (BetterPlacing.IsPlaceableFurniture(gameObject)) { BetterPlacing.AddFurnitureToPhysicalCollisionMask(); BetterPlacing.RestoreFurnitureLayers(gameObject); } CookingPotItem[] items = Object.FindObjectsOfType <CookingPotItem>(); foreach (var eachItem in items) { vp_Layer.Set(eachItem.gameObject, vp_Layer.Gear, true); } InterfaceManager.m_Panel_ActionsRadial.DisableRadial(false); }