Page MenuHomeFeedback Tracker

World Editor always crashes when returning from ingame preview
Awaiting internal Testing, NormalPublic

Description

Trying to create simple map with spawning AI squads, it's working but what is seriously annoying is when returning from playtest editor always crashed - also it would be nice to have feature that when u press Play in editor, it will automatically save everything - before launch so in case of crash loss is prevented.

Details

Severity
None
Resolution
Open
Reproducibility
N/A
Operating System
Windows 10 x64
Category
General
Steps To Reproduce

Create basic map with necesery stuff and add this script to game mode -> OnGameStart:

class GameMode_Plain1_Class: SCR_BaseGameMode 
{
	override void OnGameStart()
	{
		//SpawnUSSRGroup(500);
		//SpawnUSGroup(1000);
		
		array<SCR_AIGroup> groupsUs = {};
		array<SCR_AIGroup> groupsUssr = {};
		GetGame().GetCallqueue().CallLater(CheckUsGroup, true, 10000, groupsUs);
		GetGame().GetCallqueue().CallLater(CheckUssrGroup, true, 10100, groupsUssr);
	}
	
	protected void CheckUsGroup(array<SCR_AIGroup> groups){
		for (int i = groups.Count() - 1; i >= 0; i--){
			if (!groups[i] || groups[i].GetTotalAgentCount() == 0){
				groups.Remove(i);
			}
		}
		
		if(groups.Count() < 5){
			SpawnUSGroup(groups);
		}
	}
	
	protected void CheckUssrGroup(array<SCR_AIGroup> groups){
		for (int i = groups.Count() - 1; i >= 0; i--){
			if (!groups[i] || groups[i].GetTotalAgentCount() == 0){
				groups.Remove(i);
			}
		}
		
		if(groups.Count() < 5){
			SpawnUSSRGroup(groups);
		}
	}
	
	protected void SpawnUSGroup(array<SCR_AIGroup> groups){
		string spawnGroup = "{DDF3799FA1387848}Prefabs/Groups/BLUFOR/Group_US_RifleSquad.et";
 		//string waypointType = "{750A8D1695BD6998}Prefabs/AI/Waypoints/AIWaypoint_Move.et";
		string waypointType = "{B3E7B8DC2BAB8ACC}Prefabs/AI/Waypoints/AIWaypoint_SearchAndDestroy.et";
 		
 		IEntity spawnPosition = GetGame().GetWorld().FindEntityByName("US_AI_SpawnPoint_1");
 		IEntity waypointPosition = GetGame().GetWorld().FindEntityByName("USSR_AI_SpawnPoint_1");
 
 		//GetGame().GetCallqueue().CallLater(AISpawner, delay, false, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
		AISpawner(groups, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
	}
		
	protected void SpawnUSSRGroup(array<SCR_AIGroup> groups){
		string spawnGroup = "{E552DABF3636C2AD}Prefabs/Groups/OPFOR/Group_USSR_RifleSquad.et";
		//string waypointType = "{750A8D1695BD6998}Prefabs/AI/Waypoints/AIWaypoint_Move.et";
		string waypointType = "{B3E7B8DC2BAB8ACC}Prefabs/AI/Waypoints/AIWaypoint_SearchAndDestroy.et";
		
		IEntity spawnPosition = GetGame().GetWorld().FindEntityByName("USSR_AI_SpawnPoint_1");
 		IEntity waypointPosition = GetGame().GetWorld().FindEntityByName("US_AI_SpawnPoint_1");
 
 		//GetGame().GetCallqueue().CallLater(AISpawner, delay, false, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
		AISpawner(groups, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
	}
			
	protected void AISpawner(array<SCR_AIGroup> groups, string spawnGroup, vector spawnPosition, string waypointType, vector waypointPosition){
		Resource resource = GenerateAndValidateResource(spawnGroup);
		SCR_AIGroup group = SCR_AIGroup.Cast(GetGame().SpawnEntityPrefab(resource, null, GenerateSpawnParameters(spawnPosition)));
		
		if(!group){
			return;
		}
		CreateWaypoint(group, waypointType, waypointPosition);
		groups.Insert(group);
	}
	
	protected void CreateWaypoint(SCR_AIGroup group, string waypointType, vector waypointPosition){
		Resource resource = GenerateAndValidateResource(waypointType);
		AIWaypoint waypoint = AIWaypoint.Cast(GetGame().SpawnEntityPrefab(resource, null, GenerateSpawnParameters(waypointPosition)));
		
		if(!waypoint){
			return;
		}
		group.AddWaypoint(waypoint);
	}
		
	protected Resource GenerateAndValidateResource(string resourceToLoad){
		Resource resource = Resource.Load(resourceToLoad);
		return resource;
	}
	
	protected EntitySpawnParams GenerateSpawnParameters(vector position){
		EntitySpawnParams params = EntitySpawnParams();
		params.TransformMode = ETransformMode.WORLD;
		
		params.Transform[3] = position;
		return params;
	}

};

Event Timeline

cute_matt created this task.Tue, Apr 9, 9:26 PM
cute_matt edited Steps To Reproduce. (Show Details)
Geez changed the task status from New to Awaiting internal Testing.Wed, Apr 10, 10:47 AM