public void BuildVisualWeapon(NodeAddedEvent evt, WeaponGraphicsNode weaponGraphics)
        {
            Entity entity = weaponGraphics.Entity;
            BaseRendererComponent component = new BaseRendererComponent();
            Renderer weaponRenderer         = TankBuilderUtil.GetWeaponRenderer(weaponGraphics.weaponVisualRoot.gameObject);

            component.Renderer = weaponRenderer;
            component.Mesh     = (component.Renderer as SkinnedMeshRenderer).sharedMesh;
            entity.AddComponent <StartMaterialsComponent>();
            entity.AddComponent(component);
            WeaponBoundsComponent component3 = new WeaponBoundsComponent {
                WeaponBounds = weaponRenderer.bounds
            };

            entity.AddComponent(component3);
        }
        public void LocateWeaponVisualRootUnderMountPoint(NodeAddedEvent evt, TankGraphicsNode tank, [Context, JoinByTank] WeaponGraphicsNode weaponGraphics)
        {
            WeaponVisualRootComponent weaponVisualRoot = weaponGraphics.weaponVisualRoot;

            weaponVisualRoot.transform.parent = tank.tankVisualRoot.transform;
            Transform  mountPoint = tank.mountPoint.MountPoint;
            GameObject obj2       = new GameObject("VisualMountPoint");

            obj2.transform.SetParent(tank.tankVisualRoot.transform, false);
            obj2.transform.localPosition = mountPoint.localPosition;
            obj2.transform.localRotation = mountPoint.localRotation;
            VisualMountPointComponent component = new VisualMountPointComponent {
                MountPoint = obj2.transform
            };

            tank.Entity.AddComponent(component);
            weaponVisualRoot.transform.SetParent(obj2.transform, false);
            weaponVisualRoot.transform.localPosition = Vector3.zero;
            weaponVisualRoot.transform.localRotation = Quaternion.identity;
            this.InitCharacterShadowSystem(tank.Entity, tank.tankVisualRoot.transform, weaponGraphics.weaponVisualRoot.transform);
            base.NewEvent <ContinueAssembleTankEvent>().Attach(tank).ScheduleDelayed(0.3f);
        }