# Copyright 2022 Frederico de Oliveira Linhares # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. CAMERA_ROTATION_SPEED = Math::PI/45; BOX_ROTATION_SPEED = Math::PI/180; TRANSLATION_SPEED = 0.5; def init() $texture = CandyGear::Texture.from_image("textures/color_texture.png"); $model = CandyGear::Model.new("models/cube.cgmodel", $texture); $sprite = CandyGear::Sprite.new( $texture, CandyGear::Vector4D.new(0, 0, 1.0, 1.0)); $sprite_position = CandyGear::Vector4D.new(1.0, 1.0, 101.0, 101.0); $instances = [ CandyGear::Vector3D.new(5.0, 0.0, 0.0), CandyGear::Vector3D.new(-5.0, 0.0, 0.0), CandyGear::Vector3D.new(0.0, 5.0, 0.0), CandyGear::Vector3D.new(0.0, -5.0, 0.0), CandyGear::Vector3D.new(0.0, 0.0, 5.0), CandyGear::Vector3D.new(0.0, 0.0, -5.0) ]; $instances_rotation = CandyGear::Rotation3D.new(0.0, 0.0, 0.0); $camera_position = CandyGear::Vector3D.new(0.0, 0.0, 0.0); $camera_rotation = CandyGear::Rotation3D.new(0.0, 0.0, 0.0); color = CandyGear::Vector3D.new(0.12, 0.12, 0.18); $view1 = CandyGear::View.new(CandyGear::Vector4D.new(0, 0, 1280, 360)); $view2 = CandyGear::View.new(CandyGear::Vector4D.new(0, 360, 1280, 360)); CandyGear.views = [$view1, $view2]; $view1.camera_position = $camera_position; $view1.camera_rotation = $camera_rotation; end def key_down(key) case key when CandyGear::Key::I $camera_rotation.rotate(CAMERA_ROTATION_SPEED, 0.0); when CandyGear::Key::K $camera_rotation.rotate(-CAMERA_ROTATION_SPEED, 0.0); when CandyGear::Key::J $camera_rotation.rotate(0.0, CAMERA_ROTATION_SPEED); when CandyGear::Key::L $camera_rotation.rotate(0.0, -CAMERA_ROTATION_SPEED); when CandyGear::Key::E $camera_position.translate( CandyGear::Vector3D.new(0.0, 0.0, -TRANSLATION_SPEED), $camera_rotation); when CandyGear::Key::D $camera_position.translate( CandyGear::Vector3D.new(0.0, 0.0, TRANSLATION_SPEED), $camera_rotation); when CandyGear::Key::S $camera_position.translate( CandyGear::Vector3D.new(-TRANSLATION_SPEED, 0.0, 0.0), $camera_rotation); when CandyGear::Key::F $camera_position.translate( CandyGear::Vector3D.new(TRANSLATION_SPEED, 0.0, 0.0), $camera_rotation); end end def key_up(key) end def quit() = CandyGear.quit(); def tick() $sprite.draw($view2, $sprite_position); $instances_rotation.rotate(0.0, BOX_ROTATION_SPEED); $instances.each do |i| $model.draw(i, $instances_rotation); end end