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(); }
public void CreateTrail(TrailConfig trailConfig) { if (_instanceTrailData is null) { if (_backupTrail is null) { return; } var trailStart = TrailInstance.gameObject.CreateGameObject("Trail Start"); var trailEnd = TrailInstance.gameObject.CreateGameObject("TrailEnd"); trailEnd.transform.localPosition = new Vector3(0, 0, 1); var trailRenderer = _backupTrail.GetField <SaberTrailRenderer, SaberTrail>("_trailRendererPrefab"); var material = trailRenderer.GetField <MeshRenderer, SaberTrailRenderer>("_meshRenderer").material; var trailInitDataVanilla = new TrailInitData { TrailColor = Color.white, TrailLength = 15, Whitestep = 0.02f, Granularity = trailConfig.Granularity }; TrailInstance.Setup(trailInitDataVanilla, trailStart.transform, trailEnd.transform, material); return; } var trailInitData = new TrailInitData { TrailColor = Color.white, TrailLength = _instanceTrailData.Length, Whitestep = _instanceTrailData.WhiteStep, Granularity = trailConfig.Granularity }; Transform pointStart = _instanceTrailData.IsTrailReversed ? _instanceTrailData.PointEnd : _instanceTrailData.PointStart; Transform pointEnd = _instanceTrailData.IsTrailReversed ? _instanceTrailData.PointStart : _instanceTrailData.PointEnd; if (pointStart == null || pointEnd == null) { Debug.LogWarning("Primary trail on saber doesn't seem to have a positional transform"); return; } TrailInstance.Setup( trailInitData, pointStart, pointEnd, _instanceTrailData.Material.Material ); _canColorMaterial = IsMaterialColorable(_instanceTrailData.Material.Material); }
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 void CreateTrail(TrailConfig trailConfig, bool editor) { if (_customTrail.PointStart == null || _customTrail.PointEnd == null) { Debug.LogWarning("Secondary trail on saber doesn't seem to have a positional transform"); return; } if (_customTrail.Length < 1) { return; } var trailInitData = new TrailInitData { TrailColor = Color.white, TrailLength = _customTrail.Length, Whitestep = 0, Granularity = 60, SamplingFrequency = 80, SamplingStepMultiplier = 1 }; TrailInstance.Setup( trailInitData, _customTrail.PointStart, _customTrail.PointEnd, _customTrail.TrailMaterial, editor ); if (!trailConfig.OnlyUseVertexColor) { _canColorMaterial = MaterialHelpers.IsMaterialColorable(_customTrail.TrailMaterial); } }
public void CreateTrail(TrailConfig trailConfig, bool editor) { if (InstanceTrailData is null) { if (_backupTrail is null) { return; } var trailStart = TrailInstance.gameObject.CreateGameObject("Trail StartNew"); var trailEnd = TrailInstance.gameObject.CreateGameObject("TrailEnd"); trailEnd.transform.localPosition = new Vector3(0, 0, 1); var trailRenderer = _backupTrail.GetField <SaberTrailRenderer, SaberTrail>("_trailRendererPrefab"); var material = trailRenderer.GetField <MeshRenderer, SaberTrailRenderer>("_meshRenderer").material; var trailInitDataVanilla = new TrailInitData { TrailColor = Color.white, TrailLength = 15, Whitestep = 0.02f, Granularity = trailConfig.Granularity }; TrailInstance.Setup(trailInitDataVanilla, trailStart.transform, trailEnd.transform, material, editor); return; } if (InstanceTrailData.Length < 1) { return; } var trailInitData = new TrailInitData { TrailColor = Color.white, TrailLength = InstanceTrailData.Length, Whitestep = InstanceTrailData.WhiteStep, Granularity = trailConfig.Granularity }; var(pointStart, pointEnd) = InstanceTrailData.GetPoints(); if (pointStart == null || pointEnd == null) { Debug.LogWarning("Primary trail on saber doesn't seem to have a positional transform"); return; } TrailInstance.Setup( trailInitData, pointStart, pointEnd, InstanceTrailData.Material.Material, editor ); if (!trailConfig.OnlyUseVertexColor) { _canColorMaterial = MaterialHelpers.IsMaterialColorable(InstanceTrailData.Material.Material); } }
public void CreateTrail(TrailConfig trailConfig) { if (_instanceTrailData is null) { if (_backupTrail is null) { return; } var trailStart = TrailInstance.gameObject.CreateGameObject("Trail Start"); var trailEnd = TrailInstance.gameObject.CreateGameObject("TrailEnd"); trailEnd.transform.localPosition = new Vector3(0, 0, 1); var trailRenderer = _backupTrail.GetField <SaberTrailRenderer, SaberTrail>("_trailRendererPrefab"); var material = trailRenderer.GetField <MeshRenderer, SaberTrailRenderer>("_meshRenderer").material; var trailInitDataVanilla = new TrailInitData { TrailColor = Color.white, TrailLength = 15, Whitestep = 0.02f, Granularity = trailConfig.Granularity, SamplingFrequency = trailConfig.SamplingFrequency, SamplingStepMultiplier = _samplingStepMultiplier }; TrailInstance.Setup( trailInitDataVanilla, material, trailStart.transform, trailEnd.transform ); return; } var trailInitData = new TrailInitData { TrailColor = Color.white, TrailLength = _instanceTrailData.Length, Whitestep = _instanceTrailData.WhiteStep, Granularity = trailConfig.Granularity, SamplingFrequency = trailConfig.SamplingFrequency, SamplingStepMultiplier = _samplingStepMultiplier, }; Transform pointStart = _instanceTrailData.IsTrailReversed ? _instanceTrailData.PointEnd : _instanceTrailData.PointStart; Transform pointEnd = _instanceTrailData.IsTrailReversed ? _instanceTrailData.PointStart : _instanceTrailData.PointEnd; TrailInstance.Setup( trailInitData, _instanceTrailData.Material.Material, pointStart, pointEnd ); _canColorMaterial = IsMaterialColorable(_instanceTrailData.Material.Material); }