public void Build(RTSRenderer renderer, string rootPath, string model, string[] tex) { using (var sModel = File.OpenRead(Path.Combine(rootPath, model))) { Texture2D tAnim = AnimationFromBitmap(renderer, Path.Combine(rootPath, tex[0])); View = new RTSUnitModel(renderer, sModel, tAnim); } View.ModelTexture = renderer.LoadTexture2D(Path.Combine(rootPath, tex[1])); View.ColorCodeTexture = renderer.LoadTexture2D(Path.Combine(rootPath, tex[2])); }
private void UnitLoader(object _fi) { FileInfo fi = _fi as FileInfo; GameState state = new GameState(); state.teams[0] = new RTSTeam(0, RTSInputType.None); state.UpdateActiveTeams(); RTSUnitData _unitData = RTSUnitDataParser.ParseData(GameEngine.Scripts, fi, 0); state.teams[0].Race.Units[0] = _unitData; state.teams[0].Race.UpdateActiveUnits(); RTSUnitModel _unitModel = RTSUnitDataParser.ParseModel(renderer, fi, state.teams[0].Race); _unitModel.Hook(renderer, state, 0, 0); RTSUnit _unit = new RTSUnit(state.teams[0], state.teams[0].Race.Units[0], Vector2.Zero); _unit.Height = 0; _unitModel.OnUnitSpawn(_unit); // Create The Full Animation Loop _unit.AnimationController = new BlankAnimController(0, (_unitModel.AnimationTexture.Height / 3) - 1, 30f); // Make Sure To Only Modify At A Specific Point lock (drawLock) { // Check Previous Dispose if (unit != null) { DisposeUnit(); } // Now Set Data unitData = _unitData; unit = _unit; unitModel = _unitModel; } }
private void DisposeUnit() { unit = null; unitData = null; unitModel = null; }