コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks>
        /// May not change the game state whatsoever!
        /// </remarks>
        /// <param name="renderEntity"></param>
        /// <param name="renderView"></param>
        /// <returns></returns>
        protected bool ModelCallback(idRenderEntity renderEntity, idRenderView renderView)
        {
            idEntity ent = idR.Game.Entities[renderEntity.EntityIndex];

            if (ent == null)
            {
                idConsole.Error("idEntity::ModelCallback: callback with null game entity");
            }

            return(ent.UpdateRenderEntity(renderEntity, renderView));
        }
コード例 #2
0
        protected bool UpdateRenderEntity(idRenderEntity renderEntity, idRenderView renderView)
        {
            // TODO: cinematic

            /*if ( gameLocal.inCinematic && gameLocal.skipCinematic ) {
             *      return false;
             * }*/

            idAnimator animator = this.Animator;

            if (animator != null)
            {
                return(animator.CreateFrame(idR.Game.Time, false));
            }

            return(false);
        }
コード例 #3
0
        private void PreRender()
        {
            if (_needsRender == true)
            {
                _world.InitFromMap(null);

                idDict spawnArgs = new idDict();
                spawnArgs.Set("classname", "light");
                spawnArgs.Set("name", "light_1");
                spawnArgs.Set("origin", _lightOrigin);
                spawnArgs.Set("_color", _lightColor);

                idConsole.Warning("TODO: lighting");

                /*gameEdit->ParseSpawnArgsToRenderLight(&spawnArgs, &rLight);
                 * lightDef = world->AddLightDef(&rLight);
                 * if(!modelName[0])
                 * {
                 *      common->Warning("Window '%s' in gui '%s': no model set", GetName(), GetGui()->GetSourceFile());
                 * }*/

                spawnArgs.Clear();
                spawnArgs.Set("classname", "func_static");
                spawnArgs.Set("model", _modelName);
                spawnArgs.Set("origin", _modelOrigin);

                _worldEntity = idE.GameEdit.ParseSpawnArgsToRenderEntity(spawnArgs);

                if (_worldEntity.Model != null)
                {
                    Vector3 v = _modelRotate.ToVector3();

                    _worldEntity.Axis = v.ToMatrix();
                    _worldEntity.MaterialParameters[0] = 1;
                    _worldEntity.MaterialParameters[0] = 1;
                    _worldEntity.MaterialParameters[0] = 1;
                    _worldEntity.MaterialParameters[0] = 1;

                    _renderEntity = _world.AddEntityDefinition(_worldEntity);
                }

                _needsRender.Set(false);
            }
        }
コード例 #4
0
        /// <summary>
        /// Present is called to allow entities to generate refEntities, lights, etc for the renderer.
        /// </summary>
        public virtual void Present()
        {
            if (this.Disposed == true)
            {
                throw new ObjectDisposedException(this.GetType().Name);
            }

            // TODO:

            /*if ( !gameLocal.isNewFrame ) {
             *      return;
             * }*/

            // don't present to the renderer if the entity hasn't changed

            /*if ( !( thinkFlags & TH_UPDATEVISUALS ) ) {
             *      return;
             * }
             * BecomeInactive( TH_UPDATEVISUALS );*/

            // camera target for remote render views

            /*if ( cameraTarget && gameLocal.InPlayerPVS( this ) ) {
             *      renderEntity.remoteRenderView = cameraTarget->GetRenderView();
             * }*/

            // if set to invisible, skip
            if ((_renderEntity.Model == null) || (this.IsHidden == true))
            {
                return;
            }

            // add to refresh list
            if (_renderModel == null)
            {
                _renderModel = idR.Game.CurrentRenderWorld.AddEntityDefinition(_renderEntity);
            }
            else
            {
                idR.Game.CurrentRenderWorld.UpdateEntityDefinition(_renderModel, _renderEntity);
            }
        }