/
Metallist64
/
rbfx
Обзор
Документация
Войти
/
Metallist64
/
rbfx
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Source/Samples/34_DynamicGeometry/DynamicGeometry.h
89 строк
3 KB
gleblebedev
Free fly controller and multitouch adapter (#397)
02 май 2022, 23:11
Не верифицирован
02 май 2022, 23:11
8e17a96
Код
Авторство
О чём код?
// // Copyright (c) 2008-2022 the Urho3D project. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // #pragma once #include "Sample.h" namespace Urho3D { class Node; class Scene; } /// Dynamic geometry example. /// This sample demonstrates: /// - Cloning a Model resource /// - Modifying the vertex buffer data of the cloned models at runtime to efficiently animate them /// - Creating a Model resource and its buffer data from scratch class DynamicGeometry : public Sample { URHO3D_OBJECT(DynamicGeometry, Sample); public: /// Construct. explicit DynamicGeometry(Context* context); /// Setup after engine initialization and before running the main loop. void Start() override; protected: /// Return XML patch instructions for screen joystick layout for a specific sample app, if any. ea::string GetScreenJoystickPatchString() const override { return "<patch>" " <remove sel=\"/element/element[./attribute[@name='Name' and @value='Button0']]/attribute[@name='Is Visible']\" />" " <replace sel=\"/element/element[./attribute[@name='Name' and @value='Button0']]/element[./attribute[@name='Name' and @value='Label']]/attribute[@name='Text']/@value\">Animation</replace>" " <add sel=\"/element/element[./attribute[@name='Name' and @value='Button0']]\">" " <element type=\"Text\">" " <attribute name=\"Name\" value=\"KeyBinding\" />" " <attribute name=\"Text\" value=\"SPACE\" />" " </element>" " </add>" "</patch>"; } private: /// Construct the scene content. void CreateScene(); /// Construct an instruction text to the UI. void CreateInstructions(); /// Set up a viewport for displaying the scene. void SetupViewport(); /// Animate the vertex data of the objects. void AnimateObjects(float timeStep); /// Handle the logic update event. void Update(float timeStep) override; /// Cloned models' vertex buffers that we will animate. ea::vector<SharedPtr<VertexBuffer> > animatingBuffers_; /// Original vertex positions for the sphere model. ea::vector<Vector3> originalVertices_; /// If the vertices are duplicates, indices to the original vertices (to allow seamless animation.) ea::vector<unsigned> vertexDuplicates_; /// Animation flag. bool animate_; /// Animation's elapsed time. float time_; };