using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Fungus { /// /// Vector3 add, sub, mul, div arithmetic /// [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; } } }