public override void SetClipModel(idClipModel model, float density, int id = 0, bool disposeOld = true) { if (this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } if (model.IsTraceModel == false) { throw new ArgumentException("model should be a trace model"); } if (density <= 0.0f) { throw new ArgumentException("density must be valid"); } if ((_clipModel != null) && (_clipModel != model) && (disposeOld == true)) { _clipModel.Dispose(); } _clipModel = model; _clipModel.Link(idR.Game.Clip, this.Self, 0, _clipModel.Origin, _clipModelAxis); }
public void SetClipModelAxis() { // align clip model to gravity direction if ((_gravityNormal.Z == -1.0f) || (_gravityNormal == Vector3.Zero)) { _clipModelAxis = Matrix.Identity; } else { Vector3 v1 = new Vector3(_clipModelAxis.M11, _clipModelAxis.M12, _clipModelAxis.M13); Vector3 v2 = new Vector3(_clipModelAxis.M21, _clipModelAxis.M22, _clipModelAxis.M23); Vector3 v3 = -_gravityNormal; idHelper.NormalVectors(v3, ref v1, ref v2); _clipModelAxis.M31 = v3.X; _clipModelAxis.M32 = v3.Y; _clipModelAxis.M33 = v3.Z; _clipModelAxis.M34 = 1; _clipModelAxis.M21 = v2.X; _clipModelAxis.M22 = v2.Y; _clipModelAxis.M23 = v2.Z; _clipModelAxis.M24 = 1; _clipModelAxis.M11 = -v1.X; _clipModelAxis.M12 = -v1.Y; _clipModelAxis.M13 = -v1.Z; _clipModelAxis.M14 = 1; } if (_clipModel != null) { _clipModel.Link(idR.Game.Clip, _self, 0, _clipModel.Origin, _clipModelAxis); } }
public override void SetClipModel(idClipModel model, float density, int id = 0, bool disposeOld = true) { if (this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } if ((_clipModel != null) && (_clipModel != model) && (disposeOld == true)) { _clipModel.Dispose(); } _clipModel = model; if (_clipModel != null) { _clipModel.Link(idR.Game.Clip, _self, 0, _origin, _axis); } }
public override bool Evaluate(int timeStep, int endTime) { if (this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } Vector3 masterOrigin, oldOrigin; Matrix masterAxis, oldAxis; if (_hasMaster == true) { oldOrigin = _origin; oldAxis = _axis; _self.GetMasterPosition(out masterOrigin, out masterAxis); _origin = Vector3.Transform(masterOrigin + _localOrigin, masterAxis); if (_isOrientated == true) { _axis = _localAxis * masterAxis; } else { _axis = _localAxis; } if (_clipModel != null) { _clipModel.Link(idR.Game.Clip, _self, 0, _origin, _axis); } return((_origin != oldOrigin) || (_axis != oldAxis)); } return(false); }
public override void SetClipModel(idClipModel model, float density, int id = 0, bool disposeOld = true) { if(this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } if(model.IsTraceModel == false) { throw new ArgumentException("model should be a trace model"); } if(density <= 0.0f) { throw new ArgumentException("density must be valid"); } if((_clipModel != null) && (_clipModel != model) && (disposeOld == true)) { _clipModel.Dispose(); } _clipModel = model; _clipModel.Link(idR.Game.Clip, this.Self, 0, _clipModel.Origin, _clipModelAxis); }
public override void SetClipModel(idClipModel model, float density, int id = 0, bool disposeOld = true) { if(this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } if((_clipModel != null) && (_clipModel != model) && (disposeOld == true)) { _clipModel.Dispose(); } _clipModel = model; if(_clipModel != null) { _clipModel.Link(idR.Game.Clip, _self, 0, _origin, _axis); } }