An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.2 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Fungus
{
/// <summary>
/// Vector3 add, sub, mul, div arithmetic
/// </summary>
[CommandInfo("Vector3",
"Arithmetic",
"Vector3 add, sub, mul, div arithmetic")]
[AddComponentMenu("")]
public class Vector3Arithmetic : Command
{
[SerializeField]
protected Vector3Data lhs, rhs, output;
public enum Operation
{
Add,
Sub,
Mul,
Div
}
[SerializeField]
protected Operation operation = Operation.Add;
public override void OnEnter()
{
Vector3 tmp;
switch (operation)
{
case Operation.Add:
output.Value = lhs.Value + rhs.Value;
break;
case Operation.Sub:
output.Value = lhs.Value - rhs.Value;
break;
case Operation.Mul:
tmp = lhs.Value;
tmp.Scale(rhs.Value);
output.Value = tmp;
break;
case Operation.Div:
tmp = lhs.Value;
tmp.Scale(new Vector3(1.0f / rhs.Value.x,
1.0f / rhs.Value.y,
1.0f / rhs.Value.z));
output.Value = tmp;
break;
default:
break;
}
Continue();
}
public override string GetSummary()
{
if (output.vector3Ref == null)
{
return "Error: no output set";
}
return operation.ToString() + ": stored in " + output.vector3Ref.Key;
}
public override Color GetButtonColor()
{
return new Color32(235, 191, 217, 255);
}
public override bool HasReference(Variable variable)
{
if (lhs.vector3Ref == variable || rhs.vector3Ref == variable || output.vector3Ref == variable)
return true;
return false;
}
}
}