private void Compile(InputBuildContext context) { context.info.compilerCount++; ConnectionSetCompiler compiler = context.connCompiler; List <Component> items = context.components; List <byte> areas = context.areas; int count = 0; for (int i = 0; i < items.Count; i++) { Component item = items[i]; if (item is OFMConnection) { OFMConnection conn = (OFMConnection)item; byte area = (conn.OverrideArea ? conn.Area : areas[i]); compiler.Add(conn.StartPoint.ToVector3(), conn.EndPoint.ToVector3() , conn.Radius , conn.IsBidirectional , area , conn.Flags , (uint)conn.UserId); count++; } } context.Log(string.Format("Compiled off-mesh connections: {0}", count), this); }
private bool ProcessPost(InputBuildContext context) { if (!ProcessValidation(context)) { return(false); } context.info.postCount++; if (areas.Count == 0) { context.Log("No area/flag maps. No action taken.", this); return(true); } ConnectionSetCompiler conns = context.connCompiler; bool applied = false; for (int i = 0; i < areas.Count; i++) { byte area = areas[i]; ushort flag = (ushort)flags[i]; int marked = 0; for (int iConn = 0; iConn < conns.Count; iConn++) { OffMeshConnection conn = conns[iConn]; if (conn.area == area) { conn.flags |= flag; conns[iConn] = conn; marked++; } } if (marked > 0) { string msg = string.Format( "Added '0x{0:X}' flags to {1} connections with the area {2}." , flag, marked, area); context.Log(msg, this); applied = true; } } if (!applied) { context.Log("No flags applied.", this); } return(true); }