public static T Fire <T>(this T danmakus, FireBuilder builder, bool useRotation = true) where T : class, IEnumerable <Danmaku> { if (danmakus == null) { return(null); } if (builder == null) { throw new System.ArgumentNullException("Fire Builder cannot be null!"); } var arrayTest = danmakus as Danmaku[]; Vector2 tempPos = builder.Position; DynamicFloat tempRot = builder.Rotation; if (arrayTest != null) { for (int i = 0; i < arrayTest.Length; i++) { Danmaku danmaku = arrayTest[i]; if (danmaku != null) { builder.Position = danmaku.Position; if (useRotation) { builder.Rotation = danmaku.Rotation; } builder.Fire(); } } } else { foreach (var danmaku in danmakus) { if (danmaku != null) { builder.Position = danmaku.Position; if (useRotation) { builder.Rotation = danmaku.Rotation; } builder.Fire(); } } } builder.Position = tempPos; builder.Rotation = tempRot; return(danmakus); }
public void Fire(FireBuilder builder, bool useRotation = true) { Vector2 tempPos = builder.Position; DynamicFloat tempRot = builder.Rotation; builder.Position = Position; if (useRotation) { builder.Rotation = Rotation; } builder.Fire(); builder.Position = tempPos; builder.Rotation = tempRot; }