/// <summary> /// Constructor /// </summary> /// <param name="pType"></param> public Fixture(FixtureType pType) { mManager = new DmxFramework.Scene.SceneManager(); mManager.Fixture = this; mName = ""; mType = pType; mChannels = new ArrayList(); }
/// <summary> /// Constructor /// </summary> /// <param name="pType"></param> public Fixture(Fixture pParent, FixtureType pType) { mParent = pParent; mManager = new DmxFramework.Scene.SceneManager(); mManager.Fixture = this; mName = ""; mType = pType; mChannels = new List <DmxFramework.Channels.Channel>(); }
/// <summary> /// Pokud neni volny pohyb, tak opravi vyskovou pozici hrace tak, aby hrac stal na terenu /// </summary> /// <param name="position">Puvodni pozice hrace</param> /// <param name="newPosition">Pozice hrace, na kterou chce hrac jit, tato promena bude prepsana korektni hodnotou</param> private static void RepairPositionInNonFreeLook(Vector3 position, ref Vector3 newPosition) { if (!freeLook) { Scene.SceneManager sm = GraphicCore.GetCurrentSceneManager(); List <SceneManager.SceneObject> sos = sm.GetAllObjects(); Vector3 dir = Vector3.Normalize(newPosition - position) * Speed * time; bool blocked = false; foreach (SceneManager.SceneObject so in sos) { if (so.name.StartsWith("Hrac")) { continue; } if (so.generalObject.ComputeBoxCollission(newPosition) || so.generalObject.ComputeBoxCollission(newPosition + dir * 0.02f) || so.generalObject.ComputeBoxCollission(newPosition + dir * 0.01f) || so.generalObject.ComputeBoxCollission(newPosition + dir * 0.005f) || so.generalObject.ComputeBoxCollission(newPosition + dir * 0.0025f) || so.generalObject.ComputeBoxCollission(newPosition + dir * 0.00125f)) { blocked = true; } } if (terain.IsPositionOnTereain(newPosition) && !blocked /*!terain.IsPositionOnTerainBlocked(newPosition)*/) { newPosition = terain.GetPositionOnTerain(newPosition); } else { newPosition = terain.GetPositionOnTerain(position); } newPosition.Y += HeightOfEye.Y; } }