示例#1
0
        public void SetDebugMode(IDeviceContextHolder holder, bool enabled)
        {
            if (enabled == (_debugMaterial != null))
            {
                return;
            }

            if (enabled)
            {
                var material = holder.Get <SharedMaterials>().GetMaterial(new Tuple <object, uint>(BasicMaterials.DebugKey, OriginalNode.MaterialId));

                _debugMaterial = material as ISkinnedMaterial;
                if (_debugMaterial == null)
                {
                    AcToolsLogging.Write("Error: ISkinnedMaterial required for Kn5SkinnedObject!");
                    material.Dispose();
                    return;
                }

                if (IsInitialized)
                {
                    _debugMaterial.Initialize(holder);
                    _debugMaterialInitialized = true;
                }
            }
            else
            {
                _debugMaterialInitialized = false;
                DisposeHelper.Dispose(ref _debugMaterial);
            }
        }
示例#2
0
        protected override void Initialize(IDeviceContextHolder contextHolder)
        {
            base.Initialize(contextHolder);

            var material = contextHolder.Get <SharedMaterials>().GetMaterial(OriginalNode.MaterialId);

            _material = material as ISkinnedMaterial;
            if (_material == null)
            {
                AcToolsLogging.Write("Error: ISkinnedMaterial required for Kn5SkinnedObject!");
                material.Dispose();
                _material = new InvisibleMaterial();
            }

            _material.Initialize(contextHolder);

            var model = contextHolder.Get <IKn5Model>();

            _bonesNodes = OriginalNode.Bones.Select(x => model.GetDummyByName(x.Name)).ToArray();

            if (_debugMaterial != null && !_debugMaterialInitialized)
            {
                _debugMaterialInitialized = true;
                _debugMaterial.Initialize(contextHolder);
            }
        }