/// <summary>Creates a new GameObject with the given parameters</summary> public static GameObject Create(GOEntry entry, IWorldLocation where, GOSpawnEntry spawnEntry = null, GOSpawnPoint spawnPoint = null) { GameObject gameObject = entry.GOCreator(); gameObject.GoId = entry.GOId; Func <GameObjectHandler> handlerCreator = entry.HandlerCreator; gameObject.Init(entry, spawnEntry, spawnPoint); if (handlerCreator != null) { gameObject.Handler = handlerCreator(); gameObject.Phase = where.Phase; Vector3 position = where.Position; if (spawnPoint == null) { position.Z = where.Map.Terrain.GetGroundHeightUnderneath(position); } where.Map.AddObject(gameObject, ref position); gameObject.MarkUpdate(GameObjectFields.DYNAMIC); return(gameObject); } log.Warn("GOEntry {0} did not have a HandlerCreator set - Type: {1}", entry, entry.Type); gameObject.Delete(); return(null); }
/// <summary> /// Creates a new GameObject with the given parameters /// </summary> public static GameObject Create(GOEntry entry, IWorldLocation where, GOSpawnEntry spawnEntry = null, GOSpawnPoint spawnPoint = null) { var go = entry.GOCreator(); var handlerCreator = entry.HandlerCreator; go.Init(entry, spawnEntry, spawnPoint); if (handlerCreator != null) { go.Handler = handlerCreator(); } else { log.Warn("GOEntry {0} did not have a HandlerCreator set - Type: {1}", entry, entry.Type); go.Delete(); return(null); } go.Phase = where.Phase; var pos = where.Position; if (spawnPoint == null) { pos.Z = where.Map.Terrain.GetGroundHeightUnderneath(pos); } where.Map.AddObject(go, ref pos); go.MarkUpdate(GameObjectFields.DYNAMIC); return(go); }