Exemple #1
0
    public void TryLaserShot()
    {
        float LaserLen = 10f;

        if (LasersCharges.x > 0)
        {
            LasersCharges.x--;
            AsteroidsGame.current.UpdateLaserCounter();
            var up = logicobj.up;
            foreach (var item in Engine.FindObjectsOfType <FastPhysics>())
            {
                if (!FastPhysics.CrossArray(item.logicobj.tags, tagsblacklist))
                {
                    //Расстояние до лазера от объекта это длина его перпендикуляра если корабль смотрит в сторону объекта
                    var ip = item.position;
                    if (Vector2.Distance(up + position, ip) < Vector2.Distance(position, ip))//Если корабль смотрит в сторону объекта
                    {
                        Vector2 cross = PerpPoint(ip - position, up);
                        if (cross.magnitude < item.Radius && Vector2.Distance(ip - cross, position) < LaserLen)//Длина перепендикуляра
                        {
                            AsteroidsGenerator.Crush(item.logicobj, true);
                        }
                    }
                }
            }
            var laser = LogicalObject.Create()
                        .AddPart(new PolyRenderer(new Vector2[] {
                new Vector2(0, 0.5f),
                new Vector2(0, LaserLen)
            }, Color.red));
            laser.position = position;
            laser.angle    = angle;
            Destroy(laser, 0.1f);
        }
    }
Exemple #2
0
        public override void EmitObject(LogicalObject obj)
        {
            LogicalObject objTemp = obj;
            LogicalObject objParent;

            while ((objParent = objTemp.Parent) != null)
            {
                objTemp = objParent;
                _streamWriter.Write("\t");
            }

            _streamWriter.Write("[{0}]: {1}", obj.GetType().Name, obj.Name);

            if (obj is LogicalReference)
            {
                LogicalObject r = ((LogicalReference)obj).RefObject;
                if (r != null)
                {
                    _streamWriter.Write(" ---> {0}:{1}", r.GetType().Name, r.Name);
                }
            }

            _streamWriter.WriteLine();

            foreach (LogicalObject objChildren in obj.Children)
            {
                EmitObject(objChildren);
            }
        }
Exemple #3
0
        public override void EmitObject(LogicalObject obj, Vulcan.Kernel.EmitterContext context)
        {
            LogicalObject objTemp = obj;
            LogicalObject objParent;
            while ((objParent = objTemp.Parent) != null)
            {
                objTemp = objParent;
                _streamWriter.Write("\t");
            }

            _streamWriter.Write("[{0}]: {1}", obj.GetType().Name, obj.Name);

            if (obj is LogicalReference)
            {
                LogicalObject r = ((LogicalReference)obj).RefObject;
                if (r != null)
                {
                    _streamWriter.Write(" ---> {0}:{1}", r.GetType().Name, r.Name);
                }
            }

            _streamWriter.WriteLine();

            foreach (LogicalObject objChildren in obj.Children)
            {
                EmitObject(objChildren, context);
            }
        }
Exemple #4
0
 public static LogicalObject Asteroid()
 {
     return(LogicalObject.Create(tag: "Asteroid")
            .AddPart <PolyRenderer>()
            .AddPart(new SpriteDrawer(Chache.Resources.loaded["Asteroid" + UnityEngine.Random.Range(0, 3)]))
            .AddPart <AsteroidsLogic>()
            .AddPart(new FastPhysics(0, 0.5f)));
 }
Exemple #5
0
 public static LogicalObject Meteor()
 {
     return(LogicalObject.Create(Vector2.zero, new Vector2(0.8f, 0.8f), tag: "Meteor")
            .AddPart <PolyRenderer>()
            .AddPart(new SpriteDrawer(Chache.Resources.loaded["Asteroid" + UnityEngine.Random.Range(0, 3)]))
            .AddPart <MeteorsLogic>()
            .AddPart(new FastPhysics(0, 0.4f)));
 }
    //Events
    public static void Crush(LogicalObject @object, bool isLaser = false)
    {
        var t = @object.GetParts <ICrush>();

        foreach (var c in t)
        {
            c.OnCrush(isLaser);
        }
    }
Exemple #7
0
        public int Emit(LogicalObject obj)
        {
            if (obj is Package)
            {
                _target.Initialize(VulcanEngine.Common.PathManager.GetToolPath(), ((Package)obj).Name);
            }
            _target.EmitObject(obj);

            return(0);
        }
Exemple #8
0
        public override int Emit(LogicalObject obj, Vulcan.Kernel.EmitterContext context)
        {
            if (obj is Package)
            {
                _target.Initialize(context.DetegoRootPath, Path.ChangeExtension(context.XMLFileName, null));
            }

            _target.EmitObject(obj, context);

            return(0);
        }
Exemple #9
0
        public override int Emit(LogicalObject obj, Vulcan.Kernel.EmitterContext context)
        {
            if (obj is Package)
            {
                _target.Initialize(context.DetegoRootPath, Path.ChangeExtension(context.XMLFileName, null));
            }

            _target.EmitObject(obj, context);

            return 0;
        }
Exemple #10
0
        public string Emit(LogicalObject obj)
        {
            Template template = _templateManager[_templateName];

            if (_templateParameters == null)
            {
                return(template.Data.Trim());
            }
            else
            {
                return(String.Format(System.Globalization.CultureInfo.InvariantCulture, template.Data, _templateParameters).Trim());
            }
        }
Exemple #11
0
 public static LogicalObject Ship()
 {
     return(LogicalObject.Create(tag: "Ship")
            .AddPart(new PolyRenderer(new Vector2[]
     {
         new Vector2(-0.5f, -0.5f),
         new Vector2(0.5f, -0.5f),
         new Vector2(0, 0.5f),
     }))
            .AddPart(new SpriteDrawer(source: Chache.Resources.loaded["ship"]))
            .AddPart <ShipLogic>()
            .AddPart <ShipControll>()
            .AddPart(new FastPhysics(drag: 3, radius: 0.5f)));
 }
Exemple #12
0
 public static LogicalObject Bullet()
 {
     return(LogicalObject.Create(Vector2.zero, new Vector2(0.2f, 0.2f), tag: "Untagged")
            .AddPart(new PolyRenderer(new Vector2[]
     {
         new Vector2(0, 0),
         new Vector2(1, 0),
         new Vector2(1, 1),
         new Vector2(0, 1)
     }))
            .AddPart(new SpriteDrawer(Chache.Resources.loaded["bullet"]))
            .AddPart(new BulletLogic())
            .AddPart(new FastPhysics(drag: 0, radius: 0.05f)));
 }
Exemple #13
0
        public ISSISEmitter InstantiateEmitter(LogicalObject obj, SSISEmitterContext context)
        {
            Type ssisEmitterType = null;

            if (_pluginLoader.PluginTypesByAttribute.TryGetValue(new PhysicalIRMappingAttribute(obj.GetType()), out ssisEmitterType))
            {
                ConstructorInfo constructor = ssisEmitterType.GetConstructor(new Type[] { obj.GetType(), context.GetType() });
                ISSISEmitter    objEmitter  = (ISSISEmitter)constructor.Invoke(new object[] { obj, context });

                return(objEmitter);
            }
            else
            {
                _message.Trace(Severity.Error, Resources.SSISObjectEmitterNotFound, obj.GetType());

                return(null);
            }
        }
Exemple #14
0
 public static LogicalObject UFO()
 {
     return(LogicalObject.Create(tag: "UFO")
            .AddPart(new PolyRenderer(new Vector2[] {
         new Vector2(-0.5f, -0.1f),
         new Vector2(-0.3f, -0.3f),
         new Vector2(0.3f, -0.3f),
         new Vector2(0.5f, -0.1f),
         new Vector2(0.3f, 0.1f),
         new Vector2(-0.3f, 0.1f),
         new Vector2(-0.5f, -0.1f),
         new Vector2(0.5f, -0.1f),
         new Vector2(0.3f, 0.1f),
         new Vector2(0.3f, 0.1f),
         new Vector2(0.2f, 0.1f),
         new Vector2(0.1f, 0.3f),
         new Vector2(-0.1f, 0.3f),
         new Vector2(-0.2f, 0.1f),
         new Vector2(-0.3f, 0.1f),
     }))
            .AddPart(new SpriteDrawer(Chache.Resources.loaded["UFO"]))
            .AddPart <UFOLogic>()
            .AddPart(new FastPhysics(0, 0.5f)));
 }
Exemple #15
0
 protected SsisTaskEmitter(LogicalObject obj, SSISEmitterContext context)
 {
     _name        = obj.Name;
     _description = obj.Name;
     _context     = context;
 }
Exemple #16
0
 public abstract void EmitObject(LogicalObject obj);
Exemple #17
0
 public abstract void EmitObject(LogicalObject obj, EmitterContext context);
Exemple #18
0
 public abstract void EmitObject(LogicalObject obj, EmitterContext context);
Exemple #19
0
 public static string GetLogicalName(LogicalObject obj)
 {
     return(obj == null ? string.Empty : obj.Name);
 }