Esempio n. 1
0
        public virtual void ResetEntity(LevelGeometryEntity levelGeometryEntity, Material overrideMaterial = null)
        {
            SceneLayer sl = GetRecommendedSceneLayer();

            using (RenderingModule.RenderStateBarrier.AcquirePermit(withLock: instanceMutationLock)) {
                Entity rep = GetEntityRepresentation(levelGeometryEntity);
                rep.Dispose();
                GeometryEntity entity;
                if (levelGeometryEntity.IsStatic)
                {
                    entity = new GeometryEntity {
                        Transform = levelGeometryEntity.InitialMovementStep.Transform
                    };
                }
                else
                {
                    entity = new PresetMovementEntity(levelGeometryEntity.MovementSteps.ToArray(), levelGeometryEntity.AlternatingMovementDirection, levelGeometryEntity.InitialDelay)
                    {
                        Transform = levelGeometryEntity.InitialMovementStep.Transform
                    };
                }
                entity.SetModelInstance(sl, currentModelHandles[levelGeometryEntity.Geometry], overrideMaterial ?? currentMaterials[levelGeometryEntity.Material]);
                currentGeometryEntities[levelGeometryEntity] = entity;
            }
        }
Esempio n. 2
0
        private void UpdateSelectedObject()
        {
            lock (instanceMutationLock) {
                if (previouslySelectedLGO != null && previouslySelectedLGO.GroundingGeometryEntity != null)
                {
                    Entity prevEntity = currentLevel.GetEntityRepresentation(previouslySelectedLGO.GroundingGeometryEntity);
                    if (prevEntity is PresetMovementEntity)
                    {
                        ((PresetMovementEntity)prevEntity).Unpause();
                    }
                }
                LevelGameObject previousGO = previouslySelectedLGO;
                LevelGameObject selectedGO = objectList.SelectedItem as LevelGameObject;
                if (selectedGO == null)
                {
                    curObjDescTextBox.Text = String.Empty;
                    SetGOControlEnabledState(false);
                    previouslySelectedLGO = null;
                    return;
                }
                if (selectedGO.GroundingGeometryEntity != null && !selectedGO.GroundingGeometryEntity.IsStatic)
                {
                    PresetMovementEntity pme = (PresetMovementEntity)currentLevel.GetEntityRepresentation(selectedGO.GroundingGeometryEntity);
                    pme.Pause(selectedGO.GroundingGeometryEntity.InitialMovementStep);
                }

                previouslySelectedLGO  = selectedGO;
                curObjDescTextBox.Text = selectedGO.LongDescription;
                SetGOControlEnabledState(true);
                bindButton.Text            = selectedGO.GroundingGeometryEntity == null ? "Bind" : "Unbind";
                simpleBindingCheck.Checked = selectedGO.UseSimpleGrounding;

                UpdateCustomPropertiesBox(previousGO, selectedGO);
            }
        }
Esempio n. 3
0
        public void ResetEntities(bool fullReset)
        {
            SceneLayer sl = GetRecommendedSceneLayer();

            lock (instanceMutationLock) {
                currentGeometryEntities.Values.ForEach(e => e.Dispose());
                currentGeometryEntities.Clear();
                foreach (LevelGeometryEntity levelEntity in levelGeometryEntities)
                {
                    GeometryEntity entity;
                    if (levelEntity.IsStatic)
                    {
                        entity = new GeometryEntity {
                            Transform = levelEntity.InitialMovementStep.Transform
                        };
                    }
                    else
                    {
                        entity = new PresetMovementEntity(levelEntity.MovementSteps.ToArray(), levelEntity.AlternatingMovementDirection, levelEntity.InitialDelay)
                        {
                            Transform = levelEntity.InitialMovementStep.Transform
                        };
                    }
                    entity.SetModelInstance(sl, currentModelHandles[levelEntity.Geometry], currentMaterials[levelEntity.Material]);
                    currentGeometryEntities.Add(levelEntity, entity);
                }
            }
            ResetEntityPhysics(fullReset);
        }