123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using CommonLang.Property;
- using CommonAI.Zone.Instance;
- using CommonAI.Zone.Attributes;
- using CommonAI.Zone.EventTrigger;
- using CommonLang.Formula;
- using CommonLang.Vector;
- namespace CommonAI.Zone.ZoneEditor.EventTrigger
- {
-
- [DescAttribute("小数点型")]
- public abstract class RealValue : AbstractValue<Single>
- {
- [DescAttribute("值", "值")]
- public class VALUE : RealValue
- {
- [DescAttribute("值")]
- public float Value = 20.00f;
- public VALUE() { }
- public VALUE(float value) { this.Value = value; }
- public override string ToString()
- {
- return Value + "";
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return Value;
- }
- }
- //------------------------------------------------------------------------------------------------------------
- #region __MathAndConverter__
- [DescAttribute("小数计算", "数学")]
- public class RealOP : RealValue
- {
- [DescAttribute("值1")]
- public RealValue Value1 = new RealValue.VALUE();
- [DescAttribute("运算符")]
- public NumericOP OP = NumericOP.ADD;
- [DescAttribute("值2")]
- public RealValue Value2 = new RealValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}) {1} ({2})", Value1, FormulaHelper.ToString(OP), Value2);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- float ret = FormulaHelper.Calculate(Value1.GetValue(api, args), OP, Value2.GetValue(api, args));
- return ret;
- }
- }
- [DescAttribute("函数-返回最小值", "数学")]
- public class MinFunction : RealValue
- {
- [DescAttribute("值1")]
- public RealValue Value1 = new RealValue.VALUE();
- [DescAttribute("值2")]
- public RealValue Value2 = new RealValue.VALUE();
- public override string ToString()
- {
- return string.Format("取{0}和{1}最小值", Value1, Value2);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- float v1 = Value1.GetValue(api, args);
- float v2 = Value2.GetValue(api, args);
- return Math.Min(v1, v2);
- }
- }
- [DescAttribute("函数-返回最大值", "数学")]
- public class MaxFunction : RealValue
- {
- [DescAttribute("值1")]
- public RealValue Value1 = new RealValue.VALUE();
- [DescAttribute("值2")]
- public RealValue Value2 = new RealValue.VALUE();
- public override string ToString()
- {
- return string.Format("取{0}和{1}最大值", Value1, Value2);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- float v1 = Value1.GetValue(api, args);
- float v2 = Value2.GetValue(api, args);
- return Math.Max(v1, v2);
- }
- }
- [DescAttribute("随机小数", "数学")]
- public class RandomReal : RealValue
- {
- public override string ToString()
- {
- return string.Format("介于0.0和1.0之间的随机数");
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return (float)api.ZoneAPI.RandomN.NextDouble();
- }
- }
- [DescAttribute("从整数转换", "转换")]
- public class ConvertFromInteger : RealValue
- {
- [DescAttribute("值")]
- public IntegerValue Value = new IntegerValue.VALUE();
- public override string ToString()
- {
- return string.Format("从{0}转换", Value);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- int value = Value.GetValue(api, args);
- return (float)value;
- }
- }
- [DescAttribute("从字符串转换", "转换")]
- public class ParseFromString : RealValue
- {
- [DescAttribute("值")]
- public StringValue Value = new StringValue.VALUE("1");
- public override string ToString()
- {
- return string.Format("从{0}转换", Value);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- string value = Value.GetValue(api, args);
- float ret = 0;
- float.TryParse(value, out ret);
- return ret;
- }
- }
- #endregion
- //------------------------------------------------------------------------------------------------------------
- #region __Attributes__
- [DescAttribute("场景用户自定义属性", "场景")]
- public class ZoneRealAttribute : RealValue
- {
- [DescAttribute("键值")]
- public string Key;
- public override string ToString()
- {
- return string.Format("场景键值[{0}]", Key);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- try
- {
- return Single.Parse(api.ZoneAPI.GetAttribute(Key) as string);
- }
- catch (Exception err)
- {
- Console.WriteLine("ZoneRealAttribute : " + Key + ", catch: " + err);
- }
- return 0;
- }
- }
- [DescAttribute("单位用户自定义属性", "单位")]
- public class UnitRealAttribute : RealValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("键值")]
- public string Key;
- public override string ToString()
- {
- return string.Format("单位({0})键值[{1}]", Unit, Key);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- try
- {
- return Single.Parse(unit.GetAttribute(Key) as string);
- }
- catch (Exception err)
- {
- Console.WriteLine("UnitRealAttribute : " + Key + ", catch: " + err);
- }
- return 0;
- }
- return 0;
- }
- }
- #endregion
- //------------------------------------------------------------------------------------------------------------
- #region __TowUnit__
- [DescAttribute("获得两个单位的夹角(弧度)", "2单位")]
- public class GetTowUnitAngle : RealValue
- {
- [DescAttribute("单位A")]
- public UnitValue UnitA = new UnitValue.Trigging();
- [DescAttribute("单位B")]
- public UnitValue UnitB = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("GetDirect({0}, {1})", UnitA, UnitB);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit a = UnitA.GetValue(api, args);
- InstanceUnit b = UnitB.GetValue(api, args);
- if (a != null && b!=null)
- {
- return MathVector.getDegree(a.X, a.Y, b.X, b.Y);
- }
- return 0;
- }
- }
- [DescAttribute("获得两个单位的距离", "2单位")]
- public class GetTowUnitDistance : RealValue
- {
- [DescAttribute("单位A")]
- public UnitValue UnitA = new UnitValue.Trigging();
- [DescAttribute("单位B")]
- public UnitValue UnitB = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("GetDistance({0}, {1})", UnitA, UnitB);
- }
- public override Single GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit a = UnitA.GetValue(api, args);
- InstanceUnit b = UnitB.GetValue(api, args);
- if (a != null && b != null)
- {
- return MathVector.getDistance(a.X, a.Y, b.X, b.Y);
- }
- return 0;
- }
- }
- #endregion
- }
- }
|