private bool LaunchWave(List <Vector3D> Coordinates, Map.World world, Int32 SnoId) { var counter = 0; var monsterSNOHandle = new Common.Types.SNO.SNOHandle(SnoId); var monsterActor = monsterSNOHandle.Target as Actor; foreach (Vector3D coords in Coordinates) { Parallel.ForEach(world.Players, player => //Threading because many spawns at once with out Parallel freezes D3. { var PRTransform = new PRTransform() { Quaternion = new Quaternion() { W = 0.590017f, Vector3D = new Vector3D(0, 0, 0) }, Vector3D = Coordinates[counter] }; //Load the actor here. var actor = WorldGenerator.loadActor(monsterSNOHandle, PRTransform, world, monsterActor.TagMap); monstersAlive.Add(actor); counter++; //If Revealed play animation. world.BroadcastIfRevealed(new PlayAnimationMessage { ActorID = actor, Field1 = 9, Field2 = 0, tAnim = new Net.GS.Message.Fields.PlayAnimationMessageSpec[] { new Net.GS.Message.Fields.PlayAnimationMessageSpec() { Duration = 0x00000048, AnimationSNO = 0x00029A08, PermutationIndex = 0x00000000, Speed = 1f } } }, player.Value); }); } return(true); }
private bool LaunchWave(List<Vector3D> Coordinates, Map.World world, Int32 SnoId) { var counter = 0; var monsterSNOHandle = new Common.Types.SNO.SNOHandle(SnoId); var monsterActor = monsterSNOHandle.Target as Actor; foreach (Vector3D coords in Coordinates) { Parallel.ForEach(world.Players, player => //Threading because many spawns at once with out Parallel freezes D3. { var PRTransform = new PRTransform() { Quaternion = new Quaternion() { W = 0.590017f, Vector3D = new Vector3D(0, 0, 0) }, Vector3D = Coordinates[counter] }; //Load the actor here. var actor = WorldGenerator.loadActor(monsterSNOHandle, PRTransform, world, monsterActor.TagMap); monstersAlive.Add(actor); counter++; //If Revealed play animation. world.BroadcastIfRevealed(new PlayAnimationMessage { ActorID = actor, Field1 = 9, Field2 = 0, tAnim = new Net.GS.Message.Fields.PlayAnimationMessageSpec[] { new Net.GS.Message.Fields.PlayAnimationMessageSpec() { Duration = 0x00000048, AnimationSNO = 0x00029A08, PermutationIndex = 0x00000000, Speed = 1f } } }, player.Value); }); } return true; }