public IRenderableProduction Clone() { var clone = new TerminalProduction(Terminal) { Name = Name, Scope = Scope.Clone(), IsOccluder = IsOccluder, ParentProduction = ParentProduction }; return(clone); }
//public RegistrarProduction Repeat(RepeatProduction repeater) //{ // if (!_finalFlag) // { // ChildProductions.Add(repeater); // _finalFlag = true; // } // else // { // Debug.Log(string.Format("Encountered an illegal production definition: Registrar {0} already finalized, may not parse Repeat production.", Name)); // } // return this; //} public RegistrarProduction Terminate(TerminalProduction terminal) { if (!_finalFlag) { var term = terminal.Clone(); term.ParentProduction = this; ChildProductions.Add(term); _finalFlag = true; } else { Debug.Log(string.Format("Encountered an illegal production definition: Registrar {0} already finalized, may not parse Terminate production.", Name)); } return(this); }