From 1c1dd5cab63abd6a130f0880c975a31c88795562 Mon Sep 17 00:00:00 2001 From: "i.korystin" Date: Sun, 4 Aug 2019 00:45:18 +0300 Subject: [PATCH] some old local changes --- .../coa4u/ActionsBase/ActionInstant.cs | 0 .../ActionSelectRoamingPoint.cs | 0 .../ActionsInterval/ActionMoveForward.cs | 0 Assets/scripts/coa4uext/Actions.meta | 5 ++ .../scripts/coa4uext/Actions/ActionHolder.cs | 77 +++++++++++++++++++ .../coa4uext/Actions/ActionHolder.cs.meta | 8 ++ Assets/scripts/coa4uext/Actions/ActionIf.cs | 66 ++++++++++++++++ .../scripts/coa4uext/Actions/ActionIf.cs.meta | 8 ++ .../scripts/coa4uext/Actions/ActionPlayer.cs | 53 +++++++++++++ .../coa4uext/Actions/ActionPlayer.cs.meta | 8 ++ .../coa4uext/Actions/ActionSwitchState.cs | 41 ++++++++++ .../Actions/ActionSwitchState.cs.meta | 8 ++ Assets/scripts/coa4uext/Calcers.meta | 5 ++ Assets/scripts/coa4uext/Calcers/Calcer.cs | 15 ++++ .../scripts/coa4uext/Calcers/Calcer.cs.meta | 8 ++ .../coa4uext/Calcers/CalcerDirection.cs | 44 +++++++++++ .../coa4uext/Calcers/CalcerDirection.cs.meta | 8 ++ .../scripts/coa4uext/Calcers/CalcerFloat.cs | 68 ++++++++++++++++ .../coa4uext/Calcers/CalcerFloat.cs.meta | 8 ++ .../coa4uext/Calcers/CalcerFloatCalc.cs | 48 ++++++++++++ .../coa4uext/Calcers/CalcerFloatCalc.cs.meta | 8 ++ .../coa4uext/Calcers/CalcerPosition.cs | 36 +++++++++ .../coa4uext/Calcers/CalcerPosition.cs.meta | 8 ++ .../coa4uext/Calcers/CalcerRandomDirection.cs | 46 +++++++++++ .../Calcers/CalcerRandomDirection.cs.meta | 8 ++ .../scripts/coa4uext/Calcers/CalcerVector.cs | 70 +++++++++++++++++ .../coa4uext/Calcers/CalcerVector.cs.meta | 8 ++ .../coa4uext/Calcers/CalcerVectorCalc.cs | 42 ++++++++++ .../coa4uext/Calcers/CalcerVectorCalc.cs.meta | 8 ++ Assets/scripts/coa4uext/CoreClasses.meta | 5 ++ Assets/scripts/coa4uext/CoreClasses/State.cs | 26 +++++++ .../coa4uext/CoreClasses/State.cs.meta | 8 ++ Assets/scripts/coa4uext/Predicates.meta | 5 ++ .../scripts/coa4uext/Predicates/Predicate.cs | 11 +++ .../coa4uext/Predicates/Predicate.cs.meta | 8 ++ .../Predicates/PredicateDistanceGreater.cs | 29 +++++++ .../PredicateDistanceGreater.cs.meta | 8 ++ .../Predicates/PredicateDistanceLess.cs | 29 +++++++ .../Predicates/PredicateDistanceLess.cs.meta | 8 ++ .../coa4uext/Predicates/PredicateFalse.cs | 14 ++++ .../Predicates/PredicateFalse.cs.meta | 8 ++ .../coa4uext/Predicates/PredicateTrue.cs | 14 ++++ .../coa4uext/Predicates/PredicateTrue.cs.meta | 8 ++ Assets/scripts/coa4uext/UnityComponents.meta | 5 ++ .../coa4uext/UnityComponents/SeqActor.cs | 59 ++++++++++++++ .../coa4uext/UnityComponents/SeqActor.cs.meta | 8 ++ .../coa4uext/UnityComponents/SeqTest.cs | 44 +++++++++++ .../coa4uext/UnityComponents/SeqTest.cs.meta | 8 ++ 48 files changed, 1017 insertions(+) rename Assets/{Scripts => scripts}/coa4u/ActionsBase/ActionInstant.cs (100%) rename Assets/{Scripts => scripts}/coa4u/ActionsInstant/ActionSelectRoamingPoint.cs (100%) rename Assets/{Scripts => scripts}/coa4u/ActionsInterval/ActionMoveForward.cs (100%) create mode 100755 Assets/scripts/coa4uext/Actions.meta create mode 100755 Assets/scripts/coa4uext/Actions/ActionHolder.cs create mode 100755 Assets/scripts/coa4uext/Actions/ActionHolder.cs.meta create mode 100755 Assets/scripts/coa4uext/Actions/ActionIf.cs create mode 100755 Assets/scripts/coa4uext/Actions/ActionIf.cs.meta create mode 100755 Assets/scripts/coa4uext/Actions/ActionPlayer.cs create mode 100755 Assets/scripts/coa4uext/Actions/ActionPlayer.cs.meta create mode 100755 Assets/scripts/coa4uext/Actions/ActionSwitchState.cs create mode 100755 Assets/scripts/coa4uext/Actions/ActionSwitchState.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers.meta create mode 100755 Assets/scripts/coa4uext/Calcers/Calcer.cs create mode 100755 Assets/scripts/coa4uext/Calcers/Calcer.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerDirection.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerDirection.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerFloat.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerFloat.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerPosition.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerPosition.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerVector.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerVector.cs.meta create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs create mode 100755 Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs.meta create mode 100755 Assets/scripts/coa4uext/CoreClasses.meta create mode 100755 Assets/scripts/coa4uext/CoreClasses/State.cs create mode 100755 Assets/scripts/coa4uext/CoreClasses/State.cs.meta create mode 100755 Assets/scripts/coa4uext/Predicates.meta create mode 100755 Assets/scripts/coa4uext/Predicates/Predicate.cs create mode 100755 Assets/scripts/coa4uext/Predicates/Predicate.cs.meta create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs.meta create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs.meta create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateFalse.cs create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateFalse.cs.meta create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateTrue.cs create mode 100755 Assets/scripts/coa4uext/Predicates/PredicateTrue.cs.meta create mode 100755 Assets/scripts/coa4uext/UnityComponents.meta create mode 100755 Assets/scripts/coa4uext/UnityComponents/SeqActor.cs create mode 100755 Assets/scripts/coa4uext/UnityComponents/SeqActor.cs.meta create mode 100755 Assets/scripts/coa4uext/UnityComponents/SeqTest.cs create mode 100755 Assets/scripts/coa4uext/UnityComponents/SeqTest.cs.meta diff --git a/Assets/Scripts/coa4u/ActionsBase/ActionInstant.cs b/Assets/scripts/coa4u/ActionsBase/ActionInstant.cs similarity index 100% rename from Assets/Scripts/coa4u/ActionsBase/ActionInstant.cs rename to Assets/scripts/coa4u/ActionsBase/ActionInstant.cs diff --git a/Assets/Scripts/coa4u/ActionsInstant/ActionSelectRoamingPoint.cs b/Assets/scripts/coa4u/ActionsInstant/ActionSelectRoamingPoint.cs similarity index 100% rename from Assets/Scripts/coa4u/ActionsInstant/ActionSelectRoamingPoint.cs rename to Assets/scripts/coa4u/ActionsInstant/ActionSelectRoamingPoint.cs diff --git a/Assets/Scripts/coa4u/ActionsInterval/ActionMoveForward.cs b/Assets/scripts/coa4u/ActionsInterval/ActionMoveForward.cs similarity index 100% rename from Assets/Scripts/coa4u/ActionsInterval/ActionMoveForward.cs rename to Assets/scripts/coa4u/ActionsInterval/ActionMoveForward.cs diff --git a/Assets/scripts/coa4uext/Actions.meta b/Assets/scripts/coa4uext/Actions.meta new file mode 100755 index 0000000..e24e9f7 --- /dev/null +++ b/Assets/scripts/coa4uext/Actions.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 47f23d1678e988842ba4d66cdde3c4f8 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/scripts/coa4uext/Actions/ActionHolder.cs b/Assets/scripts/coa4uext/Actions/ActionHolder.cs new file mode 100755 index 0000000..17ad294 --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionHolder.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + /// + /// Creates the and starts the given action instance at Start. If you're using calcers for parameters, they will be also calculated at start. + /// + class ActionHolder : ActionInstant + where T : ActionInstant + { + protected T action; + protected object[] args; + + public ActionHolder(params object[] args) : base() + { + this.args = args; + } + + public override void Start() + { + if (target == null) + throw new Exception("Can start the action only after it's atached to the actor"); + object[] nargs = new object[args.Length]; + for (int i = 0; i < args.Length; i++) + { + if (args[i] is CalcerFloat) + { + nargs[i] = ((CalcerFloat)args[i]).value; + } + else if (args[i] is CalcerVector) + { + nargs[i] = ((CalcerVector)args[i]).value; + } + else + { + nargs[i] = args[i]; + } + } + + action = (T)Activator.CreateInstance(typeof(T), nargs); + action.SetActor(target); + action.locks = locks; + action.Start(); + duration = action.duration; + if (action.running) + running = true; + } + + public override void StepTimer(float dt) + { + if (target == null) + throw new Exception("Can update the action only after it's atached to the actor"); + action.StepTimer(dt); + if (!action.running) + { + dtr = action.dtr; + Stop(); + } + } + + public override void Stop() + { + if (target == null) + throw new Exception("Can stop the action only after it's atached to the actor"); + if (action.running) + action.Stop(); + running = false; + } + + public override ActionInstant Clone() + { + return new ActionHolder(args); + } + } +} diff --git a/Assets/scripts/coa4uext/Actions/ActionHolder.cs.meta b/Assets/scripts/coa4uext/Actions/ActionHolder.cs.meta new file mode 100755 index 0000000..de19000 --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionHolder.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bbefa1d122cfc4c4e99bd1a82f65569d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Actions/ActionIf.cs b/Assets/scripts/coa4uext/Actions/ActionIf.cs new file mode 100755 index 0000000..88a5bff --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionIf.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + class ActionIf : ActionInterval + { + protected ActionInstant action; + protected Predicate predicate; + protected bool started; + + public ActionIf(Predicate targetPredicate, ActionInstant targetAction) + : base(0) + { + action = targetAction; + predicate = targetPredicate; + } + + public override ActionInstant Clone() + { + return new ActionIf(predicate, action); + } + + public override ActionInstant Reverse() + { + return new ActionIf(predicate, action.Reverse()); + } + + public override void Start() + { + base.Start(); + if (predicate.check()) + { + started = true; + action.SetActor(target); + action.Start(); + duration = action.duration; + } + else + { + running = false; + } + } + + public override void StepTimer(float dt) + { + if (!started) + return; + dt *= timeScale; + if (action.running) + action.StepTimer(dt); + if (!action.running) + { + Stop(); + dtr = action.dtr; + } + } + + public override void Stop() + { + base.Stop(); + action.Stop(); + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Actions/ActionIf.cs.meta b/Assets/scripts/coa4uext/Actions/ActionIf.cs.meta new file mode 100755 index 0000000..a6f8e6a --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionIf.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a45c0e16e46018a40813f228d30baa43 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Actions/ActionPlayer.cs b/Assets/scripts/coa4uext/Actions/ActionPlayer.cs new file mode 100755 index 0000000..19d5470 --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionPlayer.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + /// + /// Plays the action on another actor; + /// + class ActionPlayer : ActionInterval + { + protected ActionInstant action; + protected Actor actor; + + public ActionPlayer(ActionInstant targetAction, Actor targetActor) + : base(0) + { + action = targetAction; + actor = targetActor; + } + + public override ActionInstant Clone() + { + return new ActionPlayer(action, actor); + } + + public override void Start() + { + base.Start(); + actor.AttachAction(action); + if (!action.running) + running = false; + } + + public override void StepTimer(float dt) + { + if (target == null) + throw new Exception("Can update the action only after it's atached to the actor"); + action.StepTimer(dt); + if (!action.running) + { + dtr = action.dtr; + Stop(); + } + } + + public override void Step(float dt) + { + if (!action.running) + running = false; + } + } +} diff --git a/Assets/scripts/coa4uext/Actions/ActionPlayer.cs.meta b/Assets/scripts/coa4uext/Actions/ActionPlayer.cs.meta new file mode 100755 index 0000000..791e8be --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionPlayer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d0fe551d8f6b114cb3bfc83d880377a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Actions/ActionSwitchState.cs b/Assets/scripts/coa4uext/Actions/ActionSwitchState.cs new file mode 100755 index 0000000..740e635 --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionSwitchState.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + class ActionSwitchState : ActionInstant + { + string stateName; + int stateIndex; + + public ActionSwitchState(int targetIndex) + : base() + { + stateIndex = targetIndex; + } + + public ActionSwitchState(string targetName) + : base() + { + stateName = targetName; + } + + public override void Start() + { + base.Start(); + if (!(target is SeqActor)) + { + throw new Exception("Target is not capable of switching states."); + } + if (stateIndex != null) + { + ((SeqActor)target).SetState(stateIndex); + } + else + { + ((SeqActor)target).SetState(stateName); + } + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Actions/ActionSwitchState.cs.meta b/Assets/scripts/coa4uext/Actions/ActionSwitchState.cs.meta new file mode 100755 index 0000000..10c4e7a --- /dev/null +++ b/Assets/scripts/coa4uext/Actions/ActionSwitchState.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70a08a1fe8836f0419bd1b03f05a906a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers.meta b/Assets/scripts/coa4uext/Calcers.meta new file mode 100755 index 0000000..74fe0aa --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 5a9b2c3311eddf04c861c0f8a385a3a0 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/scripts/coa4uext/Calcers/Calcer.cs b/Assets/scripts/coa4uext/Calcers/Calcer.cs new file mode 100755 index 0000000..63195b9 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/Calcer.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public abstract class Calcer + { + } + + public abstract class Calcer : Calcer + { + public abstract T value {get;} + } +} diff --git a/Assets/scripts/coa4uext/Calcers/Calcer.cs.meta b/Assets/scripts/coa4uext/Calcers/Calcer.cs.meta new file mode 100755 index 0000000..35c1b1f --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/Calcer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c50d149e0d2dab4bb3a6114abdeb7e8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerDirection.cs b/Assets/scripts/coa4uext/Calcers/CalcerDirection.cs new file mode 100755 index 0000000..2150b04 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerDirection.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerDirection : CalcerVector + { + Actor selfActor; + Actor targetActor; + Transform selfTransform; + Transform targetTransform; + + public CalcerDirection(Actor self, Actor target) + : base() + { + selfActor = self; + targetActor = target; + } + + public CalcerDirection(Transform self, Transform target) + : base() + { + selfTransform = self; + targetTransform = target; + } + + public override Vector3 value + { + get + { + if (targetTransform != null) + { + return Quaternion.LookRotation(targetTransform.position - selfTransform.position).eulerAngles; + } + else + { + return Quaternion.LookRotation(targetActor.transformCached.position - selfActor.transformCached.position).eulerAngles; + } + } + + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Calcers/CalcerDirection.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerDirection.cs.meta new file mode 100755 index 0000000..1923608 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerDirection.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a0a80ede5ea3dc42a372d76d2004cd0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerFloat.cs b/Assets/scripts/coa4uext/Calcers/CalcerFloat.cs new file mode 100755 index 0000000..6aa8635 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerFloat.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerFloat : Calcer + { + private float internalValue; + + public CalcerFloat() + { + } + + public CalcerFloat(float value) + { + internalValue = value; + } + + public CalcerFloat(int value) + { + internalValue = (float)value; + } + + public CalcerFloat(double value) + { + internalValue = (float)value; + } + + public override float value + { + get + { + return internalValue; + } + } + + public static implicit operator CalcerFloat(float val) + { + return new CalcerFloat(val); + } + + public static implicit operator float(CalcerFloat calc) + { + return calc.value; + } + + public static CalcerFloat operator +(CalcerFloat first, CalcerFloat second) + { + return new CalcerFloatCalc(first, second, CalcerFloatCalc.Operation.Add); + } + + public static CalcerFloat operator -(CalcerFloat first, CalcerFloat second) + { + return new CalcerFloatCalc(first, second, CalcerFloatCalc.Operation.Sub); + } + + public static CalcerFloat operator *(CalcerFloat first, CalcerFloat second) + { + return new CalcerFloatCalc(first, second, CalcerFloatCalc.Operation.Mul); + } + + public static CalcerFloat operator /(CalcerFloat first, CalcerFloat second) + { + return new CalcerFloatCalc(first, second, CalcerFloatCalc.Operation.Div); + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Calcers/CalcerFloat.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerFloat.cs.meta new file mode 100755 index 0000000..39158e0 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerFloat.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e93dc2f49487544fa3a9b1468d66779 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs b/Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs new file mode 100755 index 0000000..52fabca --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerFloatCalc : CalcerFloat + { + public enum Operation + { + Add, + Sub, + Mul, + Div + } + + private Operation operation; + private CalcerFloat first; + private CalcerFloat second; + + public CalcerFloatCalc(CalcerFloat first, CalcerFloat second, Operation operation = Operation.Add) + { + this.first = first; + this.second = second; + this.operation = operation; + } + + public float value + { + get + { + switch (operation) + { + case Operation.Add: + return first.value + second.value; + case Operation.Sub: + return first.value - second.value; + case Operation.Mul: + return first.value * second.value; + case Operation.Div: + return first.value / second.value; + default: + throw new Exception("Operation not found."); + } + } + } + } +} diff --git a/Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs.meta new file mode 100755 index 0000000..adb408e --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerFloatCalc.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45cbf8512a210f942a10b844f2000826 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerPosition.cs b/Assets/scripts/coa4uext/Calcers/CalcerPosition.cs new file mode 100755 index 0000000..4eb986d --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerPosition.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerPosition : CalcerVector + { + Actor targetActor; + Transform targetTransform; + + public CalcerPosition(Actor target) + : base() + { + this.targetActor = target; + } + + public CalcerPosition(Transform target) + : base() + { + this.targetTransform = target; + } + + public override Vector3 value + { + get + { + if (targetTransform != null) + return (Vector3)targetTransform.position; + else + return (Vector3)targetActor.transformCached.position; + } + + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Calcers/CalcerPosition.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerPosition.cs.meta new file mode 100755 index 0000000..3448fb1 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerPosition.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f377903d22e64e409c946c5ec777bb9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs b/Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs new file mode 100755 index 0000000..01e3af4 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerRandomDirection : CalcerVector + { + Axises axises; + + public CalcerRandomDirection(Axises axises) + { + this.axises = axises; + } + + public override Vector3 value + { + get + { + float x = UnityEngine.Random.Range(-360.0F, 360.0F); + float y = UnityEngine.Random.Range(-360.0F, 360.0F); + float z = UnityEngine.Random.Range(-360.0F, 360.0F); + switch (axises) + { + case Axises.x: + return new Vector3(x, 0, 0); + case Axises.y: + return new Vector3(0, y, 0); + case Axises.z: + return new Vector3(0, 0, z); + case Axises.xy: + return new Vector3(x, y, 0); + case Axises.xz: + return new Vector3(x, 0, z); + case Axises.yz: + return new Vector3(0, y, z); + case Axises.xyz: + return new Vector3(x, y, z); + default: + return Vector3.zero; + } + } + + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs.meta new file mode 100755 index 0000000..e4c6f2d --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerRandomDirection.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ad17ef81ba6b9944bf5aa283e4be908 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerVector.cs b/Assets/scripts/coa4uext/Calcers/CalcerVector.cs new file mode 100755 index 0000000..511e0c8 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerVector.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerVector : Calcer + { + private Vector3 internalValue; + private int dimensions; + + public CalcerVector() + { + } + + public CalcerVector(Vector3 value) + { + internalValue = value; + dimensions = 3; + } + + public CalcerVector(Vector2 value) + { + internalValue = value; + dimensions = 2; + } + + public override Vector3 value + { + get + { + switch (dimensions) + { + case 3: + return (Vector3)internalValue; + case 2: + return (Vector2)internalValue; + default: + return internalValue; + } + + } + } + + public static implicit operator CalcerVector(Vector3 val) + { + return new CalcerVector(val); + } + + public static implicit operator CalcerVector(Vector2 val) + { + return new CalcerVector(val); + } + + public static implicit operator Vector3(CalcerVector calc) + { + return calc.value; + } + + public static CalcerVector operator +(CalcerVector first, CalcerVector second) + { + return new CalcerVectorCalc(first, second, CalcerVectorCalc.Operation.Add); + } + + public static CalcerVector operator -(CalcerVector first, CalcerVector second) + { + return new CalcerVectorCalc(first, second, CalcerVectorCalc.Operation.Sub); + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Calcers/CalcerVector.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerVector.cs.meta new file mode 100755 index 0000000..2964b76 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerVector.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c04bfd357341874e8be24608bfd976e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs b/Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs new file mode 100755 index 0000000..2aa00f3 --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace coa4u +{ + public class CalcerVectorCalc : CalcerVector + { + public enum Operation + { + Add, + Sub + } + + private Operation operation; + private CalcerVector first; + private CalcerVector second; + + public CalcerVectorCalc(CalcerVector first, CalcerVector second, Operation operation = Operation.Add) + { + this.first = first; + this.second = second; + this.operation = operation; + } + + public override Vector3 value + { + get + { + switch (operation) + { + case Operation.Add: + return first.value + second.value; + case Operation.Sub: + return first.value - second.value; + default: + throw new Exception("Operation not found."); + } + } + } + } +} diff --git a/Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs.meta b/Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs.meta new file mode 100755 index 0000000..206e2ed --- /dev/null +++ b/Assets/scripts/coa4uext/Calcers/CalcerVectorCalc.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 78a730b682beb8d4180d80db8bdc6537 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/CoreClasses.meta b/Assets/scripts/coa4uext/CoreClasses.meta new file mode 100755 index 0000000..84244f8 --- /dev/null +++ b/Assets/scripts/coa4uext/CoreClasses.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 38016d14a3449b7478e2c667c72063f6 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/scripts/coa4uext/CoreClasses/State.cs b/Assets/scripts/coa4uext/CoreClasses/State.cs new file mode 100755 index 0000000..321bcad --- /dev/null +++ b/Assets/scripts/coa4uext/CoreClasses/State.cs @@ -0,0 +1,26 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; + +namespace coa4u +{ + public class State + { + public readonly ActionInstant action; + public readonly Predicate trigger; + public readonly string name; + + public State(ActionInstant targetAction, string targetName = "") + { + action = targetAction; + name = targetName; + } + + public State(Predicate targetTrigger, ActionInstant targetAction, string targetName = "") + { + trigger = targetTrigger; + action = targetAction; + name = targetName; + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/CoreClasses/State.cs.meta b/Assets/scripts/coa4uext/CoreClasses/State.cs.meta new file mode 100755 index 0000000..320d693 --- /dev/null +++ b/Assets/scripts/coa4uext/CoreClasses/State.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebc37cf537501dd4f9290a911cb5b757 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Predicates.meta b/Assets/scripts/coa4uext/Predicates.meta new file mode 100755 index 0000000..8dfb46e --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 470c1cdb0ca2c1a4895bc641646f9474 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/scripts/coa4uext/Predicates/Predicate.cs b/Assets/scripts/coa4uext/Predicates/Predicate.cs new file mode 100755 index 0000000..b62ba3f --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/Predicate.cs @@ -0,0 +1,11 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; + +namespace coa4u +{ + public abstract class Predicate + { + public abstract bool check(); + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Predicates/Predicate.cs.meta b/Assets/scripts/coa4uext/Predicates/Predicate.cs.meta new file mode 100755 index 0000000..b832284 --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/Predicate.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97583e10785bec74c939caf211b248b8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs b/Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs new file mode 100755 index 0000000..cd700a9 --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs @@ -0,0 +1,29 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; + +namespace coa4u +{ + public class PredicateDistanceGreater : Predicate + { + protected CalcerVector first; + protected CalcerVector second; + protected float distance; + + public PredicateDistanceGreater(CalcerVector one, CalcerVector other, float dist) + : base() + { + first = one; + second = other; + distance = dist; + } + + public override bool check() + { + if (Vector3.Distance(first.value, second.value) > distance) + return true; + else + return false; + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs.meta b/Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs.meta new file mode 100755 index 0000000..09a8169 --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateDistanceGreater.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17a24fb6b2830f24fb10e079734a432f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs b/Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs new file mode 100755 index 0000000..313da0f --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs @@ -0,0 +1,29 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; + +namespace coa4u +{ + public class PredicateDistanceLess : Predicate + { + protected CalcerVector first; + protected CalcerVector second; + protected float distance; + + public PredicateDistanceLess(CalcerVector one, CalcerVector other, float dist) + : base() + { + first = one; + second = other; + distance = dist; + } + + public override bool check() + { + if (Vector3.Distance(first.value, second.value) <= distance) + return true; + else + return false; + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs.meta b/Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs.meta new file mode 100755 index 0000000..26edadb --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateDistanceLess.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f98bec35befcf141bfda4291e7aea41 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Predicates/PredicateFalse.cs b/Assets/scripts/coa4uext/Predicates/PredicateFalse.cs new file mode 100755 index 0000000..f77a601 --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateFalse.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; + +namespace coa4u +{ + public class PredicateFalse : Predicate + { + public override bool check() + { + return false; + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Predicates/PredicateFalse.cs.meta b/Assets/scripts/coa4uext/Predicates/PredicateFalse.cs.meta new file mode 100755 index 0000000..19844e8 --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateFalse.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c046509f9d6d55b45a9643e86a29c95c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/Predicates/PredicateTrue.cs b/Assets/scripts/coa4uext/Predicates/PredicateTrue.cs new file mode 100755 index 0000000..9c8af15 --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateTrue.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; + +namespace coa4u +{ + public class PredicateTrue : Predicate + { + public override bool check() + { + return true; + } + } +} \ No newline at end of file diff --git a/Assets/scripts/coa4uext/Predicates/PredicateTrue.cs.meta b/Assets/scripts/coa4uext/Predicates/PredicateTrue.cs.meta new file mode 100755 index 0000000..e0f0f5a --- /dev/null +++ b/Assets/scripts/coa4uext/Predicates/PredicateTrue.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f6a4b0a53e20504fa28937299d4df63 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/UnityComponents.meta b/Assets/scripts/coa4uext/UnityComponents.meta new file mode 100755 index 0000000..25ad8fe --- /dev/null +++ b/Assets/scripts/coa4uext/UnityComponents.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 45d3e250968191147aeb6b6346456173 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/scripts/coa4uext/UnityComponents/SeqActor.cs b/Assets/scripts/coa4uext/UnityComponents/SeqActor.cs new file mode 100755 index 0000000..0001137 --- /dev/null +++ b/Assets/scripts/coa4uext/UnityComponents/SeqActor.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using coa4u; + +[System.Serializable] +public class SeqActor : Actor +{ + protected State[] states; + protected int index; + protected List stateLog = new List(); + protected ActionInstant currentStateAction; + + public void SetState(int idx) + { + if (idx < states.Length) + { + stateLog.Add(idx); + index = idx; + if (currentStateAction != null) + RemoveAction(currentStateAction); + currentStateAction = states[idx].action; + AttachAction(currentStateAction); + } + else + { + throw new Exception("Actor doesn't have the state " + idx.ToString()); + } + } + + public void SetState(string name) + { + SetState(Array.FindIndex(states, x => x.name == name)); + } + + public int currentStateIndex + { + get + { + return index; + } + } + + public string currentStateName + { + get + { + return states[index].name; + } + } + + public List log + { + get + { + return stateLog; + } + } +} diff --git a/Assets/scripts/coa4uext/UnityComponents/SeqActor.cs.meta b/Assets/scripts/coa4uext/UnityComponents/SeqActor.cs.meta new file mode 100755 index 0000000..4759931 --- /dev/null +++ b/Assets/scripts/coa4uext/UnityComponents/SeqActor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe7dfa7af5880d044b663b7fce129ce4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/scripts/coa4uext/UnityComponents/SeqTest.cs b/Assets/scripts/coa4uext/UnityComponents/SeqTest.cs new file mode 100755 index 0000000..4cd4efd --- /dev/null +++ b/Assets/scripts/coa4uext/UnityComponents/SeqTest.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using coa4u; + +[System.Serializable] +public class SeqTest : SeqActor +{ + public Actor enemy; + Vector3 startPosition; + + void Start() + { + startPosition = transformCached.position; + CalcerVector endPosition = new CalcerPosition(enemy) + new CalcerVector(new Vector3(-2F, transformCached.position.y, 0F)); + + ActionInstant stateDefault = new ActionSequence( + new ActionInstant[] + { + new ActionDelay(3), + new ActionSwitchState(1) + }); + + ActionInstant stateRoam = new ActionSequence( + new ActionInstant[] { + new ActionHolder(new CalcerPosition(enemy)), + new ActionHolder(endPosition, 5, 1, 1), + new ActionDelay(0.5F), + new ActionHolder(new CalcerPosition(enemy), 0.1F), + new ActionHolder(endPosition, 0.1F), + new ActionDelay(0.5F), + new ActionJumpTo(startPosition, 5, 1, 1), + new ActionSwitchState(0) + }); + + states = new State[] + { + new State(stateDefault, "wait"), + new State(stateRoam, "attack") + }; + + SetState(0); + } +} diff --git a/Assets/scripts/coa4uext/UnityComponents/SeqTest.cs.meta b/Assets/scripts/coa4uext/UnityComponents/SeqTest.cs.meta new file mode 100755 index 0000000..42cfee2 --- /dev/null +++ b/Assets/scripts/coa4uext/UnityComponents/SeqTest.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a97027e8b127e5049be5e16c73c87275 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: