I am using unity2019.2.0b with c# langauge.
When i create object and I change properties of object via script like scale rotation position or velocity
In my case is working fine with if-else statement, but I want to use ternary operator because each properties setting per 1 line script for improved readability.
So my question is how can i convert if else statement to ternary operator which doesn't have return value functions
The concept what I want is to check movable is true or not
if true then call function1(parameter1)
if false then call function2(parameter1)
or
if true then call function3(parameter1)
if false then call function4(parameter1, parameter2)
all functions are no return value functions.
I want to write like this (movable is boolean)
movable? SetObjectMoving(gameobject) : RemoveComponent<MoveComponent>(gameobject);
this is code when use if-else statement
if(movable)
{
ObjectMovingSystem(gameobject);
}else{
RemoveComponent<MoveComponent>(gameobject);
}
And this is my full code
private void CreateEntity()
{
for (int i = 0; i < spawnCountPerFrame; i++)
{
Entity instance = shapeFactory.GetEntityRandom();
entityManager.SetComponentData<Translation>(instance, new Translation { Value = SpawnZoneOfLevel.SpawnPoint });
entityManager.SetComponentData<Rotation>(instance, new Rotation { Value = Random.rotation });
entityManager.SetComponentData<Scale>(instance, new Scale { Value = Random.Range(0.1f, 1f) });
//(movable ? SetEntityMovement(instance) : RemoveMovementComponent<PersistantObjectMovement>(instance));
//PersistantObjectmovement
if (movable)
{
SetEntityMovement(instance);
}
else
{
RemoveMovementComponent<PersistantObjectMovement>(instance);
}
//(rotatable ? SetEntityRotation(instance) : RemoveMovementComponent<PersistantObjectRotation>(instance));
//PersistantObjectRotation
if (rotatable)
{
SetEntityRotation(instance);
}
else
{
RemoveMovementComponent<PersistantObjectRotation>(instance);
}
entityList.Add(instance);
}
}
private void SetEntityMovement(Entity instance)
{
entityManager.SetComponentData(instance, new PersistantObjectMovement
{
direction = Random.onUnitSphere,
speed = Random.Range(0.5f, 1)
});
}
private void SetEntityRotation(Entity instance)
{
entityManager.SetComponentData(instance, new PersistantObjectRotation
{
angularVelocity = Random.onUnitSphere * Random.Range(0f, 90f),
radiantPerSecond = math.radians(Random.Range(120f, 360f))
});
}
private void RemoveMovementComponent<T>(Entity instance) where T : IComponentData
{
entityManager.RemoveComponent(instance, typeof(T));
}
I know this is not really necessary to do, but i want to know there is anyway to do if-else statement write 1 line like ternary operator?