private SerializableSaber GetSerializableSaber(SaberModel saberModel) { var serializableSaber = new SerializableSaber(); serializableSaber.SaberWidth = saberModel.SaberWidth; var pieceList = new List <SerializablePiece>(); foreach (BasePieceModel pieceModel in saberModel.PieceCollection) { pieceList.Add(new SerializablePiece { Path = pieceModel.StoreAsset.RelativePath }); } serializableSaber.Pieces = pieceList; var trailModel = saberModel.GetTrailModel(); if (trailModel != null) { var trail = new SerializableTrail(); trail.Length = trailModel.Length; trail.Width = trailModel.Width; trail.Whitestep = trailModel.Whitestep; trail.TrailOrigin = trailModel.TrailOrigin; trail.ClampTexture = trailModel.ClampTexture; trail.Material = SerializableMaterial.FromMaterial(trailModel.Material.Material); serializableSaber.Trail = trail; } return(serializableSaber); }
private SaberInstance( SaberModel model, BasePieceInstance.Factory pieceFactory, SiraLog logger, TrailConfig trailConfig, List <ISaberPostProcessor> saberMiddlewares) { _logger = logger; _trailConfig = trailConfig; Model = model; GameObject = new GameObject(SaberName); GameObject.AddComponent <SaberMonoBehaviour>().Init(this, _saberComponents, OnSaberGameObjectDestroyed); CachedTransform = GameObject.transform; PieceCollection = new PieceCollection <BasePieceInstance>(); var sectionInstantiator = new SectionInstantiator(this, pieceFactory, PieceCollection); sectionInstantiator.InstantiateSections(); GameObject.transform.localScale = new Vector3(model.SaberWidth, model.SaberWidth, model.SaberLength); saberMiddlewares.Do(x => x.ProcessSaber(GameObject)); SetupTrailData(); InitializeEvents(); }
private async Task LoadSaberModel(SaberModel saberModel, SerializableSaber serializableSaber) { saberModel.SaberWidth = serializableSaber.SaberWidth; if (_mainAssetStore.IsLoading) { await _mainAssetStore.CurrentTask; } foreach (var piece in serializableSaber.Pieces) { var comp = await _mainAssetStore[piece.Path]; saberModel.PieceCollection.AddPiece(comp.AssetTypeDefinition, comp.GetPiece(saberModel.SaberSlot)); } var trail = serializableSaber.Trail; if (trail != null) { var trailModel = new TrailModel(Vector3.zero, trail.Width, trail.Length, null, trail.Whitestep, trail.TrailOrigin); if (!string.IsNullOrEmpty(trail.TrailOrigin)) { await LoadFromTrailOrigin(trailModel, trail.TrailOrigin); } if (saberModel.GetCustomSaber(out var customsaber)) { customsaber.TrailModel = trailModel; } else { saberModel.TrailModel = trailModel; } } }
private async Task LoadSaberModel(SaberModel saberModel, SerializableSaber serializableSaber) { saberModel.SaberWidth = serializableSaber.SaberWidth; if (_mainAssetStore.IsLoading) { await _mainAssetStore.CurrentTask; } foreach (var piece in serializableSaber.Pieces) { var comp = await _mainAssetStore[piece.Path]; if (comp != null) { saberModel.PieceCollection.AddPiece(comp.AssetTypeDefinition, comp.GetPiece(saberModel.SaberSlot)); } } TrailModel trailModel = null; if (saberModel.GetCustomSaber(out var customsaber)) { trailModel = customsaber.TrailModel; } else { trailModel = new TrailModel(); } var trail = serializableSaber.Trail; if (trail != null) { trailModel.TrailPosOffset = Vector3.zero; trailModel.Width = trail.Width; trailModel.Length = trail.Length; trailModel.Whitestep = trail.Whitestep; trailModel.ClampTexture = trail.ClampTexture; // if trail comes from another saber if (!string.IsNullOrEmpty(trail.TrailOrigin)) { await LoadFromTrailOrigin(trailModel, trail.TrailOrigin); } // assign trailmodel to custom saber or saber factory saber // depending on which trail type is being used if (customsaber is null) { saberModel.TrailModel = trailModel; } trail.Material?.ApplyToMaterial(trailModel.Material?.Material, ResolveTexture); } }
private GameSaberSetup(PluginConfig config, SaberSet saberSet, MainAssetStore mainAssetStore, [Inject(Id = "beatmapdata")] BeatmapData beatmapData) { _config = config; _saberSet = saberSet; _mainAssetStore = mainAssetStore; _beatmapData = beatmapData; _oldLeftSaberModel = _saberSet.LeftSaber; _oldRightSaberModel = _saberSet.RightSaber; Setup(); }
private GameSaberSetup(PluginConfig config, SaberSet saberSet, MainAssetStore mainAssetStore, IReadonlyBeatmapData beatmap, RandomUtil randomUtil) { _config = config; _saberSet = saberSet; _mainAssetStore = mainAssetStore; _beatmapData = beatmap.CastChecked <BeatmapData>(); _randomUtil = randomUtil; _oldLeftSaberModel = _saberSet.LeftSaber; _oldRightSaberModel = _saberSet.RightSaber; Setup(); }
public SaberInstance CreateSaber(SaberModel model, Transform parent, bool raiseSaberEvent = false, bool raisePieceEvent = false) { CurrentSaber = _saberFactory.Create(model); CurrentSaber.SetParent(parent); if (raiseSaberEvent) { OnSaberInstanceCreated?.Invoke(CurrentSaber); } CurrentPiece = GetPiece(SelectedDefinition); if (raisePieceEvent && CurrentPiece != null) { OnPieceInstanceCreated?.Invoke(CurrentPiece); } return(CurrentSaber); }
private SaberInstance(SaberModel model, BasePieceInstance.Factory pieceFactory, SiraLog logger) { _logger = logger; Model = model; GameObject = new GameObject("SF Saber"); CachedTransform = GameObject.transform; PieceCollection = new PieceCollection <BasePieceInstance>(); _sectionInstantiator = new SectionInstantiator(this, pieceFactory, PieceCollection); _sectionInstantiator.InstantiateSections(); GameObject.transform.localScale = new Vector3(model.SaberWidth, model.SaberWidth, 1); _colorMaterials = new List <Material>(); GetColorableMaterials(_colorMaterials); SetupTrailData(); InitializeEvents(); }
private SaberInstance(SaberModel model, BasePieceInstance.Factory pieceFactory, SiraLog logger, TrailConfig trailConfig) { _logger = logger; _trailConfig = trailConfig; Model = model; GameObject = new GameObject("SF Saber"); CachedTransform = GameObject.transform; PieceCollection = new PieceCollection <BasePieceInstance>(); var sectionInstantiator = new SectionInstantiator(this, pieceFactory, PieceCollection); sectionInstantiator.InstantiateSections(); GameObject.transform.localScale = new Vector3(model.SaberWidth, model.SaberWidth, 1); GameObject.SetLayer <Renderer>(12); SetupTrailData(); InitializeEvents(); }
public SaberInstance CreateSaber(SaberModel model, Transform parent, bool raiseSaberEvent = false, bool raisePieceEvent = false) { CurrentSaber = _saberFactory.Create(model); if (parent is { })
/// <summary> /// Creates a saber without setting it to current /// or firing any event /// </summary> /// <param name="model"></param> /// <returns></returns> public SaberInstance CreateTempSaber(SaberModel model) { return(_saberFactory.Create(model)); }