public void DestroyGraffiti(NodeRemoveEvent e, GraffitiNode graffitiNode, [JoinAll] SingleNode <DecalManagerComponent> decalManagerNode, [JoinAll] SingleNode <BurningTargetBloomComponent> bloomPostEffect) { if (graffitiNode.dynamicDecalProjector.Emmit) { bloomPostEffect.component.burningTargetBloom.targets.Remove(graffitiNode.graffitiInstance.EmitRenderer); } decalManagerNode.component.GraffitiDynamicDecalManager.RemoveDecal(graffitiNode.graffitiInstance.GraffitiDecalObject); }
public void DrawGraffiti(CreateGraffitiEvent e, GraffitiNode graffitiNode, [JoinByUser] SingleNode <SelfBattleUserComponent> self, [JoinByUser] TankWithGraffitiNode tank, [JoinByUser] Optional <SingleNode <PremiumAccountBoostComponent> > premium, [JoinAll] SingleNode <DecalManagerComponent> decalManagerNode, [JoinAll] SingleNode <BurningTargetBloomComponent> bloomPostEffect) { GameObject obj2 = this.DrawGraffiti(decalManagerNode.component, graffitiNode.dynamicDecalProjector, e.Position, e.Direction, e.Up); if (obj2) { graffitiNode.Entity.RemoveComponent(typeof(GraffitiDecalComponent)); graffitiNode.graffitiInstance.GraffitiDecalObject = obj2; graffitiNode.Entity.AddComponent(new GraffitiDecalComponent(e.Position, e.Direction, e.Up)); this.PlaySound(graffitiNode.graffitiSound.Sound, e.Position); this.AddEmitEffect(graffitiNode, bloomPostEffect.component); if (premium.IsPresent()) { GraffitiVisualEffectComponent graffitiVisualEffect = tank.graffitiVisualEffect; GraffitiVisualEffect visualEffectPrefab = graffitiVisualEffect.VisualEffectPrefab; this.DrawEffect(visualEffectPrefab, graffitiVisualEffect.TimeToDestroy, tank.tankCommonInstance.TankCommonInstance.transform, graffitiNode.imageItem.SpriteUid, graffitiNode.itemRarity.RarityType); } } }
public void OnRemoteGraffiti(NodeAddedEvent e, GraffitiNode node, [JoinByUser] SingleNode <UserUidComponent> UidNode, [JoinByUser] RemoteUserNode user) { string uid = UidNode.component.Uid; Vector3 sprayPosition = node.graffitiDecal.SprayPosition; Vector3 sprayDirection = node.graffitiDecal.SprayDirection; Vector3 sprayUpDirection = node.graffitiDecal.SprayUpDirection; GraffitiAntiSpamTimerComponent graffitiAntiSpamTimer = node.graffitiAntiSpamTimer; if (!graffitiAntiSpamTimer.GraffitiDelayDictionary.ContainsKey(uid)) { base.ScheduleEvent(new CreateGraffitiEvent(sprayPosition, sprayDirection, sprayUpDirection), node.Entity); GraffitiAntiSpamTimerComponent.GraffityInfo info2 = new GraffitiAntiSpamTimerComponent.GraffityInfo { Time = Time.realtimeSinceStartup }; graffitiAntiSpamTimer.GraffitiDelayDictionary.Add(uid, info2); } else { float realtimeSinceStartup = Time.realtimeSinceStartup; GraffitiAntiSpamTimerComponent.GraffityInfo info3 = graffitiAntiSpamTimer.GraffitiDelayDictionary[uid]; float timeInSec = (info3.Time + 2f) - realtimeSinceStartup; if (timeInSec <= 0f) { info3.CreateGraffitiEvent = new CreateGraffitiEvent(sprayPosition, sprayDirection, sprayUpDirection); info3.Time = Time.realtimeSinceStartup; base.NewEvent(info3.CreateGraffitiEvent).Attach(node.Entity).Schedule(); } else if (info3.Time > realtimeSinceStartup) { info3.CreateGraffitiEvent.Position = sprayPosition; info3.CreateGraffitiEvent.Direction = sprayDirection; info3.CreateGraffitiEvent.Up = sprayUpDirection; } else { info3.CreateGraffitiEvent = new CreateGraffitiEvent(sprayPosition, sprayDirection, sprayUpDirection); info3.Time += 2f; base.NewEvent(info3.CreateGraffitiEvent).Attach(node.Entity).ScheduleDelayed(timeInSec); } } }