// Magica Cloth 2. // Copyright (c) 2023 MagicaSoft. // https://magicasoft.jp using System.Collections.Generic; using Unity.Mathematics; using UnityEngine; namespace MagicaCloth2 { /// /// Serialize data (1) /// Contains all parameters that can be changed during execution. /// The part that can be exported externally as Json. /// [System.Serializable] public partial class ClothSerializeData { /// /// simulation type. /// [NG] Runtime changes. /// [NG] Export/Import with Presets /// public ClothProcess.ClothType clothType = ClothProcess.ClothType.MeshCloth; /// /// Renderer list used in MeshCloth. /// [NG] Runtime changes. /// [NG] Export/Import with Presets /// public List sourceRenderers = new List(); public enum PaintMode { Manual = 0, [InspectorName("Texture Fixed(RD) Move(GR) Ignore(BK)")] Texture_Fixed_Move = 1, [InspectorName("Texture Fixed(RD) Move(GR) Limit(BL) Ignore(BK)")] Texture_Fixed_Move_Limit = 2, } /// /// vertex paint mode. /// [NG] Runtime changes. /// [NG] Export/Import with Presets /// public PaintMode paintMode = PaintMode.Manual; /// /// texture for painting. /// Sync to sourceRenderers. /// [NG] Runtime changes. /// [NG] Export/Import with Presets /// public List paintMaps = new List(); /// /// Root bone list used in BoneCloth. /// [NG] Runtime changes. /// [NG] Export/Import with Presets /// public List rootBones = new List(); /// /// BoneCloth connection method. /// [NG] Runtime changes. /// [NG] Export/Import with Presets /// public RenderSetupData.BoneConnectionMode connectionMode = RenderSetupData.BoneConnectionMode.Line; /// /// Transform rotation interpolation rate in BoneCloth.(0.0 ~ 1.0) /// (0.0=parent-based, 0.5=middle, 1.0=child-based) /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// [Range(0.0f, 1.0f)] public float rotationalInterpolation = 0.5f; /// /// Rotation interpolation rate of Root Transform in BoneCloth.(0.0 ~ 1.0) /// (0.0=does not rotate, 0.5=middle, 1.0=child-based) /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// [Range(0.0f, 1.0f)] public float rootRotation = 0.5f; /// /// Set the update timing. /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// public ClothUpdateMode updateMode = ClothUpdateMode.Normal; /// /// Blend ratio between initial pose and animation pose. /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// [Range(0.0f, 1.0f)] public float animationPoseRatio = 0.0f; /// /// vertex reduction parameters. /// public ReductionSettings reductionSetting = new ReductionSettings(); /// /// custom skinning parameters. /// public CustomSkinningSettings customSkinningSetting = new CustomSkinningSettings(); /// /// Normal definition. /// public NormalAlignmentSettings normalAlignmentSetting = new NormalAlignmentSettings(); /// /// culling settings. /// public CullingSettings cullingSettings = new CullingSettings(); /// /// axis to use as normal. /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// public ClothNormalAxis normalAxis = ClothNormalAxis.Up; /// /// Gravity. /// [OK] Runtime changes. /// [OK] Export/Import with Presets /// [Range(0.0f, 10.0f)] public float gravity = 5.0f; /// /// Gravity world direction. /// [OK] Runtime changes. /// [OK] Export/Import with Presets /// public float3 gravityDirection = new float3(0, -1, 0); /// /// 初期姿勢での重力の減衰率(0.0 ~ 1.0) /// 1.0にすることで初期姿勢では重力係数が0になる。 /// 0.0では常にどの姿勢でも重力が100%発生する。 /// /// Attenuation rate of gravity at initial pose (0.0 ~ 1.0) /// By setting it to 1.0, the gravity coefficient becomes 0 in the initial posture. /// At 0.0, gravity is always 100% in any pose. /// /// [OK] Runtime changes. /// [OK] Export/Import with Presets /// [Range(0.0f, 1.0f)] public float gravityFalloff = 0.0f; /// /// リセット後の速度安定化時間(s) /// 急激な速度変化を抑えます。 /// /// Speed stabilization time after reset (s). /// Avoid sudden speed changes. /// /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// [Range(0.0f, 1.0f)] public float stablizationTimeAfterReset = 0.1f; /// /// 元の姿勢とシミュレーション結果のブレンド割合(0.0 ~ 1.0) /// /// Blend ratio of original posture and simulation result (0.0 ~ 1.0). /// /// [OK] Runtime changes. /// [NG] Export/Import with Presets /// [System.NonSerialized] public float blendWeight = 1.0f; /// /// air resistance. /// [OK] Runtime changes. /// [OK] Export/Import with Presets /// public CurveSerializeData damping = new CurveSerializeData(0.05f); /// /// Particle radius. /// [OK] Runtime changes. /// [OK] Export/Import with Presets /// public CurveSerializeData radius = new CurveSerializeData(0.02f); /// /// Inertia. /// public InertiaConstraint.SerializeData inertiaConstraint = new InertiaConstraint.SerializeData(); /// /// Tether. /// public TetherConstraint.SerializeData tetherConstraint = new TetherConstraint.SerializeData(); /// /// Distance restoration. /// public DistanceConstraint.SerializeData distanceConstraint = new DistanceConstraint.SerializeData(); /// /// Triangle bending / volume. /// public TriangleBendingConstraint.SerializeData triangleBendingConstraint = new TriangleBendingConstraint.SerializeData(); /// /// Angle restoration. /// public AngleConstraint.RestorationSerializeData angleRestorationConstraint = new AngleConstraint.RestorationSerializeData(); /// /// Angle Limit. /// public AngleConstraint.LimitSerializeData angleLimitConstraint = new AngleConstraint.LimitSerializeData(); /// /// Max distance / Backstop /// public MotionConstraint.SerializeData motionConstraint = new MotionConstraint.SerializeData(); /// /// Collider collision. /// public ColliderCollisionConstraint.SerializeData colliderCollisionConstraint = new ColliderCollisionConstraint.SerializeData(); /// /// Self collision /// public SelfCollisionConstraint.SerializeData selfCollisionConstraint = new SelfCollisionConstraint.SerializeData(); /// /// Wind /// public WindSettings wind = new WindSettings(); /// /// Spring /// public SpringConstraint.SerializeData springConstraint = new SpringConstraint.SerializeData(); } }