/// <summary> /// 转换为Camp类型 /// </summary> /// <returns>The to.</returns> /// <param name="Flags">Flags.</param> public static CAMP switchTo(this EffectFlag Flags, CAMP self) { CAMP camp = CAMP.All; bool ck = Flags.check(EffectFlag.Forbid_Enemy); if (ck) { CAMP enemy = self.Hostile(); camp = camp.clear(enemy); } ck = Flags.check(EffectFlag.Forbid_Friendly); if (ck) { camp = camp.clear(self); } ck = Flags.check(EffectFlag.Forbid_Neutral); if (ck) { camp = camp.clear(CAMP.Neutral); } return(camp); }
/// <summary> /// エフェクトの個別の使用フラグを取得します。 /// </summary> private bool HasEffectFlag(EffectFlag flag) { if (!EffectEnabled) { return(false); } return((EffectFlag & flag) != 0); }
public EffectHandle Play( Effect effect, EffectFlag flags, Transform parent = null, Vector3?worldPos = null, Quaternion?worldRot = null, Unit attachToUnit = null ) { if (effect == null) { return(new EffectHandle()); } if (!effect.loop && 0 == (flags & EffectFlag.OneShot)) { Dbg.LogWarnOnce(effect, "Tried to play {0} as one shot", effect); return(new EffectHandle()); } if (effect.loop && 0 == (flags & EffectFlag.Looping)) { Dbg.LogWarnOnce(effect, "Tried to play {0} as looping", effect); return(new EffectHandle()); } var efx = GetEfxInst(effect.prefab); efx.Reset(effect); #if UNITY_EDITOR string name = GarbageCache.GetName(effect); if (!efx.name.EndsWith(name)) { efx.name = "EFX_" + name; } #endif // UNITY_EDITOR if (parent != null) { efx.gameObject.transform.parent = parent; } efx.attachedToUnit = attachToUnit; efx.transform.position = DetermineWorldPos(parent, worldPos, effect); efx.transform.rotation = DetermineWorldRotation(parent, worldRot, effect); efx.Play(); return(new EffectHandle(efx)); }
public static EffectFlag clear(this EffectFlag flags, EffectFlag totest) { return(flags & ~totest); }
public static EffectFlag set(this EffectFlag flags, EffectFlag totest) { return(flags | totest); }
public static bool check(this EffectFlag flags, EffectFlag totest) { return((flags & totest) == totest); }