Пример #1
0
 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);
 }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
                }
            }
        }