Code commit
This commit is contained in:
60
CustomizePlus/Configuration/Data/Version3/V3BoneTransform.cs
Normal file
60
CustomizePlus/Configuration/Data/Version3/V3BoneTransform.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Numerics;
|
||||
|
||||
namespace CustomizePlus.Configuration.Data.Version3;
|
||||
|
||||
public class V3BoneTransform
|
||||
{
|
||||
private Vector3 _translation;
|
||||
public Vector3 Translation
|
||||
{
|
||||
get => _translation;
|
||||
set => _translation = ClampVector(value);
|
||||
}
|
||||
|
||||
private Vector3 _rotation;
|
||||
public Vector3 Rotation
|
||||
{
|
||||
get => _rotation;
|
||||
set => _rotation = ClampAngles(value);
|
||||
}
|
||||
|
||||
private Vector3 _scaling;
|
||||
public Vector3 Scaling
|
||||
{
|
||||
get => _scaling;
|
||||
set => _scaling = ClampVector(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clamp all vector values to be within allowed limits.
|
||||
/// </summary>
|
||||
private Vector3 ClampVector(Vector3 vector)
|
||||
{
|
||||
return new Vector3
|
||||
{
|
||||
X = Math.Clamp(vector.X, -512, 512),
|
||||
Y = Math.Clamp(vector.Y, -512, 512),
|
||||
Z = Math.Clamp(vector.Z, -512, 512)
|
||||
};
|
||||
}
|
||||
|
||||
private static Vector3 ClampAngles(Vector3 rotVec)
|
||||
{
|
||||
static float Clamp(float angle)
|
||||
{
|
||||
if (angle > 180)
|
||||
angle -= 360;
|
||||
else if (angle < -180)
|
||||
angle += 360;
|
||||
|
||||
return angle;
|
||||
}
|
||||
|
||||
rotVec.X = Clamp(rotVec.X);
|
||||
rotVec.Y = Clamp(rotVec.Y);
|
||||
rotVec.Z = Clamp(rotVec.Z);
|
||||
|
||||
return rotVec;
|
||||
}
|
||||
}
|
||||
24
CustomizePlus/Configuration/Data/Version3/Version3Profile.cs
Normal file
24
CustomizePlus/Configuration/Data/Version3/Version3Profile.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using CustomizePlus.Core.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CustomizePlus.Configuration.Data.Version3;
|
||||
|
||||
/// <summary>
|
||||
/// Encapsulates the user-controlled aspects of a character profile, ie all of
|
||||
/// the information that gets saved to disk by the plugin.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public sealed class Version3Profile
|
||||
{
|
||||
public string CharacterName { get; set; } = "Default";
|
||||
public string ProfileName { get; set; } = "Profile";
|
||||
public nint? Address { get; set; } = null;
|
||||
public bool OwnedOnly { get; set; } = false;
|
||||
public int ConfigVersion { get; set; } = Constants.ConfigurationVersion;
|
||||
public bool Enabled { get; set; }
|
||||
public DateTime CreationDate { get; set; } = DateTime.Now;
|
||||
public DateTime ModifiedDate { get; set; } = DateTime.Now;
|
||||
|
||||
public Dictionary<string, V3BoneTransform> Bones { get; init; } = new();
|
||||
}
|
||||
Reference in New Issue
Block a user