Skip to content

Commit

Permalink
switch to camera overhaul reforged optional dep
Browse files Browse the repository at this point in the history
  • Loading branch information
UpcraftLP committed May 7, 2024
1 parent 74e1587 commit a8f9f8c
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 4 deletions.
1 change: 0 additions & 1 deletion NeoForge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ dependencies {
implementation fg.deobf(neoforge.caelus.get())

compileOnly fg.deobf(neoforge.cameraoverhaul.get())
// NOT UPDATED YET!
// runtimeOnly fg.deobf(neoforge.cameraoverhaul.get())

compileOnly fg.deobf(libs.figura.forge.get())
Expand Down
4 changes: 2 additions & 2 deletions NeoForge/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ curios = "5.8.1+1.20.1"

caelus = "3.2.0+1.20.1"

cameraoverhaul = "4057605"
cameraoverhaul = "5310618"

[libraries]
neoforge = { module = "net.neoforged:forge", version.ref = "neoforge" }
Expand All @@ -18,7 +18,7 @@ curios = { module = "top.theillusivec4.curios:curios-forge", version.ref = "curi

caelus = { module = "top.theillusivec4.caelus:caelus-forge", version.ref = "caelus" }

cameraoverhaul = { module = "curse.maven:camera-overhaul-forge-443034", version.ref = "cameraoverhaul" }
cameraoverhaul = { module = "curse.maven:camera-overhaul-reforged-1011593", version.ref = "cameraoverhaul" }

[plugins]
neogradle = { id = "net.neoforged.gradle", version.ref = "neogradle" }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/**
* MIT License
* <p>
* Copyright (c) 2020 Mirsario
* <p>
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* <p>
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* <p>
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

package dev.cammiescorner.icarus.neoforge.compat;

import dev.cammiescorner.icarus.IcarusConfig;
import mirsario.cameraoverhaul.core.callbacks.CameraUpdateCallback;
import mirsario.cameraoverhaul.core.callbacks.ModifyCameraTransformCallback;
import mirsario.cameraoverhaul.core.structures.Transform;
import net.minecraft.client.Camera;
import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;

public class CameraOverhaulCompat implements CameraUpdateCallback, ModifyCameraTransformCallback {

private double prevRollOffset;
private Transform storedTransform;

public static void load() {
CameraUpdateCallback.EVENT.Register(new CameraOverhaulCompat());
}

@Override
public void OnCameraUpdate(Camera camera, Transform cameraTransform, float deltaTime) {
float pitch = camera.getXRot();
float rollAmount = (pitch < -90 || pitch > 90) ? IcarusConfig.rollAmount : -IcarusConfig.rollAmount;
Vec3 velocity = camera.getEntity().getDeltaMovement();
Vec2 relativeXZVelocity = rotate(new Vec2((float) velocity.x, (float) velocity.z), 360.0F - (float) cameraTransform.eulerRot.y);

rollOffset(cameraTransform, relativeXZVelocity, deltaTime, rollAmount);

storedTransform = cameraTransform;
}

public static Vec2 rotate(Vec2 vec, float degrees) {
double radians = Math.toRadians(degrees);
float sin = (float) Math.sin(radians);
float cos = (float) Math.cos(radians);

return new Vec2((cos * vec.x) - (sin * vec.y), (sin * vec.x) + (cos * vec.y));
}

private void rollOffset(Transform transform, Vec2 relativeXZVelocity, double deltaTime, float intensity) {
double strafingRollOffset = -relativeXZVelocity.x * 15.0D;
double lerpSpeed = 1.0D;

prevRollOffset = strafingRollOffset = Mth.lerp(Mth.clamp(deltaTime * lerpSpeed, 0.0D, 1.0D), prevRollOffset, strafingRollOffset);

transform.eulerRot = transform.eulerRot.add(0.0D, 0.0D, strafingRollOffset * intensity);
}

@Override
public Transform ModifyCameraTransform(Camera camera, Transform transform) {
return storedTransform != null ? storedTransform : transform;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import dev.cammiescorner.icarus.client.models.*;
import dev.cammiescorner.icarus.client.renderers.WingsLayer;
import dev.cammiescorner.icarus.item.WingItem;
import dev.cammiescorner.icarus.neoforge.compat.CameraOverhaulCompat;
import dev.cammiescorner.icarus.util.ColorHelper;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
Expand All @@ -16,6 +17,7 @@
import net.minecraftforge.client.event.EntityRenderersEvent;
import net.minecraftforge.client.event.RegisterColorHandlersEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
Expand All @@ -26,6 +28,11 @@ public class Client {

@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) {

if (ModList.get().isLoaded("cameraoverhaul")) {
CameraOverhaulCompat.load();
}

event.enqueueWork(() -> ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((minecraft, parent) -> new ConfigScreen(parent, null, Icarus.CONFIGURATOR.getConfig(IcarusConfig.class)))));
}

Expand Down
2 changes: 1 addition & 1 deletion NeoForge/src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,6 @@ config = "${mod_id}.neoforge.mixins.json"
"forge"
]
dependencies = [
"cameraoverhaul(optional){curseforge:443034}#(ignore:modrinth)",
"camera-overhaul-reforged(optional){modrinth:LwcpSm6L}{curseforge:1011593}",
"figura(optional){modrinth:s9gIPDom}{curseforge:901503}"
]

0 comments on commit a8f9f8c

Please sign in to comment.