Untitled
unknown
plain_text
a year ago
2.9 kB
17
Indexable
// PlaneCreator.cs
using UnityEngine;
namespace MyPlaneMod
{
public class PlaneCreator
{
public bool CreatePlane(Camera playerCamera)
{
try
{
// Perform raycast to find intersection point
RaycastHit hit;
if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit))
{
// Create plane GameObject
GameObject planeObject = GameObject.CreatePrimitive(PrimitiveType.Plane);
planeObject.name = "PlayerCreatedPlane";
// Set position and scale
planeObject.transform.position = hit.point;
planeObject.transform.localScale = new Vector3(5f, 1f, 5f);
// Rotate to face the player
planeObject.transform.LookAt(playerCamera.transform);
planeObject.transform.rotation *= Quaternion.Euler(90f, 0f, 0f);
// Add MeshCollider
planeObject.AddComponent<MeshCollider>();
Debug.Log("Plane created successfully!");
return true;
}
else
{
Debug.LogWarning("No surface found to place the plane.");
return false;
}
}
catch (System.Exception ex)
{
Debug.LogError($"Error creating plane: {ex.Message}");
return false;
}
}
}
}
// PlanePatcher.cs
using BepInEx;
using HarmonyLib;
using UnityEngine;
namespace MyPlaneMod
{
[BepInPlugin("com.mymods.planemod", "Plane Mod", "1.0.0")]
public class PlanePatcher : BaseUnityPlugin
{
private PlaneCreator planeCreator;
private void Awake()
{
planeCreator = new PlaneCreator();
Harmony.CreateAndPatchAll(typeof(PlanePatcher));
}
[HarmonyPatch(typeof(MonoBehaviour), "Update")]
[HarmonyPostfix]
static void Update_Postfix()
{
if (Input.GetKeyDown(KeyCode.E))
{
// Get the player's camera
Camera playerCamera = Camera.main;
if (playerCamera != null)
{
// Call CreatePlane from PlaneCreator
PlanePatcher instance = BepInEx.Bootstrap.Chainloader.ManagerObject.GetComponent<PlanePatcher>();
instance.planeCreator.CreatePlane(playerCamera);
}
else
{
Debug.LogError("Player camera not found.");
}
}
}
}
}Editor is loading...
Leave a Comment