Skip to content

Commit

Permalink
Merge branch 'main' into feat/psr-speed
Browse files Browse the repository at this point in the history
  • Loading branch information
Bronya-Rand authored Feb 21, 2025
2 parents 37b21b1 + 8a2c408 commit d149e9c
Show file tree
Hide file tree
Showing 9 changed files with 60 additions and 30 deletions.
4 changes: 2 additions & 2 deletions Brio/Capabilities/Posing/ModelPosingCapability.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ public override void Dispose()
ResetTransform();
}

public void ImportModelPose(PoseFile poseFile, PoseImporterOptions options, bool isLoadingAsScene)
public void ImportModelPose(PoseFile poseFile, PoseImporterOptions options, bool isLoadingAsScene, bool applyModelTransform)
{
if(options.ApplyModelTransform)
if(applyModelTransform)
{
if(isLoadingAsScene)
{
Expand Down
13 changes: 8 additions & 5 deletions Brio/Capabilities/Posing/PosingCapability.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ public void ImportPose(OneOf<PoseFile, CMToolPoseFile> rawPoseFile, PoseImporter
actionTimeline.StopSpeedAndResetTimeline(() =>
{
ImportPose_Internal(rawPoseFile, options, reset: false, reconcile: false, asExpression: asExpression, asScene: asScene,
asIPCpose: asIPCpose, asBody: asBody, asProp: asProp, transformComponents: transformComponents);
asIPCpose: asIPCpose, asBody: asBody, asProp: asProp, transformComponents: transformComponents, applyModelTransformOverride: applyModelTransformOverride);

}, !(ConfigurationService.Instance.Configuration.Posing.FreezeActorOnPoseImport || freezeOnLoad));
}
Expand Down Expand Up @@ -191,6 +191,7 @@ internal void ImportPose_Internal(OneOf<PoseFile, CMToolPoseFile> rawPoseFile, P

poseFile.SanitizeBoneNames();

bool applyModelTransform = false;
if(asExpression)
{
Brio.Log.Info("Loading as Expression");
Expand All @@ -206,7 +207,7 @@ internal void ImportPose_Internal(OneOf<PoseFile, CMToolPoseFile> rawPoseFile, P
{
options = _posingService.SceneImporterOptions;

options.ApplyModelTransform = ConfigurationService.Instance.Configuration.Import.ApplyModelTransform;
applyModelTransform |= ConfigurationService.Instance.Configuration.Import.ApplyModelTransform;
}
else if(asIPCpose)
{
Expand All @@ -217,23 +218,25 @@ internal void ImportPose_Internal(OneOf<PoseFile, CMToolPoseFile> rawPoseFile, P
options ??= _posingService.DefaultImporterOptions;
}

applyModelTransform |= options.ApplyModelTransform;

if(transformComponents.HasValue)
{
options.TransformComponents = transformComponents.Value;
}

if(applyModelTransformOverride.HasValue)
{
options.ApplyModelTransform = applyModelTransformOverride.Value;
applyModelTransform = applyModelTransformOverride.Value;
}

if(options.ApplyModelTransform && reset)
if(applyModelTransform && reset)
ModelPosing.ResetTransform();

SkeletonPosing.ImportSkeletonPose(poseFile, options, expressionPhase2);

if(asExpression == false)
ModelPosing.ImportModelPose(poseFile, options, asScene);
ModelPosing.ImportModelPose(poseFile, options, asScene, applyModelTransform);

if(generateSnapshot)
_framework.RunOnTick(() => Snapshot(reset, reconcile, asExpression: asExpression), delayTicks: 4);
Expand Down
28 changes: 28 additions & 0 deletions Brio/Core/BrioUtilities.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Brio.Game.Actor.Appearance;
using Brio.Game.Actor.Interop;

namespace Brio.Core;


public static class BrioUtilities
{
// Imports Custom Colors from Chara files into Brio Shaders
public static void ImportShadersFromFile(ref ModelShaderOverride modelShaderOverride, BrioHuman.ShaderParams shaderParams)
{
modelShaderOverride.SkinColor = shaderParams.SkinColor;
modelShaderOverride.SkinGloss = shaderParams.SkinGloss;
modelShaderOverride.MuscleTone = shaderParams.MuscleTone;
modelShaderOverride.MouthColor = shaderParams.MouthColor;
modelShaderOverride.HairColor = shaderParams.HairColor;
modelShaderOverride.HairGloss = shaderParams.HairGloss;
modelShaderOverride.HairHighlight = shaderParams.HairHighlight;
modelShaderOverride.LeftEyeColor = shaderParams.LeftEyeColor;
modelShaderOverride.RightEyeColor = shaderParams.RightEyeColor;
modelShaderOverride.FeatureColor = shaderParams.FeatureColor;
}
}
2 changes: 2 additions & 0 deletions Brio/Files/AnamnesisCharaFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ public class AnamnesisCharaFile : JsonDocumentBase

public Vector3? BustScale { get; set; } = null;

public bool IsExtendedAppearanceValid => SkinColor.HasValue || SkinGloss.HasValue || LeftEyeColor.HasValue || RightEyeColor.HasValue ||
LimbalRingColor.HasValue || HairColor.HasValue || HairGloss.HasValue || HairHighlight.HasValue || MouthColor.HasValue;

public override void GetAutoTags(ref TagCollection tags)
{
Expand Down
8 changes: 4 additions & 4 deletions Brio/Game/Camera/VirtualCamera.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace Brio.Game.Camera;

[MessagePackObject(keyAsPropertyName: true)]
public unsafe class VirtualCamera
public unsafe partial class VirtualCamera
{
public VirtualCamera() { }
public VirtualCamera(int cameraID)
Expand All @@ -15,7 +15,7 @@ public VirtualCamera(int cameraID)
ResetCamera();
}

public FreeCamValues FreeCamValues { get; } = new FreeCamValues();
public FreeCamValues FreeCamValues { get; private set; } = new FreeCamValues();

[IgnoreMember] public BrioCamera* BrioCamera => (BrioCamera*)CameraManager.Instance()->GetActiveCamera();

Expand Down Expand Up @@ -195,8 +195,8 @@ public class FreeCamValues
public bool IsMovementEnabled = false;
public bool Move2D = false;

public float MouseSensitivity = 0f;
public float MovementSpeed = 0f;
public float MouseSensitivity { get; set; } = 0f;
public float MovementSpeed { get; set; } = 0f;

public bool DelimitAngle = false;
}
4 changes: 2 additions & 2 deletions Brio/Game/Camera/VirtualCameraManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,9 @@ public void DestroyAll()
{
_cameraId = 0;
CurrentCamera = null;
foreach(var item in _createdCameras)
foreach(var item in _createdCameras.Values)
{
DestroyCamera(item.Key);
DestroyCamera(item.CameraID);
}
}

Expand Down
6 changes: 5 additions & 1 deletion Brio/Game/Scene/SceneService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Brio.Capabilities.Posing;
using Brio.Capabilities.World;
using Brio.Config;
using Brio.Core;
using Brio.Entities;
using Brio.Entities.Actor;
using Brio.Entities.Core;
Expand Down Expand Up @@ -152,7 +153,7 @@ await _framework.RunOnTick(() =>
{
appearanceCapability.AttachWeapon();
}, delayTicks: 10);
}, delayTicks: 10);
}, delayTicks: 10);
}, delayTicks: 2);
}

Expand All @@ -169,6 +170,9 @@ private async Task ApplyDataToActor(EntityId actorId, ActorFile actorFile)

await _framework.RunOnTick(async () =>
{

if(actorFile.AnamnesisCharaFile.IsExtendedAppearanceValid)
BrioUtilities.ImportShadersFromFile(ref appearanceCapability._modelShaderOverride, actorFile.AnamnesisCharaFile);
await appearanceCapability.SetAppearance(actorFile.AnamnesisCharaFile, AppearanceImportOptions.All);

await _framework.RunOnTick(async () =>
Expand Down
23 changes: 7 additions & 16 deletions Brio/UI/Controls/Stateless/FileUIHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,11 @@ public static void DrawImportPoseMenuPopup(PosingCapability capability, bool sho

if(ImGui.Button("Import", new(size.X, 25)))
{
//bool? modelTransformOverride = null;
//if(doTransform)
//{
// modelTransformOverride = doTransform;
//}
ShowImportPoseModal(capability, freezeOnLoad: freezeOnLoad, transformComponents: transformComponents, applyModelTransformOverride: doTransform);
}

Expand Down Expand Up @@ -274,20 +279,6 @@ public static void ShowExportPoseModal(PosingCapability capability)
}, ConfigurationService.Instance.Configuration.LastExportPath, true);
}

public static void ImportShadersFromFile(ref ModelShaderOverride modelShaderOverride, BrioHuman.ShaderParams shaderParams)
{
modelShaderOverride.SkinColor = shaderParams.SkinColor;
modelShaderOverride.SkinGloss = shaderParams.SkinGloss;
modelShaderOverride.MuscleTone = shaderParams.MuscleTone;
modelShaderOverride.MouthColor = shaderParams.MouthColor;
modelShaderOverride.HairColor = shaderParams.HairColor;
modelShaderOverride.HairGloss = shaderParams.HairGloss;
modelShaderOverride.HairHighlight = shaderParams.HairHighlight;
modelShaderOverride.LeftEyeColor = shaderParams.LeftEyeColor;
modelShaderOverride.RightEyeColor = shaderParams.RightEyeColor;
modelShaderOverride.FeatureColor = shaderParams.FeatureColor;
}

public static void ShowImportCharacterModal(ActorAppearanceCapability capability, AppearanceImportOptions options)
{
List<Type> types = [typeof(ActorAppearanceUnion), typeof(AnamnesisCharaFile)];
Expand All @@ -310,7 +301,7 @@ public static void ShowImportCharacterModal(ActorAppearanceCapability capability
if (options.HasFlag(AppearanceImportOptions.Shaders))
{
BrioHuman.ShaderParams shaderParams = appearanceFile;
ImportShadersFromFile(ref capability._modelShaderOverride, shaderParams);
BrioUtilities.ImportShadersFromFile(ref capability._modelShaderOverride, shaderParams);
}
_ = capability.SetAppearance(appearanceFile, options);
}
Expand All @@ -334,7 +325,7 @@ public static void ShowImportCharacterModal(ActorAppearanceCapability capability
if(options.HasFlag(AppearanceImportOptions.Shaders))
{
BrioHuman.ShaderParams shaderParams = appearanceFile;
ImportShadersFromFile(ref capability._modelShaderOverride, shaderParams);
BrioUtilities.ImportShadersFromFile(ref capability._modelShaderOverride, shaderParams);
}
_ = capability.SetAppearance(appearanceFile, options);
}
Expand Down
2 changes: 2 additions & 0 deletions Brio/UI/Windows/Specialized/PosingOverlayToolbarWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ public PosingOverlayToolbarWindow(PosingOverlayWindow overlayWindow, GameInputSe
public override void PreOpenCheck()
{
IsOpen = _overlayWindow.IsOpen;

_gameInputService.AllowEscape = true;

if(UIManager.IsPosingGraphicalWindowOpen && _configurationService.Configuration.Posing.HideToolbarWhenAdvandedPosingOpen)
{
Expand Down

0 comments on commit d149e9c

Please sign in to comment.