// One-time call public static Vector3 GetRandom(Vector3 originalVector, float maxAngle) { if (maxAngle == 0) return originalVector; MyUtilRandomVector3ByDeviatingVector rnd = new MyUtilRandomVector3ByDeviatingVector(originalVector); return rnd.GetNext(maxAngle); }
public static Vector3 GetRandom(Vector3 originalVector, float maxAngle) { if (maxAngle == 0f) { return(originalVector); } MyUtilRandomVector3ByDeviatingVector vector = new MyUtilRandomVector3ByDeviatingVector(originalVector); return(vector.GetNext(maxAngle)); }
public static Vector3 GetRandom(int hash, Vector3 originalVector, float maxAngle) { if (maxAngle == 0) { return(originalVector); } MyUtilRandomVector3ByDeviatingVector rnd = new MyUtilRandomVector3ByDeviatingVector(originalVector); return(rnd.GetNext(hash, maxAngle)); }
// Create smoke and debris particle at the place of voxel/model hit static void CreateBasicHitParticles(ref Vector3D hitPoint, ref Vector3 normal, ref Vector3D direction, IMyEntity physObject, MyEntity weapon, float scale, MyEntity ownerEntity = null) { Vector3D reflectedDirection = Vector3D.Reflect(direction, normal); MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection); if (MySector.MainCamera.GetDistanceWithFOV(hitPoint) < 200) { MyParticleEffect effect; if (MyParticlesManager.TryCreateParticleEffect((int)MyParticleEffectsIDEnum.Hit_BasicAmmo, out effect)) { MatrixD dirMatrix = MatrixD.CreateFromDir(reflectedDirection); effect.WorldMatrix = MatrixD.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up); effect.UserScale = scale; } } }
// Create smoke and debris particle at the place of voxel/model hit static void CreateBasicHitAutocannonParticles(ref Vector3D hitPoint, ref Vector3 normal, ref Vector3D direction, IMyEntity physObject, MyEntity weapon, float scale, MyEntity ownerEntity = null) { MyParticleEffect effect = GetEffectForWeapon(weapon, (int)MyParticleEffectsIDEnum.Hit_AutocannonBasicAmmo); Vector3 reflectedDirection = Vector3.Reflect(direction, normal); MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection); MatrixD dirMatrix = MatrixD.CreateFromDir(reflectedDirection); effect.WorldMatrix = MatrixD.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up); effect.UserScale = scale; }
public static void CreateBasicHitParticles(string effectName, ref Vector3D hitPoint, ref Vector3 normal, ref Vector3D direction, IMyEntity physObject, MyEntity weapon, float scale, MyEntity ownerEntity = null) { Vector3D reflectedDirection = Vector3D.Reflect(direction, normal); MyUtilRandomVector3ByDeviatingVector randomVector = new MyUtilRandomVector3ByDeviatingVector(reflectedDirection); MyParticleEffect effect; if (MyParticlesManager.TryCreateParticleEffect(effectName, out effect)) { MatrixD dirMatrix = MatrixD.CreateFromDir(normal); effect.WorldMatrix = MatrixD.CreateWorld(hitPoint, dirMatrix.Forward, dirMatrix.Up); //VRageRender.MyRenderProxy.DebugDrawSphere(hitPoint, 0.1f, Color.Wheat, 1, false); // VRageRender.MyRenderProxy.DebugDrawAxis(effect.WorldMatrix, 5, false); effect.UserScale = scale; } }