⚒️Create Sensations
There are multiple ways of creating sensations:
Microsensation
These are the smallest units that can be felt. A sensation is composed of one or more of them.
var daggerEntry = SensationsFactory.Create(60, 0.1f, 90, 0, 0, 0);
var bleeding = SensationsFactory.Create(50, 0.5f, 50, 0, 0.4f, 0);auto daggerEntry = SensationsFactory::Create(60, 0.1f, 90, 0, 0, 0);
auto bleeding = SensationsFactory::Create(50, 0.5f, 50, 0, 0.4f, 0);Sensations Sequence
var stab = daggerEntry.Append(bleeding);auto stab = SensationsFactory::CreateSequence({ daggerEntry, bleeding });Import a sensation
Sensations are exported in its own format from the Sensations Creator, you can import them using the Parse function.
var ball = Sensation.Parse("100,1,100,0,0,0,Impact");auto ball = SensationsParser::Parse("100,1,100,0,0,0,Impact");A baked sensation can be imported using the same function.
var bakedBall = Sensation.Parse("0~Ball~100,1,100,0,0,0,Impact~impact-0~");auto bakedBall = SensationsParser::Parse("0~Ball~100,1,100,0,0,0,Impact~impact-0~");Muscles
Declaration
You can assign a muscle or group of muscles to any sensation. Muscles are defined like this:
var rightPectoral = Muscle.Pectoral_R;
var bothPectorals = new Muscle[] { Muscle.Pectoral_R, Muscle.Pectoral_L };
var all = Muscle.All;auto rightPectoral = Muscle::Pectoral_R();
auto bothPectorals = MusclesGroup({ Muscle::Pectoral_R(), Muscle::Pectoral_L() });
auto all = MusclesGroup::All();The intensity percentage can be changed per muscle:
var atMinIntensity = rightPectoral.WithIntensity(1);
var eachWithItsOwnIntensity = new Muscle[] { Muscle.Pectoral_R.WithIntensity(25),
Muscle.Pectoral_L.WithIntensity(50) };
var atHighIntensity = Muscle.All.WithIntensity(80);auto atMinIntensity = Muscle::Pectoral_R().WithIntensity(1);
auto eachWithItsOwnIntensity = MusclesGroup({ Muscle::Pectoral_R().WithIntensity(25),
Muscle::Pectoral_L().WithIntensity(25) });
auto atHighIntensity = MusclesGroup::All().WithIntensity(80);You can obtain the opposite muscles of a muscles group (or single) by calling the mirror method:
var leftPectoral = Muscle.Pectoral_R.Mirror();
var rightSide = new[] { Muscle.Abdominal_L, Muscle.Pectoral_L, }.Mirror();auto leftPectoral = Muscle::Pectoral_R().Mirror();
auto rightSide = MusclesGroup({ Muscle::Abdominal_L(), Muscle::Lumbar_L(), Muscle::Pectoral_L() }).Mirror();Assignation
You can assign muscles to any subtype of Sensation.
var ballWithMuscles = ball.WithMuscles(Muscle.Pectoral_R);auto ballWithMuscles = ball->WithMuscles({ Muscle::Pectoral_R() });So it would be also possible to assign muscles to a sensations sequence, or to a baked sensation.
var frontStab = stab.WithMuscles(Muscle.Abdominal_R);
var crossStab = daggerEntry.WithMuscles(Muscle.Abdominal_R)
.Append(bleeding.WithMuscles(Muscle.Dorsal_R));auto frontStab = stab->WithMuscles({ Muscle::Abdominal_R() });
auto crossStab = SensationsFactory::CreateSequence({ daggerEntry->WithMuscles({Muscle::Abdominal_R()}),
bleeding->WithMuscles({Muscle::Dorsal_R()}) });After assigning muscles to a sensation, it becomes a SensationWithMuscles, and it will not be possible to override the muscles that were assigned to it initially.
var ballWithMuscles = ball.WithMuscles(Muscle.Pectoral_R);
var keepingSameMuscles = ballWithMuscles.WithMuscles(Muscle.Lumbar_L); //Keeps only the right pectoralauto ballWithMuscles = ball->WithMuscles({ Muscle::Pectoral_R() });
auto keepingSameMuscles = ballWithMuscles->WithMuscles({ Muscle::Lumbar_L() }); //Keeps only the right pectoralYou can use this as an advantage to define sensation sequences that have sensation with fixed muscles but others with dynamic muscles:
var incompleteStab = daggerEntry.WithMuscles(Muscle.Abdominal_R).Append(bleeding);
var stabWithBackExit = crossStab.WithMuscles(Muscle.Dorsal_R); //The right dorsal will only be assigned to the bleedingauto incompleteStab = new SensationsSequence({ daggerEntry->WithMuscles({Muscle::Abdominal_R()}), bleeding});
auto stabWithBackExit = incompleteStab->WithMuscles({Muscle::Dorsal_R()}); //The right dorsal will only be assigned to the bleedingMultiply intensity
Muscles
// NOTE: The intensity of the muscle would be multiplied by 0.2f
var softer = Muscle.Abdominal_R.MultiplyIntensityBy(20);Sensations
// Microsensation with a intensity of 100
var higher = SensationFactory.Create(intensityPercentage: 25).MultiplyIntensityBy(400);
// Sensation with muscles with a intensity of 50
var half = SensationFactory.Create().WithMuscles(Arm_L).MultiplyIntensityBy(50);
// Sensation sequence with a intensity of 30
var softer = Sensation.Ball.WithMuscles(Abdominal_R).Append(Dart).MultiplyIntensityBy(30);Last updated