NSMoverEntity: call MoverStartsMoving() and MoverFinishesMoving() around arrival callbacks for entities that don't travel any distance. Fixing func_button entities from not toggling frames.

This commit is contained in:
Marco Cawthorne 2023-03-22 00:22:47 -07:00
parent 9463e2b6e3
commit aed306cbd1
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
4 changed files with 45 additions and 17 deletions

View File

@ -1,5 +1,13 @@
# Building # Building
## Preface
If you don't plan on modifying the engine, then you probably shouldn't! You can grab binaries from [FTEQW](https://www.fteqw.org) and move them into the Nuclide directory under `./bin`.
If you're on Microsoft Windows, you will most likely not be running the `nuclide` launch script anyway, so feel free to move the `fteqw.exe` into the root of the Nuclide directory, and run that as-is instead.
It will mount the game directories specified in the `default.fmf` file, which you can tweak as needed. [For more information, read the relevant documentation regarding launching Nuclide](Documentation/Launching.md)
## Building the Engine {#engine} ## Building the Engine {#engine}
The **build_engine.sh** will do that for you. It will still ask you to have at least The **build_engine.sh** will do that for you. It will still ask you to have at least

View File

@ -1,44 +1,57 @@
# Overview # Overview
Welcome to the documentation for Nuclide. Welcome to the documentation for Nuclide!
This is a software development kit and development environment created by [Vera Visions, L.L.C.](https://www.vera-visions.com/) This is a software development kit (SDK) and development environment created by [Vera Visions, L.L.C.](https://www.vera-visions.com/). We want to share it with everyone to avoid duplicate effort and in the hopes that it is useful to someone else.
## What this project is {#what} ## What this project is {#what}
The Nuclide project produces a freely available game-logic component and The Nuclide project produces a freely available game-logic component and
development platform on top of FTEQW; which is the engine we happen to use. development platform on top of [FTEQW](https://www.fteqw.org); which is the engine we happen to use.
The goal is to create a modern research base for new advancements, as well The goal is to create a modern research base for new advancements, as well
as to have a stable base with a decent API for making games. as to have a stable base with a decent API for making games.
- Client-side predicted movement and inputs for things like weapons-systems It comes with a simple example game (simply referred to as 'Base') and some test maps. There's also some other, third-party example projects.
- Lots of well documented objects to use in level formats supported by FTEQW
- Reference implementations for a lot of features exlusive to FTEQW compared General feature overview:
to other id Tech engines
- Designed to be familar to developers who're used to GoldSrc and Source engine - SDK in the spirit of 'id Tech' development environments
projects - Client-side predicted movement, predicted weapons and vehicle systems
- Implementations of well known, established entity classes as seen in popular and critically acclaimed games
- Reference implementations for a lot of features exlusive to the FTEQW engine
- Designed to be familar to developers who are used to GoldSrc and Source engine
project workflows
- Everything written from scratch with the modern QuakeC language advancements in mind
### 1. Why might I want to use it? {#why} ### 1. Why might I want to use it? {#why}
You want to develop a game using a lot of complex and well-tested objects You might be migrating from an engine that is no longer being licensed and don't want to learn a new engine and toolchain.
You might want to develop a game using a lot of complex and well-tested objects
which might be tedious to implement on your own. which might be tedious to implement on your own.
You want to run or make modifications for a game using Nuclide and need full You might want to run or make modifications for a game using Nuclide and need full
control over what you can do. control over what you can do.
### 2. How free is Nuclide? {#license} ### 2. How free is Nuclide? {#license}
Everything in Nuclide is **free software**. The copyright terms for the game-logic are Everything in Nuclide is **free software**. The copyright terms for the game-logic are
very permitting. Nuclide does not use the GPL as a point of reference, it very permitting. Nuclide *does not use the GPL* as a point of reference in terms of license, it instead uses a **ISC-like license**. This means you can use, copy, modify and
instead uses a ISC-like license. This means you can use, copy, modify and
distribute the code and work resulting from it for any purpose. distribute the code and work resulting from it for any purpose.
Please read the very short 'LICENSE' document for details. **Please read the very short 'LICENSE' document for details.**
### 3. What are the alternatives? {#alternatives} ### 3. What are the alternatives? {#alternatives}
Implementing systems such as prediction, complex map objects and entities on Implementing systems such as prediction, complex map objects and entities on
your own or licensing another engine such as [Source](https://partner.steamgames.com/doc/sdk/uploading/distributing_source_engine) that ships with its own **Source SDK Base**. your own, from scratch - or licensing another engine such as [Source](https://partner.steamgames.com/doc/sdk/uploading/distributing_source_engine) that ships with its own **Source SDK Base**.
### 4. Any example projects? {#examples}
- [The Wastes](https://store.steampowered.com/app/793670) is a commerical game built using Nuclide.
- [FreeHL](https://www.github.com/eukara/freehl) is a free-software, clean-room clone of Half-Life: Deathmatch also built using Nuclide.
- [FreeCS](https://www.github.com/eukara/freecs) exists in the same vein as FreeHL, but targetting a recreation of Counter-Strike v1.5 (mod version) specifically.
## Getting started {#prerequisites} ## Getting started {#prerequisites}
@ -50,6 +63,7 @@ If you do posess a basic knowledge of the following:
- Makefiles - Makefiles
- Compiling your own binaries - Compiling your own binaries
- Concept of public and private APIs - Concept of public and private APIs
- QuakeC
Then you will have a good time. Then you will have a good time.
We strive to keep the codebase portable and conform to open standards wherever possible. We strive to keep the codebase portable and conform to open standards wherever possible.
@ -65,4 +79,4 @@ You clone the Nuclide git repository first. There's multiple places to get it, o
`git clone https://github.com/veravisions/nuclide` `git clone https://github.com/veravisions/nuclide`
And then you can [get started on building the engine and the rest of the toolchain](Building.md). And then you can [get started on building the engine and the rest of the toolchain](Building.md). Alternatively, you can also move in the official FTEQW binaries into the Nuclide directory to get started without bootstrapping your own engine + QuakeC compiler.

View File

@ -1230,7 +1230,7 @@ HTML_FOOTER =
# obsolete. # obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES. # This tag requires that the tag GENERATE_HTML is set to YES.
HTML_STYLESHEET = Documentation/style.css HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets # cascading style sheets that are included after the standard style sheets
@ -1255,6 +1255,8 @@ HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES = HTML_EXTRA_FILES =
HTML_COLORSTYLE = DARK
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to # will adjust the colors in the style sheet and background images according to
# this color. Hue is specified as an angle on a color-wheel, see # this color. Hue is specified as an angle on a color-wheel, see

View File

@ -220,9 +220,13 @@ NSMoverEntity::MoveAndRotateToPosition(vector vecDest, vector vecAngle, float fl
if (fTravelTime <= 0.0) { if (fTravelTime <= 0.0) {
if (m_moverState == MOVER_1TO2) { if (m_moverState == MOVER_1TO2) {
MoverStartsMoving();
_ArrivedAtRotPosition2(); _ArrivedAtRotPosition2();
MoverFinishesMoving();
} else if (m_moverState == MOVER_2TO1) { } else if (m_moverState == MOVER_2TO1) {
MoverStartsMoving();
_ArrivedAtRotPosition1(); _ArrivedAtRotPosition1();
MoverFinishesMoving();
} }
return; return;
} }