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); } }
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); } }
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); } }
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))); }
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); } }
public int Emit(LogicalObject obj) { if (obj is Package) { _target.Initialize(VulcanEngine.Common.PathManager.GetToolPath(), ((Package)obj).Name); } _target.EmitObject(obj); return(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); }
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; }
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()); } }
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))); }
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))); }
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); } }
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))); }
protected SsisTaskEmitter(LogicalObject obj, SSISEmitterContext context) { _name = obj.Name; _description = obj.Name; _context = context; }
public abstract void EmitObject(LogicalObject obj);
public abstract void EmitObject(LogicalObject obj, EmitterContext context);
public static string GetLogicalName(LogicalObject obj) { return(obj == null ? string.Empty : obj.Name); }