private void TearDownPreviousTask() { mSceneMgr.DestroyAllEntities(); mSceneMgr.DestroyAllAnimations(); _playerNode.RemoveAndDestroyAllChildren(); mSceneMgr.DestroySceneNode(_playerNode); _playerEntity = null; _playerNode.Dispose(); _playerNode = null; mAnimationCollection = null; mStateIterator = null; mRenderedAnims = new List <string>(); mCurrentAnimState = null; mAnimTime = 0; mAnimMaxTime = 0; mFrameCount = 0; currentRenderTask = null; }
private void TearDownPreviousTask() { mSceneMgr.DestroyAllEntities(); mSceneMgr.DestroyAllAnimations(); _playerNode.RemoveAndDestroyAllChildren(); mSceneMgr.DestroySceneNode(_playerNode); _playerEntity = null; _playerNode.Dispose(); _playerNode = null; mAnimationCollection = null; mStateIterator = null; mRenderedAnims = new List<string>(); mCurrentAnimState = null; mAnimTime = 0; mAnimMaxTime = 0; mFrameCount = 0; currentRenderTask = null; }
protected void BeginNextTask() { //If we're transitioning from a previous task, lets tear that shit down if (currentRenderTask != null) { TearDownPreviousTask(); } if (currentRenderTask == null && renderTasks.Count == 0) { mShutDown = true; return; } //Dequeue the next task currentRenderTask = renderTasks.Dequeue(); _playerEntity = mSceneMgr.CreateEntity(currentRenderTask.PlayerModelConfig.EntityName, currentRenderTask.PlayerModelConfig.ModelName); _playerNode = mSceneMgr.RootSceneNode.CreateChildSceneNode("PlayerNode"); _playerNode.AttachObject(_playerEntity); _playerNode._setDerivedPosition(_playerNode.Position + new Vector3(0, -0.5f * _playerEntity.BoundingRadius, 0)); //Set up name of dat animation collection var animationCollectionName = currentRenderTask.PlayerModelConfig.EntityName; switch (currentRenderTask.TaskType) { case TaskType.Item: animationCollectionName += "_" + currentRenderTask.ItemConfig.EntityName; break; case TaskType.Wearable: animationCollectionName += "_" + currentRenderTask.WearableConfig.EntityName; break; } mAnimationCollection = new AnimationCollection { Name = animationCollectionName }; mStateIterator = _playerEntity.AllAnimationStates.GetAnimationStateIterator(); if (_playerEntity != null) { switch (currentRenderTask.TaskType) { case TaskType.Item: { _currentItem = mSceneMgr.CreateEntity(currentRenderTask.ItemConfig.EntityName, currentRenderTask.ItemConfig.ModelName); var ic = currentRenderTask.ItemConfig; _playerEntity.AttachObjectToBone(currentRenderTask.PlayerModelConfig.RHandBoneName, _currentItem, new Quaternion(ic.QuatW, ic.QuatX, ic.QuatY, ic.QuatZ), new Vector3(ic.OffsetX, ic.OffsetY, ic.OffsetZ)); //Make player entity transparent so all we see is the item _playerEntity.SetMaterialName("transparent_mask"); } break; case TaskType.Wearable: _playerEntity.SetMaterialName(currentRenderTask.WearableConfig.Material); break; } } //_ent.SetMaterialName("Normal"); /* * var sub = _ent.GetSubEntity(0); * sub.SetCustomParameter(CUSTOM_SHININESS, new Vector4(10.0f, 0.0f, 0.0f, 0.0f)); * sub.SetCustomParameter(CUSTOM_DIFFUSE, new Vector4(1.0f, 1.0f, 0.7f, 1.0f)); * sub.SetCustomParameter(CUSTOM_SPECULAR, new Vector4(1.0f, 1.0f, 1.0f, 1.0f));*/ NextAnimation(); }
protected void BeginNextTask() { //If we're transitioning from a previous task, lets tear that shit down if (currentRenderTask != null) TearDownPreviousTask(); if (currentRenderTask == null && renderTasks.Count == 0) { mShutDown = true; return; } //Dequeue the next task currentRenderTask = renderTasks.Dequeue(); _playerEntity = mSceneMgr.CreateEntity(currentRenderTask.PlayerModelConfig.EntityName, currentRenderTask.PlayerModelConfig.ModelName); _playerNode = mSceneMgr.RootSceneNode.CreateChildSceneNode("PlayerNode"); _playerNode.AttachObject(_playerEntity); _playerNode._setDerivedPosition(_playerNode.Position + new Vector3(0, -0.5f * _playerEntity.BoundingRadius, 0)); //Set up name of dat animation collection var animationCollectionName = currentRenderTask.PlayerModelConfig.EntityName; switch (currentRenderTask.TaskType) { case TaskType.Item: animationCollectionName += "_" + currentRenderTask.ItemConfig.EntityName; break; case TaskType.Wearable: animationCollectionName += "_" + currentRenderTask.WearableConfig.EntityName; break; } mAnimationCollection = new AnimationCollection { Name = animationCollectionName }; mStateIterator = _playerEntity.AllAnimationStates.GetAnimationStateIterator(); if (_playerEntity != null) { switch (currentRenderTask.TaskType) { case TaskType.Item: { _currentItem = mSceneMgr.CreateEntity(currentRenderTask.ItemConfig.EntityName, currentRenderTask.ItemConfig.ModelName); var ic = currentRenderTask.ItemConfig; _playerEntity.AttachObjectToBone(currentRenderTask.PlayerModelConfig.RHandBoneName, _currentItem, new Quaternion(ic.QuatW, ic.QuatX, ic.QuatY, ic.QuatZ), new Vector3(ic.OffsetX, ic.OffsetY, ic.OffsetZ)); //Make player entity transparent so all we see is the item _playerEntity.SetMaterialName("transparent_mask"); } break; case TaskType.Wearable: _playerEntity.SetMaterialName(currentRenderTask.WearableConfig.Material); break; } } //_ent.SetMaterialName("Normal"); /* var sub = _ent.GetSubEntity(0); sub.SetCustomParameter(CUSTOM_SHININESS, new Vector4(10.0f, 0.0f, 0.0f, 0.0f)); sub.SetCustomParameter(CUSTOM_DIFFUSE, new Vector4(1.0f, 1.0f, 0.7f, 1.0f)); sub.SetCustomParameter(CUSTOM_SPECULAR, new Vector4(1.0f, 1.0f, 1.0f, 1.0f));*/ NextAnimation(); }