public void SetWSProperty(E_PropKey key, E_EventTypes value) { int index = (int)key; if (m_PropState[index] != null) { WorldStatePropFactory.Return(m_PropState[index]); } m_PropState[index] = WorldStatePropFactory.Create(key, value); m_PropBitSet.Set(index, true); // set info that key is set }
static public WorldStateProp Create(E_PropKey key, E_EventTypes eventType) { WorldStateProp p = null; if (m_UnusedProps.Count > 0) { p = m_UnusedProps.Dequeue(); p.PropValue = new ValueEvent(eventType); p.PropType = E_PropType.E_EVENT; } else { p = new WorldStateProp(eventType); } p.Time = UnityEngine.Time.timeSinceLevelLoad; p.PropKey = key; return(p); }
public override void Update() { E_EventTypes eventType = Owner.WorldState.GetWSProperty(E_PropKey.E_EVENT).GetEvent(); if (eventType == E_EventTypes.HitBlocked) { ActionInjuryBlocked = AgentActionFactory.Create(AgentActionFactory.E_Type.E_DAMAGE_BLOCKED) as AgentActionDamageBlocked; ActionInjuryBlocked.Attacker = Owner.BlackBoard.Attacker; ActionInjuryBlocked.AttackerWeapon = Owner.BlackBoard.AttackerWeapon; ActionInjuryBlocked.BreakBlock = Owner.BlackBoard.DamageType == E_DamageType.BreakBlock; Owner.BlackBoard.ActionAdd(ActionInjuryBlocked); Owner.WorldState.SetWSProperty(E_PropKey.E_EVENT, E_EventTypes.None); } if (ActionInjuryBlocked != null && ActionInjuryBlocked.IsActive() == false) { //AgentActionFactory.Return(ActionInjuryBlocked); ActionInjuryBlocked = null; } }
public WorldStateProp(E_EventTypes eventType) { PropValue = new ValueEvent(eventType); PropType = E_PropType.E_EVENT; }
public ValueEvent(E_EventTypes eventType) { Event = eventType; }